package day19

import java.io.File
import kotlin.math.absoluteValue

typealias Position = Triple<Int, Int, Int>
typealias Transformation = (Triple<Int, Int, Int>) -> Triple<Int, Int, Int>

private operator fun Position.plus(offset: Position): Position =
  Position(first + offset.first, second + offset.second, third + offset.third)

private operator fun Position.minus(other: Position) =
  Position(first - other.first, second - other.second, third - other.third)

data class Scanner(val beacons: List<Position>) {
  val distanceMatrix: Array<Array<Position>>
    get() = beacons.map { position -> beacons.map { (position - it) }.toTypedArray() }.toTypedArray()

  fun transform(t: Transformation): Scanner = this.copy(beacons = beacons.map(t))
}

fun parseInput(lines: List<String>): List<Scanner> {
  fun parseBeacon(line: String): Position {
    val (x, y, z) = line.split(",").map(String::toInt)
    return Position(x, y, z)
  }

  val scanners = mutableListOf<Scanner>()
  val beacons = mutableListOf<Position>()
  for (line in lines) {
    when {
      line.isBlank() -> scanners.add(Scanner(beacons.toList()))
      line.startsWith("--- ") -> beacons.clear()
      else -> beacons.add(parseBeacon(line))
    }
  }
  if (beacons.isNotEmpty()) scanners.add(Scanner(beacons.toList()))
  return scanners
}

/*
  Orientations over Z
   x  y  z
   y -x  z
  -x -y  z
  -y  x  z

  Orientations over -Z
   x -y -z
  -y -x -z
  -x  y -z
   y  x -z

  Orientations over X
  -z  y  x
  -y -z  x
   z -y  x
   y  z  x

  Orientations over -X
   z  y -x
   y -z -x
  -z -y -x
  -y  z -x

  Orientations over Y
   x -z  y
  -z -x  y
  -x  z  y
   z  x  y

  Orientations over -Y
   x  z -y
   z -x -y
  -x -z -y
  -z  x -y
*/
val orientations = listOf<Transformation>(
  // Orientations over  Z
  { (x, y, z) -> Triple(x, y, z) },
  { (x, y, z) -> Triple(y, -x, z) },
  { (x, y, z) -> Triple(-x, -y, z) },
  { (x, y, z) -> Triple(-y, x, z) },
  // Orientations over -Z
  { (x, y, z) -> Triple(x, -y, -z) },
  { (x, y, z) -> Triple(-y, -x, -z) },
  { (x, y, z) -> Triple(-x, y, -z) },
  { (x, y, z) -> Triple(y, x, -z) },
  // Orientations over  X
  { (x, y, z) -> Triple(-z, y, x) },
  { (x, y, z) -> Triple(-y, -z, x) },
  { (x, y, z) -> Triple(z, -y, x) },
  { (x, y, z) -> Triple(y, z, x) },
  // Orientations over -X
  { (x, y, z) -> Triple(z, y, -x) },
  { (x, y, z) -> Triple(y, -z, -x) },
  { (x, y, z) -> Triple(-z, -y, -x) },
  { (x, y, z) -> Triple(-y, z, -x) },
  // Orientations over  Y
  { (x, y, z) -> Triple(x, -z, y) },
  { (x, y, z) -> Triple(-z, -x, y) },
  { (x, y, z) -> Triple(-x, z, y) },
  { (x, y, z) -> Triple(z, x, y) },
  // Orientations over -Y
  { (x, y, z) -> Triple(x, z, -y) },
  { (x, y, z) -> Triple(z, -x, -y) },
  { (x, y, z) -> Triple(-x, -z, -y) },
  { (x, y, z) -> Triple(-z, x, -y) },
)

/*
  * For scanner s1, for every beacon compute the distance with the others
  * For scanner s2, apply one of the rotations and compute the distance matrix too
  * For each pair of matrix, check if for one row in s1 there's a matching row in s2 with at least minOverlap matching distances
  * If so, we got a pair of overlapping scanners given a certain orientation.
  * Subtracting both positions will return the distance between the position of the two scanners
  */
fun determineScannerLocation(s1: Scanner, s2: Scanner, minOverlaps: Int): Pair<Position, Scanner>? {
  val matrix1 = s1.distanceMatrix
  for (orientation in orientations) {
    val matrix2 = s2.transform(orientation).distanceMatrix
    val matchingBeacons = matrix1.mapIndexed { index, beaconDistances ->
      index to matrix2.indexOfFirst { distances -> beaconDistances.count { distances.contains(it) } >= minOverlaps }
    }.filterNot { it.second == -1 }
    if (matchingBeacons.size < minOverlaps) continue
    val (b1, b2) = matchingBeacons.first()
    val s2Center = s1.beacons[b1] - orientation(s2.beacons[b2]) // compute the discrepancy between the two positions of the same beacon
    val transformation = { position: Position -> orientation(position) + s2Center } // transforming to the PoV of scanner s1
    return s2Center to s2.transform(transformation)
  }
  return null
}

/*
* Returns the positions of the scanners and the position of the beacons from the PoV of the first scanner
*/
fun locateScannersAndBeacons(scanners: List<Scanner>, minOverlaps: Int): Pair<Set<Position>, Set<Position>> {
  val scannerPositions = mutableSetOf(Position(0, 0, 0)) // assuming the first scanner is at (0, 0, 0)
  val beaconPositions = scanners.first().beacons.toMutableSet()

  val recognisedScanners = mutableListOf(scanners.first())
  val unrecognisedScanners = scanners.drop(1).toMutableList()

  while (unrecognisedScanners.isNotEmpty()) {
    val scanner = recognisedScanners.removeFirst()

    val scannersToCheck = unrecognisedScanners.listIterator()
    while (scannersToCheck.hasNext()) {
      val unrecognised = scannersToCheck.next()
      determineScannerLocation(scanner, unrecognised, minOverlaps)?.let { (position, transformedScanner) ->
        scannersToCheck.remove()
        recognisedScanners.add(transformedScanner)
        scannerPositions.add(position)
        beaconPositions.addAll(transformedScanner.beacons)
      }
    }
  }
  return scannerPositions to beaconPositions
}

