package net.rafaeltoledo.kotlin.advent

class Day03 {

  fun invoke(input: List<String>): Int {
    val positioning = input.toPositioning()

    return positioning.filter { it.checkBoundaries(input) }.sumOf { it.number }
  }

  fun invoke2(input: List<String>): Int {
    val positioning = input.toPositioning()

    return positioning
      .map { it.fillAsteriskData(input) }
      .filter { it.symbolPosition != null }
      .groupBy { it.symbolPosition }
      .filter { it.value.size >= 2 }
      .map { it.value.first().number * it.value.last().number }
      .sum()
  }

  fun NumberPositioning.checkBoundaries(input: List<String>): Boolean {
    val lines = listOf(this.start.first - 1, this.start.first, this.start.first + 1).filter { it >= 0 }.filter { it <= input.size - 1 }
    val range = ((start.second - 1)..(end.second + 1)).toList().filter { it >= 0 }.filter { it <= input.first().length - 1 }

    lines.forEach {  line ->
      range.forEach {  column ->
        if (input.get(line).get(column).isValid()) {
          return true
        }
      }
    }

    return false
  }

  fun NumberPositioning.fillAsteriskData(input: List<String>): NumberPositioning {
    val lines = listOf(this.start.first - 1, this.start.first, this.start.first + 1).filter { it >= 0 }.filter { it <= input.size - 1 }
    val range = ((start.second - 1)..(end.second + 1)).toList().filter { it >= 0 }.filter { it <= input.first().length - 1 }

    lines.forEach { line ->
      range.forEach { column ->
        if (input.get(line).get(column).isAsterisk()) {
          return this.copy(
            symbolPosition = Pair(line, column),
          )
        }
      }
    }

    return this
  }
}

fun NumberPositioning.prettyPrint(input: List<String>) {
  val lines = listOf(this.start.first - 1, this.start.first, this.start.first + 1).filter { it >= 0 }.filter { it <= input.size - 1 }
  val range = ((start.second - 1)..(end.second + 1)).toList().filter { it >= 0 }.filter { it <= input.first().length - 1 }

  lines.forEach { line ->
    range.forEach {  column ->
      print(input.get(line).get(column))
    }
    println()
  }
  println()
}

private fun Char.isValid(): Boolean {
  return (!isDigit() && this != '.')
}

private fun Char.isAsterisk(): Boolean {
  return this == '*'
}

private fun List<String>.toPositioning(): List<NumberPositioning> {
  val list = mutableListOf<NumberPositioning>()

  this.forEachIndexed { line, value ->
    var tempStr = ""
    var startIndex = -1

    value.forEachIndexed { strIndex, char ->
      if (char.isDigit()) {
        tempStr += char
        if (startIndex == -1) {
          startIndex = strIndex
        }
      } else {
        if (tempStr.isNotEmpty()) {
          list.add(NumberPositioning(tempStr.toInt(), Pair(line, startIndex), Pair(line, strIndex - 1)))
        }
        tempStr = ""
        startIndex = -1
      }
    }

    if (tempStr.isNotEmpty()) {
      list.add(NumberPositioning(tempStr.toInt(), Pair(line, startIndex), Pair(line, value.length - 1)))
    }
  }

  return list.toList()
}

data class NumberPositioning(
  val number: Int,
  val start: Pair<Int, Int>,
  val end: Pair<Int, Int>,
  var symbolPosition: Pair<Int, Int>? = null,
)

