package processor

import kotlin.math.pow

fun input(prompt: String) = println(prompt).run { readln() }
fun inputList(prompt: String) = input(prompt).split(" ").map { it.toInt() }

val inputListDouble = { readln().split(" ").map { it.toDouble() } }

val menuMap = mapOf(
    "1" to ::addMatrices, "2" to ::multiplyByConstant, "3" to ::multiplyMatrices, "4" to ::transposeMatrix,
    "5" to ::determinantMatrix, "6" to ::inverseMatrix
)

fun addMatrices() {
    val (a, b) = inputMatrices(2).also { println("The result is:") }
    a.zip(b) { row1, row2 -> println(row1.zip(row2) { value1, value2 -> value1.plus(value2) }.joinToString(" ")) }
}

fun multiplyByConstant() {
    val a = inputMatrices(1)[0]
    val constant = input("Enter constant:").toDouble().also { println("The result is:") }
    a.map { row -> println(row.map { v -> v.times(constant) }.joinToString(" ")) }
}

fun multiplyMatrices() {
    val (a, b) = inputMatrices(2).also { println("The result is:") }
    val c = List(a.size) { i -> List(b[0].size) { j -> a[i].zip(b.map { row -> row[j] }).sumOf { (a, b) -> a * b } } }
    c.forEach { row -> println(row.joinToString(" ")) }
}

fun transposeMatrix() {
    val choice = input("\n1. Main diagonal\n2. Side diagonal\n3. Vertical line\n4. Horizontal line\nYour choice:")
    val a = inputMatrices(1)[0]
    val transposed = List(a.size) { Array(a[0].size) { 0.0 } }
    val (s, column) = a.run { size to get(0).size }
    when (choice) {
        "1" -> a.forEachIndexed { i, row -> row.forEachIndexed { j, v -> transposed[j][i] = v } }
        "2" -> a.forEachIndexed { i, row -> row.forEachIndexed { j, v -> transposed[column - j - 1][s - i - 1] = v } }
        "3" -> a.forEachIndexed { i, row -> row.forEachIndexed { j, v -> transposed[i][column - j - 1] = v } }
        "4" -> a.forEachIndexed { i, row -> row.forEachIndexed { j, v -> transposed[s - i - 1][j] = v } }
    }
    transposed.forEach { row -> println(row.joinToString(" ")) }
}

fun determinantMatrix() = println("The result is:\n${determinant(inputMatrices(1)[0])}")

fun determinant(m: List<List<Double>>): Double {
    return if (m.size == 1) m[0][0] else {
        (m.indices).sumOf { j ->
            (-1.0).pow(j) * m[0][j] *
                    determinant(m.subList(1, m.size).map { it.subList(0, j) + it.subList(j + 1, it.size) })
        }
    }
}

fun inverseMatrix() {
    val m = inputMatrices(1)[0].map { it }.toMutableList()
    if (determinant(m) == 0.0) println("This matrix doesn't have an inverse.").also { return }
    val im = MutableList(m.size) { i -> List(m.size) { j -> if (i == j) 1.0 else 0.0 } }
    (0 until m.size).forEach { i ->
        val pivot = m[i][i]
        m[i] = m[i].map { it / pivot }
        im[i] = im[i].map { it / pivot }
        (0 until m.size).filter { it != i }.forEach { k ->
            val factor = m[k][i]
            m[k] = m[k].zip(m[i]).map { (a, b) -> a - b * factor }
            im[k] = im[k].zip(im[i]).map { (a, b) -> a - b * factor }
        }
    }
    println("The result is:").also { im.forEach { row -> println(row.joinToString(" ")) } }
}

fun inputMatrices(count: Int): Array<List<List<Double>>> {
    val array = Array(count) { listOf<List<Double>>() }
    for (i in 1..count) {
        val order = if (count == 2) if (i == 1) "first" else "second" else ""
        inputList("Enter size of $order matrix:").also { println("Enter matrix:") }
            .let { array[i - 1] = List(it[0]) { inputListDouble() } }
    }
    return array
}

fun main() {
    val menu = "\n1. Add matrices\n2. Multiply matrix by a constant\n3. Multiply matrices\n4. Transpose matrix" +
            "\n5. Calculate a determinant\n6. Inverse matrix\n0. Exit\nYour choice:"
    while (true) {
        val answer = input(menu); if (answer == "0") break else menuMap[answer]?.invoke()
    }
}

Compiled from "Main.kt"
final class processor.MainKt$menuMap$6 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function0<kotlin.Unit> {
  public static final processor.MainKt$menuMap$6 INSTANCE;

  processor.MainKt$menuMap$6();
    Code:
       0: aload_0
       1: iconst_0
       2: ldc           #11                 // class processor/MainKt
       4: ldc           #13                 // String inverseMatrix
       6: ldc           #15                 // String inverseMatrix()V
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final void invoke();
    Code:
       0: invokestatic  #23                 // Method processor/MainKt.inverseMatrix:()V
       3: return

  public java.lang.Object invoke();
    Code:
       0: aload_0
       1: invokevirtual #26                 // Method invoke:()V
       4: getstatic     #32                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
       7: areturn

  static {};
    Code:
       0: new           #2                  // class processor/MainKt$menuMap$6
       3: dup
       4: invokespecial #35                 // Method "<init>":()V
       7: putstatic     #37                 // Field INSTANCE:Lprocessor/MainKt$menuMap$6;
      10: return
}

Compiled from "Main.kt"
final class processor.MainKt$menuMap$4 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function0<kotlin.Unit> {
  public static final processor.MainKt$menuMap$4 INSTANCE;

  processor.MainKt$menuMap$4();
    Code:
       0: aload_0
       1: iconst_0
       2: ldc           #11                 // class processor/MainKt
       4: ldc           #13                 // String transposeMatrix
       6: ldc           #15                 // String transposeMatrix()V
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final void invoke();
    Code:
       0: invokestatic  #23                 // Method processor/MainKt.transposeMatrix:()V
       3: return

  public java.lang.Object invoke();
    Code:
       0: aload_0
       1: invokevirtual #26                 // Method invoke:()V
       4: getstatic     #32                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
       7: areturn

  static {};
    Code:
       0: new           #2                  // class processor/MainKt$menuMap$4
       3: dup
       4: invokespecial #35                 // Method "<init>":()V
       7: putstatic     #37                 // Field INSTANCE:Lprocessor/MainKt$menuMap$4;
      10: return
}

Compiled from "Main.kt"
final class processor.MainKt$menuMap$2 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function0<kotlin.Unit> {
  public static final processor.MainKt$menuMap$2 INSTANCE;

  processor.MainKt$menuMap$2();
    Code:
       0: aload_0
       1: iconst_0
       2: ldc           #11                 // class processor/MainKt
       4: ldc           #13                 // String multiplyByConstant
       6: ldc           #15                 // String multiplyByConstant()V
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final void invoke();
    Code:
       0: invokestatic  #23                 // Method processor/MainKt.multiplyByConstant:()V
       3: return

  public java.lang.Object invoke();
    Code:
       0: aload_0
       1: invokevirtual #26                 // Method invoke:()V
       4: getstatic     #32                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
       7: areturn

  static {};
    Code:
       0: new           #2                  // class processor/MainKt$menuMap$2
       3: dup
       4: invokespecial #35                 // Method "<init>":()V
       7: putstatic     #37                 // Field INSTANCE:Lprocessor/MainKt$menuMap$2;
      10: return
}

Compiled from "Main.kt"
final class processor.MainKt$menuMap$5 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function0<kotlin.Unit> {
  public static final processor.MainKt$menuMap$5 INSTANCE;

  processor.MainKt$menuMap$5();
    Code:
       0: aload_0
       1: iconst_0
       2: ldc           #11                 // class processor/MainKt
       4: ldc           #13                 // String determinantMatrix
       6: ldc           #15                 // String determinantMatrix()V
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final void invoke();
    Code:
       0: invokestatic  #23                 // Method processor/MainKt.determinantMatrix:()V
       3: return

  public java.lang.Object invoke();
    Code:
       0: aload_0
       1: invokevirtual #26                 // Method invoke:()V
       4: getstatic     #32                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
       7: areturn