private fun euclideanDistance(one: Position, other: Position): Int =
  (one.first - other.first).absoluteValue +
      (one.second - other.second).absoluteValue +
      (one.third - other.third).absoluteValue

private fun findMaxEuclideanDistance(positions: Iterable<Position>): Int =
  positions.maxOf { p1 -> positions.maxOf { p2 -> euclideanDistance(p1, p2) } }

fun findMaxEuclideanDistance(scanners: List<Scanner>, minOverlaps: Int): Int {
  val (centers, _) = locateScannersAndBeacons(scanners, minOverlaps)
  return findMaxEuclideanDistance(centers)
}

fun main() {
  File("./input/day19.txt").useLines { lines ->
    val scanners = parseInput(lines.toList())

    val (scannerPositions, beaconPositions) = locateScannersAndBeacons(scanners, 12)
    println(beaconPositions.size)
    println(findMaxEuclideanDistance(scannerPositions))
  }
}

Compiled from "Day19.kt"
public final class day19.Day19Kt {
  private static final java.util.List<kotlin.jvm.functions.Function1<kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>, kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>>> orientations;

  private static final kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer> plus(kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>, kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>);
    Code:
       0: aload_0
       1: ldc           #9                  // String <this>
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #17                 // class kotlin/Triple
       9: dup
      10: aload_0
      11: invokevirtual #21                 // Method kotlin/Triple.getFirst:()Ljava/lang/Object;
      14: checkcast     #23                 // class java/lang/Number
      17: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      20: aload_1
      21: invokevirtual #21                 // Method kotlin/Triple.getFirst:()Ljava/lang/Object;
      24: checkcast     #23                 // class java/lang/Number
      27: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      30: iadd
      31: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      34: aload_0
      35: invokevirtual #36                 // Method kotlin/Triple.getSecond:()Ljava/lang/Object;
      38: checkcast     #23                 // class java/lang/Number
      41: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      44: aload_1
      45: invokevirtual #36                 // Method kotlin/Triple.getSecond:()Ljava/lang/Object;
      48: checkcast     #23                 // class java/lang/Number
      51: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      54: iadd
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: aload_0
      59: invokevirtual #39                 // Method kotlin/Triple.getThird:()Ljava/lang/Object;
      62: checkcast     #23                 // class java/lang/Number
      65: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      68: aload_1
      69: invokevirtual #39                 // Method kotlin/Triple.getThird:()Ljava/lang/Object;
      72: checkcast     #23                 // class java/lang/Number
      75: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      78: iadd
      79: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      82: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      85: areturn

  private static final kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer> minus(kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>, kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>);
    Code:
       0: aload_0
       1: ldc           #9                  // String <this>
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #17                 // class kotlin/Triple
       9: dup
      10: aload_0
      11: invokevirtual #21                 // Method kotlin/Triple.getFirst:()Ljava/lang/Object;
      14: checkcast     #23                 // class java/lang/Number
      17: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      20: aload_1
      21: invokevirtual #21                 // Method kotlin/Triple.getFirst:()Ljava/lang/Object;
      24: checkcast     #23                 // class java/lang/Number
      27: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      30: isub
      31: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      34: aload_0
      35: invokevirtual #36                 // Method kotlin/Triple.getSecond:()Ljava/lang/Object;
      38: checkcast     #23                 // class java/lang/Number
      41: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      44: aload_1
      45: invokevirtual #36                 // Method kotlin/Triple.getSecond:()Ljava/lang/Object;
      48: checkcast     #23                 // class java/lang/Number
      51: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      54: isub
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: aload_0
      59: invokevirtual #39                 // Method kotlin/Triple.getThird:()Ljava/lang/Object;
      62: checkcast     #23                 // class java/lang/Number
      65: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      68: aload_1
      69: invokevirtual #39                 // Method kotlin/Triple.getThird:()Ljava/lang/Object;
      72: checkcast     #23                 // class java/lang/Number
      75: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      78: isub
      79: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      82: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      85: areturn

  public static final java.util.List<day19.Scanner> parseInput(java.util.List<java.lang.String>);
    Code:
       0: aload_0
       1: ldc           #55                 // String lines
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: new           #57                 // class java/util/ArrayList
       9: dup
      10: invokespecial #60                 // Method java/util/ArrayList."<init>":()V
      13: checkcast     #62                 // class java/util/List
      16: astore_1
      17: new           #57                 // class java/util/ArrayList
      20: dup
      21: invokespecial #60                 // Method java/util/ArrayList."<init>":()V
      24: checkcast     #62                 // class java/util/List
      27: astore_2
      28: aload_0
      29: invokeinterface #66,  1           // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      34: astore_3
      35: aload_3
      36: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      41: ifeq          128
      44: aload_3
      45: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      50: checkcast     #77                 // class java/lang/String
      53: astore        4
      55: nop
      56: aload         4
      58: checkcast     #79                 // class java/lang/CharSequence
      61: invokestatic  #85                 // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
      64: ifeq          91
      67: aload_1
      68: new           #87                 // class day19/Scanner
      71: dup
      72: aload_2
      73: checkcast     #89                 // class java/lang/Iterable
      76: invokestatic  #95                 // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
      79: invokespecial #98                 // Method day19/Scanner."<init>":(Ljava/util/List;)V
      82: invokeinterface #102,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
      87: pop
      88: goto          35
      91: aload         4
      93: ldc           #104                // String ---
      95: iconst_0
      96: iconst_2
      97: aconst_null
      98: invokestatic  #108                // Method kotlin/text/StringsKt.startsWith$default:(Ljava/lang/String;Ljava/lang/String;ZILjava/lang/Object;)Z
     101: ifeq          113
     104: aload_2
     105: invokeinterface #111,  1          // InterfaceMethod java/util/List.clear:()V
     110: goto          35
     113: aload_2
     114: aload         4
     116: invokestatic  #115                // Method parseInput$parseBeacon:(Ljava/lang/String;)Lkotlin/Triple;
     119: invokeinterface #102,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     124: pop
     125: goto          35
     128: aload_2
     129: checkcast     #117                // class java/util/Collection
     132: invokeinterface #120,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     137: ifne          144
     140: iconst_1
     141: goto          145
     144: iconst_0
     145: ifeq          169
     148: aload_1
     149: new           #87                 // class day19/Scanner
     152: dup
     153: aload_2
     154: checkcast     #89                 // class java/lang/Iterable
     157: invokestatic  #95                 // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
     160: invokespecial #98                 // Method day19/Scanner."<init>":(Ljava/util/List;)V
     163: invokeinterface #102,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     168: pop
     169: aload_1
     170: areturn