Compiled from "Day03.kt"
public final class net.rafaeltoledo.kotlin.advent.Day03Kt {
  public static final void prettyPrint(net.rafaeltoledo.kotlin.advent.NumberPositioning, java.util.List<java.lang.String>);
    Code:
       0: aload_0
       1: ldc           #10                 // String <this>
       3: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_1
       7: ldc           #18                 // String input
       9: invokestatic  #16                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: iconst_3
      13: anewarray     #20                 // class java/lang/Integer
      16: astore_3
      17: aload_3
      18: iconst_0
      19: aload_0
      20: invokevirtual #26                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
      23: invokevirtual #32                 // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      26: checkcast     #34                 // class java/lang/Number
      29: invokevirtual #38                 // Method java/lang/Number.intValue:()I
      32: iconst_1
      33: isub
      34: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      37: aastore
      38: aload_3
      39: iconst_1
      40: aload_0
      41: invokevirtual #26                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
      44: invokevirtual #32                 // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      47: aastore
      48: aload_3
      49: iconst_2
      50: aload_0
      51: invokevirtual #26                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
      54: invokevirtual #32                 // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      57: checkcast     #34                 // class java/lang/Number
      60: invokevirtual #38                 // Method java/lang/Number.intValue:()I
      63: iconst_1
      64: iadd
      65: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      68: aastore
      69: aload_3
      70: invokestatic  #48                 // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      73: checkcast     #50                 // class java/lang/Iterable
      76: astore_3
      77: iconst_0
      78: istore        4
      80: aload_3
      81: astore        5
      83: new           #52                 // class java/util/ArrayList
      86: dup
      87: invokespecial #56                 // Method java/util/ArrayList."<init>":()V
      90: checkcast     #58                 // class java/util/Collection
      93: astore        6
      95: iconst_0
      96: istore        7
      98: aload         5
     100: invokeinterface #62,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     105: astore        8
     107: aload         8
     109: invokeinterface #68,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     114: ifeq          165
     117: aload         8
     119: invokeinterface #71,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     124: astore        9
     126: aload         9
     128: checkcast     #34                 // class java/lang/Number
     131: invokevirtual #38                 // Method java/lang/Number.intValue:()I
     134: istore        10
     136: iconst_0
     137: istore        11
     139: iload         10
     141: iflt          148
     144: iconst_1
     145: goto          149
     148: iconst_0
     149: ifeq          107
     152: aload         6
     154: aload         9
     156: invokeinterface #75,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     161: pop
     162: goto          107
     165: aload         6
     167: checkcast     #77                 // class java/util/List
     170: nop
     171: checkcast     #50                 // class java/lang/Iterable
     174: astore_3
     175: nop
     176: iconst_0
     177: istore        4
     179: aload_3
     180: astore        5
     182: new           #52                 // class java/util/ArrayList
     185: dup
     186: invokespecial #56                 // Method java/util/ArrayList."<init>":()V
     189: checkcast     #58                 // class java/util/Collection
     192: astore        6
     194: iconst_0
     195: istore        7
     197: aload         5
     199: invokeinterface #62,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     204: astore        8
     206: aload         8
     208: invokeinterface #68,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     213: ifeq          272
     216: aload         8
     218: invokeinterface #71,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     223: astore        9
     225: aload         9
     227: checkcast     #34                 // class java/lang/Number
     230: invokevirtual #38                 // Method java/lang/Number.intValue:()I
     233: istore        10
     235: iconst_0
     236: istore        11
     238: iload         10
     240: aload_1
     241: invokeinterface #80,  1           // InterfaceMethod java/util/List.size:()I
     246: iconst_1
     247: isub
     248: if_icmpgt     255
     251: iconst_1
     252: goto          256
     255: iconst_0
     256: ifeq          206
     259: aload         6
     261: aload         9
     263: invokeinterface #75,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     268: pop
     269: goto          206
     272: aload         6
     274: checkcast     #77                 // class java/util/List
     277: nop
     278: astore_2
     279: new           #82                 // class kotlin/ranges/IntRange
     282: dup
     283: aload_0
     284: invokevirtual #26                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
     287: invokevirtual #85                 // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     290: checkcast     #34                 // class java/lang/Number
     293: invokevirtual #38                 // Method java/lang/Number.intValue:()I
     296: iconst_1
     297: isub
     298: aload_0
     299: invokevirtual #88                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getEnd:()Lkotlin/Pair;
     302: invokevirtual #85                 // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     305: checkcast     #34                 // class java/lang/Number
     308: invokevirtual #38                 // Method java/lang/Number.intValue:()I
     311: iconst_1
     312: iadd
     313: invokespecial #91                 // Method kotlin/ranges/IntRange."<init>":(II)V
     316: checkcast     #50                 // class java/lang/Iterable
     319: invokestatic  #95                 // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
     322: checkcast     #50                 // class java/lang/Iterable
     325: astore        4
     327: iconst_0
     328: istore        5
     330: aload         4
     332: astore        6
     334: new           #52                 // class java/util/ArrayList
     337: dup
     338: invokespecial #56                 // Method java/util/ArrayList."<init>":()V
     341: checkcast     #58                 // class java/util/Collection
     344: astore        7
     346: iconst_0
     347: istore        8
     349: aload         6
     351: invokeinterface #62,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     356: astore        9
     358: aload         9
     360: invokeinterface #68,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     365: ifeq          416
     368: aload         9
     370: invokeinterface #71,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     375: astore        10
     377: aload         10
     379: checkcast     #34                 // class java/lang/Number
     382: invokevirtual #38                 // Method java/lang/Number.intValue:()I
     385: istore        11
     387: iconst_0
     388: istore        12
     390: iload         11
     392: iflt          399
     395: iconst_1
     396: goto          400
     399: iconst_0
     400: ifeq          358
     403: aload         7
     405: aload         10
     407: invokeinterface #75,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     412: pop
     413: goto          358
     416: aload         7
     418: checkcast     #77                 // class java/util/List
     421: nop
     422: checkcast     #50                 // class java/lang/Iterable
     425: astore        4
     427: nop
     428: iconst_0
     429: istore        5
     431: aload         4
     433: astore        6
     435: new           #52                 // class java/util/ArrayList
     438: dup
     439: invokespecial #56                 // Method java/util/ArrayList."<init>":()V
     442: checkcast     #58                 // class java/util/Collection
     445: astore        7
     447: iconst_0
     448: istore        8
     450: aload         6
     452: invokeinterface #62,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     457: astore        9
     459: aload         9
     461: invokeinterface #68,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     466: ifeq          529
     469: aload         9
     471: invokeinterface #71,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     476: astore        10
     478: aload         10
     480: checkcast     #34                 // class java/lang/Number
     483: invokevirtual #38                 // Method java/lang/Number.intValue:()I
     486: istore        11
     488: iconst_0
     489: istore        12
     491: iload         11
     493: aload_1
     494: invokestatic  #99                 // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     497: checkcast     #101                // class java/lang/String
     500: invokevirtual #104                // Method java/lang/String.length:()I
     503: iconst_1
     504: isub
     505: if_icmpgt     512
     508: iconst_1
     509: goto          513
     512: iconst_0
     513: ifeq          459
     516: aload         7
     518: aload         10
     520: invokeinterface #75,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     525: pop
     526: goto          459
     529: aload         7
     531: checkcast     #77                 // class java/util/List
     534: nop
     535: astore_3
     536: aload_2
     537: checkcast     #50                 // class java/lang/Iterable
     540: astore        4
     542: iconst_0
     543: istore        5
     545: aload         4
     547: invokeinterface #62,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     552: astore        6
     554: aload         6
     556: invokeinterface #68,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     561: ifeq          679
     564: aload         6
     566: invokeinterface #71,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     571: astore        7
     573: aload         7
     575: checkcast     #34                 // class java/lang/Number
     578: invokevirtual #38                 // Method java/lang/Number.intValue:()I
     581: istore        8
     583: iconst_0
     584: istore        9
     586: aload_3
     587: checkcast     #50                 // class java/lang/Iterable
     590: astore        10
     592: iconst_0
     593: istore        11
     595: aload         10
     597: invokeinterface #62,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     602: astore        12
     604: aload         12
     606: invokeinterface #68,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     611: ifeq          667
     614: aload         12
     616: invokeinterface #71,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     621: astore        13
     623: aload         13
     625: checkcast     #34                 // class java/lang/Number
     628: invokevirtual #38                 // Method java/lang/Number.intValue:()I
     631: istore        14
     633: iconst_0
     634: istore        15
     636: aload_1
     637: iload         8
     639: invokeinterface #108,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     644: checkcast     #101                // class java/lang/String
     647: iload         14
     649: invokevirtual #112                // Method java/lang/String.charAt:(I)C
     652: istore        16
     654: getstatic     #118                // Field java/lang/System.out:Ljava/io/PrintStream;
     657: iload         16
     659: invokevirtual #124                // Method java/io/PrintStream.print:(C)V
     662: nop
     663: nop
     664: goto          604
     667: nop
     668: getstatic     #118                // Field java/lang/System.out:Ljava/io/PrintStream;
     671: invokevirtual #127                // Method java/io/PrintStream.println:()V
     674: nop
     675: nop
     676: goto          554
     679: nop
     680: getstatic     #118                // Field java/lang/System.out:Ljava/io/PrintStream;
     683: invokevirtual #127                // Method java/io/PrintStream.println:()V
     686: return