  static {};
    Code:
       0: new           #2                  // class processor/MainKt$menuMap$5
       3: dup
       4: invokespecial #35                 // Method "<init>":()V
       7: putstatic     #37                 // Field INSTANCE:Lprocessor/MainKt$menuMap$5;
      10: return
}

Compiled from "Main.kt"
final class processor.MainKt$menuMap$3 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function0<kotlin.Unit> {
  public static final processor.MainKt$menuMap$3 INSTANCE;

  processor.MainKt$menuMap$3();
    Code:
       0: aload_0
       1: iconst_0
       2: ldc           #11                 // class processor/MainKt
       4: ldc           #13                 // String multiplyMatrices
       6: ldc           #15                 // String multiplyMatrices()V
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final void invoke();
    Code:
       0: invokestatic  #23                 // Method processor/MainKt.multiplyMatrices:()V
       3: return

  public java.lang.Object invoke();
    Code:
       0: aload_0
       1: invokevirtual #26                 // Method invoke:()V
       4: getstatic     #32                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
       7: areturn

  static {};
    Code:
       0: new           #2                  // class processor/MainKt$menuMap$3
       3: dup
       4: invokespecial #35                 // Method "<init>":()V
       7: putstatic     #37                 // Field INSTANCE:Lprocessor/MainKt$menuMap$3;
      10: return
}

Compiled from "Main.kt"
final class processor.MainKt$menuMap$1 extends kotlin.jvm.internal.FunctionReferenceImpl implements kotlin.jvm.functions.Function0<kotlin.Unit> {
  public static final processor.MainKt$menuMap$1 INSTANCE;

  processor.MainKt$menuMap$1();
    Code:
       0: aload_0
       1: iconst_0
       2: ldc           #11                 // class processor/MainKt
       4: ldc           #13                 // String addMatrices
       6: ldc           #15                 // String addMatrices()V
       8: iconst_1
       9: invokespecial #18                 // Method kotlin/jvm/internal/FunctionReferenceImpl."<init>":(ILjava/lang/Class;Ljava/lang/String;Ljava/lang/String;I)V
      12: return

  public final void invoke();
    Code:
       0: invokestatic  #23                 // Method processor/MainKt.addMatrices:()V
       3: return

  public java.lang.Object invoke();
    Code:
       0: aload_0
       1: invokevirtual #26                 // Method invoke:()V
       4: getstatic     #32                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
       7: areturn

  static {};
    Code:
       0: new           #2                  // class processor/MainKt$menuMap$1
       3: dup
       4: invokespecial #35                 // Method "<init>":()V
       7: putstatic     #37                 // Field INSTANCE:Lprocessor/MainKt$menuMap$1;
      10: return
}

Compiled from "Main.kt"
public final class processor.MainKt {
  private static final kotlin.jvm.functions.Function0<java.util.List<java.lang.Double>> inputListDouble;

  private static final java.util.Map<java.lang.String, kotlin.reflect.KFunction<kotlin.Unit>> menuMap;