  public static final java.util.List<kotlin.jvm.functions.Function1<kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>, kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>>> getOrientations();
    Code:
       0: getstatic     #131                // Field orientations:Ljava/util/List;
       3: areturn

  public static final kotlin.Pair<kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>, day19.Scanner> determineScannerLocation(day19.Scanner, day19.Scanner, int);
    Code:
       0: aload_0
       1: ldc           #137                // String s1
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #139                // String s2
       9: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_0
      13: invokevirtual #143                // Method day19/Scanner.getDistanceMatrix:()[[Lkotlin/Triple;
      16: astore_3
      17: getstatic     #131                // Field orientations:Ljava/util/List;
      20: invokeinterface #66,  1           // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      25: astore        4
      27: aload         4
      29: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      34: ifeq          519
      37: aload         4
      39: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      44: checkcast     #145                // class kotlin/jvm/functions/Function1
      47: astore        5
      49: aload_1
      50: aload         5
      52: invokevirtual #149                // Method day19/Scanner.transform:(Lkotlin/jvm/functions/Function1;)Lday19/Scanner;
      55: invokevirtual #143                // Method day19/Scanner.getDistanceMatrix:()[[Lkotlin/Triple;
      58: astore        6
      60: aload_3
      61: checkcast     #151                // class "[Ljava/lang/Object;"
      64: astore        8
      66: iconst_0
      67: istore        9
      69: aload         8
      71: astore        10
      73: new           #57                 // class java/util/ArrayList
      76: dup
      77: aload         8
      79: arraylength
      80: invokespecial #154                // Method java/util/ArrayList."<init>":(I)V
      83: checkcast     #117                // class java/util/Collection
      86: astore        11
      88: iconst_0
      89: istore        12
      91: iconst_0
      92: istore        13
      94: iconst_0
      95: istore        14
      97: aload         10
      99: arraylength
     100: istore        15
     102: iload         14
     104: iload         15
     106: if_icmpge     293
     109: aload         10
     111: iload         14
     113: aaload
     114: astore        16
     116: aload         11
     118: iload         13
     120: iinc          13, 1
     123: aload         16
     125: checkcast     #156                // class "[Lkotlin/Triple;"
     128: astore        17
     130: istore        18
     132: astore        36
     134: iconst_0
     135: istore        19
     137: iload         18
     139: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     142: aload         6
     144: checkcast     #151                // class "[Ljava/lang/Object;"
     147: astore        20
     149: astore        21
     151: iconst_0
     152: istore        22
     154: iconst_0
     155: istore        23
     157: aload         20
     159: arraylength
     160: istore        24
     162: iload         23
     164: iload         24
     166: if_icmpge     265
     169: aload         20
     171: iload         23
     173: aaload
     174: checkcast     #156                // class "[Lkotlin/Triple;"
     177: astore        25
     179: iconst_0
     180: istore        26
     182: aload         17
     184: astore        27
     186: iconst_0
     187: istore        28
     189: iconst_0
     190: istore        29
     192: iconst_0
     193: istore        30
     195: aload         27
     197: arraylength
     198: istore        31
     200: iload         30
     202: iload         31
     204: if_icmpge     240
     207: aload         27
     209: iload         30
     211: aaload
     212: astore        32
     214: aload         32
     216: astore        33
     218: iconst_0
     219: istore        34
     221: aload         25
     223: aload         33
     225: invokestatic  #162                // Method kotlin/collections/ArraysKt.contains:([Ljava/lang/Object;Ljava/lang/Object;)Z
     228: ifeq          234
     231: iinc          29, 1
     234: iinc          30, 1
     237: goto          200
     240: iload         29
     242: iload_2
     243: if_icmplt     250
     246: iconst_1
     247: goto          251
     250: iconst_0
     251: ifeq          259
     254: iload         23
     256: goto          266
     259: iinc          23, 1
     262: goto          162
     265: iconst_m1
     266: istore        35
     268: aload         21
     270: iload         35
     272: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     275: invokestatic  #168                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     278: aload         36
     280: swap
     281: invokeinterface #169,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     286: pop
     287: iinc          14, 1
     290: goto          102
     293: aload         11
     295: checkcast     #62                 // class java/util/List
     298: nop
     299: checkcast     #89                 // class java/lang/Iterable
     302: astore        8
     304: nop
     305: iconst_0
     306: istore        9
     308: aload         8
     310: astore        10
     312: new           #57                 // class java/util/ArrayList
     315: dup
     316: invokespecial #60                 // Method java/util/ArrayList."<init>":()V
     319: checkcast     #117                // class java/util/Collection
     322: astore        11
     324: iconst_0
     325: istore        12
     327: aload         10
     329: invokeinterface #170,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     334: astore        13
     336: aload         13
     338: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     343: ifeq          401
     346: aload         13
     348: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     353: astore        14
     355: aload         14
     357: checkcast     #172                // class kotlin/Pair
     360: astore        15
     362: iconst_0
     363: istore        16
     365: aload         15
     367: invokevirtual #173                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     370: checkcast     #23                 // class java/lang/Number
     373: invokevirtual #27                 // Method java/lang/Number.intValue:()I
     376: iconst_m1
     377: if_icmpne     384
     380: iconst_1
     381: goto          385
     384: iconst_0
     385: ifne          336
     388: aload         11
     390: aload         14
     392: invokeinterface #169,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     397: pop
     398: goto          336
     401: aload         11
     403: checkcast     #62                 // class java/util/List
     406: nop
     407: astore        7
     409: aload         7
     411: invokeinterface #176,  1          // InterfaceMethod java/util/List.size:()I
     416: iload_2
     417: if_icmplt     27
     420: aload         7
     422: invokestatic  #180                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     425: checkcast     #172                // class kotlin/Pair
     428: astore        8
     430: aload         8
     432: invokevirtual #183                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     435: checkcast     #23                 // class java/lang/Number
     438: invokevirtual #27                 // Method java/lang/Number.intValue:()I
     441: istore        9
     443: aload         8
     445: invokevirtual #186                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     448: checkcast     #23                 // class java/lang/Number
     451: invokevirtual #27                 // Method java/lang/Number.intValue:()I
     454: istore        10
     456: aload_0
     457: invokevirtual #189                // Method day19/Scanner.getBeacons:()Ljava/util/List;
     460: iload         9
     462: invokeinterface #193,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     467: checkcast     #17                 // class kotlin/Triple
     470: aload         5
     472: aload_1
     473: invokevirtual #189                // Method day19/Scanner.getBeacons:()Ljava/util/List;
     476: iload         10
     478: invokeinterface #193,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     483: invokeinterface #197,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
     488: checkcast     #17                 // class kotlin/Triple
     491: invokestatic  #199                // Method minus:(Lkotlin/Triple;Lkotlin/Triple;)Lkotlin/Triple;
     494: astore        11
     496: aload         5
     498: aload         11
     500: invokedynamic #217,  0            // InvokeDynamic #0:invoke:(Lkotlin/jvm/functions/Function1;Lkotlin/Triple;)Lkotlin/jvm/functions/Function1;
     505: astore        12
     507: aload         11
     509: aload_1
     510: aload         12
     512: invokevirtual #149                // Method day19/Scanner.transform:(Lkotlin/jvm/functions/Function1;)Lday19/Scanner;
     515: invokestatic  #168                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     518: areturn
     519: aconst_null
     520: areturn

