import kotlin.String
import kotlin.collections.List

object Day10 {
    data class Coordinate(val x: Int, val y: Int)

    data class Node(val coordinate: Coordinate, val pipe: String, val connections: List<Coordinate>)

    fun part1(input: List<String>): String {
        val graph = parse(input)
        val nodesInLoop = findNodesInLoop(graph)
        val graphWithJunkRemoved = graph.filterKeys { it in nodesInLoop }
        return djikstras(graphWithJunkRemoved).values.max().toString()
    }

    private fun djikstras(graph: Map<Coordinate, Node>): Map<Coordinate, Int> {
        val startNode = graph.values.find { it.pipe == "S" }!!
        val dists = mutableMapOf<Coordinate, Int>()
        val unvisited = mutableSetOf<Coordinate>()
        for (node in graph.values) {
            unvisited.add(node.coordinate)
        }
        dists[startNode.coordinate] = 0
        while (unvisited.isNotEmpty()) {
            val current = unvisited.minBy { dists[it] ?: Int.MAX_VALUE }
            unvisited.remove(current)
            for (connection in graph[current]?.connections ?: emptyList()) {
                val alt = dists.getOrPut(current) { 0 } + 1
                if (alt < (dists[connection] ?: Int.MAX_VALUE)) {
                    dists[connection] = alt
                }
            }
        }
        return dists
    }

    fun parse(input: List<String>): Map<Coordinate, Node> {
        val split = input.map { it.split("").filter { it.isNotBlank() } }
        val northDestinations = setOf("|", "7", "F", "S")
        val southDestinations = setOf("|", "J", "L", "S")
        val eastDestinations = setOf("-", "7", "J", "S")
        val westDestinations = setOf("-", "F", "L", "S")
        val nodes = split.mapIndexed { y, row ->
            row.mapIndexedNotNull { x, char ->
                val coordinate = Coordinate(x, y)
                when (char) {
                    "|" -> {
                        val connections = listOf(
                            split.getOrNull(y - 1)?.getOrNull(x)
                                ?.let { if (northDestinations.contains(it)) Coordinate(x, y - 1) else null },
                            split.getOrNull(y + 1)?.getOrNull(x)
                                ?.let { if (southDestinations.contains(it)) Coordinate(x, y + 1) else null }
                        ).filterNotNull()
                        Node(coordinate, char, connections)
                    }

                    "-" -> {
                        val connections = listOf(
                            split.getOrNull(y)?.getOrNull(x - 1)
                                ?.let { if (westDestinations.contains(it)) Coordinate(x - 1, y) else null },
                            split.getOrNull(y)?.getOrNull(x + 1)
                                ?.let { if (eastDestinations.contains(it)) Coordinate(x + 1, y) else null }
                        ).filterNotNull()
                        Node(coordinate, char, connections)
                    }

                    "L" -> {
                        val connections = listOf(
                            split.getOrNull(y - 1)?.getOrNull(x)
                                ?.let { if (northDestinations.contains(it)) Coordinate(x, y - 1) else null },
                            split.getOrNull(y)?.getOrNull(x + 1)
                                ?.let { if (eastDestinations.contains(it)) Coordinate(x + 1, y) else null }
                        ).filterNotNull()
                        Node(coordinate, char, connections)
                    }

                    "J" -> {
                        val connections = listOf(
                            split.getOrNull(y - 1)?.getOrNull(x)
                                ?.let { if (northDestinations.contains(it)) Coordinate(x, y - 1) else null },
                            split.getOrNull(y)?.getOrNull(x - 1)
                                ?.let { if (westDestinations.contains(it)) Coordinate(x - 1, y) else null }
                        ).filterNotNull()
                        Node(coordinate, char, connections)
                    }

                    "7" -> {
                        val connections = listOf(
                            split.getOrNull(y + 1)?.getOrNull(x)
                                ?.let { if (southDestinations.contains(it)) Coordinate(x, y + 1) else null },
                            split.getOrNull(y)?.getOrNull(x - 1)
                                ?.let { if (westDestinations.contains(it)) Coordinate(x - 1, y) else null },
                        ).filterNotNull()
                        Node(coordinate, char, connections)
                    }

                    "F" -> {
                        val connections = listOf(
                            split.getOrNull(y + 1)?.getOrNull(x)
                                ?.let { if (southDestinations.contains(it)) Coordinate(x, y + 1) else null },
                            split.getOrNull(y)?.getOrNull(x + 1)
                                ?.let { if (eastDestinations.contains(it)) Coordinate(x + 1, y) else null }
                        ).filterNotNull()
                        Node(coordinate, char, connections)
                    }

                    "S" -> {
                        val connections = listOf(
                            split.getOrNull(y - 1)?.getOrNull(x)
                                ?.let { if (northDestinations.contains(it)) Coordinate(x, y - 1) else null },
                            split.getOrNull(y + 1)?.getOrNull(x)
                                ?.let { if (southDestinations.contains(it)) Coordinate(x, y + 1) else null },
                            split.getOrNull(y)?.getOrNull(x - 1)
                                ?.let { if (westDestinations.contains(it)) Coordinate(x - 1, y) else null },
                            split.getOrNull(y)?.getOrNull(x + 1)
                                ?.let { if (eastDestinations.contains(it)) Coordinate(x + 1, y) else null }
                        ).filterNotNull()
                        Node(coordinate, char, connections)
                    }

                    else -> null
                }
            }
        }.flatten()
        return nodes.associateBy { it.coordinate }
    }

    fun part2(input: List<String>): String {
        val graph = parse(input)
        val nodesInLoop = findNodesInLoop(graph)
        val inputWithJunkPipesRemoved = input.mapIndexed { y, row ->
            row.mapIndexedNotNull { x, char ->
                val coordinate = Coordinate(x, y)
                if (char == '.' || coordinate !in nodesInLoop) {
                    '.'.toString()
                } else {
                    char.toString()
                }
            }.joinToString("")
        }
        val graphWithJunkRemoved = graph.filterKeys { it in nodesInLoop }
        val graphWithStartReplaced = graphWithJunkRemoved.map { (coordinate, node) ->
            if (node.pipe == "S") {
                coordinate to Node(coordinate, translate("S", node.connections), node.connections)
            } else {
                coordinate to node
            }
        }.toMap()
        val dots = inputWithJunkPipesRemoved.mapIndexed { y, row ->
            row.mapIndexedNotNull { x, char ->
                val coordinate = Coordinate(x, y)
                if (char == '.') {
                    coordinate
                } else {
                    null
                }
            }
        }.flatten().toSet()
        return dots.count { isInPolygon(graphWithStartReplaced, it) }.toString()
    }

    private fun translate(s: String, connections: List<Coordinate>): String {
        val sortedConnections = connections.sortedWith(compareBy({ it.x }, { it.y }))
        val northSouth = (sortedConnections.first().x - sortedConnections.last().x) == 0
        val eastWest = (sortedConnections.first().y - sortedConnections.last().y) == 0
        val eastNorth =
            sortedConnections.first().x > sortedConnections.last().x && sortedConnections.first().y < sortedConnections.last().y
        val eastSouth =
            sortedConnections.first().x > sortedConnections.last().x && sortedConnections.first().y > sortedConnections.last().y
        val westSouth =
            sortedConnections.first().x < sortedConnections.last().x && sortedConnections.first().y < sortedConnections.last().y
        val westNorth =
            sortedConnections.first().x < sortedConnections.last().x && sortedConnections.first().y > sortedConnections.last().y
        return when {
            eastWest -> "-"
            northSouth -> "|"
            eastNorth -> "L"
            eastSouth -> "F"
            westNorth -> "J"
            westSouth -> "7"
            else -> s
        }
    }

    private fun findNodesInLoop(graph: Map<Coordinate, Node>): Set<Coordinate> {
        val startNode = graph.values.find { it.pipe == "S" }!!
        val processed = mutableSetOf<Coordinate>()
        val unprocessed = ArrayDeque<Coordinate>()
        unprocessed.add(startNode.coordinate)
        while (unprocessed.isNotEmpty()) {
            val current = unprocessed.removeFirst()
            if (current in processed) {
                continue
            }
            unprocessed.addAll(graph[current]?.connections ?: emptyList())
            processed.add(current)
        }
        return processed
    }

    /**
     * Modified ray cast algorithm to identify if a coordinate is within the loop.
     *
     * Instead of casting a simple ray any direction and seeing if it crosses an odd number of segments,
     * we cast rays in each direction and see if they cross an odd number of segments. Additionally
     * we collapse segments such as
     *     F--
     *     |
     *   --J
     *
     * into a single segment FJ
     */
    private fun isInPolygon(graph: Map<Coordinate, Node>, it: Coordinate): Boolean {
        return isInPolygonAbove(graph, it) && isInPolygonBelow(graph, it) && isInPolygonLeft(
            graph,
            it
        ) && isInPolygonRight(graph, it)
    }

    /**
     * Modified ray cast algorithm to identify num segments right
     *
     * ------> ||| (true, 3)
     * ------> || (false, 2)
     */
    fun isInPolygonRight(graph: Map<Coordinate, Node>, coordinate: Coordinate): Boolean {
        val intersectionsRight = graph.keys.filter { it.x > coordinate.x }.filter { it.y == coordinate.y }
        val directSegments = intersectionsRight
            .filter { graph[it]?.pipe == "|" }
        val indirectSegmentRightPairs = setOf("FJ", "L7")
        val indirectSegments = intersectionsRight
            .filter { graph[it]?.pipe != "-" }
            .zipWithNext().filter { (a, b) ->
                (graph[a]?.pipe + graph[b]?.pipe) in indirectSegmentRightPairs
            }
        return (indirectSegments.size + directSegments.size) % 2 == 1
    }

    /**
     * Modified ray cast algorithm to identify num segments left
     *
     * ||| <------ (true, 3)
     * || <------ (false, 2)
     */
    fun isInPolygonLeft(graph: Map<Coordinate, Node>, coordinate: Coordinate): Boolean {
        val intersectionsLeft =
            graph.keys.filter { it.x < coordinate.x }.filter { it.y == coordinate.y }.sortedByDescending { it.x }
        val directSegments = intersectionsLeft
            .filter { graph[it]?.pipe == "|" }
        val indirectSegmentLeftPairs = setOf("JF", "7L")
        val indirectSegments = intersectionsLeft
            .filter { graph[it]?.pipe != "-" }
            .zipWithNext().filter { (a, b) ->
                (graph[a]?.pipe + graph[b]?.pipe) in indirectSegmentLeftPairs
            }
        return (indirectSegments.size + directSegments.size) % 2 == 1
    }

    /**
     * Modified ray cast algorithm to identify num segments below
     *
     *  |
     *  |
     *  v
     *  -
     *  -
     *  - (true, 3)
     *
     *  |
     *  |
     *  v
     *  -
     *  - (false, 2)
     */
    fun isInPolygonBelow(graph: Map<Coordinate, Node>, coordinate: Coordinate): Boolean {
        val intersectionsBelow =
            graph.keys.filter { it.y > coordinate.y }.filter { it.x == coordinate.x }.sortedBy { it.y }
        val directSegments = intersectionsBelow
            .filter { graph[it]?.pipe == "-" }
        val indirectSegmentSouthPairs = setOf("FJ", "7L")
        val indirectSegments = intersectionsBelow
            .filter { graph[it]?.pipe != "|" }
            .zipWithNext().filter { (a, b) ->
                (graph[a]?.pipe + graph[b]?.pipe) in indirectSegmentSouthPairs
            }
        return (indirectSegments.size + directSegments.size) % 2 == 1
    }

    /**
     * Modified ray cast algorithm to identify num segments above
     *
     *  - (true, 3)
     *  -
     *  -
     *  ^
     *  |
     *  |
     *
     *  - (false, 2)
     *  -
     *  ^
     *  |
     *  |
     */
    fun isInPolygonAbove(graph: Map<Coordinate, Node>, coordinate: Coordinate): Boolean {
        graph.keys.filter { it.y < coordinate.y }.filter { it.x < coordinate.x }
        val intersectionsAbove =
            graph.keys.filter { it.y < coordinate.y }.filter { it.x == coordinate.x }.sortedByDescending { it.y }
        val directSegments = intersectionsAbove
            .filter { graph[it]?.pipe == "-" }
        val indirectSegmentNorthPairs = setOf("JF", "L7")
        val indirectSegments = intersectionsAbove
            .filter { graph[it]?.pipe != "|" }
            .zipWithNext().filter { (a, b) ->
                (graph[a]?.pipe + graph[b]?.pipe) in indirectSegmentNorthPairs
            }
        return (indirectSegments.size + directSegments.size) % 2 == 1
    }
}

Compiled from "Day10.kt"
public final class Day10$Node {
  private final Day10$Coordinate coordinate;

  private final java.lang.String pipe;

  private final java.util.List<Day10$Coordinate> connections;

  public Day10$Node(Day10$Coordinate, java.lang.String, java.util.List<Day10$Coordinate>);
    Code:
       0: aload_1
       1: ldc           #10                 // String coordinate
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #18                 // String pipe
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_3
      13: ldc           #20                 // String connections
      15: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      18: aload_0
      19: invokespecial #23                 // Method java/lang/Object."<init>":()V
      22: aload_0
      23: aload_1
      24: putfield      #26                 // Field coordinate:LDay10$Coordinate;
      27: aload_0
      28: aload_2
      29: putfield      #29                 // Field pipe:Ljava/lang/String;
      32: aload_0
      33: aload_3
      34: putfield      #32                 // Field connections:Ljava/util/List;
      37: return

  public final Day10$Coordinate getCoordinate();
    Code:
       0: aload_0
       1: getfield      #26                 // Field coordinate:LDay10$Coordinate;
       4: areturn

  public final java.lang.String getPipe();
    Code:
       0: aload_0
       1: getfield      #29                 // Field pipe:Ljava/lang/String;
       4: areturn

  public final java.util.List<Day10$Coordinate> getConnections();
    Code:
       0: aload_0
       1: getfield      #32                 // Field connections:Ljava/util/List;
       4: areturn

  public final Day10$Coordinate component1();
    Code:
       0: aload_0
       1: getfield      #26                 // Field coordinate:LDay10$Coordinate;
       4: areturn

  public final java.lang.String component2();
    Code:
       0: aload_0
       1: getfield      #29                 // Field pipe:Ljava/lang/String;
       4: areturn

  public final java.util.List<Day10$Coordinate> component3();
    Code:
       0: aload_0
       1: getfield      #32                 // Field connections:Ljava/util/List;
       4: areturn

  public final Day10$Node copy(Day10$Coordinate, java.lang.String, java.util.List<Day10$Coordinate>);
    Code:
       0: aload_1
       1: ldc           #10                 // String coordinate
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #18                 // String pipe
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: aload_3
      13: ldc           #20                 // String connections
      15: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      18: new           #2                  // class Day10$Node
      21: dup
      22: aload_1
      23: aload_2
      24: aload_3
      25: invokespecial #49                 // Method "<init>":(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)V
      28: areturn