  private static final boolean isValid(char);
    Code:
       0: iload_0
       1: invokestatic  #161                // Method java/lang/Character.isDigit:(C)Z
       4: ifne          17
       7: iload_0
       8: bipush        46
      10: if_icmpeq     17
      13: iconst_1
      14: goto          18
      17: iconst_0
      18: ireturn

  private static final boolean isAsterisk(char);
    Code:
       0: iload_0
       1: bipush        42
       3: if_icmpne     10
       6: iconst_1
       7: goto          11
      10: iconst_0
      11: ireturn

  private static final java.util.List<net.rafaeltoledo.kotlin.advent.NumberPositioning> toPositioning(java.util.List<java.lang.String>);
    Code:
       0: new           #52                 // class java/util/ArrayList
       3: dup
       4: invokespecial #56                 // Method java/util/ArrayList."<init>":()V
       7: checkcast     #77                 // class java/util/List
      10: astore_1
      11: aload_0
      12: checkcast     #50                 // class java/lang/Iterable
      15: astore_2
      16: iconst_0
      17: istore_3
      18: iconst_0
      19: istore        4
      21: aload_2
      22: invokeinterface #62,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      27: astore        5
      29: aload         5
      31: invokeinterface #68,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      36: ifeq          370
      39: aload         5
      41: invokeinterface #71,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      46: astore        6
      48: iload         4
      50: iinc          4, 1
      53: istore        7
      55: iload         7
      57: ifge          63
      60: invokestatic  #171                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
      63: iload         7
      65: aload         6
      67: checkcast     #101                // class java/lang/String
      70: astore        8
      72: istore        9
      74: iconst_0
      75: istore        10
      77: aconst_null
      78: astore        11
      80: ldc           #173                // String
      82: astore        11
      84: iconst_0
      85: istore        12
      87: iconst_m1
      88: istore        12
      90: aload         8
      92: checkcast     #175                // class java/lang/CharSequence
      95: astore        13
      97: iconst_0
      98: istore        14
     100: iconst_0
     101: istore        15
     103: iconst_0
     104: istore        16
     106: iload         16
     108: aload         13
     110: invokeinterface #176,  1          // InterfaceMethod java/lang/CharSequence.length:()I
     115: if_icmpge     281
     118: aload         13
     120: iload         16
     122: invokeinterface #177,  2          // InterfaceMethod java/lang/CharSequence.charAt:(I)C
     127: istore        17
     129: iload         15
     131: iinc          15, 1
     134: iload         17
     136: istore        18
     138: istore        19
     140: iconst_0
     141: istore        20
     143: iload         18
     145: invokestatic  #161                // Method java/lang/Character.isDigit:(C)Z
     148: ifeq          186
     151: new           #179                // class java/lang/StringBuilder
     154: dup
     155: invokespecial #180                // Method java/lang/StringBuilder."<init>":()V
     158: aload         11
     160: invokevirtual #184                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
     163: iload         18
     165: invokevirtual #187                // Method java/lang/StringBuilder.append:(C)Ljava/lang/StringBuilder;
     168: invokevirtual #191                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
     171: astore        11
     173: iload         12
     175: iconst_m1
     176: if_icmpne     273
     179: iload         19
     181: istore        12
     183: goto          273
     186: aload         11
     188: checkcast     #175                // class java/lang/CharSequence
     191: invokeinterface #176,  1          // InterfaceMethod java/lang/CharSequence.length:()I
     196: ifle          203
     199: iconst_1
     200: goto          204
     203: iconst_0
     204: ifeq          266
     207: aload_1
     208: new           #22                 // class net/rafaeltoledo/kotlin/advent/NumberPositioning
     211: dup
     212: aload         11
     214: invokestatic  #195                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     217: new           #28                 // class kotlin/Pair
     220: dup
     221: iload         9
     223: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     226: iload         12
     228: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     231: invokespecial #198                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     234: new           #28                 // class kotlin/Pair
     237: dup
     238: iload         9
     240: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     243: iload         19
     245: iconst_1
     246: isub
     247: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     250: invokespecial #198                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     253: aconst_null
     254: bipush        8
     256: aconst_null
     257: invokespecial #201                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning."<init>":(ILkotlin/Pair;Lkotlin/Pair;Lkotlin/Pair;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     260: invokeinterface #202,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     265: pop
     266: ldc           #173                // String
     268: astore        11
     270: iconst_m1
     271: istore        12
     273: nop
     274: nop
     275: iinc          16, 1
     278: goto          106
     281: nop
     282: aload         11
     284: checkcast     #175                // class java/lang/CharSequence
     287: invokeinterface #176,  1          // InterfaceMethod java/lang/CharSequence.length:()I
     292: ifle          299
     295: iconst_1
     296: goto          300
     299: iconst_0
     300: ifeq          365
     303: aload_1
     304: new           #22                 // class net/rafaeltoledo/kotlin/advent/NumberPositioning
     307: dup
     308: aload         11
     310: invokestatic  #195                // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     313: new           #28                 // class kotlin/Pair
     316: dup
     317: iload         9
     319: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     322: iload         12
     324: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     327: invokespecial #198                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     330: new           #28                 // class kotlin/Pair
     333: dup
     334: iload         9
     336: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     339: aload         8
     341: invokevirtual #104                // Method java/lang/String.length:()I
     344: iconst_1
     345: isub
     346: invokestatic  #42                 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     349: invokespecial #198                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     352: aconst_null
     353: bipush        8
     355: aconst_null
     356: invokespecial #201                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning."<init>":(ILkotlin/Pair;Lkotlin/Pair;Lkotlin/Pair;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
     359: invokeinterface #202,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     364: pop
     365: nop
     366: nop
     367: goto          29
     370: nop
     371: aload_1
     372: checkcast     #50                 // class java/lang/Iterable
     375: invokestatic  #95                 // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
     378: areturn