  public static final kotlin.Pair<java.util.Set<kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>>, java.util.Set<kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>>> locateScannersAndBeacons(java.util.List<day19.Scanner>, int);
    Code:
       0: aload_0
       1: ldc_w         #266                // String scanners
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: iconst_1
       8: anewarray     #17                 // class kotlin/Triple
      11: astore_3
      12: aload_3
      13: iconst_0
      14: new           #17                 // class kotlin/Triple
      17: dup
      18: iconst_0
      19: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      22: iconst_0
      23: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      26: iconst_0
      27: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      30: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      33: aastore
      34: aload_3
      35: invokestatic  #272                // Method kotlin/collections/SetsKt.mutableSetOf:([Ljava/lang/Object;)Ljava/util/Set;
      38: astore_2
      39: aload_0
      40: invokestatic  #180                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
      43: checkcast     #87                 // class day19/Scanner
      46: invokevirtual #189                // Method day19/Scanner.getBeacons:()Ljava/util/List;
      49: checkcast     #89                 // class java/lang/Iterable
      52: invokestatic  #276                // Method kotlin/collections/CollectionsKt.toMutableSet:(Ljava/lang/Iterable;)Ljava/util/Set;
      55: astore_3
      56: iconst_1
      57: anewarray     #87                 // class day19/Scanner
      60: astore        5
      62: aload         5
      64: iconst_0
      65: aload_0
      66: invokestatic  #180                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
      69: aastore
      70: aload         5
      72: invokestatic  #280                // Method kotlin/collections/CollectionsKt.mutableListOf:([Ljava/lang/Object;)Ljava/util/List;
      75: astore        4
      77: aload_0
      78: checkcast     #89                 // class java/lang/Iterable
      81: iconst_1
      82: invokestatic  #284                // Method kotlin/collections/CollectionsKt.drop:(Ljava/lang/Iterable;I)Ljava/util/List;
      85: checkcast     #117                // class java/util/Collection
      88: invokestatic  #288                // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
      91: astore        5
      93: aload         5
      95: checkcast     #117                // class java/util/Collection
      98: invokeinterface #120,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     103: ifne          110
     106: iconst_1
     107: goto          111
     110: iconst_0
     111: ifeq          250
     114: aload         4
     116: invokeinterface #291,  1          // InterfaceMethod java/util/List.removeFirst:()Ljava/lang/Object;
     121: dup
     122: ldc_w         #293                // String removeFirst(...)
     125: invokestatic  #296                // Method kotlin/jvm/internal/Intrinsics.checkNotNullExpressionValue:(Ljava/lang/Object;Ljava/lang/String;)V
     128: checkcast     #87                 // class day19/Scanner
     131: astore        6
     133: aload         5
     135: invokeinterface #300,  1          // InterfaceMethod java/util/List.listIterator:()Ljava/util/ListIterator;
     140: astore        7
     142: aload         7
     144: invokeinterface #303,  1          // InterfaceMethod java/util/ListIterator.hasNext:()Z
     149: ifeq          93
     152: aload         7
     154: invokeinterface #304,  1          // InterfaceMethod java/util/ListIterator.next:()Ljava/lang/Object;
     159: checkcast     #87                 // class day19/Scanner
     162: astore        8
     164: aload         6
     166: aload         8
     168: iload_1
     169: invokestatic  #306                // Method determineScannerLocation:(Lday19/Scanner;Lday19/Scanner;I)Lkotlin/Pair;
     172: dup
     173: ifnull        245
     176: astore        9
     178: iconst_0
     179: istore        10
     181: aload         9
     183: invokevirtual #183                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     186: checkcast     #17                 // class kotlin/Triple
     189: astore        11
     191: aload         9
     193: invokevirtual #186                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     196: checkcast     #87                 // class day19/Scanner
     199: astore        12
     201: aload         7
     203: invokeinterface #309,  1          // InterfaceMethod java/util/ListIterator.remove:()V
     208: aload         4
     210: aload         12
     212: invokeinterface #102,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     217: pop
     218: aload_2
     219: aload         11
     221: invokeinterface #312,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
     226: pop
     227: aload_3
     228: aload         12
     230: invokevirtual #189                // Method day19/Scanner.getBeacons:()Ljava/util/List;
     233: checkcast     #117                // class java/util/Collection
     236: invokeinterface #316,  2          // InterfaceMethod java/util/Set.addAll:(Ljava/util/Collection;)Z
     241: pop
     242: goto          142
     245: pop
     246: nop
     247: goto          142
     250: aload_2
     251: aload_3
     252: invokestatic  #168                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     255: areturn