  public static Day10$Node copy$default(Day10$Node, Day10$Coordinate, java.lang.String, java.util.List, int, java.lang.Object);
    Code:
       0: iload         4
       2: iconst_1
       3: iand
       4: ifeq          12
       7: aload_0
       8: getfield      #26                 // Field coordinate:LDay10$Coordinate;
      11: astore_1
      12: iload         4
      14: iconst_2
      15: iand
      16: ifeq          24
      19: aload_0
      20: getfield      #29                 // Field pipe:Ljava/lang/String;
      23: astore_2
      24: iload         4
      26: iconst_4
      27: iand
      28: ifeq          36
      31: aload_0
      32: getfield      #32                 // Field connections:Ljava/util/List;
      35: astore_3
      36: aload_0
      37: aload_1
      38: aload_2
      39: aload_3
      40: invokevirtual #53                 // Method copy:(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)LDay10$Node;
      43: areturn

  public java.lang.String toString();
    Code:
       0: new           #56                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #57                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #59                 // String Node(coordinate=
       9: invokevirtual #63                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #26                 // Field coordinate:LDay10$Coordinate;
      16: invokevirtual #66                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      19: ldc           #68                 // String , pipe=
      21: invokevirtual #63                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: aload_0
      25: getfield      #29                 // Field pipe:Ljava/lang/String;
      28: invokevirtual #63                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      31: ldc           #70                 // String , connections=
      33: invokevirtual #63                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      36: aload_0
      37: getfield      #32                 // Field connections:Ljava/util/List;
      40: invokevirtual #66                 // Method java/lang/StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
      43: bipush        41
      45: invokevirtual #73                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      48: invokevirtual #75                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      51: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #26                 // Field coordinate:LDay10$Coordinate;
       4: invokevirtual #81                 // Method Day10$Coordinate.hashCode:()I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #29                 // Field pipe:Ljava/lang/String;
      16: invokevirtual #84                 // Method java/lang/String.hashCode:()I
      19: iadd
      20: istore_1
      21: iload_1
      22: bipush        31
      24: imul
      25: aload_0
      26: getfield      #32                 // Field connections:Ljava/util/List;
      29: invokevirtual #85                 // Method java/lang/Object.hashCode:()I
      32: iadd
      33: istore_1
      34: iload_1
      35: ireturn

  public boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: if_acmpne     7
       5: iconst_1
       6: ireturn
       7: aload_1
       8: instanceof    #2                  // class Day10$Node
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Day10$Node
      20: astore_2
      21: aload_0
      22: getfield      #26                 // Field coordinate:LDay10$Coordinate;
      25: aload_2
      26: getfield      #26                 // Field coordinate:LDay10$Coordinate;
      29: invokestatic  #94                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      32: ifne          37
      35: iconst_0
      36: ireturn
      37: aload_0
      38: getfield      #29                 // Field pipe:Ljava/lang/String;
      41: aload_2
      42: getfield      #29                 // Field pipe:Ljava/lang/String;
      45: invokestatic  #94                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      48: ifne          53
      51: iconst_0
      52: ireturn
      53: aload_0
      54: getfield      #32                 // Field connections:Ljava/util/List;
      57: aload_2
      58: getfield      #32                 // Field connections:Ljava/util/List;
      61: invokestatic  #94                 // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      64: ifne          69
      67: iconst_0
      68: ireturn
      69: iconst_1
      70: ireturn
}

Compiled from "Comparisons.kt"
public final class Day10$isInPolygonBelow$$inlined$sortedBy$1<T> implements java.util.Comparator {
  public Day10$isInPolygonBelow$$inlined$sortedBy$1();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_1
       1: checkcast     #23                 // class Day10$Coordinate
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: invokevirtual #27                 // Method Day10$Coordinate.getY:()I
      12: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      15: checkcast     #35                 // class java/lang/Comparable
      18: aload_2
      19: checkcast     #23                 // class Day10$Coordinate
      22: astore_3
      23: astore        5
      25: iconst_0
      26: istore        4
      28: aload_3
      29: invokevirtual #27                 // Method Day10$Coordinate.getY:()I
      32: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      35: aload         5
      37: swap
      38: checkcast     #35                 // class java/lang/Comparable
      41: invokestatic  #41                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      44: ireturn
}

Compiled from "Day10.kt"
public final class Day10 {
  public static final Day10 INSTANCE;