  public static final java.lang.String input(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #9                  // String prompt
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
       9: aload_0
      10: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      13: getstatic     #33                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
      16: astore_1
      17: iconst_0
      18: istore_2
      19: invokestatic  #39                 // Method kotlin/io/ConsoleKt.readln:()Ljava/lang/String;
      22: nop
      23: areturn

  public static final java.util.List<java.lang.Integer> inputList(java.lang.String);
    Code:
       0: aload_0
       1: ldc           #9                  // String prompt
       3: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       6: aload_0
       7: invokestatic  #48                 // Method input:(Ljava/lang/String;)Ljava/lang/String;
      10: checkcast     #50                 // class java/lang/CharSequence
      13: iconst_1
      14: anewarray     #52                 // class java/lang/String
      17: astore_1
      18: aload_1
      19: iconst_0
      20: ldc           #54                 // String
      22: aastore
      23: aload_1
      24: iconst_0
      25: iconst_0
      26: bipush        6
      28: aconst_null
      29: invokestatic  #60                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      32: checkcast     #62                 // class java/lang/Iterable
      35: astore_1
      36: iconst_0
      37: istore_2
      38: aload_1
      39: astore_3
      40: new           #64                 // class java/util/ArrayList
      43: dup
      44: aload_1
      45: bipush        10
      47: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      50: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
      53: checkcast     #76                 // class java/util/Collection
      56: astore        4
      58: iconst_0
      59: istore        5
      61: aload_3
      62: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      67: astore        6
      69: aload         6
      71: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      76: ifeq          123
      79: aload         6
      81: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      86: astore        7
      88: aload         4
      90: aload         7
      92: checkcast     #52                 // class java/lang/String
      95: astore        8
      97: astore        10
      99: iconst_0
     100: istore        9
     102: aload         8
     104: invokestatic  #96                 // Method java/lang/Integer.parseInt:(Ljava/lang/String;)I
     107: nop
     108: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     111: aload         10
     113: swap
     114: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     119: pop
     120: goto          69
     123: aload         4
     125: checkcast     #106                // class java/util/List
     128: nop
     129: areturn

  public static final kotlin.jvm.functions.Function0<java.util.List<java.lang.Double>> getInputListDouble();
    Code:
       0: getstatic     #124                // Field inputListDouble:Lkotlin/jvm/functions/Function0;
       3: areturn

  public static final java.util.Map<java.lang.String, kotlin.reflect.KFunction<kotlin.Unit>> getMenuMap();
    Code:
       0: getstatic     #131                // Field menuMap:Ljava/util/Map;
       3: areturn

  public static final void addMatrices();
    Code:
       0: iconst_2
       1: invokestatic  #137                // Method inputMatrices:(I)[Ljava/util/List;
       4: astore_1
       5: aload_1
       6: astore_2
       7: iconst_0
       8: istore_3
       9: ldc           #139                // String The result is:
      11: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
      14: swap
      15: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      18: nop
      19: aload_1
      20: astore_0
      21: aload_0
      22: iconst_0
      23: aaload
      24: astore_1
      25: aload_0
      26: iconst_1
      27: aaload
      28: astore_2
      29: aload_1
      30: checkcast     #62                 // class java/lang/Iterable
      33: astore_3
      34: iconst_0
      35: istore        4
      37: aload_3
      38: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      43: astore        5
      45: aload_2
      46: checkcast     #62                 // class java/lang/Iterable
      49: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      54: astore        6
      56: new           #64                 // class java/util/ArrayList
      59: dup
      60: aload_3
      61: bipush        10
      63: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      66: aload_2
      67: checkcast     #62                 // class java/lang/Iterable
      70: bipush        10
      72: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      75: invokestatic  #145                // Method java/lang/Math.min:(II)I
      78: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
      81: astore        7
      83: aload         5
      85: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      90: ifeq          313
      93: aload         6
      95: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     100: ifeq          313
     103: aload         7
     105: aload         5
     107: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     112: aload         6
     114: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     119: checkcast     #106                // class java/util/List
     122: astore        8
     124: checkcast     #106                // class java/util/List
     127: astore        9
     129: astore        22
     131: iconst_0
     132: istore        10
     134: aload         9
     136: checkcast     #62                 // class java/lang/Iterable
     139: astore        11
     141: iconst_0
     142: istore        12
     144: aload         11
     146: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     151: astore        13
     153: aload         8
     155: checkcast     #62                 // class java/lang/Iterable
     158: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     163: astore        14
     165: new           #64                 // class java/util/ArrayList
     168: dup
     169: aload         11
     171: bipush        10
     173: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     176: aload         8
     178: checkcast     #62                 // class java/lang/Iterable
     181: bipush        10
     183: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     186: invokestatic  #145                // Method java/lang/Math.min:(II)I
     189: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     192: astore        15
     194: aload         13
     196: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     201: ifeq          269
     204: aload         14
     206: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     211: ifeq          269
     214: aload         15
     216: aload         13
     218: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     223: aload         14
     225: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     230: checkcast     #147                // class java/lang/Number
     233: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     236: dstore        16
     238: checkcast     #147                // class java/lang/Number
     241: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     244: dstore        18
     246: astore        20
     248: iconst_0
     249: istore        21
     251: dload         18
     253: dload         16
     255: dadd
     256: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     259: aload         20
     261: swap
     262: invokevirtual #157                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     265: pop
     266: goto          194
     269: aload         15
     271: checkcast     #106                // class java/util/List
     274: checkcast     #62                 // class java/lang/Iterable
     277: ldc           #54                 // String
     279: checkcast     #50                 // class java/lang/CharSequence
     282: aconst_null
     283: aconst_null
     284: iconst_0
     285: aconst_null
     286: aconst_null
     287: bipush        62
     289: aconst_null
     290: invokestatic  #161                // 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;
     293: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
     296: swap
     297: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     300: nop
     301: aload         22
     303: getstatic     #33                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     306: invokevirtual #157                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     309: pop
     310: goto          83
     313: aload         7
     315: checkcast     #106                // class java/util/List
     318: pop
     319: return

  public static final void multiplyByConstant();
    Code:
       0: iconst_1
       1: invokestatic  #137                // Method inputMatrices:(I)[Ljava/util/List;
       4: iconst_0
       5: aaload
       6: astore_0
       7: ldc           #184                // String Enter constant:
       9: invokestatic  #48                 // Method input:(Ljava/lang/String;)Ljava/lang/String;
      12: invokestatic  #188                // Method java/lang/Double.parseDouble:(Ljava/lang/String;)D
      15: dstore_3
      16: dload_3
      17: dstore        5
      19: iconst_0
      20: istore        7
      22: ldc           #139                // String The result is:
      24: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
      27: swap
      28: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      31: nop
      32: dload_3
      33: dstore_1
      34: aload_0
      35: checkcast     #62                 // class java/lang/Iterable
      38: astore_3
      39: iconst_0
      40: istore        5
      42: aload_3
      43: astore        6
      45: new           #64                 // class java/util/ArrayList
      48: dup
      49: aload_3
      50: bipush        10
      52: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      55: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
      58: checkcast     #76                 // class java/util/Collection
      61: astore        7
      63: iconst_0
      64: istore        8
      66: aload         6
      68: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      73: astore        9
      75: aload         9
      77: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      82: ifeq          255
      85: aload         9
      87: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      92: astore        10
      94: aload         7
      96: aload         10
      98: checkcast     #106                // class java/util/List
     101: astore        11
     103: astore        24
     105: iconst_0
     106: istore        12
     108: aload         11
     110: checkcast     #62                 // class java/lang/Iterable
     113: astore        13
     115: iconst_0
     116: istore        14
     118: aload         13
     120: astore        15
     122: new           #64                 // class java/util/ArrayList
     125: dup
     126: aload         13
     128: bipush        10
     130: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     133: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     136: checkcast     #76                 // class java/util/Collection
     139: astore        16
     141: iconst_0
     142: istore        17
     144: aload         15
     146: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     151: astore        18
     153: aload         18
     155: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     160: ifeq          208
     163: aload         18
     165: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     170: astore        19
     172: aload         16
     174: aload         19
     176: checkcast     #147                // class java/lang/Number
     179: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     182: dstore        20
     184: astore        22
     186: iconst_0
     187: istore        23
     189: dload         20
     191: dload_1
     192: dmul
     193: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     196: aload         22
     198: swap
     199: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     204: pop
     205: goto          153
     208: aload         16
     210: checkcast     #106                // class java/util/List
     213: nop
     214: checkcast     #62                 // class java/lang/Iterable
     217: ldc           #54                 // String
     219: checkcast     #50                 // class java/lang/CharSequence
     222: aconst_null
     223: aconst_null
     224: iconst_0
     225: aconst_null
     226: aconst_null
     227: bipush        62
     229: aconst_null
     230: invokestatic  #161                // 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;
     233: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
     236: swap
     237: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     240: nop
     241: aload         24
     243: getstatic     #33                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     246: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     251: pop
     252: goto          75
     255: aload         7
     257: checkcast     #106                // class java/util/List
     260: nop
     261: pop
     262: return

  public static final void multiplyMatrices();
    Code:
       0: iconst_2
       1: invokestatic  #137                // Method inputMatrices:(I)[Ljava/util/List;
       4: astore_1
       5: aload_1
       6: astore_2
       7: iconst_0
       8: istore_3
       9: ldc           #139                // String The result is:
      11: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
      14: swap
      15: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      18: nop
      19: aload_1
      20: astore_0
      21: aload_0
      22: iconst_0
      23: aaload
      24: astore_1
      25: aload_0
      26: iconst_1
      27: aaload
      28: astore_2
      29: aload_1
      30: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
      35: istore        4
      37: new           #64                 // class java/util/ArrayList
      40: dup
      41: iload         4
      43: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
      46: astore        5
      48: iconst_0
      49: istore        6
      51: iload         6
      53: iload         4
      55: if_icmpge     392
      58: iload         6
      60: istore        7
      62: aload         5
      64: iload         7
      66: istore        8
      68: astore        38
      70: iconst_0
      71: istore        9
      73: aload_2
      74: iconst_0
      75: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      80: checkcast     #106                // class java/util/List
      83: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
      88: istore        10
      90: new           #64                 // class java/util/ArrayList
      93: dup
      94: iload         10
      96: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
      99: astore        11
     101: iconst_0
     102: istore        12
     104: iload         12
     106: iload         10
     108: if_icmpge     373
     111: iload         12
     113: istore        13
     115: aload         11
     117: iload         13
     119: istore        14
     121: astore        15
     123: iconst_0
     124: istore        16
     126: aload_1
     127: iload         8
     129: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     134: checkcast     #62                 // class java/lang/Iterable
     137: aload_2
     138: checkcast     #62                 // class java/lang/Iterable
     141: astore        17
     143: astore        18
     145: iconst_0
     146: istore        19
     148: aload         17
     150: astore        20
     152: new           #64                 // class java/util/ArrayList
     155: dup
     156: aload         17
     158: bipush        10
     160: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     163: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     166: checkcast     #76                 // class java/util/Collection
     169: astore        21
     171: iconst_0
     172: istore        22
     174: aload         20
     176: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     181: astore        23
     183: aload         23
     185: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     190: ifeq          246
     193: aload         23
     195: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     200: astore        24
     202: aload         21
     204: aload         24
     206: checkcast     #106                // class java/util/List
     209: astore        25
     211: astore        26
     213: iconst_0
     214: istore        27
     216: aload         25
     218: iload         14
     220: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     225: checkcast     #147                // class java/lang/Number
     228: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     231: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     234: aload         26
     236: swap
     237: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     242: pop
     243: goto          183
     246: aload         21
     248: checkcast     #106                // class java/util/List
     251: nop
     252: aload         18
     254: swap
     255: checkcast     #62                 // class java/lang/Iterable
     258: invokestatic  #207                // Method kotlin/collections/CollectionsKt.zip:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/List;
     261: checkcast     #62                 // class java/lang/Iterable
     264: astore        17
     266: dconst_0
     267: dstore        28
     269: aload         17
     271: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     276: astore        21
     278: aload         21
     280: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     285: ifeq          354
     288: aload         21
     290: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     295: astore        22
     297: dload         28
     299: aload         22
     301: checkcast     #209                // class kotlin/Pair
     304: astore        23
     306: dstore        30
     308: iconst_0
     309: istore        24
     311: aload         23
     313: invokevirtual #212                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     316: checkcast     #147                // class java/lang/Number
     319: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     322: dstore        32
     324: aload         23
     326: invokevirtual #215                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     329: checkcast     #147                // class java/lang/Number
     332: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     335: dstore        34
     337: dload         32
     339: dload         34
     341: dmul
     342: dstore        36
     344: dload         30
     346: dload         36
     348: dadd
     349: dstore        28
     351: goto          278
     354: dload         28
     356: nop
     357: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     360: aload         15
     362: swap
     363: invokevirtual #157                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     366: pop
     367: iinc          12, 1
     370: goto          104
     373: aload         11
     375: checkcast     #106                // class java/util/List
     378: nop
     379: aload         38
     381: swap
     382: invokevirtual #157                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     385: pop
     386: iinc          6, 1
     389: goto          51
     392: aload         5
     394: checkcast     #106                // class java/util/List
     397: astore_3
     398: aload_3
     399: checkcast     #62                 // class java/lang/Iterable
     402: astore        4
     404: iconst_0
     405: istore        5
     407: aload         4
     409: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     414: astore        6
     416: aload         6
     418: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     423: ifeq          478
     426: aload         6
     428: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     433: astore        7
     435: aload         7
     437: checkcast     #106                // class java/util/List
     440: astore        8
     442: iconst_0
     443: istore        9
     445: aload         8
     447: checkcast     #62                 // class java/lang/Iterable
     450: ldc           #54                 // String
     452: checkcast     #50                 // class java/lang/CharSequence
     455: aconst_null
     456: aconst_null
     457: iconst_0
     458: aconst_null
     459: aconst_null
     460: bipush        62
     462: aconst_null
     463: invokestatic  #161                // 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;
     466: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
     469: swap
     470: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     473: nop
     474: nop
     475: goto          416
     478: nop
     479: return

  public static final void transposeMatrix();
    Code:
       0: ldc           #230                // String \n1. Main diagonal\n2. Side diagonal\n3. Vertical line\n4. Horizontal line\nYour choice:
       2: invokestatic  #48                 // Method input:(Ljava/lang/String;)Ljava/lang/String;
       5: astore_0
       6: iconst_1
       7: invokestatic  #137                // Method inputMatrices:(I)[Ljava/util/List;
      10: iconst_0
      11: aaload
      12: astore_1
      13: aload_1
      14: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
      19: istore_3
      20: new           #64                 // class java/util/ArrayList
      23: dup
      24: iload_3
      25: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
      28: astore        4
      30: iconst_0
      31: istore        5
      33: iload         5
      35: iload_3
      36: if_icmpge     122
      39: iload         5
      41: istore        6
      43: aload         4
      45: iload         6
      47: istore        7
      49: astore        26
      51: iconst_0
      52: istore        8
      54: iconst_0
      55: istore        9
      57: aload_1
      58: iconst_0
      59: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      64: checkcast     #106                // class java/util/List
      67: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
      72: istore        10
      74: iload         10
      76: anewarray     #153                // class java/lang/Double
      79: astore        11
      81: iload         9
      83: iload         10
      85: if_icmpge     107
      88: iload         9
      90: istore        12
      92: aload         11
      94: iload         12
      96: dconst_0
      97: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     100: aastore
     101: iinc          9, 1
     104: goto          81
     107: aload         11
     109: aload         26
     111: swap
     112: invokevirtual #157                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     115: pop
     116: iinc          5, 1
     119: goto          33
     122: aload         4
     124: checkcast     #106                // class java/util/List
     127: astore_2
     128: aload_1
     129: astore        5
     131: iconst_0
     132: istore        6
     134: aload         5
     136: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
     141: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     144: aload         5
     146: iconst_0
     147: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     152: checkcast     #106                // class java/util/List
     155: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
     160: invokestatic  #100                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
     163: invokestatic  #236                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
     166: nop
     167: astore_3
     168: aload_3
     169: invokevirtual #212                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     172: checkcast     #147                // class java/lang/Number
     175: invokevirtual #239                // Method java/lang/Number.intValue:()I
     178: istore        4
     180: aload_3
     181: invokevirtual #215                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     184: checkcast     #147                // class java/lang/Number
     187: invokevirtual #239                // Method java/lang/Number.intValue:()I
     190: istore        5
     192: aload_0
     193: astore        6
     195: aload         6
     197: invokevirtual #242                // Method java/lang/String.hashCode:()I
     200: tableswitch   { // 49 to 52
                    49: 232
                    50: 245
                    51: 258
                    52: 271
               default: 1001
          }
     232: aload         6
     234: ldc           #244                // String 1
     236: invokevirtual #247                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     239: ifne          284
     242: goto          1001
     245: aload         6
     247: ldc           #249                // String 2
     249: invokevirtual #247                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     252: ifne          459
     255: goto          1001
     258: aload         6
     260: ldc           #251                // String 3
     262: invokevirtual #247                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     265: ifne          644
     268: goto          1001
     271: aload         6
     273: ldc           #253                // String 4
     275: invokevirtual #247                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     278: ifne          824
     281: goto          1001
     284: aload_1
     285: checkcast     #62                 // class java/lang/Iterable
     288: astore        7
     290: iconst_0
     291: istore        8
     293: iconst_0
     294: istore        9
     296: aload         7
     298: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     303: astore        10
     305: aload         10
     307: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     312: ifeq          455
     315: aload         10
     317: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     322: astore        11
     324: iload         9
     326: iinc          9, 1
     329: istore        12
     331: iload         12
     333: ifge          339
     336: invokestatic  #256                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     339: iload         12
     341: aload         11
     343: checkcast     #106                // class java/util/List
     346: astore        13
     348: istore        14
     350: iconst_0
     351: istore        15
     353: aload         13
     355: checkcast     #62                 // class java/lang/Iterable
     358: astore        16
     360: iconst_0
     361: istore        17
     363: iconst_0
     364: istore        18
     366: aload         16
     368: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     373: astore        19
     375: aload         19
     377: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     382: ifeq          449
     385: aload         19
     387: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     392: astore        20
     394: iload         18
     396: iinc          18, 1
     399: istore        21
     401: iload         21
     403: ifge          409
     406: invokestatic  #256                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     409: iload         21
     411: aload         20
     413: checkcast     #147                // class java/lang/Number
     416: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     419: dstore        22
     421: istore        24
     423: iconst_0
     424: istore        25
     426: aload_2
     427: iload         24
     429: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     434: checkcast     #258                // class "[Ljava/lang/Double;"
     437: iload         14
     439: dload         22
     441: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     444: aastore
     445: nop
     446: goto          375
     449: nop
     450: nop
     451: nop
     452: goto          305
     455: nop
     456: goto          1001
     459: aload_1
     460: checkcast     #62                 // class java/lang/Iterable
     463: astore        7
     465: iconst_0
     466: istore        8
     468: iconst_0
     469: istore        9
     471: aload         7
     473: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     478: astore        10
     480: aload         10
     482: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     487: ifeq          640
     490: aload         10
     492: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     497: astore        11
     499: iload         9
     501: iinc          9, 1
     504: istore        12
     506: iload         12
     508: ifge          514
     511: invokestatic  #256                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     514: iload         12
     516: aload         11
     518: checkcast     #106                // class java/util/List
     521: astore        13
     523: istore        14
     525: iconst_0
     526: istore        15
     528: aload         13
     530: checkcast     #62                 // class java/lang/Iterable
     533: astore        16
     535: iconst_0
     536: istore        17
     538: iconst_0
     539: istore        18
     541: aload         16
     543: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     548: astore        19
     550: aload         19
     552: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     557: ifeq          634
     560: aload         19
     562: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     567: astore        20
     569: iload         18
     571: iinc          18, 1
     574: istore        21
     576: iload         21
     578: ifge          584
     581: invokestatic  #256                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     584: iload         21
     586: aload         20
     588: checkcast     #147                // class java/lang/Number
     591: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     594: dstore        22
     596: istore        24
     598: iconst_0
     599: istore        25
     601: aload_2
     602: iload         5
     604: iload         24
     606: isub
     607: iconst_1
     608: isub
     609: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     614: checkcast     #258                // class "[Ljava/lang/Double;"
     617: iload         4
     619: iload         14
     621: isub
     622: iconst_1
     623: isub
     624: dload         22
     626: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     629: aastore
     630: nop
     631: goto          550
     634: nop
     635: nop
     636: nop
     637: goto          480
     640: nop
     641: goto          1001
     644: aload_1
     645: checkcast     #62                 // class java/lang/Iterable
     648: astore        7
     650: iconst_0
     651: istore        8
     653: iconst_0
     654: istore        9
     656: aload         7
     658: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     663: astore        10
     665: aload         10
     667: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     672: ifeq          820
     675: aload         10
     677: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     682: astore        11
     684: iload         9
     686: iinc          9, 1
     689: istore        12
     691: iload         12
     693: ifge          699
     696: invokestatic  #256                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     699: iload         12
     701: aload         11
     703: checkcast     #106                // class java/util/List
     706: astore        13
     708: istore        14
     710: iconst_0
     711: istore        15
     713: aload         13
     715: checkcast     #62                 // class java/lang/Iterable
     718: astore        16
     720: iconst_0
     721: istore        17
     723: iconst_0
     724: istore        18
     726: aload         16
     728: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     733: astore        19
     735: aload         19
     737: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     742: ifeq          814
     745: aload         19
     747: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     752: astore        20
     754: iload         18
     756: iinc          18, 1
     759: istore        21
     761: iload         21
     763: ifge          769
     766: invokestatic  #256                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     769: iload         21
     771: aload         20
     773: checkcast     #147                // class java/lang/Number
     776: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     779: dstore        22
     781: istore        24
     783: iconst_0
     784: istore        25
     786: aload_2
     787: iload         14
     789: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     794: checkcast     #258                // class "[Ljava/lang/Double;"
     797: iload         5
     799: iload         24
     801: isub
     802: iconst_1
     803: isub
     804: dload         22
     806: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     809: aastore
     810: nop
     811: goto          735
     814: nop
     815: nop
     816: nop
     817: goto          665
     820: nop
     821: goto          1001
     824: aload_1
     825: checkcast     #62                 // class java/lang/Iterable
     828: astore        7
     830: iconst_0
     831: istore        8
     833: iconst_0
     834: istore        9
     836: aload         7
     838: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     843: astore        10
     845: aload         10
     847: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     852: ifeq          1000
     855: aload         10
     857: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     862: astore        11
     864: iload         9
     866: iinc          9, 1
     869: istore        12
     871: iload         12
     873: ifge          879
     876: invokestatic  #256                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     879: iload         12
     881: aload         11
     883: checkcast     #106                // class java/util/List
     886: astore        13
     888: istore        14
     890: iconst_0
     891: istore        15
     893: aload         13
     895: checkcast     #62                 // class java/lang/Iterable
     898: astore        16
     900: iconst_0
     901: istore        17
     903: iconst_0
     904: istore        18
     906: aload         16
     908: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     913: astore        19
     915: aload         19
     917: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     922: ifeq          994
     925: aload         19
     927: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     932: astore        20
     934: iload         18
     936: iinc          18, 1
     939: istore        21
     941: iload         21
     943: ifge          949
     946: invokestatic  #256                // Method kotlin/collections/CollectionsKt.throwIndexOverflow:()V
     949: iload         21
     951: aload         20
     953: checkcast     #147                // class java/lang/Number
     956: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     959: dstore        22
     961: istore        24
     963: iconst_0
     964: istore        25
     966: aload_2
     967: iload         4
     969: iload         14
     971: isub
     972: iconst_1
     973: isub
     974: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     979: checkcast     #258                // class "[Ljava/lang/Double;"
     982: iload         24
     984: dload         22
     986: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     989: aastore
     990: nop
     991: goto          915
     994: nop
     995: nop
     996: nop
     997: goto          845
    1000: nop
    1001: aload_2
    1002: checkcast     #62                 // class java/lang/Iterable
    1005: astore        6
    1007: iconst_0
    1008: istore        7
    1010: aload         6
    1012: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1017: astore        8
    1019: aload         8
    1021: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1026: ifeq          1078
    1029: aload         8
    1031: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1036: astore        9
    1038: aload         9
    1040: checkcast     #258                // class "[Ljava/lang/Double;"
    1043: astore        10
    1045: iconst_0
    1046: istore        11
    1048: aload         10
    1050: ldc           #54                 // String
    1052: checkcast     #50                 // class java/lang/CharSequence
    1055: aconst_null
    1056: aconst_null
    1057: iconst_0
    1058: aconst_null
    1059: aconst_null
    1060: bipush        62
    1062: aconst_null
    1063: invokestatic  #263                // Method kotlin/collections/ArraysKt.joinToString$default:([Ljava/lang/Object;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;ILjava/lang/CharSequence;Lkotlin/jvm/functions/Function1;ILjava/lang/Object;)Ljava/lang/String;
    1066: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
    1069: swap
    1070: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
    1073: nop
    1074: nop
    1075: goto          1019
    1078: nop
    1079: return

  public static final void determinantMatrix();
    Code:
       0: new           #286                // class java/lang/StringBuilder
       3: dup
       4: invokespecial #288                // Method java/lang/StringBuilder."<init>":()V
       7: ldc_w         #290                // String The result is:\n
      10: invokevirtual #294                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      13: iconst_1
      14: invokestatic  #137                // Method inputMatrices:(I)[Ljava/util/List;
      17: iconst_0
      18: aaload
      19: invokestatic  #298                // Method determinant:(Ljava/util/List;)D
      22: invokevirtual #301                // Method java/lang/StringBuilder.append:(D)Ljava/lang/StringBuilder;
      25: invokevirtual #304                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      28: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
      31: swap
      32: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
      35: return

  public static final double determinant(java.util.List<? extends java.util.List<java.lang.Double>>);
    Code:
       0: aload_0
       1: ldc_w         #307                // String m
       4: invokestatic  #15                 // Method kotlin/jvm/internal/Intrinsics.checkNotNullParameter:(Ljava/lang/Object;Ljava/lang/String;)V
       7: aload_0
       8: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
      13: iconst_1
      14: if_icmpne     42
      17: aload_0
      18: iconst_0
      19: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      24: checkcast     #106                // class java/util/List
      27: iconst_0
      28: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      33: checkcast     #147                // class java/lang/Number
      36: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
      39: goto          295
      42: aload_0
      43: checkcast     #76                 // class java/util/Collection
      46: invokestatic  #311                // Method kotlin/collections/CollectionsKt.getIndices:(Ljava/util/Collection;)Lkotlin/ranges/IntRange;
      49: checkcast     #62                 // class java/lang/Iterable
      52: astore_1
      53: dconst_0
      54: dstore_2
      55: aload_1
      56: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      61: astore        4
      63: aload         4
      65: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      70: ifeq          294
      73: aload         4
      75: checkcast     #313                // class kotlin/collections/IntIterator
      78: invokevirtual #316                // Method kotlin/collections/IntIterator.nextInt:()I
      81: istore        5
      83: dload_2
      84: iload         5
      86: istore        6
      88: dstore        20
      90: iconst_0
      91: istore        7
      93: ldc2_w        #317                // double -1.0d
      96: iload         6
      98: i2d
      99: invokestatic  #322                // Method java/lang/Math.pow:(DD)D
     102: aload_0
     103: iconst_0
     104: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     109: checkcast     #106                // class java/util/List
     112: iload         6
     114: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     119: checkcast     #147                // class java/lang/Number
     122: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     125: dmul
     126: aload_0
     127: iconst_1
     128: aload_0
     129: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
     134: invokeinterface #326,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
     139: checkcast     #62                 // class java/lang/Iterable
     142: astore        8
     144: dstore        9
     146: iconst_0
     147: istore        11
     149: aload         8
     151: astore        12
     153: new           #64                 // class java/util/ArrayList
     156: dup
     157: aload         8
     159: bipush        10
     161: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     164: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     167: checkcast     #76                 // class java/util/Collection
     170: astore        13
     172: iconst_0
     173: istore        14
     175: aload         12
     177: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     182: astore        15
     184: aload         15
     186: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     191: ifeq          266
     194: aload         15
     196: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     201: astore        16
     203: aload         13
     205: aload         16
     207: checkcast     #106                // class java/util/List
     210: astore        17
     212: astore        18
     214: iconst_0
     215: istore        19
     217: aload         17
     219: iconst_0
     220: iload         6
     222: invokeinterface #326,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
     227: checkcast     #76                 // class java/util/Collection
     230: aload         17
     232: iload         6
     234: iconst_1
     235: iadd
     236: aload         17
     238: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
     243: invokeinterface #326,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
     248: checkcast     #62                 // class java/lang/Iterable
     251: invokestatic  #330                // Method kotlin/collections/CollectionsKt.plus:(Ljava/util/Collection;Ljava/lang/Iterable;)Ljava/util/List;
     254: aload         18
     256: swap
     257: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     262: pop
     263: goto          184
     266: aload         13
     268: checkcast     #106                // class java/util/List
     271: nop
     272: astore        18
     274: dload         9
     276: aload         18
     278: invokestatic  #298                // Method determinant:(Ljava/util/List;)D
     281: dmul
     282: nop
     283: dstore        22
     285: dload         20
     287: dload         22
     289: dadd
     290: dstore_2
     291: goto          63
     294: dload_2
     295: dreturn

  public static final void inverseMatrix();
    Code:
       0: iconst_1
       1: invokestatic  #137                // Method inputMatrices:(I)[Ljava/util/List;
       4: iconst_0
       5: aaload
       6: checkcast     #62                 // class java/lang/Iterable
       9: astore_1
      10: iconst_0
      11: istore_2
      12: aload_1
      13: astore_3
      14: new           #64                 // class java/util/ArrayList
      17: dup
      18: aload_1
      19: bipush        10
      21: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      24: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
      27: checkcast     #76                 // class java/util/Collection
      30: astore        4
      32: iconst_0
      33: istore        5
      35: aload_3
      36: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      41: astore        6
      43: aload         6
      45: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      50: ifeq          90
      53: aload         6
      55: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      60: astore        7
      62: aload         4
      64: aload         7
      66: checkcast     #106                // class java/util/List
      69: astore        8
      71: astore        41
      73: iconst_0
      74: istore        9
      76: aload         8
      78: aload         41
      80: swap
      81: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
      86: pop
      87: goto          43
      90: aload         4
      92: checkcast     #106                // class java/util/List
      95: nop
      96: checkcast     #76                 // class java/util/Collection
      99: invokestatic  #337                // Method kotlin/collections/CollectionsKt.toMutableList:(Ljava/util/Collection;)Ljava/util/List;
     102: astore_0
     103: aload_0
     104: invokestatic  #298                // Method determinant:(Ljava/util/List;)D
     107: dconst_0
     108: dcmpg
     109: ifne          116
     112: iconst_1
     113: goto          117
     116: iconst_0
     117: ifeq          137
     120: ldc_w         #339                // String This matrix doesn\'t have an inverse.
     123: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
     126: swap
     127: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     130: getstatic     #33                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
     133: astore_2
     134: iconst_0
     135: istore_3
     136: return
     137: aload_0
     138: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
     143: istore_2
     144: new           #64                 // class java/util/ArrayList
     147: dup
     148: iload_2
     149: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     152: astore_3
     153: iconst_0
     154: istore        4
     156: iload         4
     158: iload_2
     159: if_icmpge     267
     162: iload         4
     164: istore        5
     166: aload_3
     167: iload         5
     169: istore        6
     171: astore        41
     173: iconst_0
     174: istore        7
     176: aload_0
     177: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
     182: istore        8
     184: new           #64                 // class java/util/ArrayList
     187: dup
     188: iload         8
     190: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     193: astore        9
     195: iconst_0
     196: istore        10
     198: iload         10
     200: iload         8
     202: if_icmpge     248
     205: iload         10
     207: istore        11
     209: aload         9
     211: iload         11
     213: istore        12
     215: astore        13
     217: iconst_0
     218: istore        14
     220: iload         6
     222: iload         12
     224: if_icmpne     231
     227: dconst_1
     228: goto          232
     231: dconst_0
     232: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     235: aload         13
     237: swap
     238: invokevirtual #157                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     241: pop
     242: iinc          10, 1
     245: goto          198
     248: aload         9
     250: checkcast     #106                // class java/util/List
     253: nop
     254: aload         41
     256: swap
     257: invokevirtual #157                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     260: pop
     261: iinc          4, 1
     264: goto          156
     267: aload_3
     268: checkcast     #106                // class java/util/List
     271: astore_1
     272: iconst_0
     273: aload_0
     274: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
     279: invokestatic  #345                // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     282: checkcast     #62                 // class java/lang/Iterable
     285: astore_2
     286: iconst_0
     287: istore_3
     288: aload_2
     289: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     294: astore        4
     296: aload         4
     298: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     303: ifeq          1170
     306: aload         4
     308: checkcast     #313                // class kotlin/collections/IntIterator
     311: invokevirtual #316                // Method kotlin/collections/IntIterator.nextInt:()I
     314: istore        5
     316: iload         5
     318: istore        6
     320: iconst_0
     321: istore        7
     323: aload_0
     324: iload         6
     326: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     331: checkcast     #106                // class java/util/List
     334: iload         6
     336: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     341: checkcast     #147                // class java/lang/Number
     344: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     347: dstore        8
     349: aload_0
     350: iload         6
     352: aload_0
     353: iload         6
     355: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     360: checkcast     #62                 // class java/lang/Iterable
     363: astore        10
     365: istore        11
     367: astore        12
     369: iconst_0
     370: istore        13
     372: aload         10
     374: astore        14
     376: new           #64                 // class java/util/ArrayList
     379: dup
     380: aload         10
     382: bipush        10
     384: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     387: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     390: checkcast     #76                 // class java/util/Collection
     393: astore        15
     395: iconst_0
     396: istore        16
     398: aload         14
     400: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     405: astore        17
     407: aload         17
     409: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     414: ifeq          463
     417: aload         17
     419: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     424: astore        18
     426: aload         15
     428: aload         18
     430: checkcast     #147                // class java/lang/Number
     433: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     436: dstore        19
     438: astore        21
     440: iconst_0
     441: istore        22
     443: dload         19
     445: dload         8
     447: ddiv
     448: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     451: aload         21
     453: swap
     454: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     459: pop
     460: goto          407
     463: aload         15
     465: checkcast     #106                // class java/util/List
     468: nop
     469: astore        21
     471: aload         12
     473: iload         11
     475: aload         21
     477: invokeinterface #349,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
     482: pop
     483: aload_1
     484: iload         6
     486: aload_1
     487: iload         6
     489: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     494: checkcast     #62                 // class java/lang/Iterable
     497: astore        10
     499: istore        11
     501: astore        12
     503: iconst_0
     504: istore        13
     506: aload         10
     508: astore        14
     510: new           #64                 // class java/util/ArrayList
     513: dup
     514: aload         10
     516: bipush        10
     518: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     521: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     524: checkcast     #76                 // class java/util/Collection
     527: astore        15
     529: iconst_0
     530: istore        16
     532: aload         14
     534: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     539: astore        17
     541: aload         17
     543: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     548: ifeq          597
     551: aload         17
     553: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     558: astore        18
     560: aload         15
     562: aload         18
     564: checkcast     #147                // class java/lang/Number
     567: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     570: dstore        19
     572: astore        21
     574: iconst_0
     575: istore        22
     577: dload         19
     579: dload         8
     581: ddiv
     582: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     585: aload         21
     587: swap
     588: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     593: pop
     594: goto          541
     597: aload         15
     599: checkcast     #106                // class java/util/List
     602: nop
     603: astore        21
     605: aload         12
     607: iload         11
     609: aload         21
     611: invokeinterface #349,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
     616: pop
     617: iconst_0
     618: aload_0
     619: invokeinterface #199,  1          // InterfaceMethod java/util/List.size:()I
     624: invokestatic  #345                // Method kotlin/ranges/RangesKt.until:(II)Lkotlin/ranges/IntRange;
     627: checkcast     #62                 // class java/lang/Iterable
     630: astore        10
     632: iconst_0
     633: istore        13
     635: aload         10
     637: astore        14
     639: new           #64                 // class java/util/ArrayList
     642: dup
     643: invokespecial #350                // Method java/util/ArrayList."<init>":()V
     646: checkcast     #76                 // class java/util/Collection
     649: astore        15
     651: iconst_0
     652: istore        16
     654: aload         14
     656: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     661: astore        17
     663: aload         17
     665: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     670: ifeq          723
     673: aload         17
     675: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     680: astore        18
     682: aload         18
     684: checkcast     #147                // class java/lang/Number
     687: invokevirtual #239                // Method java/lang/Number.intValue:()I
     690: istore        23
     692: iconst_0
     693: istore        24
     695: iload         23
     697: iload         6
     699: if_icmpeq     706
     702: iconst_1
     703: goto          707
     706: iconst_0
     707: ifeq          663
     710: aload         15
     712: aload         18
     714: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     719: pop
     720: goto          663
     723: aload         15
     725: checkcast     #106                // class java/util/List
     728: nop
     729: checkcast     #62                 // class java/lang/Iterable
     732: astore        10
     734: nop
     735: iconst_0
     736: istore        13
     738: aload         10
     740: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     745: astore        14
     747: aload         14
     749: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     754: ifeq          1164
     757: aload         14
     759: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     764: astore        15
     766: aload         15
     768: checkcast     #147                // class java/lang/Number
     771: invokevirtual #239                // Method java/lang/Number.intValue:()I
     774: istore        16
     776: iconst_0
     777: istore        17
     779: aload_0
     780: iload         16
     782: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     787: checkcast     #106                // class java/util/List
     790: iload         6
     792: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     797: checkcast     #147                // class java/lang/Number
     800: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     803: dstore        25
     805: aload_0
     806: iload         16
     808: aload_0
     809: iload         16
     811: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     816: checkcast     #62                 // class java/lang/Iterable
     819: aload_0
     820: iload         6
     822: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     827: checkcast     #62                 // class java/lang/Iterable
     830: invokestatic  #207                // Method kotlin/collections/CollectionsKt.zip:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/List;
     833: checkcast     #62                 // class java/lang/Iterable
     836: astore        24
     838: istore        22
     840: astore        27
     842: iconst_0
     843: istore        28
     845: aload         24
     847: astore        29
     849: new           #64                 // class java/util/ArrayList
     852: dup
     853: aload         24
     855: bipush        10
     857: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
     860: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     863: checkcast     #76                 // class java/util/Collection
     866: astore        30
     868: iconst_0
     869: istore        31
     871: aload         29
     873: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
     878: astore        32
     880: aload         32
     882: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
     887: ifeq          962
     890: aload         32
     892: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
     897: astore        33
     899: aload         30
     901: aload         33
     903: checkcast     #209                // class kotlin/Pair
     906: astore        34
     908: astore        35
     910: iconst_0
     911: istore        36
     913: aload         34
     915: invokevirtual #212                // Method kotlin/Pair.component1:()Ljava/lang/Object;
     918: checkcast     #147                // class java/lang/Number
     921: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     924: dstore        37
     926: aload         34
     928: invokevirtual #215                // Method kotlin/Pair.component2:()Ljava/lang/Object;
     931: checkcast     #147                // class java/lang/Number
     934: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
     937: dstore        39
     939: dload         37
     941: dload         39
     943: dload         25
     945: dmul
     946: dsub
     947: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     950: aload         35
     952: swap
     953: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     958: pop
     959: goto          880
     962: aload         30
     964: checkcast     #106                // class java/util/List
     967: nop
     968: astore        35
     970: aload         27
     972: iload         22
     974: aload         35
     976: invokeinterface #349,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
     981: pop
     982: aload_1
     983: iload         16
     985: aload_1
     986: iload         16
     988: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     993: checkcast     #62                 // class java/lang/Iterable
     996: aload_1
     997: iload         6
     999: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
    1004: checkcast     #62                 // class java/lang/Iterable
    1007: invokestatic  #207                // Method kotlin/collections/CollectionsKt.zip:(Ljava/lang/Iterable;Ljava/lang/Iterable;)Ljava/util/List;
    1010: checkcast     #62                 // class java/lang/Iterable
    1013: astore        24
    1015: istore        22
    1017: astore        27
    1019: iconst_0
    1020: istore        28
    1022: aload         24
    1024: astore        29
    1026: new           #64                 // class java/util/ArrayList
    1029: dup
    1030: aload         24
    1032: bipush        10
    1034: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
    1037: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
    1040: checkcast     #76                 // class java/util/Collection
    1043: astore        30
    1045: iconst_0
    1046: istore        31
    1048: aload         29
    1050: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1055: astore        32
    1057: aload         32
    1059: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1064: ifeq          1139
    1067: aload         32
    1069: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1074: astore        33
    1076: aload         30
    1078: aload         33
    1080: checkcast     #209                // class kotlin/Pair
    1083: astore        34
    1085: astore        35
    1087: iconst_0
    1088: istore        36
    1090: aload         34
    1092: invokevirtual #212                // Method kotlin/Pair.component1:()Ljava/lang/Object;
    1095: checkcast     #147                // class java/lang/Number
    1098: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
    1101: dstore        37
    1103: aload         34
    1105: invokevirtual #215                // Method kotlin/Pair.component2:()Ljava/lang/Object;
    1108: checkcast     #147                // class java/lang/Number
    1111: invokevirtual #151                // Method java/lang/Number.doubleValue:()D
    1114: dstore        39
    1116: dload         37
    1118: dload         39
    1120: dload         25
    1122: dmul
    1123: dsub
    1124: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
    1127: aload         35
    1129: swap
    1130: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
    1135: pop
    1136: goto          1057
    1139: aload         30
    1141: checkcast     #106                // class java/util/List
    1144: nop
    1145: astore        35
    1147: aload         27
    1149: iload         22
    1151: aload         35
    1153: invokeinterface #349,  3          // InterfaceMethod java/util/List.set:(ILjava/lang/Object;)Ljava/lang/Object;
    1158: pop
    1159: nop
    1160: nop
    1161: goto          747
    1164: nop
    1165: nop
    1166: nop
    1167: goto          296
    1170: nop
    1171: ldc           #139                // String The result is:
    1173: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
    1176: swap
    1177: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
    1180: getstatic     #33                 // Field kotlin/Unit.INSTANCE:Lkotlin/Unit;
    1183: astore_2
    1184: aload_2
    1185: astore_3
    1186: iconst_0
    1187: istore        4
    1189: aload_1
    1190: checkcast     #62                 // class java/lang/Iterable
    1193: astore        5
    1195: iconst_0
    1196: istore        6
    1198: aload         5
    1200: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
    1205: astore        7
    1207: aload         7
    1209: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
    1214: ifeq          1269
    1217: aload         7
    1219: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
    1224: astore        8
    1226: aload         8
    1228: checkcast     #106                // class java/util/List
    1231: astore        9
    1233: iconst_0
    1234: istore        10
    1236: aload         9
    1238: checkcast     #62                 // class java/lang/Iterable
    1241: ldc           #54                 // String
    1243: checkcast     #50                 // class java/lang/CharSequence
    1246: aconst_null
    1247: aconst_null
    1248: iconst_0
    1249: aconst_null
    1250: aconst_null
    1251: bipush        62
    1253: aconst_null
    1254: invokestatic  #161                // 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;
    1257: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
    1260: swap
    1261: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
    1264: nop
    1265: nop
    1266: goto          1207
    1269: nop
    1270: nop
    1271: nop
    1272: return

  public static final java.util.List<java.util.List<java.lang.Double>>[] inputMatrices(int);
    Code:
       0: iconst_0
       1: istore_2
       2: iload_0
       3: anewarray     #106                // class java/util/List
       6: astore_3
       7: iload_2
       8: iload_0
       9: if_icmpge     28
      12: iload_2
      13: istore        4
      15: aload_3
      16: iload         4
      18: invokestatic  #377                // Method kotlin/collections/CollectionsKt.emptyList:()Ljava/util/List;
      21: aastore
      22: iinc          2, 1
      25: goto          7
      28: aload_3
      29: astore_1
      30: iconst_1
      31: istore_2
      32: iload_2
      33: iload_0
      34: if_icmpgt     230
      37: iload_0
      38: iconst_2
      39: if_icmpne     59
      42: iload_2
      43: iconst_1
      44: if_icmpne     53
      47: ldc_w         #379                // String first
      50: goto          62
      53: ldc_w         #381                // String second
      56: goto          62
      59: ldc_w         #383                // String
      62: astore_3
      63: new           #286                // class java/lang/StringBuilder
      66: dup
      67: invokespecial #288                // Method java/lang/StringBuilder."<init>":()V
      70: ldc_w         #385                // String Enter size of
      73: invokevirtual #294                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      76: aload_3
      77: invokevirtual #294                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      80: ldc_w         #387                // String  matrix:
      83: invokevirtual #294                // Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
      86: invokevirtual #304                // Method java/lang/StringBuilder.toString:()Ljava/lang/String;
      89: invokestatic  #389                // Method inputList:(Ljava/lang/String;)Ljava/util/List;
      92: astore        4
      94: aload         4
      96: astore        5
      98: iconst_0
      99: istore        6
     101: ldc_w         #391                // String Enter matrix:
     104: getstatic     #21                 // Field java/lang/System.out:Ljava/io/PrintStream;
     107: swap
     108: invokevirtual #27                 // Method java/io/PrintStream.println:(Ljava/lang/Object;)V
     111: nop
     112: aload         4
     114: astore        5
     116: iconst_0
     117: istore        6
     119: aload_1
     120: iload_2
     121: iconst_1
     122: isub
     123: aload         5
     125: iconst_0
     126: invokeinterface #203,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     131: checkcast     #147                // class java/lang/Number
     134: invokevirtual #239                // Method java/lang/Number.intValue:()I
     137: istore        7
     139: istore        8
     141: astore        9
     143: new           #64                 // class java/util/ArrayList
     146: dup
     147: iload         7
     149: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
     152: astore        10
     154: iconst_0
     155: istore        11
     157: iload         11
     159: iload         7
     161: if_icmpge     203
     164: iload         11
     166: istore        12
     168: aload         10
     170: iload         12
     172: istore        13
     174: astore        14
     176: iconst_0
     177: istore        15
     179: getstatic     #124                // Field inputListDouble:Lkotlin/jvm/functions/Function0;
     182: invokeinterface #396,  1          // InterfaceMethod kotlin/jvm/functions/Function0.invoke:()Ljava/lang/Object;
     187: checkcast     #106                // class java/util/List
     190: aload         14
     192: swap
     193: invokevirtual #157                // Method java/util/ArrayList.add:(Ljava/lang/Object;)Z
     196: pop
     197: iinc          11, 1
     200: goto          157
     203: aload         10
     205: checkcast     #106                // class java/util/List
     208: astore        14
     210: aload         9
     212: iload         8
     214: aload         14
     216: aastore
     217: nop
     218: nop
     219: iload_2
     220: iload_0
     221: if_icmpeq     230
     224: iinc          2, 1
     227: goto          37
     230: aload_1
     231: areturn

  public static final void main();
    Code:
       0: ldc_w         #405                // String \n1. Add matrices\n2. Multiply matrix by a constant\n3. Multiply matrices\n4. Transpose matrix\n5. Calculate a determinant\n6. Inverse matrix\n0. Exit\nYour choice:
       3: astore_0
       4: nop
       5: aload_0
       6: invokestatic  #48                 // Method input:(Ljava/lang/String;)Ljava/lang/String;
       9: astore_1
      10: aload_1
      11: ldc_w         #407                // String 0
      14: invokestatic  #411                // Method kotlin/jvm/internal/Intrinsics.areEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
      17: ifne          52
      20: getstatic     #131                // Field menuMap:Ljava/util/Map;
      23: aload_1
      24: invokeinterface #416,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      29: checkcast     #418                // class kotlin/reflect/KFunction
      32: dup
      33: ifnull        48
      36: checkcast     #393                // class kotlin/jvm/functions/Function0
      39: invokeinterface #396,  1          // InterfaceMethod kotlin/jvm/functions/Function0.invoke:()Ljava/lang/Object;
      44: pop
      45: goto          4
      48: pop
      49: goto          4
      52: return

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

  private static final java.util.List inputListDouble$lambda$3();
    Code:
       0: invokestatic  #39                 // Method kotlin/io/ConsoleKt.readln:()Ljava/lang/String;
       3: checkcast     #50                 // class java/lang/CharSequence
       6: iconst_1
       7: anewarray     #52                 // class java/lang/String
      10: astore_0
      11: aload_0
      12: iconst_0
      13: ldc           #54                 // String
      15: aastore
      16: aload_0
      17: iconst_0
      18: iconst_0
      19: bipush        6
      21: aconst_null
      22: invokestatic  #60                 // Method kotlin/text/StringsKt.split$default:(Ljava/lang/CharSequence;[Ljava/lang/String;ZIILjava/lang/Object;)Ljava/util/List;
      25: checkcast     #62                 // class java/lang/Iterable
      28: astore_0
      29: iconst_0
      30: istore_1
      31: aload_0
      32: astore_2
      33: new           #64                 // class java/util/ArrayList
      36: dup
      37: aload_0
      38: bipush        10
      40: invokestatic  #70                 // Method kotlin/collections/CollectionsKt.collectionSizeOrDefault:(Ljava/lang/Iterable;I)I
      43: invokespecial #74                 // Method java/util/ArrayList."<init>":(I)V
      46: checkcast     #76                 // class java/util/Collection
      49: astore_3
      50: iconst_0
      51: istore        4
      53: aload_2
      54: invokeinterface #80,  1           // InterfaceMethod java/lang/Iterable.iterator:()Ljava/util/Iterator;
      59: astore        5
      61: aload         5
      63: invokeinterface #86,  1           // InterfaceMethod java/util/Iterator.hasNext:()Z
      68: ifeq          114
      71: aload         5
      73: invokeinterface #90,  1           // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      78: astore        6
      80: aload_3
      81: aload         6
      83: checkcast     #52                 // class java/lang/String
      86: astore        7
      88: astore        9
      90: iconst_0
      91: istore        8
      93: aload         7
      95: invokestatic  #188                // Method java/lang/Double.parseDouble:(Ljava/lang/String;)D
      98: nop
      99: invokestatic  #156                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
     102: aload         9
     104: swap
     105: invokeinterface #104,  2          // InterfaceMethod java/util/Collection.add:(Ljava/lang/Object;)Z
     110: pop
     111: goto          61
     114: aload_3
     115: checkcast     #106                // class java/util/List
     118: nop
     119: areturn

  static {};
    Code:
       0: invokedynamic #442,  0            // InvokeDynamic #0:invoke:()Lkotlin/jvm/functions/Function0;
       5: putstatic     #124                // Field inputListDouble:Lkotlin/jvm/functions/Function0;
       8: bipush        6
      10: anewarray     #209                // class kotlin/Pair
      13: astore_0
      14: aload_0
      15: iconst_0
      16: ldc           #244                // String 1
      18: getstatic     #447                // Field processor/MainKt$menuMap$1.INSTANCE:Lprocessor/MainKt$menuMap$1;
      21: invokestatic  #236                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      24: aastore
      25: aload_0
      26: iconst_1
      27: ldc           #249                // String 2
      29: getstatic     #452                // Field processor/MainKt$menuMap$2.INSTANCE:Lprocessor/MainKt$menuMap$2;
      32: invokestatic  #236                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      35: aastore
      36: aload_0
      37: iconst_2
      38: ldc           #251                // String 3
      40: getstatic     #457                // Field processor/MainKt$menuMap$3.INSTANCE:Lprocessor/MainKt$menuMap$3;
      43: invokestatic  #236                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      46: aastore
      47: aload_0
      48: iconst_3
      49: ldc           #253                // String 4
      51: getstatic     #462                // Field processor/MainKt$menuMap$4.INSTANCE:Lprocessor/MainKt$menuMap$4;
      54: invokestatic  #236                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      57: aastore
      58: aload_0
      59: iconst_4
      60: ldc_w         #464                // String 5
      63: getstatic     #469                // Field processor/MainKt$menuMap$5.INSTANCE:Lprocessor/MainKt$menuMap$5;
      66: invokestatic  #236                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      69: aastore
      70: aload_0
      71: iconst_5
      72: ldc_w         #471                // String 6
      75: getstatic     #476                // Field processor/MainKt$menuMap$6.INSTANCE:Lprocessor/MainKt$menuMap$6;
      78: invokestatic  #236                // Method kotlin/TuplesKt.to:(Ljava/lang/Object;Ljava/lang/Object;)Lkotlin/Pair;
      81: aastore
      82: aload_0
      83: invokestatic  #482                // Method kotlin/collections/MapsKt.mapOf:([Lkotlin/Pair;)Ljava/util/Map;
      86: putstatic     #131                // Field menuMap:Ljava/util/Map;
      89: return
}