  private static final int euclideanDistance(kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>, kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>);
    Code:
       0: aload_0
       1: invokevirtual #21                 // Method kotlin/Triple.getFirst:()Ljava/lang/Object;
       4: checkcast     #23                 // class java/lang/Number
       7: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      10: aload_1
      11: invokevirtual #21                 // Method kotlin/Triple.getFirst:()Ljava/lang/Object;
      14: checkcast     #23                 // class java/lang/Number
      17: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      20: isub
      21: invokestatic  #337                // Method java/lang/Math.abs:(I)I
      24: aload_0
      25: invokevirtual #36                 // Method kotlin/Triple.getSecond:()Ljava/lang/Object;
      28: checkcast     #23                 // class java/lang/Number
      31: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      34: aload_1
      35: invokevirtual #36                 // Method kotlin/Triple.getSecond:()Ljava/lang/Object;
      38: checkcast     #23                 // class java/lang/Number
      41: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      44: isub
      45: invokestatic  #337                // Method java/lang/Math.abs:(I)I
      48: iadd
      49: aload_0
      50: invokevirtual #39                 // Method kotlin/Triple.getThird:()Ljava/lang/Object;
      53: checkcast     #23                 // class java/lang/Number
      56: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      59: aload_1
      60: invokevirtual #39                 // Method kotlin/Triple.getThird:()Ljava/lang/Object;
      63: checkcast     #23                 // class java/lang/Number
      66: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      69: isub
      70: invokestatic  #337                // Method java/lang/Math.abs:(I)I
      73: iadd
      74: ireturn

  private static final int findMaxEuclideanDistance(java.lang.Iterable<kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer>>);
    Code:
       0: aload_0
       1: invokeinterface #170,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
       6: astore_1
       7: aload_1
       8: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      13: ifne          24
      16: new           #343                // class java/util/NoSuchElementException
      19: dup
      20: invokespecial #344                // Method java/util/NoSuchElementException."<init>":()V
      23: athrow
      24: aload_1
      25: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      30: checkcast     #17                 // class kotlin/Triple
      33: astore_2
      34: iconst_0
      35: istore_3
      36: aload_0
      37: invokeinterface #170,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      42: astore        4
      44: aload         4
      46: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      51: ifne          62
      54: new           #343                // class java/util/NoSuchElementException
      57: dup
      58: invokespecial #344                // Method java/util/NoSuchElementException."<init>":()V
      61: athrow
      62: aload         4
      64: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      69: checkcast     #17                 // class kotlin/Triple
      72: astore        5
      74: iconst_0
      75: istore        6
      77: aload_2
      78: aload         5
      80: invokestatic  #346                // Method euclideanDistance:(Lkotlin/Triple;Lkotlin/Triple;)I
      83: istore        5
      85: aload         4
      87: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      92: ifeq          132
      95: aload         4
      97: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     102: checkcast     #17                 // class kotlin/Triple
     105: astore        6
     107: iconst_0
     108: istore        7
     110: aload_2
     111: aload         6
     113: invokestatic  #346                // Method euclideanDistance:(Lkotlin/Triple;Lkotlin/Triple;)I
     116: istore        6
     118: iload         5
     120: iload         6
     122: if_icmpge     85
     125: iload         6
     127: istore        5
     129: goto          85
     132: iload         5
     134: nop
     135: istore_2
     136: aload_1
     137: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     142: ifeq          268
     145: aload_1
     146: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     151: checkcast     #17                 // class kotlin/Triple
     154: astore_3
     155: iconst_0
     156: istore        4
     158: aload_0
     159: invokeinterface #170,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     164: astore        5
     166: aload         5
     168: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     173: ifne          184
     176: new           #343                // class java/util/NoSuchElementException
     179: dup
     180: invokespecial #344                // Method java/util/NoSuchElementException."<init>":()V
     183: athrow
     184: aload         5
     186: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     191: checkcast     #17                 // class kotlin/Triple
     194: astore        6
     196: iconst_0
     197: istore        7
     199: aload_3
     200: aload         6
     202: invokestatic  #346                // Method euclideanDistance:(Lkotlin/Triple;Lkotlin/Triple;)I
     205: istore        6
     207: aload         5
     209: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     214: ifeq          254
     217: aload         5
     219: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     224: checkcast     #17                 // class kotlin/Triple
     227: astore        7
     229: iconst_0
     230: istore        8
     232: aload_3
     233: aload         7
     235: invokestatic  #346                // Method euclideanDistance:(Lkotlin/Triple;Lkotlin/Triple;)I
     238: istore        7
     240: iload         6
     242: iload         7
     244: if_icmpge     207
     247: iload         7
     249: istore        6
     251: goto          207
     254: iload         6
     256: nop
     257: istore_3
     258: iload_2
     259: iload_3
     260: if_icmpge     136
     263: iload_3
     264: istore_2
     265: goto          136
     268: iload_2
     269: ireturn