  public static final java.util.List access$toPositioning(java.util.List);
    Code:
       0: aload_0
       1: invokestatic  #220                // Method toPositioning:(Ljava/util/List;)Ljava/util/List;
       4: areturn

  public static final boolean access$isValid(char);
    Code:
       0: iload_0
       1: invokestatic  #224                // Method isValid:(C)Z
       4: ireturn

  public static final boolean access$isAsterisk(char);
    Code:
       0: iload_0
       1: invokestatic  #227                // Method isAsterisk:(C)Z
       4: ireturn
}

Compiled from "Day03.kt"
public final class net.rafaeltoledo.kotlin.advent.Day03 {
  public net.rafaeltoledo.kotlin.advent.Day03();
    Code:
       0: aload_0
       1: invokespecial #8                  // Method java/lang/Object."<init>":()V
       4: return

  public final int invoke(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: invokestatic  #28                 // Method net/rafaeltoledo/kotlin/advent/Day03Kt.access$toPositioning:(Ljava/util/List;)Ljava/util/List;
      10: astore_2
      11: aload_2
      12: checkcast     #30                 // class java/lang/Iterable
      15: astore_3
      16: iconst_0
      17: istore        4
      19: aload_3
      20: astore        5
      22: new           #32                 // class java/util/ArrayList
      25: dup
      26: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
      29: checkcast     #35                 // class java/util/Collection
      32: astore        6
      34: iconst_0
      35: istore        7
      37: aload         5
      39: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      44: astore        8
      46: aload         8
      48: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      53: ifeq          98
      56: aload         8
      58: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      63: astore        9
      65: aload         9
      67: checkcast     #51                 // class net/rafaeltoledo/kotlin/advent/NumberPositioning
      70: astore        10
      72: iconst_0
      73: istore        11
      75: aload_0
      76: aload         10
      78: aload_1
      79: invokevirtual #55                 // Method checkBoundaries:(Lnet/rafaeltoledo/kotlin/advent/NumberPositioning;Ljava/util/List;)Z
      82: ifeq          46
      85: aload         6
      87: aload         9
      89: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      94: pop
      95: goto          46
      98: aload         6
     100: checkcast     #61                 // class java/util/List
     103: nop
     104: checkcast     #30                 // class java/lang/Iterable
     107: astore_3
     108: iconst_0
     109: istore        4
     111: aload_3
     112: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     117: astore        5
     119: aload         5
     121: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     126: ifeq          169
     129: aload         5
     131: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     136: astore        6
     138: iload         4
     140: aload         6
     142: checkcast     #51                 // class net/rafaeltoledo/kotlin/advent/NumberPositioning
     145: astore        7
     147: istore        12
     149: iconst_0
     150: istore        8
     152: aload         7
     154: invokevirtual #65                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getNumber:()I
     157: istore        13
     159: iload         12
     161: iload         13
     163: iadd
     164: istore        4
     166: goto          119
     169: iload         4
     171: ireturn

  public final int invoke2(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: invokestatic  #28                 // Method net/rafaeltoledo/kotlin/advent/Day03Kt.access$toPositioning:(Ljava/util/List;)Ljava/util/List;
      10: astore_2
      11: aload_2
      12: checkcast     #30                 // class java/lang/Iterable
      15: astore_3
      16: nop
      17: iconst_0
      18: istore        4
      20: aload_3
      21: astore        5
      23: new           #32                 // class java/util/ArrayList
      26: dup
      27: aload_3
      28: bipush        10
      30: invokestatic  #88                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      33: invokespecial #91                 // Method java/util/ArrayList."<init>":(I)V
      36: checkcast     #35                 // class java/util/Collection
      39: astore        6
      41: iconst_0
      42: istore        7
      44: aload         5
      46: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      51: astore        8
      53: aload         8
      55: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      60: ifeq          105
      63: aload         8
      65: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      70: astore        9
      72: aload         6
      74: aload         9
      76: checkcast     #51                 // class net/rafaeltoledo/kotlin/advent/NumberPositioning
      79: astore        10
      81: astore        17
      83: iconst_0
      84: istore        11
      86: aload_0
      87: aload         10
      89: aload_1
      90: invokevirtual #95                 // Method fillAsteriskData:(Lnet/rafaeltoledo/kotlin/advent/NumberPositioning;Ljava/util/List;)Lnet/rafaeltoledo/kotlin/advent/NumberPositioning;
      93: aload         17
      95: swap
      96: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     101: pop
     102: goto          53
     105: aload         6
     107: checkcast     #61                 // class java/util/List
     110: nop
     111: checkcast     #30                 // class java/lang/Iterable
     114: astore_3
     115: nop
     116: iconst_0
     117: istore        4
     119: aload_3
     120: astore        5
     122: new           #32                 // class java/util/ArrayList
     125: dup
     126: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
     129: checkcast     #35                 // class java/util/Collection
     132: astore        6
     134: iconst_0
     135: istore        7
     137: aload         5
     139: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     144: astore        8
     146: aload         8
     148: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     153: ifeq          204
     156: aload         8
     158: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     163: astore        9
     165: aload         9
     167: checkcast     #51                 // class net/rafaeltoledo/kotlin/advent/NumberPositioning
     170: astore        10
     172: iconst_0
     173: istore        11
     175: aload         10
     177: invokevirtual #99                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getSymbolPosition:()Lkotlin/Pair;
     180: ifnull        187
     183: iconst_1
     184: goto          188
     187: iconst_0
     188: ifeq          146
     191: aload         6
     193: aload         9
     195: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     200: pop
     201: goto          146
     204: aload         6
     206: checkcast     #61                 // class java/util/List
     209: nop
     210: checkcast     #30                 // class java/lang/Iterable
     213: astore_3
     214: nop
     215: iconst_0
     216: istore        4
     218: aload_3
     219: astore        5
     221: new           #101                // class java/util/LinkedHashMap
     224: dup
     225: invokespecial #102                // Method java/util/LinkedHashMap."<init>":()V
     228: checkcast     #104                // class java/util/Map
     231: astore        6
     233: iconst_0
     234: istore        7
     236: aload         5
     238: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     243: astore        8
     245: aload         8
     247: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     252: ifeq          357
     255: aload         8
     257: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     262: astore        9
     264: aload         9
     266: checkcast     #51                 // class net/rafaeltoledo/kotlin/advent/NumberPositioning
     269: astore        10
     271: iconst_0
     272: istore        11
     274: aload         10
     276: invokevirtual #99                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getSymbolPosition:()Lkotlin/Pair;
     279: astore        12
     281: aload         6
     283: astore        13
     285: iconst_0
     286: istore        14
     288: aload         13
     290: aload         12
     292: invokeinterface #108,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     297: astore        15
     299: aload         15
     301: ifnonnull     336
     304: iconst_0
     305: istore        16
     307: new           #32                 // class java/util/ArrayList
     310: dup
     311: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
     314: checkcast     #61                 // class java/util/List
     317: astore        16
     319: aload         13
     321: aload         12
     323: aload         16
     325: invokeinterface #112,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     330: pop
     331: aload         16
     333: goto          338
     336: aload         15
     338: nop
     339: checkcast     #61                 // class java/util/List
     342: astore        10
     344: aload         10
     346: aload         9
     348: invokeinterface #113,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     353: pop
     354: goto          245
     357: aload         6
     359: nop
     360: astore_3
     361: nop
     362: iconst_0
     363: istore        4
     365: aload_3
     366: astore        5
     368: new           #101                // class java/util/LinkedHashMap
     371: dup
     372: invokespecial #102                // Method java/util/LinkedHashMap."<init>":()V
     375: checkcast     #104                // class java/util/Map
     378: astore        6
     380: iconst_0
     381: istore        7
     383: aload         5
     385: invokeinterface #117,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     390: invokeinterface #120,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
     395: astore        8
     397: aload         8
     399: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     404: ifeq          478
     407: aload         8
     409: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     414: checkcast     #122                // class java/util/Map$Entry
     417: astore        9
     419: aload         9
     421: astore        10
     423: iconst_0
     424: istore        11
     426: aload         10
     428: invokeinterface #125,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     433: checkcast     #61                 // class java/util/List
     436: invokeinterface #128,  1          // InterfaceMethod java/util/List.size:()I
     441: iconst_2
     442: if_icmplt     449
     445: iconst_1
     446: goto          450
     449: iconst_0
     450: ifeq          397
     453: aload         6
     455: aload         9
     457: invokeinterface #131,  1          // InterfaceMethod java/util/Map$Entry.getKey:()Ljava/lang/Object;
     462: aload         9
     464: invokeinterface #125,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     469: invokeinterface #112,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     474: pop
     475: goto          397
     478: aload         6
     480: nop
     481: astore_3
     482: nop
     483: iconst_0
     484: istore        4
     486: aload_3
     487: astore        5
     489: new           #32                 // class java/util/ArrayList
     492: dup
     493: aload_3
     494: invokeinterface #132,  1          // InterfaceMethod java/util/Map.size:()I
     499: invokespecial #91                 // Method java/util/ArrayList."<init>":(I)V
     502: checkcast     #35                 // class java/util/Collection
     505: astore        6
     507: iconst_0
     508: istore        7
     510: aload         5
     512: invokeinterface #117,  1          // InterfaceMethod java/util/Map.entrySet:()Ljava/util/Set;
     517: invokeinterface #120,  1          // InterfaceMethod java/util/Set.iterator:()Ljava/util/Iterator;
     522: astore        8
     524: aload         8
     526: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     531: ifeq          611
     534: aload         8
     536: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     541: checkcast     #122                // class java/util/Map$Entry
     544: astore        9
     546: aload         6
     548: aload         9
     550: astore        10
     552: astore        17
     554: iconst_0
     555: istore        11
     557: aload         10
     559: invokeinterface #125,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     564: checkcast     #61                 // class java/util/List
     567: invokestatic  #136                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     570: checkcast     #51                 // class net/rafaeltoledo/kotlin/advent/NumberPositioning
     573: invokevirtual #65                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getNumber:()I
     576: aload         10
     578: invokeinterface #125,  1          // InterfaceMethod java/util/Map$Entry.getValue:()Ljava/lang/Object;
     583: checkcast     #61                 // class java/util/List
     586: invokestatic  #139                // Method kotlin/collections/CollectionsKt.last:(Ljava/util/List;)Ljava/lang/Object;
     589: checkcast     #51                 // class net/rafaeltoledo/kotlin/advent/NumberPositioning
     592: invokevirtual #65                 // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getNumber:()I
     595: imul
     596: invokestatic  #145                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     599: aload         17
     601: swap
     602: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     607: pop
     608: goto          524
     611: aload         6
     613: checkcast     #61                 // class java/util/List
     616: nop
     617: checkcast     #30                 // class java/lang/Iterable
     620: invokestatic  #149                // Method kotlin/collections/CollectionsKt.sumOfInt:(Ljava/lang/Iterable;)I
     623: ireturn

  public final boolean checkBoundaries(net.rafaeltoledo.kotlin.advent.NumberPositioning, java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #177                // String <this>
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #16                 // String input
       9: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: iconst_3
      13: anewarray     #141                // class java/lang/Integer
      16: astore        4
      18: aload         4
      20: iconst_0
      21: aload_1
      22: invokevirtual #180                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
      25: invokevirtual #183                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      28: checkcast     #185                // class java/lang/Number
      31: invokevirtual #188                // Method java/lang/Number.intValue:()I
      34: iconst_1
      35: isub
      36: invokestatic  #145                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      39: aastore
      40: aload         4
      42: iconst_1
      43: aload_1
      44: invokevirtual #180                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
      47: invokevirtual #183                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      50: aastore
      51: aload         4
      53: iconst_2
      54: aload_1
      55: invokevirtual #180                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
      58: invokevirtual #183                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      61: checkcast     #185                // class java/lang/Number
      64: invokevirtual #188                // Method java/lang/Number.intValue:()I
      67: iconst_1
      68: iadd
      69: invokestatic  #145                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      72: aastore
      73: aload         4
      75: invokestatic  #192                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      78: checkcast     #30                 // class java/lang/Iterable
      81: astore        4
      83: iconst_0
      84: istore        5
      86: aload         4
      88: astore        6
      90: new           #32                 // class java/util/ArrayList
      93: dup
      94: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
      97: checkcast     #35                 // class java/util/Collection
     100: astore        7
     102: iconst_0
     103: istore        8
     105: aload         6
     107: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     112: astore        9
     114: aload         9
     116: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     121: ifeq          172
     124: aload         9
     126: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     131: astore        10
     133: aload         10
     135: checkcast     #185                // class java/lang/Number
     138: invokevirtual #188                // Method java/lang/Number.intValue:()I
     141: istore        11
     143: iconst_0
     144: istore        12
     146: iload         11
     148: iflt          155
     151: iconst_1
     152: goto          156
     155: iconst_0
     156: ifeq          114
     159: aload         7
     161: aload         10
     163: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     168: pop
     169: goto          114
     172: aload         7
     174: checkcast     #61                 // class java/util/List
     177: nop
     178: checkcast     #30                 // class java/lang/Iterable
     181: astore        4
     183: nop
     184: iconst_0
     185: istore        5
     187: aload         4
     189: astore        6
     191: new           #32                 // class java/util/ArrayList
     194: dup
     195: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
     198: checkcast     #35                 // class java/util/Collection
     201: astore        7
     203: iconst_0
     204: istore        8
     206: aload         6
     208: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     213: astore        9
     215: aload         9
     217: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     222: ifeq          281
     225: aload         9
     227: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     232: astore        10
     234: aload         10
     236: checkcast     #185                // class java/lang/Number
     239: invokevirtual #188                // Method java/lang/Number.intValue:()I
     242: istore        11
     244: iconst_0
     245: istore        12
     247: iload         11
     249: aload_2
     250: invokeinterface #128,  1          // InterfaceMethod java/util/List.size:()I
     255: iconst_1
     256: isub
     257: if_icmpgt     264
     260: iconst_1
     261: goto          265
     264: iconst_0
     265: ifeq          215
     268: aload         7
     270: aload         10
     272: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     277: pop
     278: goto          215
     281: aload         7
     283: checkcast     #61                 // class java/util/List
     286: nop
     287: astore_3
     288: new           #194                // class kotlin/ranges/IntRange
     291: dup
     292: aload_1
     293: invokevirtual #180                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
     296: invokevirtual #197                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     299: checkcast     #185                // class java/lang/Number
     302: invokevirtual #188                // Method java/lang/Number.intValue:()I
     305: iconst_1
     306: isub
     307: aload_1
     308: invokevirtual #200                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getEnd:()Lkotlin/Pair;
     311: invokevirtual #197                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     314: checkcast     #185                // class java/lang/Number
     317: invokevirtual #188                // Method java/lang/Number.intValue:()I
     320: iconst_1
     321: iadd
     322: invokespecial #203                // Method kotlin/ranges/IntRange."<init>":(II)V
     325: checkcast     #30                 // class java/lang/Iterable
     328: invokestatic  #207                // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
     331: checkcast     #30                 // class java/lang/Iterable
     334: astore        5
     336: iconst_0
     337: istore        6
     339: aload         5
     341: astore        7
     343: new           #32                 // class java/util/ArrayList
     346: dup
     347: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
     350: checkcast     #35                 // class java/util/Collection
     353: astore        8
     355: iconst_0
     356: istore        9
     358: aload         7
     360: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     365: astore        10
     367: aload         10
     369: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     374: ifeq          425
     377: aload         10
     379: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     384: astore        11
     386: aload         11
     388: checkcast     #185                // class java/lang/Number
     391: invokevirtual #188                // Method java/lang/Number.intValue:()I
     394: istore        12
     396: iconst_0
     397: istore        13
     399: iload         12
     401: iflt          408
     404: iconst_1
     405: goto          409
     408: iconst_0
     409: ifeq          367
     412: aload         8
     414: aload         11
     416: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     421: pop
     422: goto          367
     425: aload         8
     427: checkcast     #61                 // class java/util/List
     430: nop
     431: checkcast     #30                 // class java/lang/Iterable
     434: astore        5
     436: nop
     437: iconst_0
     438: istore        6
     440: aload         5
     442: astore        7
     444: new           #32                 // class java/util/ArrayList
     447: dup
     448: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
     451: checkcast     #35                 // class java/util/Collection
     454: astore        8
     456: iconst_0
     457: istore        9
     459: aload         7
     461: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     466: astore        10
     468: aload         10
     470: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     475: ifeq          538
     478: aload         10
     480: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     485: astore        11
     487: aload         11
     489: checkcast     #185                // class java/lang/Number
     492: invokevirtual #188                // Method java/lang/Number.intValue:()I
     495: istore        12
     497: iconst_0
     498: istore        13
     500: iload         12
     502: aload_2
     503: invokestatic  #136                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     506: checkcast     #209                // class java/lang/String
     509: invokevirtual #212                // Method java/lang/String.length:()I
     512: iconst_1
     513: isub
     514: if_icmpgt     521
     517: iconst_1
     518: goto          522
     521: iconst_0
     522: ifeq          468
     525: aload         8
     527: aload         11
     529: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     534: pop
     535: goto          468
     538: aload         8
     540: checkcast     #61                 // class java/util/List
     543: nop
     544: astore        4
     546: aload_3
     547: checkcast     #30                 // class java/lang/Iterable
     550: astore        5
     552: iconst_0
     553: istore        6
     555: aload         5
     557: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     562: astore        7
     564: aload         7
     566: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     571: ifeq          682
     574: aload         7
     576: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     581: astore        8
     583: aload         8
     585: checkcast     #185                // class java/lang/Number
     588: invokevirtual #188                // Method java/lang/Number.intValue:()I
     591: istore        9
     593: iconst_0
     594: istore        10
     596: aload         4
     598: checkcast     #30                 // class java/lang/Iterable
     601: astore        11
     603: iconst_0
     604: istore        12
     606: aload         11
     608: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     613: astore        13
     615: aload         13
     617: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     622: ifeq          676
     625: aload         13
     627: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     632: astore        14
     634: aload         14
     636: checkcast     #185                // class java/lang/Number
     639: invokevirtual #188                // Method java/lang/Number.intValue:()I
     642: istore        15
     644: iconst_0
     645: istore        16
     647: aload_2
     648: iload         9
     650: invokeinterface #215,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     655: checkcast     #209                // class java/lang/String
     658: iload         15
     660: invokevirtual #219                // Method java/lang/String.charAt:(I)C
     663: invokestatic  #223                // Method net/rafaeltoledo/kotlin/advent/Day03Kt.access$isValid:(C)Z
     666: ifeq          671
     669: iconst_1
     670: ireturn
     671: nop
     672: nop
     673: goto          615
     676: nop
     677: nop
     678: nop
     679: goto          564
     682: nop
     683: iconst_0
     684: ireturn

  public final net.rafaeltoledo.kotlin.advent.NumberPositioning fillAsteriskData(net.rafaeltoledo.kotlin.advent.NumberPositioning, java.util.List<java.lang.String>);
    Code:
       0: aload_1
       1: ldc           #177                // String <this>
       3: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_2
       7: ldc           #16                 // String input
       9: invokestatic  #22                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
      12: iconst_3
      13: anewarray     #141                // class java/lang/Integer
      16: astore        4
      18: aload         4
      20: iconst_0
      21: aload_1
      22: invokevirtual #180                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
      25: invokevirtual #183                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      28: checkcast     #185                // class java/lang/Number
      31: invokevirtual #188                // Method java/lang/Number.intValue:()I
      34: iconst_1
      35: isub
      36: invokestatic  #145                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      39: aastore
      40: aload         4
      42: iconst_1
      43: aload_1
      44: invokevirtual #180                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
      47: invokevirtual #183                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      50: aastore
      51: aload         4
      53: iconst_2
      54: aload_1
      55: invokevirtual #180                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
      58: invokevirtual #183                // Method kotlin/Pair.getFirst:()Ljava/lang/Object;
      61: checkcast     #185                // class java/lang/Number
      64: invokevirtual #188                // Method java/lang/Number.intValue:()I
      67: iconst_1
      68: iadd
      69: invokestatic  #145                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      72: aastore
      73: aload         4
      75: invokestatic  #192                // Method kotlin/collections/CollectionsKt.listOf:([Ljava/lang/Object;)Ljava/util/List;
      78: checkcast     #30                 // class java/lang/Iterable
      81: astore        4
      83: iconst_0
      84: istore        5
      86: aload         4
      88: astore        6
      90: new           #32                 // class java/util/ArrayList
      93: dup
      94: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
      97: checkcast     #35                 // class java/util/Collection
     100: astore        7
     102: iconst_0
     103: istore        8
     105: aload         6
     107: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     112: astore        9
     114: aload         9
     116: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     121: ifeq          172
     124: aload         9
     126: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     131: astore        10
     133: aload         10
     135: checkcast     #185                // class java/lang/Number
     138: invokevirtual #188                // Method java/lang/Number.intValue:()I
     141: istore        11
     143: iconst_0
     144: istore        12
     146: iload         11
     148: iflt          155
     151: iconst_1
     152: goto          156
     155: iconst_0
     156: ifeq          114
     159: aload         7
     161: aload         10
     163: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     168: pop
     169: goto          114
     172: aload         7
     174: checkcast     #61                 // class java/util/List
     177: nop
     178: checkcast     #30                 // class java/lang/Iterable
     181: astore        4
     183: nop
     184: iconst_0
     185: istore        5
     187: aload         4
     189: astore        6
     191: new           #32                 // class java/util/ArrayList
     194: dup
     195: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
     198: checkcast     #35                 // class java/util/Collection
     201: astore        7
     203: iconst_0
     204: istore        8
     206: aload         6
     208: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     213: astore        9
     215: aload         9
     217: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     222: ifeq          281
     225: aload         9
     227: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     232: astore        10
     234: aload         10
     236: checkcast     #185                // class java/lang/Number
     239: invokevirtual #188                // Method java/lang/Number.intValue:()I
     242: istore        11
     244: iconst_0
     245: istore        12
     247: iload         11
     249: aload_2
     250: invokeinterface #128,  1          // InterfaceMethod java/util/List.size:()I
     255: iconst_1
     256: isub
     257: if_icmpgt     264
     260: iconst_1
     261: goto          265
     264: iconst_0
     265: ifeq          215
     268: aload         7
     270: aload         10
     272: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     277: pop
     278: goto          215
     281: aload         7
     283: checkcast     #61                 // class java/util/List
     286: nop
     287: astore_3
     288: new           #194                // class kotlin/ranges/IntRange
     291: dup
     292: aload_1
     293: invokevirtual #180                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getStart:()Lkotlin/Pair;
     296: invokevirtual #197                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     299: checkcast     #185                // class java/lang/Number
     302: invokevirtual #188                // Method java/lang/Number.intValue:()I
     305: iconst_1
     306: isub
     307: aload_1
     308: invokevirtual #200                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.getEnd:()Lkotlin/Pair;
     311: invokevirtual #197                // Method kotlin/Pair.getSecond:()Ljava/lang/Object;
     314: checkcast     #185                // class java/lang/Number
     317: invokevirtual #188                // Method java/lang/Number.intValue:()I
     320: iconst_1
     321: iadd
     322: invokespecial #203                // Method kotlin/ranges/IntRange."<init>":(II)V
     325: checkcast     #30                 // class java/lang/Iterable
     328: invokestatic  #207                // Method kotlin/collections/CollectionsKt.toList:(Ljava/lang/Iterable;)Ljava/util/List;
     331: checkcast     #30                 // class java/lang/Iterable
     334: astore        5
     336: iconst_0
     337: istore        6
     339: aload         5
     341: astore        7
     343: new           #32                 // class java/util/ArrayList
     346: dup
     347: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
     350: checkcast     #35                 // class java/util/Collection
     353: astore        8
     355: iconst_0
     356: istore        9
     358: aload         7
     360: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     365: astore        10
     367: aload         10
     369: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     374: ifeq          425
     377: aload         10
     379: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     384: astore        11
     386: aload         11
     388: checkcast     #185                // class java/lang/Number
     391: invokevirtual #188                // Method java/lang/Number.intValue:()I
     394: istore        12
     396: iconst_0
     397: istore        13
     399: iload         12
     401: iflt          408
     404: iconst_1
     405: goto          409
     408: iconst_0
     409: ifeq          367
     412: aload         8
     414: aload         11
     416: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     421: pop
     422: goto          367
     425: aload         8
     427: checkcast     #61                 // class java/util/List
     430: nop
     431: checkcast     #30                 // class java/lang/Iterable
     434: astore        5
     436: nop
     437: iconst_0
     438: istore        6
     440: aload         5
     442: astore        7
     444: new           #32                 // class java/util/ArrayList
     447: dup
     448: invokespecial #33                 // Method java/util/ArrayList."<init>":()V
     451: checkcast     #35                 // class java/util/Collection
     454: astore        8
     456: iconst_0
     457: istore        9
     459: aload         7
     461: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     466: astore        10
     468: aload         10
     470: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     475: ifeq          538
     478: aload         10
     480: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     485: astore        11
     487: aload         11
     489: checkcast     #185                // class java/lang/Number
     492: invokevirtual #188                // Method java/lang/Number.intValue:()I
     495: istore        12
     497: iconst_0
     498: istore        13
     500: iload         12
     502: aload_2
     503: invokestatic  #136                // Method kotlin/collections/CollectionsKt.first:(Ljava/util/List;)Ljava/lang/Object;
     506: checkcast     #209                // class java/lang/String
     509: invokevirtual #212                // Method java/lang/String.length:()I
     512: iconst_1
     513: isub
     514: if_icmpgt     521
     517: iconst_1
     518: goto          522
     521: iconst_0
     522: ifeq          468
     525: aload         8
     527: aload         11
     529: invokeinterface #59,  2           // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     534: pop
     535: goto          468
     538: aload         8
     540: checkcast     #61                 // class java/util/List
     543: nop
     544: astore        4
     546: aload_3
     547: checkcast     #30                 // class java/lang/Iterable
     550: astore        5
     552: iconst_0
     553: istore        6
     555: aload         5
     557: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     562: astore        7
     564: aload         7
     566: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     571: ifeq          708
     574: aload         7
     576: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     581: astore        8
     583: aload         8
     585: checkcast     #185                // class java/lang/Number
     588: invokevirtual #188                // Method java/lang/Number.intValue:()I
     591: istore        9
     593: iconst_0
     594: istore        10
     596: aload         4
     598: checkcast     #30                 // class java/lang/Iterable
     601: astore        11
     603: iconst_0
     604: istore        12
     606: aload         11
     608: invokeinterface #39,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     613: astore        13
     615: aload         13
     617: invokeinterface #45,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     622: ifeq          702
     625: aload         13
     627: invokeinterface #49,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     632: astore        14
     634: aload         14
     636: checkcast     #185                // class java/lang/Number
     639: invokevirtual #188                // Method java/lang/Number.intValue:()I
     642: istore        15
     644: iconst_0
     645: istore        16
     647: aload_2
     648: iload         9
     650: invokeinterface #215,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     655: checkcast     #209                // class java/lang/String
     658: iload         15
     660: invokevirtual #219                // Method java/lang/String.charAt:(I)C
     663: invokestatic  #241                // Method net/rafaeltoledo/kotlin/advent/Day03Kt.access$isAsterisk:(C)Z
     666: ifeq          697
     669: aload_1
     670: iconst_0
     671: aconst_null
     672: aconst_null
     673: new           #174                // class kotlin/Pair
     676: dup
     677: iload         9
     679: invokestatic  #145                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     682: iload         15
     684: invokestatic  #145                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     687: invokespecial #244                // Method kotlin/Pair."<init>":(Ljava/lang/Object;Ljava/lang/Object;)V
     690: bipush        7
     692: aconst_null
     693: invokestatic  #248                // Method net/rafaeltoledo/kotlin/advent/NumberPositioning.copy$default:(Lnet/rafaeltoledo/kotlin/advent/NumberPositioning;ILkotlin/Pair;Lkotlin/Pair;Lkotlin/Pair;ILjava/lang/Object;)Lnet/rafaeltoledo/kotlin/advent/NumberPositioning;
     696: areturn
     697: nop
     698: nop
     699: goto          615
     702: nop
     703: nop
     704: nop
     705: goto          564
     708: nop
     709: aload_1
     710: areturn
}