  private Day10();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final java.lang.String part1(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: aload_1
       8: invokevirtual #26                 // Method parse:(Ljava/util/List;)Ljava/util/Map;
      11: astore_2
      12: aload_0
      13: aload_2
      14: invokespecial #30                 // Method findNodesInLoop:(Ljava/util/Map;)Ljava/util/Set;
      17: astore_3
      18: aload_2
      19: astore        5
      21: iconst_0
      22: istore        6
      24: new           #32                 // class java/util/LinkedHashMap
      27: dup
      28: invokespecial #33                 // Method java/util/LinkedHashMap."<init>":()V
      31: astore        7
      33: aload         5
      35: invokeinterface #39,  1           // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
      40: invokeinterface #45,  1           // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
      45: astore        8
      47: aload         8
      49: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifeq          118
      57: aload         8
      59: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: checkcast     #57                 // class java/util/Map$Entry
      67: astore        9
      69: aload         9
      71: invokeinterface #60,  1           // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
      76: checkcast     #62                 // class Day10$Coordinate
      79: astore        10
      81: iconst_0
      82: istore        11
      84: aload_3
      85: aload         10
      87: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
      92: ifeq          47
      95: aload         7
      97: aload         9
      99: invokeinterface #60,  1           // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     104: aload         9
     106: invokeinterface #69,  1           // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     111: invokevirtual #73                 // Method java/util/LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     114: pop
     115: goto          47
     118: aload         7
     120: checkcast     #35                 // class java/util/Map
     123: astore        4
     125: aload_0
     126: aload         4
     128: invokespecial #77                 // Method djikstras:(Ljava/util/Map;)Ljava/util/Map;
     131: invokeinterface #81,  1           // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     136: checkcast     #83                 // class java/lang/Iterable
     139: invokestatic  #89                 // Method kotlin/collections/CollectionsKt.maxOrThrow:(Ljava/lang/Iterable;)Ljava/lang/Comparable;
     142: checkcast     #91                 // class java/lang/Number
     145: invokevirtual #95                 // Method java/lang/Number.intValue:()I
     148: invokestatic  #101                // Method java/lang/String.valueOf:(I)Ljava/lang/String;
     151: areturn

  private final java.util.Map<Day10$Coordinate, java.lang.Integer> djikstras(java.util.Map<Day10$Coordinate, Day10$Node>);
    Code:
       0: aload_1
       1: invokeinterface #81,  1           // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
       6: checkcast     #83                 // class java/lang/Iterable
       9: astore        4
      11: aload         4
      13: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      18: astore        5
      20: aload         5
      22: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      27: ifeq          67
      30: aload         5
      32: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      37: astore        6
      39: aload         6
      41: checkcast     #123                // class Day10$Node
      44: astore        7
      46: iconst_0
      47: istore        8
      49: aload         7
      51: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
      54: ldc           #129                // String S
      56: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      59: ifeq          20
      62: aload         6
      64: goto          68
      67: aconst_null
      68: dup
      69: invokestatic  #137                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      72: checkcast     #123                // class Day10$Node
      75: astore_2
      76: new           #32                 // class java/util/LinkedHashMap
      79: dup
      80: invokespecial #33                 // Method java/util/LinkedHashMap."<init>":()V
      83: checkcast     #35                 // class java/util/Map
      86: astore_3
      87: new           #139                // class java/util/LinkedHashSet
      90: dup
      91: invokespecial #140                // Method java/util/LinkedHashSet."<init>":()V
      94: checkcast     #41                 // class java/util/Set
      97: astore        4
      99: aload_1
     100: invokeinterface #81,  1           // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
     105: invokeinterface #143,  1          // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator;
     110: astore        5
     112: aload         5
     114: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     119: ifeq          150
     122: aload         5
     124: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     129: checkcast     #123                // class Day10$Node
     132: astore        6
     134: aload         4
     136: aload         6
     138: invokevirtual #147                // Method Day10$Node.getCoordinate:()LDay10$Coordinate;
     141: invokeinterface #150,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
     146: pop
     147: goto          112
     150: aload_3
     151: aload_2
     152: invokevirtual #147                // Method Day10$Node.getCoordinate:()LDay10$Coordinate;
     155: iconst_0
     156: invokestatic  #155                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     159: invokeinterface #156,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     164: pop
     165: aload         4
     167: checkcast     #142                // class java/util/Collection
     170: invokeinterface #159,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     175: ifne          182
     178: iconst_1
     179: goto          183
     182: iconst_0
     183: ifeq          553
     186: aload         4
     188: checkcast     #83                 // class java/lang/Iterable
     191: astore        6
     193: iconst_0
     194: istore        7
     196: aload         6
     198: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     203: astore        8
     205: aload         8
     207: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     212: ifne          223
     215: new           #161                // class java/util/NoSuchElementException
     218: dup
     219: invokespecial #162                // Method java/util/NoSuchElementException."<init>":()V
     222: athrow
     223: aload         8
     225: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     230: astore        9
     232: aload         8
     234: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     239: ifne          247
     242: aload         9
     244: goto          372
     247: aload         9
     249: checkcast     #62                 // class Day10$Coordinate
     252: astore        10
     254: iconst_0
     255: istore        11
     257: aload_3
     258: aload         10
     260: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     265: checkcast     #152                // class java/lang/Integer
     268: dup
     269: ifnull        278
     272: invokevirtual #167                // Method java/lang/Integer.intValue:()I
     275: goto          281
     278: pop
     279: ldc           #168                // int 2147483647
     281: invokestatic  #155                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     284: checkcast     #170                // class java/lang/Comparable
     287: astore        10
     289: aload         8
     291: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     296: astore        11
     298: aload         11
     300: checkcast     #62                 // class Day10$Coordinate
     303: astore        12
     305: iconst_0
     306: istore        13
     308: aload_3
     309: aload         12
     311: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     316: checkcast     #152                // class java/lang/Integer
     319: dup
     320: ifnull        329
     323: invokevirtual #167                // Method java/lang/Integer.intValue:()I
     326: goto          332
     329: pop
     330: ldc           #168                // int 2147483647
     332: invokestatic  #155                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     335: checkcast     #170                // class java/lang/Comparable
     338: astore        12
     340: aload         10
     342: aload         12
     344: invokeinterface #174,  2          // InterfaceMethod java/lang/Comparable.compareTo:(Ljava/lang/Object;)I
     349: ifle          360
     352: aload         11
     354: astore        9
     356: aload         12
     358: astore        10
     360: aload         8
     362: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     367: ifne          289
     370: aload         9
     372: checkcast     #62                 // class Day10$Coordinate
     375: astore        5
     377: aload         4
     379: aload         5
     381: invokeinterface #177,  2          // InterfaceMethod java/util/Set.remove:(Ljava/lang/Object;)Z
     386: pop
     387: aload_1
     388: aload         5
     390: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     395: checkcast     #123                // class Day10$Node
     398: dup
     399: ifnull        409
     402: invokevirtual #181                // Method Day10$Node.getConnections:()Ljava/util/List;
     405: dup
     406: ifnonnull     413
     409: pop
     410: invokestatic  #184                // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
     413: invokeinterface #185,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
     418: astore        6
     420: aload         6
     422: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     427: ifeq          165
     430: aload         6
     432: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     437: checkcast     #62                 // class Day10$Coordinate
     440: astore        7
     442: aload_3
     443: astore        9
     445: iconst_0
     446: istore        10
     448: aload         9
     450: aload         5
     452: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     457: astore        11
     459: aload         11
     461: ifnonnull     490
     464: iconst_0
     465: istore        12
     467: iconst_0
     468: invokestatic  #155                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     471: astore        12
     473: aload         9
     475: aload         5
     477: aload         12
     479: invokeinterface #156,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     484: pop
     485: aload         12
     487: goto          492
     490: aload         11
     492: nop
     493: checkcast     #91                 // class java/lang/Number
     496: invokevirtual #95                 // Method java/lang/Number.intValue:()I
     499: iconst_1
     500: iadd
     501: istore        8
     503: iload         8
     505: aload_3
     506: aload         7
     508: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     513: checkcast     #152                // class java/lang/Integer
     516: dup
     517: ifnull        526
     520: invokevirtual #167                // Method java/lang/Integer.intValue:()I
     523: goto          529
     526: pop
     527: ldc           #168                // int 2147483647
     529: if_icmpge     420
     532: iload         8
     534: invokestatic  #155                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     537: astore        10
     539: aload_3
     540: aload         7
     542: aload         10
     544: invokeinterface #156,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     549: pop
     550: goto          420
     553: aload_3
     554: areturn

  public final java.util.Map<Day10$Coordinate, Day10$Node> parse(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: checkcast     #83                 // class java/lang/Iterable
      10: astore_3
      11: iconst_0
      12: istore        4
      14: aload_3
      15: astore        5
      17: new           #214                // class java/util/ArrayList
      20: dup
      21: aload_3
      22: bipush        10
      24: invokestatic  #218                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      27: invokespecial #221                // Method java/util/ArrayList."<init>":(I)V
      30: checkcast     #142                // class java/util/Collection
      33: astore        6
      35: iconst_0
      36: istore        7
      38: aload         5
      40: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      45: astore        8
      47: aload         8
      49: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      54: ifeq          224
      57: aload         8
      59: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      64: astore        9
      66: aload         6
      68: aload         9
      70: checkcast     #97                 // class java/lang/String
      73: astore        10
      75: astore        50
      77: iconst_0
      78: istore        11
      80: aload         10
      82: checkcast     #223                // class java/lang/CharSequence
      85: iconst_1
      86: anewarray     #97                 // class java/lang/String
      89: astore        12
      91: aload         12
      93: iconst_0
      94: ldc           #225                // String
      96: aastore
      97: aload         12
      99: iconst_0
     100: iconst_0
     101: bipush        6
     103: aconst_null
     104: invokestatic  #231                // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
     107: checkcast     #83                 // class java/lang/Iterable
     110: astore        12
     112: iconst_0
     113: istore        13
     115: aload         12
     117: astore        14
     119: new           #214                // class java/util/ArrayList
     122: dup
     123: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     126: checkcast     #142                // class java/util/Collection
     129: astore        15
     131: iconst_0
     132: istore        16
     134: aload         14
     136: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     141: astore        17
     143: aload         17
     145: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     150: ifeq          205
     153: aload         17
     155: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     160: astore        18
     162: aload         18
     164: checkcast     #97                 // class java/lang/String
     167: astore        19
     169: iconst_0
     170: istore        20
     172: aload         19
     174: checkcast     #223                // class java/lang/CharSequence
     177: invokestatic  #236                // Method kotlin/text/StringsKt.isBlank:(Ljava/lang/CharSequence;)Z
     180: ifne          187
     183: iconst_1
     184: goto          188
     187: iconst_0
     188: nop
     189: ifeq          143
     192: aload         15
     194: aload         18
     196: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     201: pop
     202: goto          143
     205: aload         15
     207: checkcast     #119                // class java/util/List
     210: nop
     211: nop
     212: aload         50
     214: swap
     215: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     220: pop
     221: goto          47
     224: aload         6
     226: checkcast     #119                // class java/util/List
     229: nop
     230: astore_2
     231: iconst_4
     232: anewarray     #97                 // class java/lang/String
     235: astore        4
     237: aload         4
     239: iconst_0
     240: ldc           #239                // String |
     242: aastore
     243: aload         4
     245: iconst_1
     246: ldc           #241                // String 7
     248: aastore
     249: aload         4
     251: iconst_2
     252: ldc           #243                // String F
     254: aastore
     255: aload         4
     257: iconst_3
     258: ldc           #129                // String S
     260: aastore
     261: aload         4
     263: invokestatic  #249                // Method kotlin/collections/SetsKt.setOf:([Ljava/lang/Object;)Ljava/util/Set;
     266: astore_3
     267: iconst_4
     268: anewarray     #97                 // class java/lang/String
     271: astore        5
     273: aload         5
     275: iconst_0
     276: ldc           #239                // String |
     278: aastore
     279: aload         5
     281: iconst_1
     282: ldc           #251                // String J
     284: aastore
     285: aload         5
     287: iconst_2
     288: ldc           #253                // String L
     290: aastore
     291: aload         5
     293: iconst_3
     294: ldc           #129                // String S
     296: aastore
     297: aload         5
     299: invokestatic  #249                // Method kotlin/collections/SetsKt.setOf:([Ljava/lang/Object;)Ljava/util/Set;
     302: astore        4
     304: iconst_4
     305: anewarray     #97                 // class java/lang/String
     308: astore        6
     310: aload         6
     312: iconst_0
     313: ldc           #255                // String -
     315: aastore
     316: aload         6
     318: iconst_1
     319: ldc           #241                // String 7
     321: aastore
     322: aload         6
     324: iconst_2
     325: ldc           #251                // String J
     327: aastore
     328: aload         6
     330: iconst_3
     331: ldc           #129                // String S
     333: aastore
     334: aload         6
     336: invokestatic  #249                // Method kotlin/collections/SetsKt.setOf:([Ljava/lang/Object;)Ljava/util/Set;
     339: astore        5
     341: iconst_4
     342: anewarray     #97                 // class java/lang/String
     345: astore        7
     347: aload         7
     349: iconst_0
     350: ldc           #255                // String -
     352: aastore
     353: aload         7
     355: iconst_1
     356: ldc           #243                // String F
     358: aastore
     359: aload         7
     361: iconst_2
     362: ldc           #253                // String L
     364: aastore
     365: aload         7
     367: iconst_3
     368: ldc           #129                // String S
     370: aastore
     371: aload         7
     373: invokestatic  #249                // Method kotlin/collections/SetsKt.setOf:([Ljava/lang/Object;)Ljava/util/Set;
     376: astore        6
     378: aload_2
     379: checkcast     #83                 // class java/lang/Iterable
     382: astore        8
     384: iconst_0
     385: istore        9
     387: aload         8
     389: astore        10
     391: new           #214                // class java/util/ArrayList
     394: dup
     395: aload         8
     397: bipush        10
     399: invokestatic  #218                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     402: invokespecial #221                // Method java/util/ArrayList."<init>":(I)V
     405: checkcast     #142                // class java/util/Collection
     408: astore        11
     410: iconst_0
     411: istore        12
     413: iconst_0
     414: istore        13
     416: aload         10
     418: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     423: astore        14
     425: aload         14
     427: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     432: ifeq          2509
     435: aload         14
     437: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     442: astore        15
     444: aload         11
     446: iload         13
     448: iinc          13, 1
     451: istore        16
     453: iload         16
     455: ifge          461
     458: invokestatic  #258                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     461: iload         16
     463: aload         15
     465: checkcast     #119                // class java/util/List
     468: astore        17
     470: istore        18
     472: astore        50
     474: iconst_0
     475: istore        19
     477: aload         17
     479: checkcast     #83                 // class java/lang/Iterable
     482: astore        20
     484: iconst_0
     485: istore        21
     487: aload         20
     489: astore        22
     491: new           #214                // class java/util/ArrayList
     494: dup
     495: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     498: checkcast     #142                // class java/util/Collection
     501: astore        23
     503: iconst_0
     504: istore        24
     506: aload         22
     508: astore        25
     510: iconst_0
     511: istore        26
     513: iconst_0
     514: istore        27
     516: aload         25
     518: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     523: astore        28
     525: aload         28
     527: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     532: ifeq          2489
     535: aload         28
     537: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     542: astore        29
     544: iload         27
     546: iinc          27, 1
     549: istore        30
     551: iload         30
     553: ifge          559
     556: invokestatic  #258                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     559: iload         30
     561: aload         29
     563: astore        31
     565: istore        32
     567: iconst_0
     568: istore        33
     570: iload         32
     572: aload         31
     574: checkcast     #97                 // class java/lang/String
     577: astore        34
     579: istore        35
     581: iconst_0
     582: istore        36
     584: new           #62                 // class Day10$Coordinate
     587: dup
     588: iload         35
     590: iload         18
     592: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
     595: astore        37
     597: aload         34
     599: astore        38
     601: aload         38
     603: invokevirtual #264                // Method java/lang/String.hashCode:()I
     606: lookupswitch  { // 7
                    45: 750
                    55: 698
                    70: 685
                    74: 711
                    76: 737
                    83: 672
                   124: 724
               default: 2460
          }
     672: aload         38
     674: ldc           #129                // String S
     676: invokevirtual #267                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     679: ifne          2062
     682: goto          2460
     685: aload         38
     687: ldc           #243                // String F
     689: invokevirtual #267                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     692: ifne          1845
     695: goto          2460
     698: aload         38
     700: ldc           #241                // String 7
     702: invokevirtual #267                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     705: ifne          1628
     708: goto          2460
     711: aload         38
     713: ldc           #251                // String J
     715: invokevirtual #267                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     718: ifne          1412
     721: goto          2460
     724: aload         38
     726: ldc           #239                // String |
     728: invokevirtual #267                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     731: ifne          763
     734: goto          2460
     737: aload         38
     739: ldc           #253                // String L
     741: invokevirtual #267                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     744: ifne          1196
     747: goto          2460
     750: aload         38
     752: ldc           #255                // String -
     754: invokevirtual #267                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     757: ifne          979
     760: goto          2460
     763: iconst_2
     764: anewarray     #62                 // class Day10$Coordinate
     767: astore        39
     769: aload         39
     771: iconst_0
     772: aload_2
     773: iload         18
     775: iconst_1
     776: isub
     777: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
     780: checkcast     #119                // class java/util/List
     783: astore        40
     785: aload         40
     787: ifnull        857
     790: aload         40
     792: iload         35
     794: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
     797: checkcast     #97                 // class java/lang/String
     800: astore        41
     802: aload         41
     804: ifnull        857
     807: aload         41
     809: astore        42
     811: istore        43
     813: astore        44
     815: iconst_0
     816: istore        45
     818: aload_3
     819: aload         42
     821: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     826: ifeq          845
     829: new           #62                 // class Day10$Coordinate
     832: dup
     833: iload         35
     835: iload         18
     837: iconst_1
     838: isub
     839: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
     842: goto          846
     845: aconst_null
     846: astore        46
     848: aload         44
     850: iload         43
     852: aload         46
     854: goto          858
     857: aconst_null
     858: aastore
     859: aload         39
     861: iconst_1
     862: aload_2
     863: iload         18
     865: iconst_1
     866: iadd
     867: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
     870: checkcast     #119                // class java/util/List
     873: astore        40
     875: aload         40
     877: ifnull        948
     880: aload         40
     882: iload         35
     884: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
     887: checkcast     #97                 // class java/lang/String
     890: astore        41
     892: aload         41
     894: ifnull        948
     897: aload         41
     899: astore        42
     901: istore        43
     903: astore        44
     905: iconst_0
     906: istore        45
     908: aload         4
     910: aload         42
     912: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     917: ifeq          936
     920: new           #62                 // class Day10$Coordinate
     923: dup
     924: iload         35
     926: iload         18
     928: iconst_1
     929: iadd
     930: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
     933: goto          937
     936: aconst_null
     937: astore        46
     939: aload         44
     941: iload         43
     943: aload         46
     945: goto          949
     948: aconst_null
     949: aastore
     950: aload         39
     952: invokestatic  #275                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
     955: checkcast     #83                 // class java/lang/Iterable
     958: invokestatic  #279                // Method kotlin/collections/CollectionsKt.filterNotNull:(Ljava/lang/Iterable;)Ljava/util/List;
     961: astore        47
     963: new           #123                // class Day10$Node
     966: dup
     967: aload         37
     969: aload         34
     971: aload         47
     973: invokespecial #282                // Method Day10$Node."<init>":(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)V
     976: goto          2461
     979: iconst_2
     980: anewarray     #62                 // class Day10$Coordinate
     983: astore        39
     985: aload         39
     987: iconst_0
     988: aload_2
     989: iload         18
     991: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
     994: checkcast     #119                // class java/util/List
     997: astore        40
     999: aload         40
    1001: ifnull        1074
    1004: aload         40
    1006: iload         35
    1008: iconst_1
    1009: isub
    1010: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1013: checkcast     #97                 // class java/lang/String
    1016: astore        41
    1018: aload         41
    1020: ifnull        1074
    1023: aload         41
    1025: astore        42
    1027: istore        43
    1029: astore        44
    1031: iconst_0
    1032: istore        45
    1034: aload         6
    1036: aload         42
    1038: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1043: ifeq          1062
    1046: new           #62                 // class Day10$Coordinate
    1049: dup
    1050: iload         35
    1052: iconst_1
    1053: isub
    1054: iload         18
    1056: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    1059: goto          1063
    1062: aconst_null
    1063: astore        46
    1065: aload         44
    1067: iload         43
    1069: aload         46
    1071: goto          1075
    1074: aconst_null
    1075: aastore
    1076: aload         39
    1078: iconst_1
    1079: aload_2
    1080: iload         18
    1082: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1085: checkcast     #119                // class java/util/List
    1088: astore        40
    1090: aload         40
    1092: ifnull        1165
    1095: aload         40
    1097: iload         35
    1099: iconst_1
    1100: iadd
    1101: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1104: checkcast     #97                 // class java/lang/String
    1107: astore        41
    1109: aload         41
    1111: ifnull        1165
    1114: aload         41
    1116: astore        42
    1118: istore        43
    1120: astore        44
    1122: iconst_0
    1123: istore        45
    1125: aload         5
    1127: aload         42
    1129: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1134: ifeq          1153
    1137: new           #62                 // class Day10$Coordinate
    1140: dup
    1141: iload         35
    1143: iconst_1
    1144: iadd
    1145: iload         18
    1147: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    1150: goto          1154
    1153: aconst_null
    1154: astore        46
    1156: aload         44
    1158: iload         43
    1160: aload         46
    1162: goto          1166
    1165: aconst_null
    1166: aastore
    1167: aload         39
    1169: invokestatic  #275                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    1172: checkcast     #83                 // class java/lang/Iterable
    1175: invokestatic  #279                // Method kotlin/collections/CollectionsKt.filterNotNull:(Ljava/lang/Iterable;)Ljava/util/List;
    1178: astore        47
    1180: new           #123                // class Day10$Node
    1183: dup
    1184: aload         37
    1186: aload         34
    1188: aload         47
    1190: invokespecial #282                // Method Day10$Node."<init>":(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)V
    1193: goto          2461
    1196: iconst_2
    1197: anewarray     #62                 // class Day10$Coordinate
    1200: astore        39
    1202: aload         39
    1204: iconst_0
    1205: aload_2
    1206: iload         18
    1208: iconst_1
    1209: isub
    1210: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1213: checkcast     #119                // class java/util/List
    1216: astore        40
    1218: aload         40
    1220: ifnull        1290
    1223: aload         40
    1225: iload         35
    1227: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1230: checkcast     #97                 // class java/lang/String
    1233: astore        41
    1235: aload         41
    1237: ifnull        1290
    1240: aload         41
    1242: astore        42
    1244: istore        43
    1246: astore        44
    1248: iconst_0
    1249: istore        45
    1251: aload_3
    1252: aload         42
    1254: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1259: ifeq          1278
    1262: new           #62                 // class Day10$Coordinate
    1265: dup
    1266: iload         35
    1268: iload         18
    1270: iconst_1
    1271: isub
    1272: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    1275: goto          1279
    1278: aconst_null
    1279: astore        46
    1281: aload         44
    1283: iload         43
    1285: aload         46
    1287: goto          1291
    1290: aconst_null
    1291: aastore
    1292: aload         39
    1294: iconst_1
    1295: aload_2
    1296: iload         18
    1298: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1301: checkcast     #119                // class java/util/List
    1304: astore        40
    1306: aload         40
    1308: ifnull        1381
    1311: aload         40
    1313: iload         35
    1315: iconst_1
    1316: iadd
    1317: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1320: checkcast     #97                 // class java/lang/String
    1323: astore        41
    1325: aload         41
    1327: ifnull        1381
    1330: aload         41
    1332: astore        42
    1334: istore        43
    1336: astore        44
    1338: iconst_0
    1339: istore        45
    1341: aload         5
    1343: aload         42
    1345: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1350: ifeq          1369
    1353: new           #62                 // class Day10$Coordinate
    1356: dup
    1357: iload         35
    1359: iconst_1
    1360: iadd
    1361: iload         18
    1363: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    1366: goto          1370
    1369: aconst_null
    1370: astore        46
    1372: aload         44
    1374: iload         43
    1376: aload         46
    1378: goto          1382
    1381: aconst_null
    1382: aastore
    1383: aload         39
    1385: invokestatic  #275                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    1388: checkcast     #83                 // class java/lang/Iterable
    1391: invokestatic  #279                // Method kotlin/collections/CollectionsKt.filterNotNull:(Ljava/lang/Iterable;)Ljava/util/List;
    1394: astore        47
    1396: new           #123                // class Day10$Node
    1399: dup
    1400: aload         37
    1402: aload         34
    1404: aload         47
    1406: invokespecial #282                // Method Day10$Node."<init>":(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)V
    1409: goto          2461
    1412: iconst_2
    1413: anewarray     #62                 // class Day10$Coordinate
    1416: astore        39
    1418: aload         39
    1420: iconst_0
    1421: aload_2
    1422: iload         18
    1424: iconst_1
    1425: isub
    1426: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1429: checkcast     #119                // class java/util/List
    1432: astore        40
    1434: aload         40
    1436: ifnull        1506
    1439: aload         40
    1441: iload         35
    1443: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1446: checkcast     #97                 // class java/lang/String
    1449: astore        41
    1451: aload         41
    1453: ifnull        1506
    1456: aload         41
    1458: astore        42
    1460: istore        43
    1462: astore        44
    1464: iconst_0
    1465: istore        45
    1467: aload_3
    1468: aload         42
    1470: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1475: ifeq          1494
    1478: new           #62                 // class Day10$Coordinate
    1481: dup
    1482: iload         35
    1484: iload         18
    1486: iconst_1
    1487: isub
    1488: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    1491: goto          1495
    1494: aconst_null
    1495: astore        46
    1497: aload         44
    1499: iload         43
    1501: aload         46
    1503: goto          1507
    1506: aconst_null
    1507: aastore
    1508: aload         39
    1510: iconst_1
    1511: aload_2
    1512: iload         18
    1514: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1517: checkcast     #119                // class java/util/List
    1520: astore        40
    1522: aload         40
    1524: ifnull        1597
    1527: aload         40
    1529: iload         35
    1531: iconst_1
    1532: isub
    1533: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1536: checkcast     #97                 // class java/lang/String
    1539: astore        41
    1541: aload         41
    1543: ifnull        1597
    1546: aload         41
    1548: astore        42
    1550: istore        43
    1552: astore        44
    1554: iconst_0
    1555: istore        45
    1557: aload         6
    1559: aload         42
    1561: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1566: ifeq          1585
    1569: new           #62                 // class Day10$Coordinate
    1572: dup
    1573: iload         35
    1575: iconst_1
    1576: isub
    1577: iload         18
    1579: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    1582: goto          1586
    1585: aconst_null
    1586: astore        46
    1588: aload         44
    1590: iload         43
    1592: aload         46
    1594: goto          1598
    1597: aconst_null
    1598: aastore
    1599: aload         39
    1601: invokestatic  #275                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    1604: checkcast     #83                 // class java/lang/Iterable
    1607: invokestatic  #279                // Method kotlin/collections/CollectionsKt.filterNotNull:(Ljava/lang/Iterable;)Ljava/util/List;
    1610: astore        47
    1612: new           #123                // class Day10$Node
    1615: dup
    1616: aload         37
    1618: aload         34
    1620: aload         47
    1622: invokespecial #282                // Method Day10$Node."<init>":(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)V
    1625: goto          2461
    1628: iconst_2
    1629: anewarray     #62                 // class Day10$Coordinate
    1632: astore        39
    1634: aload         39
    1636: iconst_0
    1637: aload_2
    1638: iload         18
    1640: iconst_1
    1641: iadd
    1642: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1645: checkcast     #119                // class java/util/List
    1648: astore        40
    1650: aload         40
    1652: ifnull        1723
    1655: aload         40
    1657: iload         35
    1659: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1662: checkcast     #97                 // class java/lang/String
    1665: astore        41
    1667: aload         41
    1669: ifnull        1723
    1672: aload         41
    1674: astore        42
    1676: istore        43
    1678: astore        44
    1680: iconst_0
    1681: istore        45
    1683: aload         4
    1685: aload         42
    1687: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1692: ifeq          1711
    1695: new           #62                 // class Day10$Coordinate
    1698: dup
    1699: iload         35
    1701: iload         18
    1703: iconst_1
    1704: iadd
    1705: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    1708: goto          1712
    1711: aconst_null
    1712: astore        46
    1714: aload         44
    1716: iload         43
    1718: aload         46
    1720: goto          1724
    1723: aconst_null
    1724: aastore
    1725: aload         39
    1727: iconst_1
    1728: aload_2
    1729: iload         18
    1731: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1734: checkcast     #119                // class java/util/List
    1737: astore        40
    1739: aload         40
    1741: ifnull        1814
    1744: aload         40
    1746: iload         35
    1748: iconst_1
    1749: isub
    1750: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1753: checkcast     #97                 // class java/lang/String
    1756: astore        41
    1758: aload         41
    1760: ifnull        1814
    1763: aload         41
    1765: astore        42
    1767: istore        43
    1769: astore        44
    1771: iconst_0
    1772: istore        45
    1774: aload         6
    1776: aload         42
    1778: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1783: ifeq          1802
    1786: new           #62                 // class Day10$Coordinate
    1789: dup
    1790: iload         35
    1792: iconst_1
    1793: isub
    1794: iload         18
    1796: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    1799: goto          1803
    1802: aconst_null
    1803: astore        46
    1805: aload         44
    1807: iload         43
    1809: aload         46
    1811: goto          1815
    1814: aconst_null
    1815: aastore
    1816: aload         39
    1818: invokestatic  #275                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    1821: checkcast     #83                 // class java/lang/Iterable
    1824: invokestatic  #279                // Method kotlin/collections/CollectionsKt.filterNotNull:(Ljava/lang/Iterable;)Ljava/util/List;
    1827: astore        47
    1829: new           #123                // class Day10$Node
    1832: dup
    1833: aload         37
    1835: aload         34
    1837: aload         47
    1839: invokespecial #282                // Method Day10$Node."<init>":(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)V
    1842: goto          2461
    1845: iconst_2
    1846: anewarray     #62                 // class Day10$Coordinate
    1849: astore        39
    1851: aload         39
    1853: iconst_0
    1854: aload_2
    1855: iload         18
    1857: iconst_1
    1858: iadd
    1859: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1862: checkcast     #119                // class java/util/List
    1865: astore        40
    1867: aload         40
    1869: ifnull        1940
    1872: aload         40
    1874: iload         35
    1876: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1879: checkcast     #97                 // class java/lang/String
    1882: astore        41
    1884: aload         41
    1886: ifnull        1940
    1889: aload         41
    1891: astore        42
    1893: istore        43
    1895: astore        44
    1897: iconst_0
    1898: istore        45
    1900: aload         4
    1902: aload         42
    1904: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    1909: ifeq          1928
    1912: new           #62                 // class Day10$Coordinate
    1915: dup
    1916: iload         35
    1918: iload         18
    1920: iconst_1
    1921: iadd
    1922: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    1925: goto          1929
    1928: aconst_null
    1929: astore        46
    1931: aload         44
    1933: iload         43
    1935: aload         46
    1937: goto          1941
    1940: aconst_null
    1941: aastore
    1942: aload         39
    1944: iconst_1
    1945: aload_2
    1946: iload         18
    1948: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1951: checkcast     #119                // class java/util/List
    1954: astore        40
    1956: aload         40
    1958: ifnull        2031
    1961: aload         40
    1963: iload         35
    1965: iconst_1
    1966: iadd
    1967: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    1970: checkcast     #97                 // class java/lang/String
    1973: astore        41
    1975: aload         41
    1977: ifnull        2031
    1980: aload         41
    1982: astore        42
    1984: istore        43
    1986: astore        44
    1988: iconst_0
    1989: istore        45
    1991: aload         5
    1993: aload         42
    1995: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    2000: ifeq          2019
    2003: new           #62                 // class Day10$Coordinate
    2006: dup
    2007: iload         35
    2009: iconst_1
    2010: iadd
    2011: iload         18
    2013: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    2016: goto          2020
    2019: aconst_null
    2020: astore        46
    2022: aload         44
    2024: iload         43
    2026: aload         46
    2028: goto          2032
    2031: aconst_null
    2032: aastore
    2033: aload         39
    2035: invokestatic  #275                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    2038: checkcast     #83                 // class java/lang/Iterable
    2041: invokestatic  #279                // Method kotlin/collections/CollectionsKt.filterNotNull:(Ljava/lang/Iterable;)Ljava/util/List;
    2044: astore        47
    2046: new           #123                // class Day10$Node
    2049: dup
    2050: aload         37
    2052: aload         34
    2054: aload         47
    2056: invokespecial #282                // Method Day10$Node."<init>":(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)V
    2059: goto          2461
    2062: iconst_4
    2063: anewarray     #62                 // class Day10$Coordinate
    2066: astore        39
    2068: aload         39
    2070: iconst_0
    2071: aload_2
    2072: iload         18
    2074: iconst_1
    2075: isub
    2076: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    2079: checkcast     #119                // class java/util/List
    2082: astore        40
    2084: aload         40
    2086: ifnull        2156
    2089: aload         40
    2091: iload         35
    2093: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    2096: checkcast     #97                 // class java/lang/String
    2099: astore        41
    2101: aload         41
    2103: ifnull        2156
    2106: aload         41
    2108: astore        42
    2110: istore        43
    2112: astore        44
    2114: iconst_0
    2115: istore        45
    2117: aload_3
    2118: aload         42
    2120: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    2125: ifeq          2144
    2128: new           #62                 // class Day10$Coordinate
    2131: dup
    2132: iload         35
    2134: iload         18
    2136: iconst_1
    2137: isub
    2138: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    2141: goto          2145
    2144: aconst_null
    2145: astore        46
    2147: aload         44
    2149: iload         43
    2151: aload         46
    2153: goto          2157
    2156: aconst_null
    2157: aastore
    2158: aload         39
    2160: iconst_1
    2161: aload_2
    2162: iload         18
    2164: iconst_1
    2165: iadd
    2166: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    2169: checkcast     #119                // class java/util/List
    2172: astore        40
    2174: aload         40
    2176: ifnull        2247
    2179: aload         40
    2181: iload         35
    2183: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    2186: checkcast     #97                 // class java/lang/String
    2189: astore        41
    2191: aload         41
    2193: ifnull        2247
    2196: aload         41
    2198: astore        42
    2200: istore        43
    2202: astore        44
    2204: iconst_0
    2205: istore        45
    2207: aload         4
    2209: aload         42
    2211: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    2216: ifeq          2235
    2219: new           #62                 // class Day10$Coordinate
    2222: dup
    2223: iload         35
    2225: iload         18
    2227: iconst_1
    2228: iadd
    2229: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    2232: goto          2236
    2235: aconst_null
    2236: astore        46
    2238: aload         44
    2240: iload         43
    2242: aload         46
    2244: goto          2248
    2247: aconst_null
    2248: aastore
    2249: aload         39
    2251: iconst_2
    2252: aload_2
    2253: iload         18
    2255: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    2258: checkcast     #119                // class java/util/List
    2261: astore        40
    2263: aload         40
    2265: ifnull        2338
    2268: aload         40
    2270: iload         35
    2272: iconst_1
    2273: isub
    2274: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    2277: checkcast     #97                 // class java/lang/String
    2280: astore        41
    2282: aload         41
    2284: ifnull        2338
    2287: aload         41
    2289: astore        42
    2291: istore        43
    2293: astore        44
    2295: iconst_0
    2296: istore        45
    2298: aload         6
    2300: aload         42
    2302: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    2307: ifeq          2326
    2310: new           #62                 // class Day10$Coordinate
    2313: dup
    2314: iload         35
    2316: iconst_1
    2317: isub
    2318: iload         18
    2320: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    2323: goto          2327
    2326: aconst_null
    2327: astore        46
    2329: aload         44
    2331: iload         43
    2333: aload         46
    2335: goto          2339
    2338: aconst_null
    2339: aastore
    2340: aload         39
    2342: iconst_3
    2343: aload_2
    2344: iload         18
    2346: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    2349: checkcast     #119                // class java/util/List
    2352: astore        40
    2354: aload         40
    2356: ifnull        2429
    2359: aload         40
    2361: iload         35
    2363: iconst_1
    2364: iadd
    2365: invokestatic  #271                // Method kotlin/collections/CollectionsKt.getOrNull:(Ljava/util/List;I)Ljava/lang/Object;
    2368: checkcast     #97                 // class java/lang/String
    2371: astore        41
    2373: aload         41
    2375: ifnull        2429
    2378: aload         41
    2380: astore        42
    2382: istore        43
    2384: astore        44
    2386: iconst_0
    2387: istore        45
    2389: aload         5
    2391: aload         42
    2393: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
    2398: ifeq          2417
    2401: new           #62                 // class Day10$Coordinate
    2404: dup
    2405: iload         35
    2407: iconst_1
    2408: iadd
    2409: iload         18
    2411: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
    2414: goto          2418
    2417: aconst_null
    2418: astore        46
    2420: aload         44
    2422: iload         43
    2424: aload         46
    2426: goto          2430
    2429: aconst_null
    2430: aastore
    2431: aload         39
    2433: invokestatic  #275                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
    2436: checkcast     #83                 // class java/lang/Iterable
    2439: invokestatic  #279                // Method kotlin/collections/CollectionsKt.filterNotNull:(Ljava/lang/Iterable;)Ljava/util/List;
    2442: astore        47
    2444: new           #123                // class Day10$Node
    2447: dup
    2448: aload         37
    2450: aload         34
    2452: aload         47
    2454: invokespecial #282                // Method Day10$Node."<init>":(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)V
    2457: goto          2461
    2460: aconst_null
    2461: nop
    2462: dup
    2463: ifnull        2484
    2466: astore        48
    2468: iconst_0
    2469: istore        49
    2471: aload         23
    2473: aload         48
    2475: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    2480: pop
    2481: goto          2485
    2484: pop
    2485: nop
    2486: goto          525
    2489: nop
    2490: aload         23
    2492: checkcast     #119                // class java/util/List
    2495: nop
    2496: nop
    2497: aload         50
    2499: swap
    2500: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    2505: pop
    2506: goto          425
    2509: aload         11
    2511: checkcast     #119                // class java/util/List
    2514: nop
    2515: checkcast     #83                 // class java/lang/Iterable
    2518: invokestatic  #285                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
    2521: astore        7
    2523: aload         7
    2525: checkcast     #83                 // class java/lang/Iterable
    2528: astore        8
    2530: iconst_0
    2531: istore        9
    2533: aload         8
    2535: bipush        10
    2537: invokestatic  #218                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
    2540: invokestatic  #291                // Method kotlin/collections/MapsKt.mapCapacity:(I)I
    2543: bipush        16
    2545: invokestatic  #297                // Method kotlin/ranges/RangesKt.coerceAtLeast:(II)I
    2548: istore        10
    2550: aload         8
    2552: astore        11
    2554: new           #32                 // class java/util/LinkedHashMap
    2557: dup
    2558: iload         10
    2560: invokespecial #298                // Method java/util/LinkedHashMap."<init>":(I)V
    2563: checkcast     #35                 // class java/util/Map
    2566: astore        12
    2568: iconst_0
    2569: istore        13
    2571: aload         11
    2573: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    2578: astore        14
    2580: aload         14
    2582: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    2587: ifeq          2632
    2590: aload         14
    2592: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    2597: astore        15
    2599: aload         12
    2601: aload         15
    2603: checkcast     #123                // class Day10$Node
    2606: astore        16
    2608: astore        50
    2610: iconst_0
    2611: istore        17
    2613: aload         16
    2615: invokevirtual #147                // Method Day10$Node.getCoordinate:()LDay10$Coordinate;
    2618: aload         50
    2620: swap
    2621: aload         15
    2623: invokeinterface #156,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
    2628: pop
    2629: goto          2580
    2632: aload         12
    2634: nop
    2635: areturn

  public final java.lang.String part2(java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #16                 // String input
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: aload_1
       8: invokevirtual #26                 // Method parse:(Ljava/util/List;)Ljava/util/Map;
      11: astore_2
      12: aload_0
      13: aload_2
      14: invokespecial #30                 // Method findNodesInLoop:(Ljava/util/Map;)Ljava/util/Set;
      17: astore_3
      18: aload_1
      19: checkcast     #83                 // class java/lang/Iterable
      22: astore        5
      24: iconst_0
      25: istore        6
      27: aload         5
      29: astore        7
      31: new           #214                // class java/util/ArrayList
      34: dup
      35: aload         5
      37: bipush        10
      39: invokestatic  #218                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      42: invokespecial #221                // Method java/util/ArrayList."<init>":(I)V
      45: checkcast     #142                // class java/util/Collection
      48: astore        8
      50: iconst_0
      51: istore        9
      53: iconst_0
      54: istore        10
      56: aload         7
      58: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      63: astore        11
      65: aload         11
      67: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      72: ifeq          318
      75: aload         11
      77: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      82: astore        12
      84: aload         8
      86: iload         10
      88: iinc          10, 1
      91: istore        13
      93: iload         13
      95: ifge          101
      98: invokestatic  #258                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     101: iload         13
     103: aload         12
     105: checkcast     #97                 // class java/lang/String
     108: astore        14
     110: istore        15
     112: astore        39
     114: iconst_0
     115: istore        16
     117: aload         14
     119: checkcast     #223                // class java/lang/CharSequence
     122: astore        17
     124: iconst_0
     125: istore        18
     127: aload         17
     129: astore        19
     131: new           #214                // class java/util/ArrayList
     134: dup
     135: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     138: checkcast     #142                // class java/util/Collection
     141: astore        20
     143: iconst_0
     144: istore        21
     146: aload         19
     148: astore        22
     150: iconst_0
     151: istore        23
     153: iconst_0
     154: istore        24
     156: iconst_0
     157: istore        25
     159: iload         25
     161: aload         22
     163: invokeinterface #373,  1          // InterfaceMethod java/lang/CharSequence.length:()I
     168: if_icmpge     280
     171: aload         22
     173: iload         25
     175: invokeinterface #377,  2          // InterfaceMethod java/lang/CharSequence.charAt:(I)C
     180: istore        26
     182: iload         24
     184: iinc          24, 1
     187: iload         26
     189: istore        27
     191: istore        28
     193: iconst_0
     194: istore        29
     196: iload         28
     198: iload         27
     200: istore        30
     202: istore        31
     204: iconst_0
     205: istore        32
     207: new           #62                 // class Day10$Coordinate
     210: dup
     211: iload         31
     213: iload         15
     215: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
     218: astore        33
     220: iload         30
     222: bipush        46
     224: if_icmpeq     238
     227: aload_3
     228: aload         33
     230: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     235: ifne          244
     238: ldc_w         #379                // String .
     241: goto          249
     244: iload         30
     246: invokestatic  #382                // Method java/lang/String.valueOf:(C)Ljava/lang/String;
     249: nop
     250: dup
     251: ifnull        272
     254: astore        34
     256: iconst_0
     257: istore        35
     259: aload         20
     261: aload         34
     263: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     268: pop
     269: goto          273
     272: pop
     273: nop
     274: iinc          25, 1
     277: goto          159
     280: nop
     281: aload         20
     283: checkcast     #119                // class java/util/List
     286: nop
     287: checkcast     #83                 // class java/lang/Iterable
     290: ldc           #225                // String
     292: checkcast     #223                // class java/lang/CharSequence
     295: aconst_null
     296: aconst_null
     297: iconst_0
     298: aconst_null
     299: aconst_null
     300: bipush        62
     302: aconst_null
     303: invokestatic  #386                // Method kotlin/collections/CollectionsKt.joinToString$default:(Ljava/lang/Iterable;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
     306: aload         39
     308: swap
     309: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     314: pop
     315: goto          65
     318: aload         8
     320: checkcast     #119                // class java/util/List
     323: nop
     324: astore        4
     326: aload_2
     327: astore        6
     329: iconst_0
     330: istore        7
     332: new           #32                 // class java/util/LinkedHashMap
     335: dup
     336: invokespecial #33                 // Method java/util/LinkedHashMap."<init>":()V
     339: astore        8
     341: aload         6
     343: invokeinterface #39,  1           // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     348: invokeinterface #45,  1           // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
     353: astore        9
     355: aload         9
     357: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     362: ifeq          426
     365: aload         9
     367: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     372: checkcast     #57                 // class java/util/Map$Entry
     375: astore        10
     377: aload         10
     379: invokeinterface #60,  1           // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     384: checkcast     #62                 // class Day10$Coordinate
     387: astore        11
     389: iconst_0
     390: istore        12
     392: aload_3
     393: aload         11
     395: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     400: ifeq          355
     403: aload         8
     405: aload         10
     407: invokeinterface #60,  1           // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     412: aload         10
     414: invokeinterface #69,  1           // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     419: invokevirtual #73                 // Method java/util/LinkedHashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     422: pop
     423: goto          355
     426: aload         8
     428: checkcast     #35                 // class java/util/Map
     431: astore        5
     433: aload         5
     435: astore        7
     437: iconst_0
     438: istore        8
     440: aload         7
     442: astore        9
     444: new           #214                // class java/util/ArrayList
     447: dup
     448: aload         7
     450: invokeinterface #389,  1          // InterfaceMethod java/util/Map.size:()I
     455: invokespecial #221                // Method java/util/ArrayList."<init>":(I)V
     458: checkcast     #142                // class java/util/Collection
     461: astore        10
     463: iconst_0
     464: istore        11
     466: aload         9
     468: invokeinterface #39,  1           // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     473: invokeinterface #45,  1           // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
     478: astore        12
     480: aload         12
     482: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     487: ifeq          605
     490: aload         12
     492: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     497: checkcast     #57                 // class java/util/Map$Entry
     500: astore        13
     502: aload         10
     504: aload         13
     506: astore        14
     508: astore        39
     510: iconst_0
     511: istore        15
     513: aload         14
     515: invokeinterface #60,  1           // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     520: checkcast     #62                 // class Day10$Coordinate
     523: astore        16
     525: aload         14
     527: invokeinterface #69,  1           // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     532: checkcast     #123                // class Day10$Node
     535: astore        17
     537: aload         17
     539: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     542: ldc           #129                // String S
     544: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     547: ifeq          585
     550: aload         16
     552: new           #123                // class Day10$Node
     555: dup
     556: aload         16
     558: getstatic     #392                // Field INSTANCE:LDay10;
     561: ldc           #129                // String S
     563: aload         17
     565: invokevirtual #181                // Method Day10$Node.getConnections:()Ljava/util/List;
     568: invokespecial #396                // Method translate:(Ljava/lang/String;Ljava/util/List;)Ljava/lang/String;
     571: aload         17
     573: invokevirtual #181                // Method Day10$Node.getConnections:()Ljava/util/List;
     576: invokespecial #282                // Method Day10$Node."<init>":(LDay10$Coordinate;Ljava/lang/String;Ljava/util/List;)V
     579: invokestatic  #402                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     582: goto          592
     585: aload         16
     587: aload         17
     589: invokestatic  #402                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     592: nop
     593: aload         39
     595: swap
     596: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     601: pop
     602: goto          480
     605: aload         10
     607: checkcast     #119                // class java/util/List
     610: nop
     611: checkcast     #83                 // class java/lang/Iterable
     614: invokestatic  #406                // Method kotlin/collections/MapsKt.toMap:(Ljava/lang/Iterable;)Ljava/util/Map;
     617: astore        6
     619: aload         4
     621: checkcast     #83                 // class java/lang/Iterable
     624: astore        8
     626: iconst_0
     627: istore        9
     629: aload         8
     631: astore        10
     633: new           #214                // class java/util/ArrayList
     636: dup
     637: aload         8
     639: bipush        10
     641: invokestatic  #218                // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     644: invokespecial #221                // Method java/util/ArrayList."<init>":(I)V
     647: checkcast     #142                // class java/util/Collection
     650: astore        11
     652: iconst_0
     653: istore        12
     655: iconst_0
     656: istore        13
     658: aload         10
     660: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     665: astore        14
     667: aload         14
     669: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     674: ifeq          886
     677: aload         14
     679: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     684: astore        15
     686: aload         11
     688: iload         13
     690: iinc          13, 1
     693: istore        16
     695: iload         16
     697: ifge          703
     700: invokestatic  #258                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     703: iload         16
     705: aload         15
     707: checkcast     #97                 // class java/lang/String
     710: astore        17
     712: istore        18
     714: astore        39
     716: iconst_0
     717: istore        19
     719: aload         17
     721: checkcast     #223                // class java/lang/CharSequence
     724: astore        20
     726: iconst_0
     727: istore        21
     729: aload         20
     731: astore        22
     733: new           #214                // class java/util/ArrayList
     736: dup
     737: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     740: checkcast     #142                // class java/util/Collection
     743: astore        23
     745: iconst_0
     746: istore        24
     748: aload         22
     750: astore        25
     752: iconst_0
     753: istore        26
     755: iconst_0
     756: istore        27
     758: iconst_0
     759: istore        28
     761: iload         28
     763: aload         25
     765: invokeinterface #373,  1          // InterfaceMethod java/lang/CharSequence.length:()I
     770: if_icmpge     866
     773: aload         25
     775: iload         28
     777: invokeinterface #377,  2          // InterfaceMethod java/lang/CharSequence.charAt:(I)C
     782: istore        29
     784: iload         27
     786: iinc          27, 1
     789: iload         29
     791: istore        30
     793: istore        31
     795: iconst_0
     796: istore        32
     798: iload         31
     800: iload         30
     802: istore        33
     804: istore        34
     806: iconst_0
     807: istore        35
     809: new           #62                 // class Day10$Coordinate
     812: dup
     813: iload         34
     815: iload         18
     817: invokespecial #261                // Method Day10$Coordinate."<init>":(II)V
     820: astore        36
     822: iload         33
     824: bipush        46
     826: if_icmpne     834
     829: aload         36
     831: goto          835
     834: aconst_null
     835: nop
     836: dup
     837: ifnull        858
     840: astore        37
     842: iconst_0
     843: istore        38
     845: aload         23
     847: aload         37
     849: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     854: pop
     855: goto          859
     858: pop
     859: nop
     860: iinc          28, 1
     863: goto          761
     866: nop
     867: aload         23
     869: checkcast     #119                // class java/util/List
     872: nop
     873: nop
     874: aload         39
     876: swap
     877: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     882: pop
     883: goto          667
     886: aload         11
     888: checkcast     #119                // class java/util/List
     891: nop
     892: checkcast     #83                 // class java/lang/Iterable
     895: invokestatic  #285                // Method kotlin/collections/CollectionsKt.flatten:(Ljava/lang/Iterable;)Ljava/util/List;
     898: checkcast     #83                 // class java/lang/Iterable
     901: invokestatic  #410                // Method kotlin/collections/CollectionsKt.toSet:(Ljava/lang/Iterable;)Ljava/util/Set;
     904: astore        7
     906: aload         7
     908: checkcast     #83                 // class java/lang/Iterable
     911: astore        8
     913: iconst_0
     914: istore        9
     916: aload         8
     918: instanceof    #142                // class java/util/Collection
     921: ifeq          941
     924: aload         8
     926: checkcast     #142                // class java/util/Collection
     929: invokeinterface #159,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     934: ifeq          941
     937: iconst_0
     938: goto          1011
     941: iconst_0
     942: istore        10
     944: aload         8
     946: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     951: astore        11
     953: aload         11
     955: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     960: ifeq          1009
     963: aload         11
     965: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     970: astore        12
     972: aload         12
     974: checkcast     #62                 // class Day10$Coordinate
     977: astore        13
     979: iconst_0
     980: istore        14
     982: getstatic     #392                // Field INSTANCE:LDay10;
     985: aload         6
     987: aload         13
     989: invokespecial #414                // Method isInPolygon:(Ljava/util/Map;LDay10$Coordinate;)Z
     992: ifeq          953
     995: iinc          10, 1
     998: iload         10
    1000: ifge          953
    1003: invokestatic  #417                // Method kotlin/collections/CollectionsKt.throwCountOverflow:()V
    1006: goto          953
    1009: iload         10
    1011: invokestatic  #101                // Method java/lang/String.valueOf:(I)Ljava/lang/String;
    1014: areturn

  private final java.lang.String translate(java.lang.String, java.util.List<Day10$Coordinate>);
    Code:
       0: aload_2
       1: checkcast     #83                 // class java/lang/Iterable
       4: iconst_2
       5: anewarray     #440                // class kotlin/jvm/functions/Function1
       8: astore        4
      10: aload         4
      12: iconst_0
      13: invokedynamic #458,  0            // InvokeDynamic #0:invoke:()Lkotlin/jvm/functions/Function1;
      18: aastore
      19: aload         4
      21: iconst_1
      22: invokedynamic #463,  0            // InvokeDynamic #1:invoke:()Lkotlin/jvm/functions/Function1;
      27: aastore
      28: aload         4
      30: invokestatic  #469                // Method kotlin/comparisons/ComparisonsKt.compareBy:([Lkotlin/jvm/functions/Function1;)Ljava/util/Comparator;
      33: invokestatic  #473                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
      36: astore_3
      37: aload_3
      38: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
      41: checkcast     #62                 // class Day10$Coordinate
      44: invokevirtual #480                // Method Day10$Coordinate.getX:()I
      47: aload_3
      48: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
      51: checkcast     #62                 // class Day10$Coordinate
      54: invokevirtual #480                // Method Day10$Coordinate.getX:()I
      57: isub
      58: ifne          65
      61: iconst_1
      62: goto          66
      65: iconst_0
      66: istore        4
      68: aload_3
      69: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
      72: checkcast     #62                 // class Day10$Coordinate
      75: invokevirtual #486                // Method Day10$Coordinate.getY:()I
      78: aload_3
      79: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
      82: checkcast     #62                 // class Day10$Coordinate
      85: invokevirtual #486                // Method Day10$Coordinate.getY:()I
      88: isub
      89: ifne          96
      92: iconst_1
      93: goto          97
      96: iconst_0
      97: istore        5
      99: aload_3
     100: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     103: checkcast     #62                 // class Day10$Coordinate
     106: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     109: aload_3
     110: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     113: checkcast     #62                 // class Day10$Coordinate
     116: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     119: if_icmple     149
     122: aload_3
     123: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     126: checkcast     #62                 // class Day10$Coordinate
     129: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     132: aload_3
     133: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     136: checkcast     #62                 // class Day10$Coordinate
     139: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     142: if_icmpge     149
     145: iconst_1
     146: goto          150
     149: iconst_0
     150: istore        6
     152: aload_3
     153: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     156: checkcast     #62                 // class Day10$Coordinate
     159: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     162: aload_3
     163: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     166: checkcast     #62                 // class Day10$Coordinate
     169: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     172: if_icmple     202
     175: aload_3
     176: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     179: checkcast     #62                 // class Day10$Coordinate
     182: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     185: aload_3
     186: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     189: checkcast     #62                 // class Day10$Coordinate
     192: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     195: if_icmple     202
     198: iconst_1
     199: goto          203
     202: iconst_0
     203: istore        7
     205: aload_3
     206: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     209: checkcast     #62                 // class Day10$Coordinate
     212: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     215: aload_3
     216: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     219: checkcast     #62                 // class Day10$Coordinate
     222: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     225: if_icmpge     255
     228: aload_3
     229: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     232: checkcast     #62                 // class Day10$Coordinate
     235: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     238: aload_3
     239: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     242: checkcast     #62                 // class Day10$Coordinate
     245: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     248: if_icmpge     255
     251: iconst_1
     252: goto          256
     255: iconst_0
     256: istore        8
     258: aload_3
     259: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     262: checkcast     #62                 // class Day10$Coordinate
     265: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     268: aload_3
     269: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     272: checkcast     #62                 // class Day10$Coordinate
     275: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     278: if_icmpge     308
     281: aload_3
     282: invokestatic  #477                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     285: checkcast     #62                 // class Day10$Coordinate
     288: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     291: aload_3
     292: invokestatic  #483                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     295: checkcast     #62                 // class Day10$Coordinate
     298: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     301: if_icmple     308
     304: iconst_1
     305: goto          309
     308: iconst_0
     309: istore        9
     311: nop
     312: iload         5
     314: ifeq          322
     317: ldc           #255                // String -
     319: goto          373
     322: iload         4
     324: ifeq          332
     327: ldc           #239                // String |
     329: goto          373
     332: iload         6
     334: ifeq          342
     337: ldc           #253                // String L
     339: goto          373
     342: iload         7
     344: ifeq          352
     347: ldc           #243                // String F
     349: goto          373
     352: iload         9
     354: ifeq          362
     357: ldc           #251                // String J
     359: goto          373
     362: iload         8
     364: ifeq          372
     367: ldc           #241                // String 7
     369: goto          373
     372: aload_1
     373: areturn

  private final java.util.Set<Day10$Coordinate> findNodesInLoop(java.util.Map<Day10$Coordinate, Day10$Node>);
    Code:
       0: aload_1
       1: invokeinterface #81,  1           // InterfaceMethod java/util/Map.values:()Ljava/util/Collection;
       6: checkcast     #83                 // class java/lang/Iterable
       9: astore        4
      11: aload         4
      13: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      18: astore        5
      20: aload         5
      22: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      27: ifeq          67
      30: aload         5
      32: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      37: astore        6
      39: aload         6
      41: checkcast     #123                // class Day10$Node
      44: astore        7
      46: iconst_0
      47: istore        8
      49: aload         7
      51: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
      54: ldc           #129                // String S
      56: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      59: ifeq          20
      62: aload         6
      64: goto          68
      67: aconst_null
      68: dup
      69: invokestatic  #137                // Method kotlin/jvm/internal/Intrinsics.checkNotNull:(Ljava/lang/Object;)V
      72: checkcast     #123                // class Day10$Node
      75: astore_2
      76: new           #139                // class java/util/LinkedHashSet
      79: dup
      80: invokespecial #140                // Method java/util/LinkedHashSet."<init>":()V
      83: checkcast     #41                 // class java/util/Set
      86: astore_3
      87: new           #500                // class kotlin/collections/ArrayDeque
      90: dup
      91: invokespecial #501                // Method kotlin/collections/ArrayDeque."<init>":()V
      94: astore        4
      96: aload         4
      98: aload_2
      99: invokevirtual #147                // Method Day10$Node.getCoordinate:()LDay10$Coordinate;
     102: invokevirtual #502                // Method kotlin/collections/ArrayDeque.add:(Ljava/lang/Object;)Z
     105: pop
     106: aload         4
     108: checkcast     #142                // class java/util/Collection
     111: invokeinterface #159,  1          // InterfaceMethod java/util/Collection.isEmpty:()Z
     116: ifne          123
     119: iconst_1
     120: goto          124
     123: iconst_0
     124: ifeq          204
     127: aload         4
     129: invokevirtual #505                // Method kotlin/collections/ArrayDeque.removeFirst:()Ljava/lang/Object;
     132: checkcast     #62                 // class Day10$Coordinate
     135: astore        5
     137: aload_3
     138: aload         5
     140: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     145: ifeq          151
     148: goto          106
     151: aload         4
     153: aload_1
     154: aload         5
     156: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     161: checkcast     #123                // class Day10$Node
     164: dup
     165: ifnull        181
     168: invokevirtual #181                // Method Day10$Node.getConnections:()Ljava/util/List;
     171: dup
     172: ifnull        181
     175: checkcast     #142                // class java/util/Collection
     178: goto          188
     181: pop
     182: invokestatic  #184                // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
     185: checkcast     #142                // class java/util/Collection
     188: invokevirtual #509                // Method kotlin/collections/ArrayDeque.addAll:(Ljava/util/Collection;)Z
     191: pop
     192: aload_3
     193: aload         5
     195: invokeinterface #150,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
     200: pop
     201: goto          106
     204: aload_3
     205: areturn

  private final boolean isInPolygon(java.util.Map<Day10$Coordinate, Day10$Node>, Day10$Coordinate);
    Code:
       0: aload_0
       1: aload_1
       2: aload_2
       3: invokevirtual #517                // Method isInPolygonAbove:(Ljava/util/Map;LDay10$Coordinate;)Z
       6: ifeq          40
       9: aload_0
      10: aload_1
      11: aload_2
      12: invokevirtual #520                // Method isInPolygonBelow:(Ljava/util/Map;LDay10$Coordinate;)Z
      15: ifeq          40
      18: aload_0
      19: aload_1
      20: aload_2
      21: invokevirtual #523                // Method isInPolygonLeft:(Ljava/util/Map;LDay10$Coordinate;)Z
      24: ifeq          40
      27: aload_0
      28: aload_1
      29: aload_2
      30: invokevirtual #526                // Method isInPolygonRight:(Ljava/util/Map;LDay10$Coordinate;)Z
      33: ifeq          40
      36: iconst_1
      37: goto          41
      40: iconst_0
      41: ireturn

  public final boolean isInPolygonRight(java.util.Map<Day10$Coordinate, Day10$Node>, Day10$Coordinate);
    Code:
       0: aload_1
       1: ldc_w         #527                // String graph
       4: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_2
       8: ldc_w         #528                // String coordinate
      11: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_1
      15: invokeinterface #531,  1          // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
      20: checkcast     #83                 // class java/lang/Iterable
      23: astore        4
      25: iconst_0
      26: istore        5
      28: aload         4
      30: astore        6
      32: new           #214                // class java/util/ArrayList
      35: dup
      36: invokespecial #232                // Method java/util/ArrayList."<init>":()V
      39: checkcast     #142                // class java/util/Collection
      42: astore        7
      44: iconst_0
      45: istore        8
      47: aload         6
      49: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      54: astore        9
      56: aload         9
      58: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      63: ifeq          118
      66: aload         9
      68: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      73: astore        10
      75: aload         10
      77: checkcast     #62                 // class Day10$Coordinate
      80: astore        11
      82: iconst_0
      83: istore        12
      85: aload         11
      87: invokevirtual #480                // Method Day10$Coordinate.getX:()I
      90: aload_2
      91: invokevirtual #480                // Method Day10$Coordinate.getX:()I
      94: if_icmple     101
      97: iconst_1
      98: goto          102
     101: iconst_0
     102: ifeq          56
     105: aload         7
     107: aload         10
     109: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     114: pop
     115: goto          56
     118: aload         7
     120: checkcast     #119                // class java/util/List
     123: nop
     124: checkcast     #83                 // class java/lang/Iterable
     127: astore        4
     129: nop
     130: iconst_0
     131: istore        5
     133: aload         4
     135: astore        6
     137: new           #214                // class java/util/ArrayList
     140: dup
     141: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     144: checkcast     #142                // class java/util/Collection
     147: astore        7
     149: iconst_0
     150: istore        8
     152: aload         6
     154: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     159: astore        9
     161: aload         9
     163: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     168: ifeq          223
     171: aload         9
     173: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     178: astore        10
     180: aload         10
     182: checkcast     #62                 // class Day10$Coordinate
     185: astore        11
     187: iconst_0
     188: istore        12
     190: aload         11
     192: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     195: aload_2
     196: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     199: if_icmpne     206
     202: iconst_1
     203: goto          207
     206: iconst_0
     207: ifeq          161
     210: aload         7
     212: aload         10
     214: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     219: pop
     220: goto          161
     223: aload         7
     225: checkcast     #119                // class java/util/List
     228: nop
     229: astore_3
     230: aload_3
     231: checkcast     #83                 // class java/lang/Iterable
     234: astore        5
     236: nop
     237: iconst_0
     238: istore        6
     240: aload         5
     242: astore        7
     244: new           #214                // class java/util/ArrayList
     247: dup
     248: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     251: checkcast     #142                // class java/util/Collection
     254: astore        8
     256: iconst_0
     257: istore        9
     259: aload         7
     261: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     266: astore        10
     268: aload         10
     270: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     275: ifeq          341
     278: aload         10
     280: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     285: astore        11
     287: aload         11
     289: checkcast     #62                 // class Day10$Coordinate
     292: astore        12
     294: iconst_0
     295: istore        13
     297: aload_1
     298: aload         12
     300: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     305: checkcast     #123                // class Day10$Node
     308: dup
     309: ifnull        318
     312: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     315: goto          320
     318: pop
     319: aconst_null
     320: ldc           #239                // String |
     322: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     325: ifeq          268
     328: aload         8
     330: aload         11
     332: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     337: pop
     338: goto          268
     341: aload         8
     343: checkcast     #119                // class java/util/List
     346: nop
     347: astore        4
     349: iconst_2
     350: anewarray     #97                 // class java/lang/String
     353: astore        6
     355: aload         6
     357: iconst_0
     358: ldc_w         #533                // String FJ
     361: aastore
     362: aload         6
     364: iconst_1
     365: ldc_w         #535                // String L7
     368: aastore
     369: aload         6
     371: invokestatic  #249                // Method kotlin/collections/SetsKt.setOf:([Ljava/lang/Object;)Ljava/util/Set;
     374: astore        5
     376: aload_3
     377: checkcast     #83                 // class java/lang/Iterable
     380: astore        7
     382: nop
     383: iconst_0
     384: istore        8
     386: aload         7
     388: astore        9
     390: new           #214                // class java/util/ArrayList
     393: dup
     394: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     397: checkcast     #142                // class java/util/Collection
     400: astore        10
     402: iconst_0
     403: istore        11
     405: aload         9
     407: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     412: astore        12
     414: aload         12
     416: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     421: ifeq          495
     424: aload         12
     426: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     431: astore        13
     433: aload         13
     435: checkcast     #62                 // class Day10$Coordinate
     438: astore        14
     440: iconst_0
     441: istore        15
     443: aload_1
     444: aload         14
     446: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     451: checkcast     #123                // class Day10$Node
     454: dup
     455: ifnull        464
     458: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     461: goto          466
     464: pop
     465: aconst_null
     466: ldc           #255                // String -
     468: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     471: ifne          478
     474: iconst_1
     475: goto          479
     478: iconst_0
     479: ifeq          414
     482: aload         10
     484: aload         13
     486: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     491: pop
     492: goto          414
     495: aload         10
     497: checkcast     #119                // class java/util/List
     500: nop
     501: checkcast     #83                 // class java/lang/Iterable
     504: invokestatic  #538                // Method kotlin/collections/CollectionsKt.zipWithNext:(Ljava/lang/Iterable;)Ljava/util/List;
     507: checkcast     #83                 // class java/lang/Iterable
     510: astore        7
     512: iconst_0
     513: istore        8
     515: aload         7
     517: astore        9
     519: new           #214                // class java/util/ArrayList
     522: dup
     523: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     526: checkcast     #142                // class java/util/Collection
     529: astore        10
     531: iconst_0
     532: istore        11
     534: aload         9
     536: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     541: astore        12
     543: aload         12
     545: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     550: ifeq          677
     553: aload         12
     555: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     560: astore        13
     562: aload         13
     564: checkcast     #437                // class kotlin/Pair
     567: astore        14
     569: iconst_0
     570: istore        15
     572: aload         14
     574: invokevirtual #541                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     577: checkcast     #62                 // class Day10$Coordinate
     580: astore        16
     582: aload         14
     584: invokevirtual #544                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     587: checkcast     #62                 // class Day10$Coordinate
     590: astore        17
     592: aload         5
     594: new           #546                // class java/lang/StringBuilder
     597: dup
     598: invokespecial #547                // Method java/lang/StringBuilder."<init>":()V
     601: aload_1
     602: aload         16
     604: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     609: checkcast     #123                // class Day10$Node
     612: dup
     613: ifnull        622
     616: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     619: goto          624
     622: pop
     623: aconst_null
     624: invokevirtual #551                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     627: aload_1
     628: aload         17
     630: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     635: checkcast     #123                // class Day10$Node
     638: dup
     639: ifnull        648
     642: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     645: goto          650
     648: pop
     649: aconst_null
     650: invokevirtual #551                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     653: invokevirtual #554                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     656: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     661: ifeq          543
     664: aload         10
     666: aload         13
     668: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     673: pop
     674: goto          543
     677: aload         10
     679: checkcast     #119                // class java/util/List
     682: nop
     683: astore        6
     685: aload         6
     687: invokeinterface #555,  1          // InterfaceMethod java/util/List.size:()I
     692: aload         4
     694: invokeinterface #555,  1          // InterfaceMethod java/util/List.size:()I
     699: iadd
     700: iconst_2
     701: irem
     702: iconst_1
     703: if_icmpne     710
     706: iconst_1
     707: goto          711
     710: iconst_0
     711: ireturn

  public final boolean isInPolygonLeft(java.util.Map<Day10$Coordinate, Day10$Node>, Day10$Coordinate);
    Code:
       0: aload_1
       1: ldc_w         #527                // String graph
       4: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_2
       8: ldc_w         #528                // String coordinate
      11: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_1
      15: invokeinterface #531,  1          // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
      20: checkcast     #83                 // class java/lang/Iterable
      23: astore        4
      25: iconst_0
      26: istore        5
      28: aload         4
      30: astore        6
      32: new           #214                // class java/util/ArrayList
      35: dup
      36: invokespecial #232                // Method java/util/ArrayList."<init>":()V
      39: checkcast     #142                // class java/util/Collection
      42: astore        7
      44: iconst_0
      45: istore        8
      47: aload         6
      49: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      54: astore        9
      56: aload         9
      58: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      63: ifeq          118
      66: aload         9
      68: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      73: astore        10
      75: aload         10
      77: checkcast     #62                 // class Day10$Coordinate
      80: astore        11
      82: iconst_0
      83: istore        12
      85: aload         11
      87: invokevirtual #480                // Method Day10$Coordinate.getX:()I
      90: aload_2
      91: invokevirtual #480                // Method Day10$Coordinate.getX:()I
      94: if_icmpge     101
      97: iconst_1
      98: goto          102
     101: iconst_0
     102: ifeq          56
     105: aload         7
     107: aload         10
     109: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     114: pop
     115: goto          56
     118: aload         7
     120: checkcast     #119                // class java/util/List
     123: nop
     124: checkcast     #83                 // class java/lang/Iterable
     127: astore        4
     129: nop
     130: iconst_0
     131: istore        5
     133: aload         4
     135: astore        6
     137: new           #214                // class java/util/ArrayList
     140: dup
     141: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     144: checkcast     #142                // class java/util/Collection
     147: astore        7
     149: iconst_0
     150: istore        8
     152: aload         6
     154: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     159: astore        9
     161: aload         9
     163: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     168: ifeq          223
     171: aload         9
     173: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     178: astore        10
     180: aload         10
     182: checkcast     #62                 // class Day10$Coordinate
     185: astore        11
     187: iconst_0
     188: istore        12
     190: aload         11
     192: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     195: aload_2
     196: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     199: if_icmpne     206
     202: iconst_1
     203: goto          207
     206: iconst_0
     207: ifeq          161
     210: aload         7
     212: aload         10
     214: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     219: pop
     220: goto          161
     223: aload         7
     225: checkcast     #119                // class java/util/List
     228: nop
     229: checkcast     #83                 // class java/lang/Iterable
     232: astore        4
     234: nop
     235: iconst_0
     236: istore        5
     238: aload         4
     240: new           #568                // class Day10$isInPolygonLeft$$inlined$sortedByDescending$1
     243: dup
     244: invokespecial #569                // Method Day10$isInPolygonLeft$$inlined$sortedByDescending$1."<init>":()V
     247: checkcast     #571                // class java/util/Comparator
     250: invokestatic  #473                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
     253: astore_3
     254: aload_3
     255: checkcast     #83                 // class java/lang/Iterable
     258: astore        5
     260: nop
     261: iconst_0
     262: istore        6
     264: aload         5
     266: astore        7
     268: new           #214                // class java/util/ArrayList
     271: dup
     272: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     275: checkcast     #142                // class java/util/Collection
     278: astore        8
     280: iconst_0
     281: istore        9
     283: aload         7
     285: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     290: astore        10
     292: aload         10
     294: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     299: ifeq          365
     302: aload         10
     304: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     309: astore        11
     311: aload         11
     313: checkcast     #62                 // class Day10$Coordinate
     316: astore        12
     318: iconst_0
     319: istore        13
     321: aload_1
     322: aload         12
     324: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     329: checkcast     #123                // class Day10$Node
     332: dup
     333: ifnull        342
     336: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     339: goto          344
     342: pop
     343: aconst_null
     344: ldc           #239                // String |
     346: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     349: ifeq          292
     352: aload         8
     354: aload         11
     356: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     361: pop
     362: goto          292
     365: aload         8
     367: checkcast     #119                // class java/util/List
     370: nop
     371: astore        4
     373: iconst_2
     374: anewarray     #97                 // class java/lang/String
     377: astore        6
     379: aload         6
     381: iconst_0
     382: ldc_w         #573                // String JF
     385: aastore
     386: aload         6
     388: iconst_1
     389: ldc_w         #575                // String 7L
     392: aastore
     393: aload         6
     395: invokestatic  #249                // Method kotlin/collections/SetsKt.setOf:([Ljava/lang/Object;)Ljava/util/Set;
     398: astore        5
     400: aload_3
     401: checkcast     #83                 // class java/lang/Iterable
     404: astore        7
     406: nop
     407: iconst_0
     408: istore        8
     410: aload         7
     412: astore        9
     414: new           #214                // class java/util/ArrayList
     417: dup
     418: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     421: checkcast     #142                // class java/util/Collection
     424: astore        10
     426: iconst_0
     427: istore        11
     429: aload         9
     431: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     436: astore        12
     438: aload         12
     440: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     445: ifeq          519
     448: aload         12
     450: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     455: astore        13
     457: aload         13
     459: checkcast     #62                 // class Day10$Coordinate
     462: astore        14
     464: iconst_0
     465: istore        15
     467: aload_1
     468: aload         14
     470: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     475: checkcast     #123                // class Day10$Node
     478: dup
     479: ifnull        488
     482: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     485: goto          490
     488: pop
     489: aconst_null
     490: ldc           #255                // String -
     492: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     495: ifne          502
     498: iconst_1
     499: goto          503
     502: iconst_0
     503: ifeq          438
     506: aload         10
     508: aload         13
     510: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     515: pop
     516: goto          438
     519: aload         10
     521: checkcast     #119                // class java/util/List
     524: nop
     525: checkcast     #83                 // class java/lang/Iterable
     528: invokestatic  #538                // Method kotlin/collections/CollectionsKt.zipWithNext:(Ljava/lang/Iterable;)Ljava/util/List;
     531: checkcast     #83                 // class java/lang/Iterable
     534: astore        7
     536: iconst_0
     537: istore        8
     539: aload         7
     541: astore        9
     543: new           #214                // class java/util/ArrayList
     546: dup
     547: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     550: checkcast     #142                // class java/util/Collection
     553: astore        10
     555: iconst_0
     556: istore        11
     558: aload         9
     560: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     565: astore        12
     567: aload         12
     569: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     574: ifeq          701
     577: aload         12
     579: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     584: astore        13
     586: aload         13
     588: checkcast     #437                // class kotlin/Pair
     591: astore        14
     593: iconst_0
     594: istore        15
     596: aload         14
     598: invokevirtual #541                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     601: checkcast     #62                 // class Day10$Coordinate
     604: astore        16
     606: aload         14
     608: invokevirtual #544                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     611: checkcast     #62                 // class Day10$Coordinate
     614: astore        17
     616: aload         5
     618: new           #546                // class java/lang/StringBuilder
     621: dup
     622: invokespecial #547                // Method java/lang/StringBuilder."<init>":()V
     625: aload_1
     626: aload         16
     628: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     633: checkcast     #123                // class Day10$Node
     636: dup
     637: ifnull        646
     640: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     643: goto          648
     646: pop
     647: aconst_null
     648: invokevirtual #551                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     651: aload_1
     652: aload         17
     654: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     659: checkcast     #123                // class Day10$Node
     662: dup
     663: ifnull        672
     666: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     669: goto          674
     672: pop
     673: aconst_null
     674: invokevirtual #551                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     677: invokevirtual #554                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     680: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     685: ifeq          567
     688: aload         10
     690: aload         13
     692: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     697: pop
     698: goto          567
     701: aload         10
     703: checkcast     #119                // class java/util/List
     706: nop
     707: astore        6
     709: aload         6
     711: invokeinterface #555,  1          // InterfaceMethod java/util/List.size:()I
     716: aload         4
     718: invokeinterface #555,  1          // InterfaceMethod java/util/List.size:()I
     723: iadd
     724: iconst_2
     725: irem
     726: iconst_1
     727: if_icmpne     734
     730: iconst_1
     731: goto          735
     734: iconst_0
     735: ireturn

  public final boolean isInPolygonBelow(java.util.Map<Day10$Coordinate, Day10$Node>, Day10$Coordinate);
    Code:
       0: aload_1
       1: ldc_w         #527                // String graph
       4: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_2
       8: ldc_w         #528                // String coordinate
      11: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_1
      15: invokeinterface #531,  1          // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
      20: checkcast     #83                 // class java/lang/Iterable
      23: astore        4
      25: iconst_0
      26: istore        5
      28: aload         4
      30: astore        6
      32: new           #214                // class java/util/ArrayList
      35: dup
      36: invokespecial #232                // Method java/util/ArrayList."<init>":()V
      39: checkcast     #142                // class java/util/Collection
      42: astore        7
      44: iconst_0
      45: istore        8
      47: aload         6
      49: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      54: astore        9
      56: aload         9
      58: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      63: ifeq          118
      66: aload         9
      68: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      73: astore        10
      75: aload         10
      77: checkcast     #62                 // class Day10$Coordinate
      80: astore        11
      82: iconst_0
      83: istore        12
      85: aload         11
      87: invokevirtual #486                // Method Day10$Coordinate.getY:()I
      90: aload_2
      91: invokevirtual #486                // Method Day10$Coordinate.getY:()I
      94: if_icmple     101
      97: iconst_1
      98: goto          102
     101: iconst_0
     102: ifeq          56
     105: aload         7
     107: aload         10
     109: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     114: pop
     115: goto          56
     118: aload         7
     120: checkcast     #119                // class java/util/List
     123: nop
     124: checkcast     #83                 // class java/lang/Iterable
     127: astore        4
     129: nop
     130: iconst_0
     131: istore        5
     133: aload         4
     135: astore        6
     137: new           #214                // class java/util/ArrayList
     140: dup
     141: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     144: checkcast     #142                // class java/util/Collection
     147: astore        7
     149: iconst_0
     150: istore        8
     152: aload         6
     154: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     159: astore        9
     161: aload         9
     163: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     168: ifeq          223
     171: aload         9
     173: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     178: astore        10
     180: aload         10
     182: checkcast     #62                 // class Day10$Coordinate
     185: astore        11
     187: iconst_0
     188: istore        12
     190: aload         11
     192: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     195: aload_2
     196: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     199: if_icmpne     206
     202: iconst_1
     203: goto          207
     206: iconst_0
     207: ifeq          161
     210: aload         7
     212: aload         10
     214: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     219: pop
     220: goto          161
     223: aload         7
     225: checkcast     #119                // class java/util/List
     228: nop
     229: checkcast     #83                 // class java/lang/Iterable
     232: astore        4
     234: nop
     235: iconst_0
     236: istore        5
     238: aload         4
     240: new           #586                // class Day10$isInPolygonBelow$$inlined$sortedBy$1
     243: dup
     244: invokespecial #587                // Method Day10$isInPolygonBelow$$inlined$sortedBy$1."<init>":()V
     247: checkcast     #571                // class java/util/Comparator
     250: invokestatic  #473                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
     253: astore_3
     254: aload_3
     255: checkcast     #83                 // class java/lang/Iterable
     258: astore        5
     260: nop
     261: iconst_0
     262: istore        6
     264: aload         5
     266: astore        7
     268: new           #214                // class java/util/ArrayList
     271: dup
     272: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     275: checkcast     #142                // class java/util/Collection
     278: astore        8
     280: iconst_0
     281: istore        9
     283: aload         7
     285: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     290: astore        10
     292: aload         10
     294: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     299: ifeq          365
     302: aload         10
     304: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     309: astore        11
     311: aload         11
     313: checkcast     #62                 // class Day10$Coordinate
     316: astore        12
     318: iconst_0
     319: istore        13
     321: aload_1
     322: aload         12
     324: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     329: checkcast     #123                // class Day10$Node
     332: dup
     333: ifnull        342
     336: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     339: goto          344
     342: pop
     343: aconst_null
     344: ldc           #255                // String -
     346: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     349: ifeq          292
     352: aload         8
     354: aload         11
     356: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     361: pop
     362: goto          292
     365: aload         8
     367: checkcast     #119                // class java/util/List
     370: nop
     371: astore        4
     373: iconst_2
     374: anewarray     #97                 // class java/lang/String
     377: astore        6
     379: aload         6
     381: iconst_0
     382: ldc_w         #533                // String FJ
     385: aastore
     386: aload         6
     388: iconst_1
     389: ldc_w         #575                // String 7L
     392: aastore
     393: aload         6
     395: invokestatic  #249                // Method kotlin/collections/SetsKt.setOf:([Ljava/lang/Object;)Ljava/util/Set;
     398: astore        5
     400: aload_3
     401: checkcast     #83                 // class java/lang/Iterable
     404: astore        7
     406: nop
     407: iconst_0
     408: istore        8
     410: aload         7
     412: astore        9
     414: new           #214                // class java/util/ArrayList
     417: dup
     418: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     421: checkcast     #142                // class java/util/Collection
     424: astore        10
     426: iconst_0
     427: istore        11
     429: aload         9
     431: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     436: astore        12
     438: aload         12
     440: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     445: ifeq          519
     448: aload         12
     450: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     455: astore        13
     457: aload         13
     459: checkcast     #62                 // class Day10$Coordinate
     462: astore        14
     464: iconst_0
     465: istore        15
     467: aload_1
     468: aload         14
     470: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     475: checkcast     #123                // class Day10$Node
     478: dup
     479: ifnull        488
     482: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     485: goto          490
     488: pop
     489: aconst_null
     490: ldc           #239                // String |
     492: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     495: ifne          502
     498: iconst_1
     499: goto          503
     502: iconst_0
     503: ifeq          438
     506: aload         10
     508: aload         13
     510: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     515: pop
     516: goto          438
     519: aload         10
     521: checkcast     #119                // class java/util/List
     524: nop
     525: checkcast     #83                 // class java/lang/Iterable
     528: invokestatic  #538                // Method kotlin/collections/CollectionsKt.zipWithNext:(Ljava/lang/Iterable;)Ljava/util/List;
     531: checkcast     #83                 // class java/lang/Iterable
     534: astore        7
     536: iconst_0
     537: istore        8
     539: aload         7
     541: astore        9
     543: new           #214                // class java/util/ArrayList
     546: dup
     547: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     550: checkcast     #142                // class java/util/Collection
     553: astore        10
     555: iconst_0
     556: istore        11
     558: aload         9
     560: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     565: astore        12
     567: aload         12
     569: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     574: ifeq          701
     577: aload         12
     579: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     584: astore        13
     586: aload         13
     588: checkcast     #437                // class kotlin/Pair
     591: astore        14
     593: iconst_0
     594: istore        15
     596: aload         14
     598: invokevirtual #541                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     601: checkcast     #62                 // class Day10$Coordinate
     604: astore        16
     606: aload         14
     608: invokevirtual #544                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     611: checkcast     #62                 // class Day10$Coordinate
     614: astore        17
     616: aload         5
     618: new           #546                // class java/lang/StringBuilder
     621: dup
     622: invokespecial #547                // Method java/lang/StringBuilder."<init>":()V
     625: aload_1
     626: aload         16
     628: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     633: checkcast     #123                // class Day10$Node
     636: dup
     637: ifnull        646
     640: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     643: goto          648
     646: pop
     647: aconst_null
     648: invokevirtual #551                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     651: aload_1
     652: aload         17
     654: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     659: checkcast     #123                // class Day10$Node
     662: dup
     663: ifnull        672
     666: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     669: goto          674
     672: pop
     673: aconst_null
     674: invokevirtual #551                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     677: invokevirtual #554                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     680: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     685: ifeq          567
     688: aload         10
     690: aload         13
     692: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     697: pop
     698: goto          567
     701: aload         10
     703: checkcast     #119                // class java/util/List
     706: nop
     707: astore        6
     709: aload         6
     711: invokeinterface #555,  1          // InterfaceMethod java/util/List.size:()I
     716: aload         4
     718: invokeinterface #555,  1          // InterfaceMethod java/util/List.size:()I
     723: iadd
     724: iconst_2
     725: irem
     726: iconst_1
     727: if_icmpne     734
     730: iconst_1
     731: goto          735
     734: iconst_0
     735: ireturn

  public final boolean isInPolygonAbove(java.util.Map<Day10$Coordinate, Day10$Node>, Day10$Coordinate);
    Code:
       0: aload_1
       1: ldc_w         #527                // String graph
       4: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_2
       8: ldc_w         #528                // String coordinate
      11: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      14: aload_1
      15: invokeinterface #531,  1          // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
      20: checkcast     #83                 // class java/lang/Iterable
      23: astore_3
      24: iconst_0
      25: istore        4
      27: aload_3
      28: astore        5
      30: new           #214                // class java/util/ArrayList
      33: dup
      34: invokespecial #232                // Method java/util/ArrayList."<init>":()V
      37: checkcast     #142                // class java/util/Collection
      40: astore        6
      42: iconst_0
      43: istore        7
      45: aload         5
      47: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      52: astore        8
      54: aload         8
      56: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      61: ifeq          116
      64: aload         8
      66: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      71: astore        9
      73: aload         9
      75: checkcast     #62                 // class Day10$Coordinate
      78: astore        10
      80: iconst_0
      81: istore        11
      83: aload         10
      85: invokevirtual #486                // Method Day10$Coordinate.getY:()I
      88: aload_2
      89: invokevirtual #486                // Method Day10$Coordinate.getY:()I
      92: if_icmpge     99
      95: iconst_1
      96: goto          100
      99: iconst_0
     100: ifeq          54
     103: aload         6
     105: aload         9
     107: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     112: pop
     113: goto          54
     116: aload         6
     118: checkcast     #119                // class java/util/List
     121: nop
     122: checkcast     #83                 // class java/lang/Iterable
     125: astore_3
     126: nop
     127: iconst_0
     128: istore        4
     130: aload_3
     131: astore        5
     133: new           #214                // class java/util/ArrayList
     136: dup
     137: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     140: checkcast     #142                // class java/util/Collection
     143: astore        6
     145: iconst_0
     146: istore        7
     148: aload         5
     150: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     155: astore        8
     157: aload         8
     159: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     164: ifeq          219
     167: aload         8
     169: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     174: astore        9
     176: aload         9
     178: checkcast     #62                 // class Day10$Coordinate
     181: astore        10
     183: iconst_0
     184: istore        11
     186: aload         10
     188: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     191: aload_2
     192: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     195: if_icmpge     202
     198: iconst_1
     199: goto          203
     202: iconst_0
     203: ifeq          157
     206: aload         6
     208: aload         9
     210: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     215: pop
     216: goto          157
     219: aload         6
     221: checkcast     #119                // class java/util/List
     224: nop
     225: pop
     226: aload_1
     227: invokeinterface #531,  1          // InterfaceMethod java/util/Map.keySet:()Ljava/util/Set;
     232: checkcast     #83                 // class java/lang/Iterable
     235: astore        4
     237: iconst_0
     238: istore        5
     240: aload         4
     242: astore        6
     244: new           #214                // class java/util/ArrayList
     247: dup
     248: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     251: checkcast     #142                // class java/util/Collection
     254: astore        7
     256: iconst_0
     257: istore        8
     259: aload         6
     261: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     266: astore        9
     268: aload         9
     270: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     275: ifeq          330
     278: aload         9
     280: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     285: astore        10
     287: aload         10
     289: checkcast     #62                 // class Day10$Coordinate
     292: astore        11
     294: iconst_0
     295: istore        12
     297: aload         11
     299: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     302: aload_2
     303: invokevirtual #486                // Method Day10$Coordinate.getY:()I
     306: if_icmpge     313
     309: iconst_1
     310: goto          314
     313: iconst_0
     314: ifeq          268
     317: aload         7
     319: aload         10
     321: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     326: pop
     327: goto          268
     330: aload         7
     332: checkcast     #119                // class java/util/List
     335: nop
     336: checkcast     #83                 // class java/lang/Iterable
     339: astore        4
     341: nop
     342: iconst_0
     343: istore        5
     345: aload         4
     347: astore        6
     349: new           #214                // class java/util/ArrayList
     352: dup
     353: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     356: checkcast     #142                // class java/util/Collection
     359: astore        7
     361: iconst_0
     362: istore        8
     364: aload         6
     366: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     371: astore        9
     373: aload         9
     375: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     380: ifeq          435
     383: aload         9
     385: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     390: astore        10
     392: aload         10
     394: checkcast     #62                 // class Day10$Coordinate
     397: astore        11
     399: iconst_0
     400: istore        12
     402: aload         11
     404: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     407: aload_2
     408: invokevirtual #480                // Method Day10$Coordinate.getX:()I
     411: if_icmpne     418
     414: iconst_1
     415: goto          419
     418: iconst_0
     419: ifeq          373
     422: aload         7
     424: aload         10
     426: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     431: pop
     432: goto          373
     435: aload         7
     437: checkcast     #119                // class java/util/List
     440: nop
     441: checkcast     #83                 // class java/lang/Iterable
     444: astore        4
     446: nop
     447: iconst_0
     448: istore        5
     450: aload         4
     452: new           #598                // class Day10$isInPolygonAbove$$inlined$sortedByDescending$1
     455: dup
     456: invokespecial #599                // Method Day10$isInPolygonAbove$$inlined$sortedByDescending$1."<init>":()V
     459: checkcast     #571                // class java/util/Comparator
     462: invokestatic  #473                // Method kotlin/collections/CollectionsKt.sortedWith:(Ljava/lang/Iterable;Ljava/util/Comparator;)Ljava/util/List;
     465: astore_3
     466: aload_3
     467: checkcast     #83                 // class java/lang/Iterable
     470: astore        5
     472: nop
     473: iconst_0
     474: istore        6
     476: aload         5
     478: astore        7
     480: new           #214                // class java/util/ArrayList
     483: dup
     484: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     487: checkcast     #142                // class java/util/Collection
     490: astore        8
     492: iconst_0
     493: istore        9
     495: aload         7
     497: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     502: astore        10
     504: aload         10
     506: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     511: ifeq          577
     514: aload         10
     516: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     521: astore        11
     523: aload         11
     525: checkcast     #62                 // class Day10$Coordinate
     528: astore        12
     530: iconst_0
     531: istore        13
     533: aload_1
     534: aload         12
     536: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     541: checkcast     #123                // class Day10$Node
     544: dup
     545: ifnull        554
     548: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     551: goto          556
     554: pop
     555: aconst_null
     556: ldc           #255                // String -
     558: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     561: ifeq          504
     564: aload         8
     566: aload         11
     568: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     573: pop
     574: goto          504
     577: aload         8
     579: checkcast     #119                // class java/util/List
     582: nop
     583: astore        4
     585: iconst_2
     586: anewarray     #97                 // class java/lang/String
     589: astore        6
     591: aload         6
     593: iconst_0
     594: ldc_w         #573                // String JF
     597: aastore
     598: aload         6
     600: iconst_1
     601: ldc_w         #535                // String L7
     604: aastore
     605: aload         6
     607: invokestatic  #249                // Method kotlin/collections/SetsKt.setOf:([Ljava/lang/Object;)Ljava/util/Set;
     610: astore        5
     612: aload_3
     613: checkcast     #83                 // class java/lang/Iterable
     616: astore        7
     618: nop
     619: iconst_0
     620: istore        8
     622: aload         7
     624: astore        9
     626: new           #214                // class java/util/ArrayList
     629: dup
     630: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     633: checkcast     #142                // class java/util/Collection
     636: astore        10
     638: iconst_0
     639: istore        11
     641: aload         9
     643: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     648: astore        12
     650: aload         12
     652: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     657: ifeq          731
     660: aload         12
     662: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     667: astore        13
     669: aload         13
     671: checkcast     #62                 // class Day10$Coordinate
     674: astore        14
     676: iconst_0
     677: istore        15
     679: aload_1
     680: aload         14
     682: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     687: checkcast     #123                // class Day10$Node
     690: dup
     691: ifnull        700
     694: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     697: goto          702
     700: pop
     701: aconst_null
     702: ldc           #239                // String |
     704: invokestatic  #133                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
     707: ifne          714
     710: iconst_1
     711: goto          715
     714: iconst_0
     715: ifeq          650
     718: aload         10
     720: aload         13
     722: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     727: pop
     728: goto          650
     731: aload         10
     733: checkcast     #119                // class java/util/List
     736: nop
     737: checkcast     #83                 // class java/lang/Iterable
     740: invokestatic  #538                // Method kotlin/collections/CollectionsKt.zipWithNext:(Ljava/lang/Iterable;)Ljava/util/List;
     743: checkcast     #83                 // class java/lang/Iterable
     746: astore        7
     748: iconst_0
     749: istore        8
     751: aload         7
     753: astore        9
     755: new           #214                // class java/util/ArrayList
     758: dup
     759: invokespecial #232                // Method java/util/ArrayList."<init>":()V
     762: checkcast     #142                // class java/util/Collection
     765: astore        10
     767: iconst_0
     768: istore        11
     770: aload         9
     772: invokeinterface #121,  1          // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     777: astore        12
     779: aload         12
     781: invokeinterface #51,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     786: ifeq          913
     789: aload         12
     791: invokeinterface #55,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     796: astore        13
     798: aload         13
     800: checkcast     #437                // class kotlin/Pair
     803: astore        14
     805: iconst_0
     806: istore        15
     808: aload         14
     810: invokevirtual #541                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     813: checkcast     #62                 // class Day10$Coordinate
     816: astore        16
     818: aload         14
     820: invokevirtual #544                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     823: checkcast     #62                 // class Day10$Coordinate
     826: astore        17
     828: aload         5
     830: new           #546                // class java/lang/StringBuilder
     833: dup
     834: invokespecial #547                // Method java/lang/StringBuilder."<init>":()V
     837: aload_1
     838: aload         16
     840: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     845: checkcast     #123                // class Day10$Node
     848: dup
     849: ifnull        858
     852: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     855: goto          860
     858: pop
     859: aconst_null
     860: invokevirtual #551                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     863: aload_1
     864: aload         17
     866: invokeinterface #166,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     871: checkcast     #123                // class Day10$Node
     874: dup
     875: ifnull        884
     878: invokevirtual #127                // Method Day10$Node.getPipe:()Ljava/lang/String;
     881: goto          886
     884: pop
     885: aconst_null
     886: invokevirtual #551                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     889: invokevirtual #554                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     892: invokeinterface #66,  2           // InterfaceMethod java/util/Set.contains:(Ljava/lang/Object;)Z
     897: ifeq          779
     900: aload         10
     902: aload         13
     904: invokeinterface #237,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     909: pop
     910: goto          779
     913: aload         10
     915: checkcast     #119                // class java/util/List
     918: nop
     919: astore        6
     921: aload         6
     923: invokeinterface #555,  1          // InterfaceMethod java/util/List.size:()I
     928: aload         4
     930: invokeinterface #555,  1          // InterfaceMethod java/util/List.size:()I
     935: iadd
     936: iconst_2
     937: irem
     938: iconst_1
     939: if_icmpne     946
     942: iconst_1
     943: goto          947
     946: iconst_0
     947: ireturn

  private static final java.lang.Comparable translate$lambda$32(Day10$Coordinate);
    Code:
       0: aload_0
       1: ldc_w         #609                // String it
       4: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #480                // Method Day10$Coordinate.getX:()I
      11: invokestatic  #155                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      14: checkcast     #170                // class java/lang/Comparable
      17: areturn

  private static final java.lang.Comparable translate$lambda$33(Day10$Coordinate);
    Code:
       0: aload_0
       1: ldc_w         #609                // String it
       4: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokevirtual #486                // Method Day10$Coordinate.getY:()I
      11: invokestatic  #155                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      14: checkcast     #170                // class java/lang/Comparable
      17: areturn

  static {};
    Code:
       0: new           #2                  // class Day10
       3: dup
       4: invokespecial #611                // Method "<init>":()V
       7: putstatic     #392                // Field INSTANCE:LDay10;
      10: return
}

Compiled from "Comparisons.kt"
public final class Day10$isInPolygonLeft$$inlined$sortedByDescending$1<T> implements java.util.Comparator {
  public Day10$isInPolygonLeft$$inlined$sortedByDescending$1();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_2
       1: checkcast     #23                 // class Day10$Coordinate
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: invokevirtual #27                 // Method Day10$Coordinate.getX:()I
      12: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      15: checkcast     #35                 // class java/lang/Comparable
      18: aload_1
      19: checkcast     #23                 // class Day10$Coordinate
      22: astore_3
      23: astore        5
      25: iconst_0
      26: istore        4
      28: aload_3
      29: invokevirtual #27                 // Method Day10$Coordinate.getX:()I
      32: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      35: aload         5
      37: swap
      38: checkcast     #35                 // class java/lang/Comparable
      41: invokestatic  #41                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      44: ireturn
}

Compiled from "Day10.kt"
public final class Day10$Coordinate {
  private final int x;

  private final int y;

  public Day10$Coordinate(int, int);
    Code:
       0: aload_0
       1: invokespecial #9                  // Method java/lang/Object."<init>":()V
       4: aload_0
       5: iload_1
       6: putfield      #13                 // Field x:I
       9: aload_0
      10: iload_2
      11: putfield      #16                 // Field y:I
      14: return

  public final int getX();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: ireturn

  public final int getY();
    Code:
       0: aload_0
       1: getfield      #16                 // Field y:I
       4: ireturn

  public final int component1();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: ireturn

  public final int component2();
    Code:
       0: aload_0
       1: getfield      #16                 // Field y:I
       4: ireturn

  public final Day10$Coordinate copy(int, int);
    Code:
       0: new           #2                  // class Day10$Coordinate
       3: dup
       4: iload_1
       5: iload_2
       6: invokespecial #28                 // Method "<init>":(II)V
       9: areturn

  public static Day10$Coordinate copy$default(Day10$Coordinate, int, int, int, java.lang.Object);
    Code:
       0: iload_3
       1: iconst_1
       2: iand
       3: ifeq          11
       6: aload_0
       7: getfield      #13                 // Field x:I
      10: istore_1
      11: iload_3
      12: iconst_2
      13: iand
      14: ifeq          22
      17: aload_0
      18: getfield      #16                 // Field y:I
      21: istore_2
      22: aload_0
      23: iload_1
      24: iload_2
      25: invokevirtual #32                 // Method copy:(II)LDay10$Coordinate;
      28: areturn

  public java.lang.String toString();
    Code:
       0: new           #36                 // class java/lang/StringBuilder
       3: dup
       4: invokespecial #37                 // Method java/lang/StringBuilder."<init>":()V
       7: ldc           #39                 // String Coordinate(x=
       9: invokevirtual #43                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      12: aload_0
      13: getfield      #13                 // Field x:I
      16: invokevirtual #46                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      19: ldc           #48                 // String , y=
      21: invokevirtual #43                 // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      24: aload_0
      25: getfield      #16                 // Field y:I
      28: invokevirtual #46                 // Method java/lang/StringBuilder.append:(I)Ljava/lang/StringBuilder;
      31: bipush        41
      33: invokevirtual #51                 // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
      36: invokevirtual #53                 // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      39: areturn

  public int hashCode();
    Code:
       0: aload_0
       1: getfield      #13                 // Field x:I
       4: invokestatic  #59                 // Method java/lang/Integer.hashCode:(I)I
       7: istore_1
       8: iload_1
       9: bipush        31
      11: imul
      12: aload_0
      13: getfield      #16                 // Field y:I
      16: invokestatic  #59                 // Method java/lang/Integer.hashCode:(I)I
      19: iadd
      20: istore_1
      21: iload_1
      22: ireturn

  public boolean equals(java.lang.Object);
    Code:
       0: aload_0
       1: aload_1
       2: if_acmpne     7
       5: iconst_1
       6: ireturn
       7: aload_1
       8: instanceof    #2                  // class Day10$Coordinate
      11: ifne          16
      14: iconst_0
      15: ireturn
      16: aload_1
      17: checkcast     #2                  // class Day10$Coordinate
      20: astore_2
      21: aload_0
      22: getfield      #13                 // Field x:I
      25: aload_2
      26: getfield      #13                 // Field x:I
      29: if_icmpeq     34
      32: iconst_0
      33: ireturn
      34: aload_0
      35: getfield      #16                 // Field y:I
      38: aload_2
      39: getfield      #16                 // Field y:I
      42: if_icmpeq     47
      45: iconst_0
      46: ireturn
      47: iconst_1
      48: ireturn
}

Compiled from "Comparisons.kt"
public final class Day10$isInPolygonAbove$$inlined$sortedByDescending$1<T> implements java.util.Comparator {
  public Day10$isInPolygonAbove$$inlined$sortedByDescending$1();
    Code:
       0: aload_0
       1: invokespecial #16                 // Method java/lang/Object."<init>":()V
       4: return

  public final int compare(T, T);
    Code:
       0: aload_2
       1: checkcast     #23                 // class Day10$Coordinate
       4: astore_3
       5: iconst_0
       6: istore        4
       8: aload_3
       9: invokevirtual #27                 // Method Day10$Coordinate.getY:()I
      12: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      15: checkcast     #35                 // class java/lang/Comparable
      18: aload_1
      19: checkcast     #23                 // class Day10$Coordinate
      22: astore_3
      23: astore        5
      25: iconst_0
      26: istore        4
      28: aload_3
      29: invokevirtual #27                 // Method Day10$Coordinate.getY:()I
      32: invokestatic  #33                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      35: aload         5
      37: swap
      38: checkcast     #35                 // class java/lang/Comparable
      41: invokestatic  #41                 // Method kotlin/comparisons/ComparisonsKt.compareValues:(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
      44: ireturn
}