  public static final int findMaxEuclideanDistance(java.util.List<day19.Scanner>, int);
    Code:
       0: aload_0
       1: ldc_w         #266                // String scanners
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: iload_1
       9: invokestatic  #355                // Method locateScannersAndBeacons:(Ljava/util/List;I)Lkotlin/Pair;
      12: invokevirtual #183                // Method kotlin/Pair.component1:()Ljava/lang/Object;
      15: checkcast     #311                // class java/util/Set
      18: astore_2
      19: aload_2
      20: checkcast     #89                 // class java/lang/Iterable
      23: invokestatic  #357                // Method findMaxEuclideanDistance:(Ljava/lang/Iterable;)I
      26: ireturn

  public static final void main();
    Code:
       0: new           #363                // class java/io/File
       3: dup
       4: ldc_w         #365                // String ./input/day19.txt
       7: invokespecial #368                // Method java/io/File."<init>":(Ljava/lang/String;)V
      10: astore_0
      11: getstatic     #374                // Field kotlin/text/Charsets.UTF_8:Ljava/nio/charset/Charset;
      14: astore_1
      15: iconst_0
      16: istore_2
      17: aload_0
      18: astore_3
      19: sipush        8192
      22: istore        4
      24: aload_3
      25: astore        5
      27: new           #376                // class java/io/InputStreamReader
      30: dup
      31: new           #378                // class java/io/FileInputStream
      34: dup
      35: aload         5
      37: invokespecial #381                // Method java/io/FileInputStream."<init>":(Ljava/io/File;)V
      40: checkcast     #383                // class java/io/InputStream
      43: aload_1
      44: invokespecial #386                // Method java/io/InputStreamReader."<init>":(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V
      47: checkcast     #388                // class java/io/Reader
      50: astore        5
      52: aload         5
      54: instanceof    #390                // class java/io/BufferedReader
      57: ifeq          68
      60: aload         5
      62: checkcast     #390                // class java/io/BufferedReader
      65: goto          79
      68: new           #390                // class java/io/BufferedReader
      71: dup
      72: aload         5
      74: iload         4
      76: invokespecial #393                // Method java/io/BufferedReader."<init>":(Ljava/io/Reader;I)V
      79: checkcast     #395                // class java/io/Closeable
      82: astore_3
      83: aconst_null
      84: astore        4
      86: nop
      87: aload_3
      88: checkcast     #390                // class java/io/BufferedReader
      91: astore        5
      93: iconst_0
      94: istore        6
      96: aload         5
      98: invokestatic  #401                // Method kotlin/io/TextStreamsKt.lineSequence:(Ljava/io/BufferedReader;)Lkotlin/sequences/Sequence;
     101: astore        7
     103: iconst_0
     104: istore        8
     106: aload         7
     108: invokestatic  #406                // Method kotlin/sequences/SequencesKt.toList:(Lkotlin/sequences/Sequence;)Ljava/util/List;
     111: invokestatic  #408                // Method parseInput:(Ljava/util/List;)Ljava/util/List;
     114: astore        9
     116: aload         9
     118: bipush        12
     120: invokestatic  #355                // Method locateScannersAndBeacons:(Ljava/util/List;I)Lkotlin/Pair;
     123: astore        10
     125: aload         10
     127: invokevirtual #183                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     130: checkcast     #311                // class java/util/Set
     133: astore        11
     135: aload         10
     137: invokevirtual #186                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     140: checkcast     #311                // class java/util/Set
     143: astore        12
     145: aload         12
     147: invokeinterface #409,  1          // InterfaceMethod java/util/Set.size:()I
     152: istore        13
     154: getstatic     #415                // Field java/lang/System.out:Ljava/io/PrintStream;
     157: iload         13
     159: invokevirtual #420                // Method java/io/PrintStream.println:(I)V
     162: aload         11
     164: checkcast     #89                 // class java/lang/Iterable
     167: invokestatic  #357                // Method findMaxEuclideanDistance:(Ljava/lang/Iterable;)I
     170: istore        13
     172: getstatic     #415                // Field java/lang/System.out:Ljava/io/PrintStream;
     175: iload         13
     177: invokevirtual #420                // Method java/io/PrintStream.println:(I)V
     180: nop
     181: getstatic     #426                // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     184: astore        5
     186: aload_3
     187: aload         4
     189: invokestatic  #432                // Method kotlin/io/CloseableKt.closeFinally:(Ljava/io/Closeable;Ljava/lang/Throwable;)V
     192: goto          215
     195: astore        6
     197: aload         6
     199: astore        4
     201: aload         6
     203: athrow
     204: astore        6
     206: aload_3
     207: aload         4
     209: invokestatic  #432                // Method kotlin/io/CloseableKt.closeFinally:(Ljava/io/Closeable;Ljava/lang/Throwable;)V
     212: aload         6
     214: athrow
     215: nop
     216: return
    Exception table:
       from    to  target type
          86   186   195   Class java/lang/Throwable
          86   186   204   any
         195   204   204   any
         204   206   204   any

  public static void main(java.lang.String[]);
    Code:
       0: invokestatic  #448                // Method main:()V
       3: return

  private static final kotlin.Triple<java.lang.Integer, java.lang.Integer, java.lang.Integer> parseInput$parseBeacon(java.lang.String);
    Code:
       0: aload_0
       1: checkcast     #79                 // class java/lang/CharSequence
       4: iconst_1
       5: anewarray     #77                 // class java/lang/String
       8: astore_2
       9: aload_2
      10: iconst_0
      11: ldc_w         #453                // String ,
      14: aastore
      15: aload_2
      16: iconst_0
      17: iconst_0
      18: bipush        6
      20: aconst_null
      21: invokestatic  #457                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      24: checkcast     #89                 // class java/lang/Iterable
      27: astore_2
      28: iconst_0
      29: istore_3
      30: aload_2
      31: astore        4
      33: new           #57                 // class java/util/ArrayList
      36: dup
      37: aload_2
      38: bipush        10
      40: invokestatic  #461                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      43: invokespecial #154                // Method java/util/ArrayList."<init>":(I)V
      46: checkcast     #117                // class java/util/Collection
      49: astore        5
      51: iconst_0
      52: istore        6
      54: aload         4
      56: invokeinterface #170,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      61: astore        7
      63: aload         7
      65: invokeinterface #72,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      70: ifeq          117
      73: aload         7
      75: invokeinterface #75,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      80: astore        8
      82: aload         5
      84: aload         8
      86: checkcast     #77                 // class java/lang/String
      89: astore        9
      91: astore        11
      93: iconst_0
      94: istore        10
      96: aload         9
      98: invokestatic  #465                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     101: nop
     102: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     105: aload         11
     107: swap
     108: invokeinterface #169,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     113: pop
     114: goto          63
     117: aload         5
     119: checkcast     #62                 // class java/util/List
     122: nop
     123: astore_1
     124: aload_1
     125: iconst_0
     126: invokeinterface #193,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     131: checkcast     #23                 // class java/lang/Number
     134: invokevirtual #27                 // Method java/lang/Number.intValue:()I
     137: istore_2
     138: aload_1
     139: iconst_1
     140: invokeinterface #193,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     145: checkcast     #23                 // class java/lang/Number
     148: invokevirtual #27                 // Method java/lang/Number.intValue:()I
     151: istore_3
     152: aload_1
     153: iconst_2
     154: invokeinterface #193,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     159: checkcast     #23                 // class java/lang/Number
     162: invokevirtual #27                 // Method java/lang/Number.intValue:()I
     165: istore        4
     167: new           #17                 // class kotlin/Triple
     170: dup
     171: iload_2
     172: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     175: iload_3
     176: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     179: iload         4
     181: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     184: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
     187: areturn

  private static final kotlin.Triple orientations$lambda$0(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_1
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_2
      49: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      52: iload_3
      53: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      56: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      59: areturn

  private static final kotlin.Triple orientations$lambda$1(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_2
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_1
      49: ineg
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_3
      54: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      57: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      60: areturn

  private static final kotlin.Triple orientations$lambda$2(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_1
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_2
      50: ineg
      51: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      54: iload_3
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      61: areturn

  private static final kotlin.Triple orientations$lambda$3(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_2
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_1
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_3
      54: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      57: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      60: areturn

  private static final kotlin.Triple orientations$lambda$4(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_1
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_2
      49: ineg
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_3
      54: ineg
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      61: areturn

  private static final kotlin.Triple orientations$lambda$5(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_2
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_1
      50: ineg
      51: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      54: iload_3
      55: ineg
      56: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      59: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      62: areturn

  private static final kotlin.Triple orientations$lambda$6(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_1
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_2
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_3
      54: ineg
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      61: areturn

  private static final kotlin.Triple orientations$lambda$7(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_2
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_1
      49: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      52: iload_3
      53: ineg
      54: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      57: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      60: areturn

  private static final kotlin.Triple orientations$lambda$8(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_3
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_2
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_1
      54: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      57: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      60: areturn

  private static final kotlin.Triple orientations$lambda$9(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_2
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_3
      50: ineg
      51: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      54: iload_1
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      61: areturn

  private static final kotlin.Triple orientations$lambda$10(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_3
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_2
      49: ineg
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_1
      54: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      57: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      60: areturn

  private static final kotlin.Triple orientations$lambda$11(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_2
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_3
      49: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      52: iload_1
      53: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      56: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      59: areturn

  private static final kotlin.Triple orientations$lambda$12(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_3
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_2
      49: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      52: iload_1
      53: ineg
      54: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      57: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      60: areturn

  private static final kotlin.Triple orientations$lambda$13(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_2
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_3
      49: ineg
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_1
      54: ineg
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      61: areturn

  private static final kotlin.Triple orientations$lambda$14(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_3
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_2
      50: ineg
      51: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      54: iload_1
      55: ineg
      56: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      59: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      62: areturn

  private static final kotlin.Triple orientations$lambda$15(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_2
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_3
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_1
      54: ineg
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      61: areturn

  private static final kotlin.Triple orientations$lambda$16(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_1
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_3
      49: ineg
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_2
      54: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      57: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      60: areturn

  private static final kotlin.Triple orientations$lambda$17(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_3
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_1
      50: ineg
      51: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      54: iload_2
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      61: areturn

  private static final kotlin.Triple orientations$lambda$18(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_1
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_3
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_2
      54: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      57: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      60: areturn

  private static final kotlin.Triple orientations$lambda$19(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_3
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_1
      49: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      52: iload_2
      53: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      56: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      59: areturn

  private static final kotlin.Triple orientations$lambda$20(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_1
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_3
      49: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      52: iload_2
      53: ineg
      54: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      57: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      60: areturn

  private static final kotlin.Triple orientations$lambda$21(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_3
      45: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      48: iload_1
      49: ineg
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_2
      54: ineg
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      61: areturn

  private static final kotlin.Triple orientations$lambda$22(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_1
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_3
      50: ineg
      51: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      54: iload_2
      55: ineg
      56: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      59: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      62: areturn

  private static final kotlin.Triple orientations$lambda$23(kotlin.Triple);
    Code:
       0: aload_0
       1: ldc_w         #477                // String <destruct>
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #478                // Method kotlin/Triple.component1:()Ljava/lang/Object;
      11: checkcast     #23                 // class java/lang/Number
      14: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      17: istore_1
      18: aload_0
      19: invokevirtual #479                // Method kotlin/Triple.component2:()Ljava/lang/Object;
      22: checkcast     #23                 // class java/lang/Number
      25: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      28: istore_2
      29: aload_0
      30: invokevirtual #482                // Method kotlin/Triple.component3:()Ljava/lang/Object;
      33: checkcast     #23                 // class java/lang/Number
      36: invokevirtual #27                 // Method java/lang/Number.intValue:()I
      39: istore_3
      40: new           #17                 // class kotlin/Triple
      43: dup
      44: iload_3
      45: ineg
      46: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      49: iload_1
      50: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      53: iload_2
      54: ineg
      55: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      58: invokespecial #43                 // Method kotlin/Triple."<init>":(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
      61: areturn

  private static final kotlin.Triple determineScannerLocation$lambda$28(kotlin.jvm.functions.Function1, kotlin.Triple, kotlin.Triple);
    Code:
       0: aload_2
       1: ldc_w         #506                // String position
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: aload_2
       9: invokeinterface #197,  2          // InterfaceMethod kotlin/jvm/functions/Function1.invoke:(Ljava/lang/Object;)Ljava/lang/Object;
      14: checkcast     #17                 // class kotlin/Triple
      17: aload_1
      18: invokestatic  #508                // Method plus:(Lkotlin/Triple;Lkotlin/Triple;)Lkotlin/Triple;
      21: areturn

  public static final kotlin.Triple access$minus(kotlin.Triple, kotlin.Triple);
    Code:
       0: aload_0
       1: aload_1
       2: invokestatic  #199                // Method minus:(Lkotlin/Triple;Lkotlin/Triple;)Lkotlin/Triple;
       5: areturn

  static {};
    Code:
       0: bipush        24
       2: anewarray     #145                // class kotlin/jvm/functions/Function1
       5: astore_0
       6: aload_0
       7: iconst_0
       8: invokedynamic #519,  0            // InvokeDynamic #1:invoke:()Lkotlin/jvm/functions/Function1;
      13: aastore
      14: aload_0
      15: iconst_1
      16: invokedynamic #523,  0            // InvokeDynamic #2:invoke:()Lkotlin/jvm/functions/Function1;
      21: aastore
      22: aload_0
      23: iconst_2
      24: invokedynamic #527,  0            // InvokeDynamic #3:invoke:()Lkotlin/jvm/functions/Function1;
      29: aastore
      30: aload_0
      31: iconst_3
      32: invokedynamic #531,  0            // InvokeDynamic #4:invoke:()Lkotlin/jvm/functions/Function1;
      37: aastore
      38: aload_0
      39: iconst_4
      40: invokedynamic #535,  0            // InvokeDynamic #5:invoke:()Lkotlin/jvm/functions/Function1;
      45: aastore
      46: aload_0
      47: iconst_5
      48: invokedynamic #539,  0            // InvokeDynamic #6:invoke:()Lkotlin/jvm/functions/Function1;
      53: aastore
      54: aload_0
      55: bipush        6
      57: invokedynamic #543,  0            // InvokeDynamic #7:invoke:()Lkotlin/jvm/functions/Function1;
      62: aastore
      63: aload_0
      64: bipush        7
      66: invokedynamic #547,  0            // InvokeDynamic #8:invoke:()Lkotlin/jvm/functions/Function1;
      71: aastore
      72: aload_0
      73: bipush        8
      75: invokedynamic #551,  0            // InvokeDynamic #9:invoke:()Lkotlin/jvm/functions/Function1;
      80: aastore
      81: aload_0
      82: bipush        9
      84: invokedynamic #555,  0            // InvokeDynamic #10:invoke:()Lkotlin/jvm/functions/Function1;
      89: aastore
      90: aload_0
      91: bipush        10
      93: invokedynamic #559,  0            // InvokeDynamic #11:invoke:()Lkotlin/jvm/functions/Function1;
      98: aastore
      99: aload_0
     100: bipush        11
     102: invokedynamic #563,  0            // InvokeDynamic #12:invoke:()Lkotlin/jvm/functions/Function1;
     107: aastore
     108: aload_0
     109: bipush        12
     111: invokedynamic #567,  0            // InvokeDynamic #13:invoke:()Lkotlin/jvm/functions/Function1;
     116: aastore
     117: aload_0
     118: bipush        13
     120: invokedynamic #571,  0            // InvokeDynamic #14:invoke:()Lkotlin/jvm/functions/Function1;
     125: aastore
     126: aload_0
     127: bipush        14
     129: invokedynamic #575,  0            // InvokeDynamic #15:invoke:()Lkotlin/jvm/functions/Function1;
     134: aastore
     135: aload_0
     136: bipush        15
     138: invokedynamic #579,  0            // InvokeDynamic #16:invoke:()Lkotlin/jvm/functions/Function1;
     143: aastore
     144: aload_0
     145: bipush        16
     147: invokedynamic #583,  0            // InvokeDynamic #17:invoke:()Lkotlin/jvm/functions/Function1;
     152: aastore
     153: aload_0
     154: bipush        17
     156: invokedynamic #587,  0            // InvokeDynamic #18:invoke:()Lkotlin/jvm/functions/Function1;
     161: aastore
     162: aload_0
     163: bipush        18
     165: invokedynamic #591,  0            // InvokeDynamic #19:invoke:()Lkotlin/jvm/functions/Function1;
     170: aastore
     171: aload_0
     172: bipush        19
     174: invokedynamic #595,  0            // InvokeDynamic #20:invoke:()Lkotlin/jvm/functions/Function1;
     179: aastore
     180: aload_0
     181: bipush        20
     183: invokedynamic #599,  0            // InvokeDynamic #21:invoke:()Lkotlin/jvm/functions/Function1;
     188: aastore
     189: aload_0
     190: bipush        21
     192: invokedynamic #603,  0            // InvokeDynamic #22:invoke:()Lkotlin/jvm/functions/Function1;
     197: aastore
     198: aload_0
     199: bipush        22
     201: invokedynamic #607,  0            // InvokeDynamic #23:invoke:()Lkotlin/jvm/functions/Function1;
     206: aastore
     207: aload_0
     208: bipush        23
     210: invokedynamic #611,  0            // InvokeDynamic #24:invoke:()Lkotlin/jvm/functions/Function1;
     215: aastore
     216: aload_0
     217: invokestatic  #614                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     220: putstatic     #131                // Field orientations:Ljava/util/List;
     223: return
}