index-9afe28b2.js 704.6 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457 1458 1459 1460 1461 1462 1463 1464 1465 1466 1467 1468 1469 1470 1471 1472 1473 1474 1475 1476 1477 1478 1479 1480 1481 1482 1483 1484 1485 1486 1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 1501 1502 1503 1504 1505 1506 1507 1508 1509 1510 1511 1512 1513 1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 1525 1526 1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 1545 1546 1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 1566 1567 1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 1611 1612 1613 1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1672 1673 1674 1675 1676 1677 1678 1679 1680 1681 1682 1683 1684 1685 1686 1687 1688 1689 1690 1691 1692 1693 1694 1695 1696 1697 1698 1699 1700 1701 1702 1703 1704 1705 1706 1707 1708 1709 1710 1711 1712 1713 1714 1715 1716 1717 1718 1719 1720 1721 1722 1723 1724 1725 1726 1727 1728 1729 1730 1731 1732 1733 1734 1735 1736 1737 1738 1739 1740 1741 1742 1743 1744 1745 1746 1747 1748 1749 1750 1751 1752 1753 1754 1755 1756 1757 1758 1759 1760 1761 1762 1763 1764 1765 1766 1767 1768 1769 1770 1771 1772 1773 1774 1775 1776 1777 1778 1779 1780 1781 1782 1783 1784 1785 1786 1787 1788 1789 1790 1791 1792 1793 1794 1795 1796 1797 1798 1799 1800 1801 1802 1803 1804 1805 1806 1807 1808 1809 1810 1811 1812 1813 1814 1815 1816 1817 1818 1819 1820 1821 1822 1823 1824 1825 1826 1827 1828 1829 1830 1831 1832 1833 1834 1835 1836 1837 1838 1839 1840 1841 1842 1843 1844 1845 1846 1847 1848 1849 1850 1851 1852 1853 1854 1855 1856 1857 1858 1859 1860 1861 1862 1863 1864 1865 1866 1867 1868 1869 1870 1871 1872 1873 1874 1875 1876 1877 1878 1879 1880 1881 1882 1883 1884 1885 1886 1887 1888 1889 1890 1891 1892 1893 1894 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1909 1910 1911 1912 1913 1914 1915 1916 1917 1918 1919 1920 1921 1922 1923 1924 1925 1926 1927 1928 1929 1930 1931 1932 1933 1934 1935 1936 1937 1938 1939 1940 1941 1942 1943 1944 1945 1946 1947 1948 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 2041 2042 2043 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 2067 2068 2069 2070 2071 2072 2073 2074 2075 2076 2077 2078 2079 2080 2081 2082 2083 2084 2085 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 2098 2099 2100 2101 2102 2103 2104 2105 2106 2107 2108 2109 2110 2111 2112 2113 2114 2115 2116 2117 2118 2119 2120 2121 2122 2123 2124 2125 2126 2127 2128 2129 2130 2131 2132 2133 2134 2135 2136 2137 2138 2139 2140 2141 2142 2143 2144 2145 2146 2147 2148 2149 2150 2151 2152 2153 2154 2155 2156 2157 2158 2159 2160 2161 2162 2163 2164 2165 2166 2167 2168 2169 2170 2171 2172 2173 2174 2175 2176 2177 2178 2179 2180 2181 2182 2183 2184 2185 2186 2187 2188 2189 2190 2191 2192 2193 2194 2195 2196 2197 2198 2199 2200 2201 2202 2203 2204 2205 2206 2207 2208 2209 2210 2211 2212 2213 2214 2215 2216 2217 2218 2219 2220 2221 2222 2223 2224 2225 2226 2227 2228 2229 2230 2231 2232 2233 2234 2235 2236 2237 2238 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 2268 2269 2270 2271 2272 2273 2274 2275 2276 2277 2278 2279 2280 2281 2282 2283 2284 2285 2286 2287 2288 2289 2290 2291 2292 2293 2294 2295 2296 2297 2298 2299 2300 2301 2302 2303 2304 2305 2306 2307 2308 2309 2310 2311 2312 2313 2314 2315 2316 2317 2318 2319 2320 2321 2322 2323 2324 2325 2326 2327 2328 2329 2330 2331 2332 2333 2334 2335 2336 2337 2338 2339 2340 2341 2342 2343 2344 2345 2346 2347 2348 2349 2350 2351 2352 2353 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2364 2365 2366 2367 2368 2369 2370 2371 2372 2373 2374 2375 2376 2377 2378 2379 2380 2381 2382 2383 2384 2385 2386 2387 2388 2389 2390 2391 2392 2393 2394 2395 2396 2397 2398 2399 2400 2401 2402 2403 2404 2405 2406 2407 2408 2409 2410 2411 2412 2413 2414 2415 2416 2417 2418 2419 2420 2421 2422 2423 2424 2425 2426 2427 2428 2429 2430 2431 2432 2433 2434 2435 2436 2437 2438 2439 2440 2441 2442 2443 2444 2445 2446 2447 2448 2449 2450 2451 2452 2453 2454 2455 2456 2457 2458 2459 2460 2461 2462 2463 2464 2465 2466 2467 2468 2469 2470 2471 2472 2473 2474 2475 2476 2477 2478 2479 2480 2481 2482 2483 2484 2485 2486 2487 2488 2489 2490 2491 2492 2493 2494 2495 2496 2497 2498 2499 2500 2501 2502 2503 2504 2505 2506 2507 2508 2509 2510 2511 2512 2513 2514 2515 2516 2517 2518 2519 2520 2521 2522 2523 2524 2525 2526 2527 2528 2529 2530 2531 2532 2533 2534 2535 2536 2537 2538 2539 2540 2541 2542 2543 2544 2545 2546 2547 2548 2549 2550 2551 2552 2553 2554 2555 2556 2557 2558 2559 2560 2561 2562 2563 2564 2565 2566 2567 2568 2569 2570 2571 2572 2573 2574 2575 2576 2577 2578 2579 2580 2581 2582 2583 2584 2585 2586 2587 2588 2589 2590 2591 2592 2593 2594 2595 2596 2597 2598 2599 2600 2601 2602 2603 2604 2605 2606 2607 2608 2609 2610 2611 2612 2613 2614 2615 2616 2617 2618 2619 2620 2621 2622 2623 2624 2625 2626 2627 2628 2629 2630 2631 2632 2633 2634 2635 2636 2637 2638 2639 2640 2641 2642 2643 2644 2645 2646 2647 2648 2649 2650 2651 2652 2653 2654 2655 2656 2657 2658 2659 2660 2661 2662 2663 2664 2665 2666 2667 2668 2669 2670 2671 2672 2673 2674 2675 2676 2677 2678 2679 2680 2681 2682 2683 2684 2685 2686 2687 2688 2689 2690 2691 2692 2693 2694 2695 2696 2697 2698 2699 2700 2701 2702 2703 2704 2705 2706 2707 2708 2709 2710 2711 2712 2713 2714 2715 2716 2717 2718 2719 2720 2721 2722 2723 2724 2725 2726 2727 2728 2729 2730 2731 2732 2733 2734 2735 2736 2737 2738 2739 2740 2741 2742 2743 2744 2745 2746 2747 2748 2749 2750 2751 2752 2753 2754 2755 2756 2757 2758 2759 2760 2761 2762 2763 2764 2765 2766 2767 2768 2769 2770 2771 2772 2773 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 2784 2785 2786 2787 2788 2789 2790 2791 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 2805 2806 2807 2808 2809 2810 2811 2812 2813 2814 2815 2816 2817 2818 2819 2820 2821 2822 2823 2824 2825 2826 2827 2828 2829 2830 2831 2832 2833 2834 2835 2836 2837 2838 2839 2840 2841 2842 2843 2844 2845 2846 2847 2848 2849 2850 2851 2852 2853 2854 2855 2856 2857 2858 2859 2860 2861 2862 2863 2864 2865 2866 2867 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 2895 2896 2897 2898 2899 2900 2901 2902 2903 2904 2905 2906 2907 2908 2909 2910 2911 2912 2913 2914 2915 2916 2917 2918 2919 2920 2921 2922 2923 2924 2925 2926 2927 2928 2929 2930 2931 2932 2933 2934 2935 2936 2937 2938 2939 2940 2941 2942 2943 2944 2945 2946 2947 2948 2949 2950 2951 2952 2953 2954 2955 2956 2957 2958 2959 2960 2961 2962 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 2974 2975 2976 2977 2978 2979 2980 2981 2982 2983 2984 2985 2986 2987 2988 2989 2990 2991 2992 2993 2994 2995 2996 2997 2998 2999 3000 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018 3019 3020 3021 3022 3023 3024 3025 3026 3027 3028 3029 3030 3031 3032 3033 3034 3035 3036 3037 3038 3039 3040 3041 3042 3043 3044 3045 3046 3047 3048 3049 3050 3051 3052 3053 3054 3055 3056 3057 3058 3059 3060 3061 3062 3063 3064 3065 3066 3067 3068 3069 3070 3071 3072 3073 3074 3075 3076 3077 3078 3079 3080 3081 3082 3083 3084 3085 3086 3087 3088 3089 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 3134 3135 3136 3137 3138 3139 3140 3141 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 3164 3165 3166 3167 3168 3169 3170 3171 3172 3173 3174 3175 3176 3177 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 3201 3202 3203 3204 3205 3206 3207 3208 3209 3210 3211 3212 3213 3214 3215 3216 3217 3218 3219 3220 3221 3222 3223 3224 3225 3226 3227 3228 3229 3230 3231 3232 3233 3234 3235 3236 3237 3238 3239 3240 3241 3242 3243 3244 3245 3246 3247 3248 3249 3250 3251 3252 3253 3254 3255 3256 3257 3258 3259 3260 3261 3262 3263 3264 3265 3266 3267 3268 3269 3270 3271 3272 3273 3274 3275 3276 3277 3278 3279 3280 3281 3282 3283 3284 3285 3286 3287 3288 3289 3290 3291 3292 3293 3294 3295 3296 3297 3298 3299 3300 3301 3302 3303 3304 3305 3306 3307 3308 3309 3310 3311 3312 3313 3314 3315 3316 3317 3318 3319 3320 3321 3322 3323 3324 3325 3326 3327 3328 3329 3330 3331 3332 3333 3334 3335 3336 3337 3338 3339 3340 3341 3342 3343 3344 3345 3346 3347 3348 3349 3350 3351 3352 3353 3354 3355 3356 3357 3358 3359 3360 3361 3362 3363 3364 3365 3366 3367 3368 3369 3370 3371 3372 3373 3374 3375 3376 3377 3378 3379 3380 3381 3382 3383 3384 3385 3386 3387 3388 3389 3390 3391 3392 3393 3394 3395 3396 3397 3398 3399 3400 3401 3402 3403 3404 3405 3406 3407 3408 3409 3410 3411 3412 3413 3414 3415 3416 3417 3418 3419 3420 3421 3422 3423 3424 3425 3426 3427 3428 3429 3430 3431 3432 3433 3434 3435 3436 3437 3438 3439 3440 3441 3442 3443 3444 3445 3446 3447 3448 3449 3450 3451 3452 3453 3454 3455 3456 3457 3458 3459 3460 3461 3462 3463 3464 3465 3466 3467 3468 3469 3470 3471 3472 3473 3474 3475 3476 3477 3478 3479 3480 3481 3482 3483 3484 3485 3486 3487 3488 3489 3490 3491 3492 3493 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 3504 3505 3506 3507 3508 3509 3510 3511 3512 3513 3514 3515 3516 3517 3518 3519 3520 3521 3522 3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 3539 3540 3541 3542 3543 3544 3545 3546 3547 3548 3549 3550 3551 3552 3553 3554 3555 3556 3557 3558 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 3572 3573 3574 3575 3576 3577 3578 3579 3580 3581 3582 3583 3584 3585 3586 3587 3588 3589 3590 3591 3592 3593 3594 3595 3596 3597 3598 3599 3600 3601 3602 3603 3604 3605 3606 3607 3608 3609 3610 3611 3612 3613 3614 3615 3616 3617 3618 3619 3620 3621 3622 3623 3624 3625 3626 3627 3628 3629 3630 3631 3632 3633 3634 3635 3636 3637 3638 3639 3640 3641 3642 3643 3644 3645 3646 3647 3648 3649 3650 3651 3652 3653 3654 3655 3656 3657 3658 3659 3660 3661 3662 3663 3664 3665 3666 3667 3668 3669 3670 3671 3672 3673 3674 3675 3676 3677 3678 3679 3680 3681 3682 3683 3684 3685 3686 3687 3688 3689 3690 3691 3692 3693 3694 3695 3696 3697 3698 3699 3700 3701 3702 3703 3704 3705 3706 3707 3708 3709 3710 3711 3712 3713 3714 3715 3716 3717 3718 3719 3720 3721 3722 3723 3724 3725 3726 3727 3728 3729 3730 3731 3732 3733 3734 3735 3736 3737 3738 3739 3740 3741 3742 3743 3744 3745 3746 3747 3748 3749 3750 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 3761 3762 3763 3764 3765 3766 3767 3768 3769 3770 3771 3772 3773 3774 3775 3776 3777 3778 3779 3780 3781 3782 3783 3784 3785 3786 3787 3788 3789 3790 3791 3792 3793 3794 3795 3796 3797 3798 3799 3800 3801 3802 3803 3804 3805 3806 3807 3808 3809 3810 3811 3812 3813 3814 3815 3816 3817 3818 3819 3820 3821 3822 3823 3824 3825 3826 3827 3828 3829
import{B as Wl,a as Vl,C as zl,E as Ul,F as De,K as uu,R as Gl,S as Hl,b as $l,T as jl,c as ql,d as Kl,e as Xl,V as Yl,f as Jl,g as Ql,h as Zl,i as ed,j as td,k as nd,l as rd,m as Vt,n as ad,o as ht,p as Te,q as O,r as F,s as od,t as id,u as sd,v as ud,w as cd,x as We,y as Da,z as ce,A as ld,D as dd,G as cu,H as hd,I as fd,J as pd,L as vd,M as md,N as gd,O as _d,P as xd,Q as bd,U as yd,W as wd,X as lu,Y as Cd,Z as Ed,_ as Rd,$ as kd,a0 as Id,a1 as Sd,a2 as Ad,a3 as Dd,a4 as Td,a5 as Nd,a6 as Fd,a7 as Pd,a8 as Md,a9 as Od,aa as Bd,ab as Ld,ac as Wd,ad as Vd,ae as zd,af as Ud,ag as Gd,ah as Hd,ai as du,aj as Ze,ak as $d,al as jd,am as qd,an as hu,ao as fu,ap as Kd,aq as Xd,ar as Yd,as as Fr,at as Jd,au as Qd,av as Zd,aw as eh,ax as th,ay as nh,az as P,aA as St,aB as rh,aC as ah,aD as At,aE as oh,aF as Ao,aG as ih,aH as we,aI as sh,aJ as uh,aK as Ue,aL as ch,aM as pu,aN as lh,aO as dh,aP as hh,aQ as fh,aR as ph,aS as vh,aT as mh,aU as gh,aV as _h,aW as xh,aX as bh,aY as yh,aZ as wh,a_ as K,a$ as Ch,b0 as Eh,b1 as Rh,b2 as kh,b3 as Ih,b4 as Sh,b5 as Ah,b6 as Dh,b7 as Z,b8 as Th,b9 as Nh,ba as Fh,bb as Ph,bc as Mh,bd as Oh,be as Bh,bf as Lh,bg as Wh,bh as Vh,bi as zh,bj as Pr,bk as Uh,bl as Gh,bm as Hh,bn as tr,bo as $h,bp as jh,bq as qh,br as Kh,bs as sn,bt as Xh,bu as Mr,bv as Yh,bw as Jh,bx as Dn,by as Qh,bz as lt,bA as Zh,bB as ef,bC as Re,bD as _r}from"./index-61d14c21.js";import{H as tf,m as nf,a as rf,_ as vu,b as Zo,c as ei,d as ti,e as ni,i as af,f as of}from"./index.vue_vue_type_style_index_0_scoped_6e0b737d_lang-e94da737.js";const sf=()=>{},uf=Object.freeze(Object.defineProperty({__proto__:null,BaseTransition:Wl,BaseTransitionPropsValidators:Vl,Comment:zl,EffectScope:Ul,Fragment:De,KeepAlive:uu,ReactiveEffect:Gl,Static:Hl,Suspense:$l,Teleport:jl,Text:ql,Transition:Kl,TransitionGroup:Xl,VueElement:Yl,assertNumber:Jl,callWithAsyncErrorHandling:Ql,callWithErrorHandling:Zl,camelize:ed,capitalize:td,cloneVNode:nd,compatUtils:rd,compile:sf,computed:Vt,createApp:ad,createBlock:ht,createCommentVNode:Te,createElementBlock:O,createElementVNode:F,createHydrationRenderer:od,createPropsRestProxy:id,createRenderer:sd,createSSRApp:ud,createSlots:cd,createStaticVNode:We,createTextVNode:Da,createVNode:ce,customRef:ld,defineAsyncComponent:dd,defineComponent:cu,defineCustomElement:hd,defineEmits:fd,defineExpose:pd,defineModel:vd,defineOptions:md,defineProps:gd,defineSSRCustomElement:_d,defineSlots:xd,get devtools(){return bd},effect:yd,effectScope:wd,getCurrentInstance:lu,getCurrentScope:Cd,getTransitionRawChildren:Ed,guardReactiveProps:Rd,h:kd,handleError:Id,hasInjectionContext:Sd,hydrate:Ad,initCustomFormatter:Dd,initDirectivesForSSR:Td,inject:Nd,isMemoSame:Fd,isProxy:Pd,isReactive:Md,isReadonly:Od,isRef:Bd,isRuntimeOnly:Ld,isShallow:Wd,isVNode:Vd,markRaw:zd,mergeDefaults:Ud,mergeModels:Gd,mergeProps:Hd,nextTick:du,normalizeClass:Ze,normalizeProps:$d,normalizeStyle:jd,onActivated:qd,onBeforeMount:hu,onBeforeUnmount:fu,onBeforeUpdate:Kd,onDeactivated:Xd,onErrorCaptured:Yd,onMounted:Fr,onRenderTracked:Jd,onRenderTriggered:Qd,onScopeDispose:Zd,onServerPrefetch:eh,onUnmounted:th,onUpdated:nh,openBlock:P,popScopeId:St,provide:rh,proxyRefs:ah,pushScopeId:At,queuePostFlushCb:oh,reactive:Ao,readonly:ih,ref:we,registerRuntimeCompiler:sh,render:uh,renderList:Ue,renderSlot:ch,resolveComponent:pu,resolveDirective:lh,resolveDynamicComponent:dh,resolveFilter:hh,resolveTransitionHooks:fh,setBlockTracking:ph,setDevtoolsHook:vh,setTransitionHooks:mh,shallowReactive:gh,shallowReadonly:_h,shallowRef:xh,ssrContextKey:bh,ssrUtils:yh,stop:wh,toDisplayString:K,toHandlerKey:Ch,toHandlers:Eh,toRaw:Rh,toRef:kh,toRefs:Ih,toValue:Sh,transformVNodeArgs:Ah,triggerRef:Dh,unref:Z,useAttrs:Th,useCssModule:Nh,useCssVars:Fh,useModel:Ph,useSSRContext:Mh,useSlots:Oh,useTransitionState:Bh,vModelCheckbox:Lh,vModelDynamic:Wh,vModelRadio:Vh,vModelSelect:zh,vModelText:Pr,vShow:Uh,version:Gh,warn:Hh,watch:tr,watchEffect:$h,watchPostEffect:jh,watchSyncEffect:qh,withAsyncContext:Kh,withCtx:sn,withDefaults:Xh,withDirectives:Mr,withKeys:Yh,withMemo:Jh,withModifiers:Dn,withScopeId:Qh},Symbol.toStringTag,{value:"Module"}));const cf={__name:"index",emits:["select"],setup(r,{emit:t}){function e(n){t("select",n)}return(n,a)=>(P(),ht(tf,{onSelect:e}))}},lf={class:"mainCabin"},df={__name:"index",setup(r){return lt(),(t,e)=>(P(),O("div",lf,[ce(nf),ce(rf)]))}};var hf={exports:{}};const ff=Zh(uf);(function(r,t){(function(n,a){r.exports=a(ff)})(ef,e=>(()=>{var n={657:(s,u)=>{Object.defineProperty(u,"__esModule",{value:!0}),u.default=(c,l)=>{const d=c.__vccOpts||c;for(const[h,f]of l)d[h]=f;return d}},976:s=>{s.exports=e}},a={};function o(s){var u=a[s];if(u!==void 0)return u.exports;var c=a[s]={exports:{}};return n[s](c,c.exports,o),c.exports}o.d=(s,u)=>{for(var c in u)o.o(u,c)&&!o.o(s,c)&&Object.defineProperty(s,c,{enumerable:!0,get:u[c]})},o.o=(s,u)=>Object.prototype.hasOwnProperty.call(s,u),o.r=s=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(s,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(s,"__esModule",{value:!0})};var i={};return(()=>{o.r(i),o.d(i,{Component:()=>de,LoadingPlugin:()=>xe,default:()=>ge,useLoading:()=>ve});var s=o(976);function u(X){var _e;typeof X.remove<"u"?X.remove():(_e=X.parentNode)==null||_e.removeChild(X)}function c(X,_e,he){let be=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};const ye=(0,s.h)(X,_e,be),ke=document.createElement("div");return ke.classList.add("vld-container"),he.appendChild(ke),(0,s.render)(ye,ke),ye.component}function l(){return typeof window<"u"}const d=l()?window.HTMLElement:Object,h=["aria-busy"],f={class:"vl-icon"};function p(X,_e,he,be,ye,ke){return(0,s.openBlock)(),(0,s.createBlock)(s.Transition,{name:X.transition},{default:(0,s.withCtx)(()=>[(0,s.withDirectives)((0,s.createElementVNode)("div",{tabindex:"0",class:(0,s.normalizeClass)(["vl-overlay vl-active",{"vl-full-page":X.isFullPage}]),"aria-busy":X.isActive,"aria-label":"Loading",style:(0,s.normalizeStyle)({zIndex:X.zIndex})},[(0,s.createElementVNode)("div",{class:"vl-background",onClick:_e[0]||(_e[0]=(0,s.withModifiers)(function(){return X.cancel&&X.cancel(...arguments)},["prevent"])),style:(0,s.normalizeStyle)(X.bgStyle)},null,4),(0,s.createElementVNode)("div",f,[(0,s.renderSlot)(X.$slots,"before"),(0,s.renderSlot)(X.$slots,"default",{},()=>[((0,s.openBlock)(),(0,s.createBlock)((0,s.resolveDynamicComponent)(X.loader),{color:X.color,width:X.width,height:X.height},null,8,["color","width","height"]))]),(0,s.renderSlot)(X.$slots,"after")])],14,h),[[s.vShow,X.isActive]])]),_:3},8,["name"])}const v={mounted(){this.enforceFocus&&document.addEventListener("focusin",this.focusIn)},methods:{focusIn(X){if(!this.isActive||X.target===this.$el||this.$el.contains(X.target))return;let _e=this.container?this.container:this.isFullPage?null:this.$el.parentElement;(this.isFullPage||_e&&_e.contains(X.target))&&(X.preventDefault(),this.$el.focus())}},beforeUnmount(){document.removeEventListener("focusin",this.focusIn)}},m=["width","height","stroke"],x=[(0,s.createStaticVNode)('<g fill="none" fill-rule="evenodd"><g transform="translate(1 1)" stroke-width="2"><circle stroke-opacity=".25" cx="18" cy="18" r="18"></circle><path d="M36 18c0-9.94-8.06-18-18-18"><animateTransform attributeName="transform" type="rotate" from="0 18 18" to="360 18 18" dur="0.8s" repeatCount="indefinite"></animateTransform></path></g></g>',1)];function b(X,_e,he,be,ye,ke){return(0,s.openBlock)(),(0,s.createElementBlock)("svg",{viewBox:"0 0 38 38",xmlns:"http://www.w3.org/2000/svg",width:X.width,height:X.height,stroke:X.color},x,8,m)}const _=(0,s.defineComponent)({name:"spinner",props:{color:{type:String,default:"#000"},height:{type:Number,default:64},width:{type:Number,default:64}}});var y=o(657);const S=(0,y.default)(_,[["render",b]]),I=["fill","width","height"],R=[(0,s.createStaticVNode)('<circle cx="15" cy="15" r="15"><animate attributeName="r" from="15" to="15" begin="0s" dur="0.8s" values="15;9;15" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite"></animate></circle><circle cx="60" cy="15" r="9" fill-opacity="0.3"><animate attributeName="r" from="9" to="9" begin="0s" dur="0.8s" values="9;15;9" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="fill-opacity" from="0.5" to="0.5" begin="0s" dur="0.8s" values=".5;1;.5" calcMode="linear" repeatCount="indefinite"></animate></circle><circle cx="105" cy="15" r="15"><animate attributeName="r" from="15" to="15" begin="0s" dur="0.8s" values="15;9;15" calcMode="linear" repeatCount="indefinite"></animate><animate attributeName="fill-opacity" from="1" to="1" begin="0s" dur="0.8s" values="1;.5;1" calcMode="linear" repeatCount="indefinite"></animate></circle>',3)];function N(X,_e,he,be,ye,ke){return(0,s.openBlock)(),(0,s.createElementBlock)("svg",{viewBox:"0 0 120 30",xmlns:"http://www.w3.org/2000/svg",fill:X.color,width:X.width,height:X.height},R,8,I)}const D=(0,s.defineComponent)({name:"dots",props:{color:{type:String,default:"#000"},height:{type:Number,default:240},width:{type:Number,default:60}}}),L=(0,y.default)(D,[["render",N]]),W=["height","width","fill"],G=[(0,s.createStaticVNode)('<rect x="0" y="13" width="4" height="5"><animate attributeName="height" attributeType="XML" values="5;21;5" begin="0s" dur="0.6s" repeatCount="indefinite"></animate><animate attributeName="y" attributeType="XML" values="13; 5; 13" begin="0s" dur="0.6s" repeatCount="indefinite"></animate></rect><rect x="10" y="13" width="4" height="5"><animate attributeName="height" attributeType="XML" values="5;21;5" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate><animate attributeName="y" attributeType="XML" values="13; 5; 13" begin="0.15s" dur="0.6s" repeatCount="indefinite"></animate></rect><rect x="20" y="13" width="4" height="5"><animate attributeName="height" attributeType="XML" values="5;21;5" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate><animate attributeName="y" attributeType="XML" values="13; 5; 13" begin="0.3s" dur="0.6s" repeatCount="indefinite"></animate></rect>',3)];function U(X,_e,he,be,ye,ke){return(0,s.openBlock)(),(0,s.createElementBlock)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 30 30",height:X.height,width:X.width,fill:X.color},G,8,W)}const $=(0,s.defineComponent)({name:"bars",props:{color:{type:String,default:"#000"},height:{type:Number,default:40},width:{type:Number,default:40}}}),te={Spinner:S,Dots:L,Bars:(0,y.default)($,[["render",U]])},Y=(0,s.defineComponent)({name:"VueLoading",mixins:[v],props:{active:Boolean,programmatic:Boolean,container:[Object,Function,d],isFullPage:{type:Boolean,default:!0},enforceFocus:{type:Boolean,default:!0},lockScroll:Boolean,transition:{type:String,default:"fade"},canCancel:Boolean,onCancel:{type:Function,default:()=>{}},color:String,backgroundColor:String,opacity:Number,width:Number,height:Number,zIndex:Number,loader:{type:String,default:"spinner"}},components:te,emits:["hide","update:active"],data(){return{isActive:this.active}},mounted(){document.addEventListener("keyup",this.keyPress)},methods:{cancel(){!this.canCancel||!this.isActive||(this.hide(),this.onCancel.apply(null,arguments))},hide(){this.$emit("hide"),this.$emit("update:active",!1),this.programmatic&&(this.isActive=!1,setTimeout(()=>{const X=this.$el.parentElement;(0,s.render)(null,X),u(X)},150))},disableScroll(){this.isFullPage&&this.lockScroll&&document.body.classList.add("vl-shown")},enableScroll(){this.isFullPage&&this.lockScroll&&document.body.classList.remove("vl-shown")},keyPress(X){X.keyCode===27&&this.cancel()}},watch:{active(X){this.isActive=X},isActive(X){X?this.disableScroll():this.enableScroll()}},computed:{bgStyle(){return{background:this.backgroundColor,opacity:this.opacity}}},beforeUnmount(){document.removeEventListener("keyup",this.keyPress)}}),de=(0,y.default)(Y,[["render",p]]);function ve(){let X=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},_e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return{show(){let he=arguments.length>0&&arguments[0]!==void 0?arguments[0]:X,be=arguments.length>1&&arguments[1]!==void 0?arguments[1]:_e;const ke={...X,...he,...{programmatic:!0,lockScroll:!0,isFullPage:!1,active:!0}};let Ne=ke.container;ke.container||(Ne=document.body,ke.isFullPage=!0);const Pe={..._e,...be};return{hide:c(de,ke,Ne,Pe).ctx.hide}}}}const xe=function(X){let _e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},he=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const be=ve(_e,he);X.config.globalProperties.$loading=be,X.provide("$loading",be)},ge=de})(),i})())})(hf);/**
 * @license
 * Copyright 2020 Google LLC. All Rights Reserved.
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * =============================================================================
 */var mu=function(r,t){return(mu=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var a in n)n.hasOwnProperty(a)&&(e[a]=n[a])})(r,t)};function Mt(r,t){function e(){this.constructor=r}mu(r,t),r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function ne(r,t,e,n){return new(e||(e=Promise))(function(a,o){function i(c){try{u(n.next(c))}catch(l){o(l)}}function s(c){try{u(n.throw(c))}catch(l){o(l)}}function u(c){c.done?a(c.value):new e(function(l){l(c.value)}).then(i,s)}u((n=n.apply(r,t||[])).next())})}function re(r,t){var e,n,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function s(u){return function(c){return function(l){if(e)throw new TypeError("Generator is already executing.");for(;i;)try{if(e=1,n&&(a=2&l[0]?n.return:l[0]?n.throw||((a=n.return)&&a.call(n),0):n.next)&&!(a=a.call(n,l[1])).done)return a;switch(n=0,a&&(l=[2&l[0],a.value]),l[0]){case 0:case 1:a=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,n=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(a=(a=i.trys).length>0&&a[a.length-1])&&(l[0]===6||l[0]===2)){i=0;continue}if(l[0]===3&&(!a||l[1]>a[0]&&l[1]<a[3])){i.label=l[1];break}if(l[0]===6&&i.label<a[1]){i.label=a[1],a=l;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(l);break}a[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(r,i)}catch(d){l=[6,d],n=0}finally{e=a=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([u,c])}}}var pf=function(){function r(t){this.global=t,this.flags={},this.flagRegistry={},this.urlFlags={},this.populateURLFlags()}return r.prototype.setPlatform=function(t,e){this.platform!=null&&console.warn("Platform "+this.platformName+" has already been set. Overwriting the platform with "+e+"."),this.platformName=t,this.platform=e},r.prototype.registerFlag=function(t,e,n){if(this.flagRegistry[t]={evaluationFn:e,setHook:n},this.urlFlags[t]!=null){var a=this.urlFlags[t];console.warn("Setting feature override from URL "+t+": "+a+"."),this.set(t,a)}},r.prototype.get=function(t){return t in this.flags?this.flags[t]:(this.flags[t]=this.evaluateFlag(t),this.flags[t])},r.prototype.getNumber=function(t){return this.get(t)},r.prototype.getBool=function(t){return this.get(t)},r.prototype.getFlags=function(){return this.flags},Object.defineProperty(r.prototype,"features",{get:function(){return this.flags},enumerable:!0,configurable:!0}),r.prototype.set=function(t,e){if(this.flagRegistry[t]==null)throw new Error("Cannot set flag "+t+" as it has not been registered.");this.flags[t]=e,this.flagRegistry[t].setHook!=null&&this.flagRegistry[t].setHook(e)},r.prototype.evaluateFlag=function(t){if(this.flagRegistry[t]==null)throw new Error("Cannot evaluate flag '"+t+"': no evaluation function found.");return this.flagRegistry[t].evaluationFn()},r.prototype.setFlags=function(t){this.flags=Object.assign({},t)},r.prototype.reset=function(){this.flags={},this.urlFlags={},this.populateURLFlags()},r.prototype.populateURLFlags=function(){var t=this;if(this.global!==void 0&&this.global.location!==void 0&&this.global.location.search!==void 0){var e,n,a=(e=this.global.location.search,n={},e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,function(o){for(var i=[],s=1;s<arguments.length;s++)i[s-1]=arguments[s];return vf(n,i[0],i[1]),i.join("=")}),n);"tfjsflags"in a&&a.tfjsflags.split(",").forEach(function(o){var i=o.split(":"),s=i[0],u=i[1];t.urlFlags[s]=function(c,l){if((l=l.toLowerCase())==="true"||l==="false")return l==="true";if(""+ +l===l)return+l;throw new Error("Could not parse value flag value "+l+" for flag "+c+".")}(s,u)})}},r}();function vf(r,t,e){r[decodeURIComponent(t)]=decodeURIComponent(e||"")}function z(){return gu}var gu=null,sa=new Map,Do=new Map;function _u(r,t){var e=bu(r,t);return sa.get(e)}function mf(r){return Do.get(r)}function ss(r){for(var t=sa.entries(),e=[];;){var n=t.next(),a=n.done,o=n.value;if(a)break;var i=o[0],s=o[1];i.split("_")[0]===r&&e.push(s)}return e}function xu(r){var t=r.kernelName,e=r.backendName,n=bu(t,e);if(sa.has(n))throw new Error("The kernel '"+t+"' for backend '"+e+"' is already registered");sa.set(n,r)}function gf(r){var t=r.kernelName;Do.has(t)&&console.warn("Overriding the gradient for '"+t+"'"),Do.set(t,r)}function bu(r,t){return t+"_"+r}function To(r,t,e){return Math.max(r,Math.min(t,e))}function yu(r){return r%2==0?r:r+1}function _f(r){for(var t=0,e=0;e<r.length;e++)t+=r[e];return t}function E(r,t){if(!r)throw new Error(typeof t=="string"?t:t())}function Ae(r,t,e){e===void 0&&(e=""),E(Qe(r,t),function(){return e+" Shapes "+r+" and "+t+" must match"})}function pr(r){E(r!=null,function(){return"The input to the tensor constructor must be a non-null value."})}function lr(r,t,e){if(t===void 0&&(t=[]),e===void 0&&(e=!1),t==null&&(t=[]),Array.isArray(r)||jt(r)&&!e)for(var n=0;n<r.length;++n)lr(r[n],t,e);else t.push(r);return t}function ae(r){if(r.length===0)return 1;for(var t=r[0],e=1;e<r.length;e++)t*=r[e];return t}function Qe(r,t){if(r===t)return!0;if(r==null||t==null||r.length!==t.length)return!1;for(var e=0;e<r.length;e++)if(r[e]!==t[e])return!1;return!0}function ze(r){return r%1==0}function xf(r){if(Math.tanh!=null)return Math.tanh(r);if(r===1/0)return 1;if(r===-1/0)return-1;var t=Math.exp(2*r);return(t-1)/(t+1)}function No(r){var t=Math.ceil(Math.sqrt(r));return[t,Math.ceil(r/t)]}function nr(r,t){return t<=r.length?r:r+" ".repeat(t-r.length)}function us(r,t,e){return t===void 0&&(t=function(n){return 0}),new Promise(function(n,a){var o=0,i=function(){if(r())n();else{o++;var s=t(o);e!=null&&o>=e?a():setTimeout(i,s)}};i()})}function bf(r,t){for(var e=1,n=-1,a=0;a<r.length;++a)if(r[a]>=0)e*=r[a];else if(r[a]===-1){if(n!==-1)throw Error("Shapes can only have 1 implicit size. Found -1 at dim "+n+" and dim "+a);n=a}else if(r[a]<0)throw Error("Shapes can not be < 0. Found "+r[a]+" at dim "+a);if(n===-1){if(t>0&&t!==e)throw Error("Size("+t+") must match the product of shape "+r);return r}if(e===0)throw Error("Cannot infer the missing size in ["+r+"] when there are 0 elements");if(t%e!=0)throw Error("The implicit shape can't be a fractional number. Got "+t+" / "+e);var o=r.slice();return o[n]=t/e,o}function Ye(r,t){var e=t.length;return E((r=r==null?t.map(function(n,a){return a}):[].concat(r)).every(function(n){return n>=-e&&n<e}),function(){return"All values in axis param must be in range [-"+e+", "+e+") but got axis "+r}),E(r.every(function(n){return ze(n)}),function(){return"All values in axis param must be integers but got axis "+r}),r.map(function(n){return n<0?e+n:n})}function Fn(r,t){for(var e=[],n=[],a=t!=null&&Array.isArray(t)&&t.length===0,o=t==null||a?null:Ye(t,r).sort(),i=0,s=0;s<r.length;++s){if(o!=null){if(o[i]===s&&r[s]!==1)throw new Error("Can't squeeze axis "+s+" since its dim '"+r[s]+"' is not 1");(o[i]==null||o[i]>s)&&r[s]===1&&(e.push(r[s]),n.push(s)),o[i]<=s&&i++}r[s]!==1&&(e.push(r[s]),n.push(s))}return{newShape:e,keptDims:n}}function kr(r,t){var e=null;if(r==null||r==="float32")e=new Float32Array(t);else if(r==="int32")e=new Int32Array(t);else{if(r!=="bool")throw new Error("Unknown data type "+r);e=new Uint8Array(t)}return e}function ua(r,t){var e=null;if(r==null||r==="float32")e=new Float32Array(t);else if(r==="int32")e=new Int32Array(t);else if(r==="bool")e=new Uint8Array(t);else{if(r!=="string")throw new Error("Unknown data type "+r);e=new Array(t)}return e}function yf(r,t){for(var e=0;e<r.length;e++){var n=r[e];if(isNaN(n)||!isFinite(n))throw Error("A tensor of type "+t+" being uploaded contains "+n+".")}}function wf(r){return r==="bool"||r==="complex64"||r==="float32"||r==="int32"||r==="string"}function Cf(r,t){return t!=="complex64"&&(t!=="float32"||r==="complex64")&&(t!=="int32"||r==="float32"||r==="complex64")&&(t!=="bool"||r!=="bool")}function jt(r){return r instanceof Float32Array||r instanceof Int32Array||r instanceof Uint8Array}function wu(r){if(r==="float32"||r==="int32")return 4;if(r==="complex64")return 8;if(r==="bool")return 1;throw new Error("Unknown dtype "+r)}function Ef(r){if(r==null)return 0;var t=0;return r.forEach(function(e){return t+=e.length}),t}function ri(r){return typeof r=="string"||r instanceof String}function Rf(r){return typeof r=="boolean"}function kf(r){return typeof r=="number"}function Or(r){return Array.isArray(r)?Or(r[0]):r instanceof Float32Array?"float32":r instanceof Int32Array||r instanceof Uint8Array?"int32":kf(r)?"float32":ri(r)?"string":Rf(r)?"bool":"float32"}function Fo(r){return!!(r&&r.constructor&&r.call&&r.apply)}function Po(r,t){for(var e=t;e<r;++e)if(r%e==0)return e;return r}function qt(r){var t=r.length;if(t<2)return[];var e=new Array(t-1);e[t-2]=r[t-1];for(var n=t-3;n>=0;--n)e[n]=e[n+1]*r[n+1];return e}function Cu(r,t,e){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(r)&&(r=lr(r)),e&&yf(r,t),function(o,i){return o instanceof Float32Array&&i==="float32"||o instanceof Int32Array&&i==="int32"||o instanceof Uint8Array&&i==="bool"}(r,t))return r;if(t==null||t==="float32"||t==="complex64")return new Float32Array(r);if(t==="int32")return new Int32Array(r);if(t==="bool"){for(var n=new Uint8Array(r.length),a=0;a<n.length;++a)Math.round(r[a])!==0&&(n[a]=1);return n}throw new Error("Unknown data type "+t)}function cs(r,t){if(r.length===0)return t[0];var e=r.reduce(function(n,a){return n*a});if(e===0)return[];if(e!==t.length)throw new Error("["+r+"] does not match the input size.");return function n(a,o,i){var s=new Array;if(o.length===1)for(var u=o[0],c=0;c<u;c++)s[c]=i[a+c];else{u=o[0];var l=o.slice(1),d=l.reduce(function(h,f){return h*f});for(c=0;c<u;c++)s[c]=n(a+c*d,l,i)}return s}(0,r,t)}function Eu(r,t){for(var e=Br(r,t),n=0;n<e.length;n++)e[n]=1;return e}function Br(r,t){if(t==null||t==="float32"||t==="complex64")return new Float32Array(r);if(t==="int32")return new Int32Array(r);if(t==="bool")return new Uint8Array(r);throw new Error("Unknown data type "+t)}function Ut(){return z().platform.now()}function Ru(r){r.forEach(function(t){E(Number.isInteger(t)&&t>=0,function(){return"Tensor must have a shape comprised of positive integers but got shape ["+r+"]."})})}function If(r,t){return t===void 0&&(t="utf-8"),t=t||"utf-8",z().platform.encode(r,t)}function ca(r,t){return t===void 0&&(t="utf-8"),t=t||"utf-8",z().platform.decode(r,t)}function ls(r,t,e){if(t===0)return 0;if(t===1)return r[0];for(var n=r[r.length-1],a=0;a<r.length-1;++a)n+=e[a]*r[a];return n}function Sf(r,t,e){if(t===0)return[];if(t===1)return[r];for(var n=new Array(t),a=0;a<n.length-1;++a)n[a]=Math.floor(r/e[a]),r-=n[a]*e[a];return n[n.length-1]=r,n}var Af=function(){function r(t,e){this.backendTimer=t,this.logger=e,e==null&&(this.logger=new Df)}return r.prototype.profileKernel=function(t,e,n){var a,o=this,i=this.backendTimer.time(function(){a=n()});return a.forEach(function(s){s.data().then(function(u){(function(c,l,d){if(l!=="float32")return!1;for(var h=0;h<c.length;h++){var f=c[h];if(isNaN(f)||!isFinite(f))return console.warn("Found "+f+" in the result of '"+d+"'"),!0}})(u,s.dtype,t),i.then(function(c){var l="";c.getExtraProfileInfo!=null&&(l=c.getExtraProfileInfo()),o.logger.logKernelProfile(t,s,u,c.kernelMs,e,l)})})}),a},r}(),Df=function(){function r(){}return r.prototype.logKernelProfile=function(t,e,n,a,o,i){var s=typeof a=="number"?nr(a+"ms",9):a.error,u=nr(t,25),c=e.rank,l=e.size,d=nr(e.shape.toString(),14),h="";for(var f in o){var p=o[f].shape||e.shape,v=p.length;h+=f+": "+v+"D "+(v>0?p:"")+" "}console.log("%c"+u+"	%c"+s+"	%c"+c+"D "+d+"	%c"+l+"	%c"+h+"	%c"+i,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")},r}(),ds=20,xr=3,to=7;function Tf(r,t,e,n){var a=qt(t),o=function(c,l,d,h){var f=ae(l),p=h[h.length-1],v=new Array(p).fill(0),m=l.length,g=d==="complex64"?yr(c):c;if(m>1)for(var x=0;x<f/p;x++)for(var b=x*p,_=0;_<p;_++)v[_]=Math.max(v[_],br(g[b+_],0,d).length);return v}(r,t,e,a),i=t.length,s=function c(l,d,h,f,p,v){v===void 0&&(v=!0);var m=h==="complex64"?2:1,g=d[0],x=d.length;if(x===0)return h==="complex64"?[br(yr(l)[0],0,h)]:h==="bool"?[ku(l[0])]:[l[0].toString()];if(x===1){if(g>ds){var b=xr*m,_=Array.from(l.slice(0,b)),y=Array.from(l.slice((g-xr)*m,g*m));return h==="complex64"&&(_=yr(_),y=yr(y)),["["+_.map(function(W,H){return br(W,p[H],h)}).join(", ")+", ..., "+y.map(function(W,H){return br(W,p[g-xr+H],h)}).join(", ")+"]"]}return["["+(h==="complex64"?yr(l):Array.from(l)).map(function(W,H){return br(W,p[H],h)}).join(", ")+"]"]}var w=d.slice(1),S=f.slice(1),I=f[0]*m,k=[];if(g>ds){for(var R=0;R<xr;R++){var N=(D=R*I)+I;k.push.apply(k,c(l.slice(D,N),w,h,S,p,!1))}for(k.push("..."),R=g-xr;R<g;R++)N=(D=R*I)+I,k.push.apply(k,c(l.slice(D,N),w,h,S,p,R===g-1))}else for(R=0;R<g;R++){var D;N=(D=R*I)+I,k.push.apply(k,c(l.slice(D,N),w,h,S,p,R===g-1))}var V=x===2?",":"";for(k[0]="["+k[0]+V,R=1;R<k.length-1;R++)k[R]=" "+k[R]+V;var L=`,
`;for(R=2;R<x;R++)L+=`
`;return k[k.length-1]=" "+k[k.length-1]+"]"+(v?"":L),k}(r,t,e,a,o),u=["Tensor"];return n&&(u.push("  dtype: "+e),u.push("  rank: "+i),u.push("  shape: ["+t+"]"),u.push("  values:")),u.push(s.map(function(c){return"    "+c}).join(`
`)),u.join(`
`)}function br(r,t,e){return nr(Array.isArray(r)?parseFloat(r[0].toFixed(to))+" + "+parseFloat(r[1].toFixed(to))+"j":ri(r)?"'"+r+"'":e==="bool"?ku(r):parseFloat(r.toFixed(to)).toString(),t)}function ku(r){return r===0?"false":"true"}function yr(r){for(var t=[],e=0;e<r.length;e+=2)t.push([r[e],r[e+1]]);return t}var Ir=function(){function r(t,e,n){var a=this;if(this.dtype=e,this.shape=t.slice(),this.size=ae(t),n!=null){var o=n.length;E(o===this.size,function(){return"Length of values '"+o+"' does not match the size inferred by the shape '"+a.size+"'."})}if(e==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||ua(e,this.size),this.strides=qt(t)}return r.prototype.set=function(t){for(var e=this,n=[],a=1;a<arguments.length;a++)n[a-1]=arguments[a];n.length===0&&(n=[0]),E(n.length===this.rank,function(){return"The number of provided coordinates ("+n.length+") must match the rank ("+e.rank+")"});var o=this.locToIndex(n);this.values[o]=t},r.prototype.get=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];t.length===0&&(t=[0]);for(var n=0,a=0,o=t;a<o.length;a++){var i=o[a];if(i<0||i>=this.shape[n]){var s="Requested out of range element at "+t+".   Buffer shape="+this.shape;throw new Error(s)}n++}for(var u=t[t.length-1],c=0;c<t.length-1;++c)u+=this.strides[c]*t[c];return this.values[u]},r.prototype.locToIndex=function(t){if(this.rank===0)return 0;if(this.rank===1)return t[0];for(var e=t[t.length-1],n=0;n<t.length-1;++n)e+=this.strides[n]*t[n];return e},r.prototype.indexToLoc=function(t){if(this.rank===0)return[];if(this.rank===1)return[t];for(var e=new Array(this.shape.length),n=0;n<e.length-1;++n)e[n]=Math.floor(t/this.strides[n]),t-=e[n]*this.strides[n];return e[e.length-1]=t,e},Object.defineProperty(r.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),r.prototype.toTensor=function(){return Gt().makeTensor(this.values,this.shape,this.dtype)},r}(),Gt=null,B=null,Iu=null,Oe=function(){function r(t,e,n,a){this.kept=!1,this.isDisposedInternal=!1,this.shape=t.slice(),this.dtype=e||"float32",this.size=ae(t),this.strides=qt(t),this.dataId=n,this.id=a,this.rankType=this.rank<5?this.rank.toString():"higher"}return r.prototype.flatten=function(){return this.throwIfDisposed(),this.as1D()},r.prototype.asScalar=function(){return this.throwIfDisposed(),E(this.size===1,function(){return"The array must have only 1 element."}),this.reshape([])},r.prototype.as1D=function(){return this.throwIfDisposed(),this.reshape([this.size])},r.prototype.as2D=function(t,e){return this.throwIfDisposed(),this.reshape([t,e])},r.prototype.as3D=function(t,e,n){return this.throwIfDisposed(),this.reshape([t,e,n])},r.prototype.as4D=function(t,e,n,a){return this.throwIfDisposed(),this.reshape([t,e,n,a])},r.prototype.as5D=function(t,e,n,a,o){return this.throwIfDisposed(),this.reshape([t,e,n,a,o])},r.prototype.asType=function(t){return this.throwIfDisposed(),B.cast(this,t)},Object.defineProperty(r.prototype,"rank",{get:function(){return this.shape.length},enumerable:!0,configurable:!0}),r.prototype.buffer=function(){return ne(this,void 0,void 0,function(){var t;return re(this,function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,B.buffer(this.shape,this.dtype,t)]}})})},r.prototype.bufferSync=function(){return B.buffer(this.shape,this.dtype,this.dataSync())},r.prototype.array=function(){return ne(this,void 0,void 0,function(){var t;return re(this,function(e){switch(e.label){case 0:return[4,this.data()];case 1:return t=e.sent(),[2,cs(this.shape,t)]}})})},r.prototype.arraySync=function(){return cs(this.shape,this.dataSync())},r.prototype.data=function(){return ne(this,void 0,void 0,function(){var t,e;return re(this,function(n){switch(n.label){case 0:return this.throwIfDisposed(),t=Gt().read(this.dataId),this.dtype!=="string"?[3,2]:[4,t];case 1:e=n.sent();try{return[2,e.map(function(a){return ca(a)})]}catch{throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}n.label=2;case 2:return[2,t]}})})},r.prototype.dataSync=function(){this.throwIfDisposed();var t=Gt().readSync(this.dataId);if(this.dtype==="string")try{return t.map(function(e){return ca(e)})}catch{throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return t},r.prototype.bytes=function(){return ne(this,void 0,void 0,function(){var t;return re(this,function(e){switch(e.label){case 0:return this.throwIfDisposed(),[4,Gt().read(this.dataId)];case 1:return t=e.sent(),this.dtype==="string"?[2,t]:[2,new Uint8Array(t.buffer)]}})})},r.prototype.dispose=function(){this.isDisposed||(Gt().disposeTensor(this),this.isDisposedInternal=!0)},Object.defineProperty(r.prototype,"isDisposed",{get:function(){return this.isDisposedInternal},enumerable:!0,configurable:!0}),r.prototype.throwIfDisposed=function(){if(this.isDisposed)throw new Error("Tensor is disposed.")},r.prototype.toFloat=function(){return this.asType("float32")},r.prototype.toInt=function(){return this.asType("int32")},r.prototype.toBool=function(){return this.asType("bool")},r.prototype.print=function(t){return t===void 0&&(t=!1),B.print(this,t)},r.prototype.reshape=function(t){return this.throwIfDisposed(),B.reshape(this,t)},r.prototype.reshapeAs=function(t){return this.throwIfDisposed(),this.reshape(t.shape)},r.prototype.expandDims=function(t){return t===void 0&&(t=0),B.expandDims(this,t)},r.prototype.cumsum=function(t,e,n){return t===void 0&&(t=0),e===void 0&&(e=!1),n===void 0&&(n=!1),B.cumsum(this,t,e,n)},r.prototype.squeeze=function(t){return this.throwIfDisposed(),B.squeeze(this,t)},r.prototype.clone=function(){return this.throwIfDisposed(),B.clone(this)},r.prototype.oneHot=function(t,e,n){return this.throwIfDisposed(),B.oneHot(this,t,e,n)},r.prototype.toString=function(t){return t===void 0&&(t=!1),Tf(this.dataSync(),this.shape,this.dtype,t)},r.prototype.tile=function(t){return this.throwIfDisposed(),B.tile(this,t)},r.prototype.gather=function(t,e){return e===void 0&&(e=0),this.throwIfDisposed(),B.gather(this,t,e)},r.prototype.matMul=function(t,e,n){return e===void 0&&(e=!1),n===void 0&&(n=!1),this.throwIfDisposed(),B.matMul(this,t,e,n)},r.prototype.dot=function(t){return this.throwIfDisposed(),B.dot(this,t)},r.prototype.norm=function(t,e,n){return t===void 0&&(t="euclidean"),e===void 0&&(e=null),n===void 0&&(n=!1),this.throwIfDisposed(),B.norm(this,t,e,n)},r.prototype.slice=function(t,e){return this.throwIfDisposed(),B.slice(this,t,e)},r.prototype.reverse=function(t){return this.throwIfDisposed(),B.reverse(this,t)},r.prototype.concat=function(t,e){return e===void 0&&(e=0),this.throwIfDisposed(),t instanceof r&&(t=[t]),B.concat([this].concat(t),e)},r.prototype.split=function(t,e){return e===void 0&&(e=0),this.throwIfDisposed(),B.split(this,t,e)},r.prototype.stack=function(t,e){return e===void 0&&(e=0),B.stack([this,t],e)},r.prototype.unstack=function(t){return t===void 0&&(t=0),B.unstack(this,t)},r.prototype.pad=function(t,e){return e===void 0&&(e=0),B.pad(this,t,e)},r.prototype.batchNormalization=function(t,e,n,a,o){return n===void 0&&(n=.001),Iu("tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon"),this.batchNorm(t,e,o,a,n)},r.prototype.batchNorm=function(t,e,n,a,o){return o===void 0&&(o=.001),this.throwIfDisposed(),B.batchNorm(this,t,e,n,a,o)},r.prototype.all=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),B.all(this,t,e)},r.prototype.any=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),B.any(this,t,e)},r.prototype.logSumExp=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),B.logSumExp(this,t,e)},r.prototype.sum=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),B.sum(this,t,e)},r.prototype.prod=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),B.prod(this,t,e)},r.prototype.mean=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),B.mean(this,t,e)},r.prototype.min=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),B.min(this,t,e)},r.prototype.max=function(t,e){return t===void 0&&(t=null),e===void 0&&(e=!1),this.throwIfDisposed(),B.max(this,t,e)},r.prototype.argMin=function(t){return t===void 0&&(t=null),this.throwIfDisposed(),B.argMin(this,t)},r.prototype.argMax=function(t){return t===void 0&&(t=null),this.throwIfDisposed(),B.argMax(this,t)},r.prototype.cast=function(t){return this.throwIfDisposed(),B.cast(this,t)},r.prototype.add=function(t){return this.throwIfDisposed(),B.add(this,t)},r.prototype.addStrict=function(t){return this.throwIfDisposed(),B.addStrict(this,t)},r.prototype.atan2=function(t){return this.throwIfDisposed(),B.atan2(this,t)},r.prototype.sub=function(t){return this.throwIfDisposed(),B.sub(this,t)},r.prototype.subStrict=function(t){return this.throwIfDisposed(),B.subStrict(this,t)},r.prototype.pow=function(t){return this.throwIfDisposed(),B.pow(this,t)},r.prototype.powStrict=function(t){return this.throwIfDisposed(),B.powStrict(this,t)},r.prototype.mul=function(t){return this.throwIfDisposed(),B.mul(this,t)},r.prototype.mulStrict=function(t){return this.throwIfDisposed(),B.mulStrict(this,t)},r.prototype.div=function(t){return this.throwIfDisposed(),B.div(this,t)},r.prototype.divNoNan=function(t){return this.throwIfDisposed(),B.divNoNan(this,t)},r.prototype.floorDiv=function(t){return this.throwIfDisposed(),B.floorDiv(this,t)},r.prototype.divStrict=function(t){return this.throwIfDisposed(),B.divStrict(this,t)},r.prototype.minimum=function(t){return this.throwIfDisposed(),B.minimum(this,t)},r.prototype.minimumStrict=function(t){return this.throwIfDisposed(),B.minimumStrict(this,t)},r.prototype.maximum=function(t){return this.throwIfDisposed(),B.maximum(this,t)},r.prototype.maximumStrict=function(t){return this.throwIfDisposed(),B.maximumStrict(this,t)},r.prototype.mod=function(t){return this.throwIfDisposed(),B.mod(this,t)},r.prototype.modStrict=function(t){return this.throwIfDisposed(),B.modStrict(this,t)},r.prototype.squaredDifferenceStrict=function(t){return this.throwIfDisposed(),B.squaredDifferenceStrict(this,t)},r.prototype.transpose=function(t){return this.throwIfDisposed(),B.transpose(this,t)},r.prototype.notEqual=function(t){return this.throwIfDisposed(),B.notEqual(this,t)},r.prototype.notEqualStrict=function(t){return this.throwIfDisposed(),B.notEqualStrict(this,t)},r.prototype.less=function(t){return this.throwIfDisposed(),B.less(this,t)},r.prototype.lessStrict=function(t){return this.throwIfDisposed(),B.lessStrict(this,t)},r.prototype.equal=function(t){return this.throwIfDisposed(),B.equal(this,t)},r.prototype.equalStrict=function(t){return this.throwIfDisposed(),B.equalStrict(this,t)},r.prototype.lessEqual=function(t){return this.throwIfDisposed(),B.lessEqual(this,t)},r.prototype.lessEqualStrict=function(t){return this.throwIfDisposed(),B.lessEqualStrict(this,t)},r.prototype.greater=function(t){return this.throwIfDisposed(),B.greater(this,t)},r.prototype.greaterStrict=function(t){return this.throwIfDisposed(),B.greaterStrict(this,t)},r.prototype.greaterEqual=function(t){return this.throwIfDisposed(),B.greaterEqual(this,t)},r.prototype.greaterEqualStrict=function(t){return this.throwIfDisposed(),B.greaterEqualStrict(this,t)},r.prototype.logicalAnd=function(t){return this.throwIfDisposed(),B.logicalAnd(this,t)},r.prototype.logicalOr=function(t){return this.throwIfDisposed(),B.logicalOr(this,t)},r.prototype.logicalNot=function(){return this.throwIfDisposed(),B.logicalNot(this)},r.prototype.logicalXor=function(t){return this.throwIfDisposed(),B.logicalXor(this,t)},r.prototype.where=function(t,e){return this.throwIfDisposed(),B.where(t,this,e)},r.prototype.neg=function(){return this.throwIfDisposed(),B.neg(this)},r.prototype.ceil=function(){return this.throwIfDisposed(),B.ceil(this)},r.prototype.floor=function(){return this.throwIfDisposed(),B.floor(this)},r.prototype.sign=function(){return this.throwIfDisposed(),B.sign(this)},r.prototype.isNaN=function(){return this.throwIfDisposed(),B.isNaN(this)},r.prototype.isInf=function(){return this.throwIfDisposed(),B.isInf(this)},r.prototype.isFinite=function(){return this.throwIfDisposed(),B.isFinite(this)},r.prototype.exp=function(){return this.throwIfDisposed(),B.exp(this)},r.prototype.expm1=function(){return this.throwIfDisposed(),B.expm1(this)},r.prototype.log=function(){return this.throwIfDisposed(),B.log(this)},r.prototype.log1p=function(){return this.throwIfDisposed(),B.log1p(this)},r.prototype.sqrt=function(){return this.throwIfDisposed(),B.sqrt(this)},r.prototype.rsqrt=function(){return this.throwIfDisposed(),B.rsqrt(this)},r.prototype.square=function(){return this.throwIfDisposed(),B.square(this)},r.prototype.reciprocal=function(){return this.throwIfDisposed(),B.reciprocal(this)},r.prototype.abs=function(){return this.throwIfDisposed(),B.abs(this)},r.prototype.clipByValue=function(t,e){return this.throwIfDisposed(),B.clipByValue(this,t,e)},r.prototype.relu=function(){return this.throwIfDisposed(),B.relu(this)},r.prototype.relu6=function(){return this.throwIfDisposed(),B.relu6(this)},r.prototype.elu=function(){return this.throwIfDisposed(),B.elu(this)},r.prototype.selu=function(){return this.throwIfDisposed(),B.selu(this)},r.prototype.leakyRelu=function(t){return t===void 0&&(t=.2),this.throwIfDisposed(),B.leakyRelu(this,t)},r.prototype.prelu=function(t){return this.throwIfDisposed(),B.prelu(this,t)},r.prototype.sigmoid=function(){return this.throwIfDisposed(),B.sigmoid(this)},r.prototype.logSigmoid=function(){return this.throwIfDisposed(),B.logSigmoid(this)},r.prototype.softplus=function(){return this.throwIfDisposed(),B.softplus(this)},r.prototype.zerosLike=function(){return this.throwIfDisposed(),B.zerosLike(this)},r.prototype.onesLike=function(){return this.throwIfDisposed(),B.onesLike(this)},r.prototype.sin=function(){return this.throwIfDisposed(),B.sin(this)},r.prototype.cos=function(){return this.throwIfDisposed(),B.cos(this)},r.prototype.tan=function(){return this.throwIfDisposed(),B.tan(this)},r.prototype.asin=function(){return this.throwIfDisposed(),B.asin(this)},r.prototype.acos=function(){return this.throwIfDisposed(),B.acos(this)},r.prototype.atan=function(){return this.throwIfDisposed(),B.atan(this)},r.prototype.sinh=function(){return this.throwIfDisposed(),B.sinh(this)},r.prototype.cosh=function(){return this.throwIfDisposed(),B.cosh(this)},r.prototype.tanh=function(){return this.throwIfDisposed(),B.tanh(this)},r.prototype.asinh=function(){return this.throwIfDisposed(),B.asinh(this)},r.prototype.acosh=function(){return this.throwIfDisposed(),B.acosh(this)},r.prototype.atanh=function(){return this.throwIfDisposed(),B.atanh(this)},r.prototype.erf=function(){return this.throwIfDisposed(),B.erf(this)},r.prototype.round=function(){return this.throwIfDisposed(),B.round(this)},r.prototype.step=function(t){return t===void 0&&(t=0),this.throwIfDisposed(),B.step(this,t)},r.prototype.softmax=function(t){return t===void 0&&(t=-1),this.throwIfDisposed(),B.softmax(this,t)},r.prototype.logSoftmax=function(t){return t===void 0&&(t=-1),this.throwIfDisposed(),B.logSoftmax(this,t)},r.prototype.resizeBilinear=function(t,e){return e===void 0&&(e=!1),this.throwIfDisposed(),B.image.resizeBilinear(this,t,e)},r.prototype.resizeNearestNeighbor=function(t,e){return e===void 0&&(e=!1),this.throwIfDisposed(),B.image.resizeNearestNeighbor(this,t,e)},r.prototype.conv1d=function(t,e,n,a,o,i){return a===void 0&&(a="NWC"),o===void 0&&(o=1),this.throwIfDisposed(),B.conv1d(this,t,e,n,a,o,i)},r.prototype.conv2d=function(t,e,n,a,o,i){return a===void 0&&(a="NHWC"),o===void 0&&(o=[1,1]),this.throwIfDisposed(),B.conv2d(this,t,e,n,a,o,i)},r.prototype.conv2dTranspose=function(t,e,n,a,o){return this.throwIfDisposed(),B.conv2dTranspose(this,t,e,n,a,o)},r.prototype.depthwiseConv2D=function(t,e,n,a,o,i){return a===void 0&&(a="NHWC"),o===void 0&&(o=[1,1]),this.throwIfDisposed(),B.depthwiseConv2d(this,t,e,n,a,o,i)},r.prototype.separableConv2d=function(t,e,n,a,o,i){return o===void 0&&(o=[1,1]),i===void 0&&(i="NHWC"),this.throwIfDisposed(),B.separableConv2d(this,t,e,n,a,o,i)},r.prototype.avgPool=function(t,e,n,a){return this.throwIfDisposed(),B.avgPool(this,t,e,n,a)},r.prototype.maxPool=function(t,e,n,a){return this.throwIfDisposed(),B.maxPool(this,t,e,n,a)},r.prototype.localResponseNormalization=function(t,e,n,a){return t===void 0&&(t=5),e===void 0&&(e=1),n===void 0&&(n=1),a===void 0&&(a=.5),B.localResponseNormalization(this,t,e,n,a)},r.prototype.pool=function(t,e,n,a,o){return this.throwIfDisposed(),B.pool(this,t,e,n,a,o)},r.prototype.variable=function(t,e,n){return t===void 0&&(t=!0),this.throwIfDisposed(),Gt().makeVariable(this,t,e,n)},r.prototype.unsortedSegmentSum=function(t,e){return this.throwIfDisposed(),B.unsortedSegmentSum(this,t,e)},r.prototype.batchToSpaceND=function(t,e){return this.throwIfDisposed(),B.batchToSpaceND(this,t,e)},r.prototype.spaceToBatchND=function(t,e){return this.throwIfDisposed(),B.spaceToBatchND(this,t,e)},r.prototype.topk=function(t,e){return t===void 0&&(t=1),e===void 0&&(e=!0),this.throwIfDisposed(),B.topk(this,t,e)},r.prototype.stridedSlice=function(t,e,n,a,o,i,s,u){return a===void 0&&(a=0),o===void 0&&(o=0),i===void 0&&(i=0),s===void 0&&(s=0),u===void 0&&(u=0),this.throwIfDisposed(),B.stridedSlice(this,t,e,n,a,o,i,s,u)},r.prototype.depthToSpace=function(t,e){return this.throwIfDisposed(),B.depthToSpace(this,t,e)},r.prototype.fft=function(){return this.throwIfDisposed(),B.spectral.fft(this)},r.prototype.ifft=function(){return this.throwIfDisposed(),B.spectral.ifft(this)},r.prototype.rfft=function(){return this.throwIfDisposed(),B.spectral.rfft(this)},r.prototype.irfft=function(){return this.throwIfDisposed(),B.spectral.irfft(this)},r}();Object.defineProperty(Oe,Symbol.hasInstance,{value:function(r){return!!r&&r.dataId!=null&&r.shape!=null&&r.dtype!=null}});var hs,Mo,Oo,Bo,Lo,dr=function(r){function t(e,n,a,o){var i=r.call(this,e.shape,e.dtype,e.dataId,o)||this;return i.trainable=n,i.name=a,i}return Mt(t,r),t.prototype.assign=function(e){if(e.dtype!==this.dtype)throw new Error("dtype of the new value ("+e.dtype+") and previous value ("+this.dtype+") must match");if(!Qe(e.shape,this.shape))throw new Error("shape of the new value ("+e.shape+") and previous value ("+this.shape+") must match");Gt().disposeTensor(this),this.dataId=e.dataId,Gt().incRef(this,null)},t.prototype.dispose=function(){Gt().disposeVariable(this),this.isDisposedInternal=!0},t}(Oe);Object.defineProperty(dr,Symbol.hasInstance,{value:function(r){return r instanceof Oe&&r.assign!=null&&r.assign instanceof Function}}),function(r){r.R0="R0",r.R1="R1",r.R2="R2",r.R3="R3",r.R4="R4",r.R5="R5",r.R6="R6"}(hs||(hs={})),function(r){r.float32="float32",r.int32="int32",r.bool="int32",r.complex64="complex64"}(Mo||(Mo={})),function(r){r.float32="float32",r.int32="int32",r.bool="bool",r.complex64="complex64"}(Oo||(Oo={})),function(r){r.float32="float32",r.int32="float32",r.bool="float32",r.complex64="complex64"}(Bo||(Bo={})),function(r){r.float32="complex64",r.int32="complex64",r.bool="complex64",r.complex64="complex64"}(Lo||(Lo={}));var Nf={float32:Bo,int32:Mo,bool:Oo,complex64:Lo};function nt(r,t){if(r==="string"||t==="string"){if(r==="string"&&t==="string")return"string";throw new Error("Can not upcast "+r+" with "+t)}return Nf[r][t]}function no(r){return nt(r,"int32")}function Le(r,t){if(r.dtype===t.dtype)return[r,t];var e=nt(r.dtype,t.dtype);return[r.cast(e),t.cast(e)]}function Ff(r,t){E(r.dtype===t.dtype,function(){return"The dtypes of the first("+r.dtype+") and second("+t.dtype+") input must match"})}function Su(r){var t=[];return function e(n,a,o){if(n!=null){if(n instanceof Oe)return void a.push(n);if(i=n,!(!Array.isArray(i)&&typeof i!="object")){var i,s=n;for(var u in s){var c=s[u];o.has(c)||(o.add(c),e(c,a,o))}}}}(r,t,new Set),t}var ro,fs=function(){function r(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null}}return r.prototype.dispose=function(){for(var t in this.registeredVariables)this.registeredVariables[t].dispose()},r}(),Pf=function(){function r(t){this.ENV=t,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new fs}return r.prototype.ready=function(){return ne(this,void 0,void 0,function(){var t,e,n;return re(this,function(a){switch(a.label){case 0:if(this.pendingBackendInit!=null)return[2,this.pendingBackendInit.then(function(){})];if(this.backendInstance!=null)return[2];t=this.getSortedBackends(),e=0,a.label=1;case 1:return e<t.length?(n=t[e],[4,this.initializeBackend(n).success]):[3,5];case 2:return a.sent()?[4,this.setBackend(n)]:[3,4];case 3:return a.sent(),[2];case 4:return e++,[3,1];case 5:throw new Error("Could not initialize any backends, all backend initializations failed.")}})})},Object.defineProperty(r.prototype,"backend",{get:function(){if(this.pendingBackendInit!=null)throw new Error("Backend '"+this.backendName+"' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods");if(this.backendInstance==null){var t=this.initializeBackendsAndReturnBest(),e=t.name;if(t.asyncInit)throw new Error("The highest priority backend '"+e+"' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods");this.setBackend(e)}return this.backendInstance},enumerable:!0,configurable:!0}),r.prototype.backendNames=function(){return Object.keys(this.registryFactory)},r.prototype.findBackend=function(t){return!(t in this.registry)&&(!(t in this.registryFactory)||this.initializeBackend(t).asyncInit)?null:this.registry[t]},r.prototype.findBackendFactory=function(t){return t in this.registryFactory?this.registryFactory[t].factory:null},r.prototype.registerBackend=function(t,e,n){return n===void 0&&(n=1),t in this.registryFactory?(console.warn(t+" backend was already registered. Reusing existing backend factory."),!1):(this.registryFactory[t]={factory:e,priority:n},!0)},r.prototype.setBackend=function(t){return ne(this,void 0,void 0,function(){var e,n,a;return re(this,function(o){switch(o.label){case 0:if(this.registryFactory[t]==null)throw new Error("Backend name '"+t+"' not found in registry");return this.backendName=t,this.registry[t]!=null?[3,4]:(this.backendInstance=null,e=this.initializeBackend(t),n=e.success,e.asyncInit?[4,n]:[3,2]);case 1:return a=o.sent(),[3,3];case 2:a=n,o.label=3;case 3:if(!a)return[2,!1];o.label=4;case 4:return this.backendInstance=this.registry[t],this.setupRegisteredKernels(),this.profiler=new Af(this.backendInstance),[2,!0]}})})},r.prototype.setupRegisteredKernels=function(){var t=this;ss(this.backendName).forEach(function(e){e.setupFunc!=null&&e.setupFunc(t.backendInstance)})},r.prototype.disposeRegisteredKernels=function(t){var e=this;ss(t).forEach(function(n){n.disposeFunc!=null&&n.disposeFunc(e.registry[t])})},r.prototype.initializeBackend=function(t){var e=this,n=this.registryFactory[t];if(n==null)throw new Error("Cannot initialize backend "+t+", no registration found.");try{var a=n.factory();if(Promise.resolve(a)===a){var o=++this.pendingBackendInitId,i=a.then(function(s){return!(o<e.pendingBackendInitId)&&(e.registry[t]=s,e.pendingBackendInit=null,!0)}).catch(function(s){return!(o<e.pendingBackendInitId)&&(e.pendingBackendInit=null,console.warn("Initialization of backend "+t+" failed"),console.warn(s.stack||s.message),!1)});return this.pendingBackendInit=i,{success:i,asyncInit:!0}}return this.registry[t]=a,{success:!0,asyncInit:!1}}catch(s){return console.warn("Initialization of backend "+t+" failed"),console.warn(s.stack||s.message),{success:!1,asyncInit:!1}}},r.prototype.removeBackend=function(t){if(!(t in this.registryFactory))throw new Error(t+" backend not found in registry");this.backendName===t&&this.pendingBackendInit!=null&&this.pendingBackendInitId++,t in this.registry&&(this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t]),delete this.registryFactory[t],this.backendName===t&&(this.pendingBackendInit=null,this.backendName=null,this.backendInstance=null)},r.prototype.getSortedBackends=function(){var t=this;if(Object.keys(this.registryFactory).length===0)throw new Error("No backend found in registry.");return Object.keys(this.registryFactory).sort(function(e,n){return t.registryFactory[n].priority-t.registryFactory[e].priority})},r.prototype.initializeBackendsAndReturnBest=function(){for(var t=this.getSortedBackends(),e=0;e<t.length;e++){var n=t[e],a=this.initializeBackend(n),o=a.success,i=a.asyncInit;if(i||o)return{name:n,asyncInit:i}}throw new Error("Could not initialize any backends, all backend initializations failed.")},r.prototype.moveData=function(t,e){var n=this.state.tensorInfo.get(e),a=n.backend,o=this.readSync(e);a.disposeData(e),n.backend=t,t.move(e,o,n.shape,n.dtype),this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack[this.state.numDataMovesStack.length-1]++},r.prototype.tidy=function(t,e){var n,a=this,o=null;if(e==null){if(typeof t!="function")throw new Error("Please provide a function to tidy()");e=t}else{if(typeof t!="string"&&!(t instanceof String))throw new Error("When calling with two arguments, the first argument to tidy() must be a string");if(typeof e!="function")throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function");o=t}return this.scopedRun(function(){return a.startScope(o)},function(){return a.endScope(n)},function(){return(n=e())instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),n})},r.prototype.scopedRun=function(t,e,n){t();try{var a=n();return e(),a}catch(o){throw e(),o}},r.prototype.nextTensorId=function(){return r.nextTensorId++},r.prototype.nextVariableId=function(){return r.nextVariableId++},r.prototype.clone=function(t){var e=this.makeTensorFromDataId(t.dataId,t.shape,t.dtype),n={x:t};return this.addTapeNode(this.state.activeScope.name,n,[e],function(a){return{x:function(){return a.toFloat()}}},[]),e},r.prototype.runKernel=function(t,e,n,a,o){return this.runKernelFunc(null,e,null,t,n,a,o)},r.prototype.shouldCheckForMemLeaks=function(){return this.ENV.getBool("IS_TEST")},r.prototype.checkKernelForMemLeak=function(t,e,n){var a=this.backend.numDataIds(),o=0;n.forEach(function(u){o+=u.dtype==="complex64"?3:1});var i=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],s=a-e-o-i;if(s>0)throw new Error("Backend '"+this.backendName+"' has an internal memory leak ("+s+" data ids) after running '"+t+"'")},r.prototype.runKernelFunc=function(t,e,n,a,o,i,s){var u,c=this;i===void 0&&(i=[]),s===void 0&&(s=[]);var l=[],d=this.isTapeOn();a==null&&(a=this.state.activeScope!=null?this.state.activeScope.name:"");var h,f=function(x){d&&(l=x.map(function(b){return c.keep(c.clone(b))}))},p=this.state.numBytes,v=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);var m,g=_u(a,this.backendName);return h=g!=null?function(){var x=c.backend.numDataIds();m=g.kernelFunc({inputs:e,attrs:o,backend:c.backend});var b=Array.isArray(m)?m:[m];c.shouldCheckForMemLeaks()&&c.checkKernelForMemLeak(a,x,b);var _=b.map(function(w){var S=w.dataId,I=w.shape,k=w.dtype;return c.makeTensorFromDataId(S,I,k)}),y=_.filter(function(w,S){return s[S]});return f((i||[]).slice().concat(y)),_}:function(){var x=c.backend.numDataIds();m=c.tidy(function(){return t(c.backend,f)});var b=Array.isArray(m)?m:[m];return c.shouldCheckForMemLeaks()&&c.checkKernelForMemLeak(a,x,b),b},this.scopedRun(function(){return c.state.kernelDepth++},function(){return c.state.kernelDepth--},function(){u=c.ENV.getBool("DEBUG")?c.profiler.profileKernel(a,e,function(){return h()}):h()}),d&&this.addTapeNode(a,e,u,n,l),this.state.profiling&&this.state.activeProfile.kernels.push({name:a,bytesAdded:this.state.numBytes-p,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-v,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(e).map(function(x){return e[x].shape}),outputShapes:u.map(function(x){return x.shape})}),Array.isArray(m)?u:u[0]},r.prototype.makeTensor=function(t,e,n,a){if(t==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",a=a||this.backend;var o=t;n==="string"&&ri(t[0])&&(o=t.map(function(l){return If(l)}));var i=a.write(o,e,n),s=new Oe(e,n,i,this.nextTensorId());if(this.incRef(s,a),n==="string"){var u=this.state.tensorInfo.get(i),c=Ef(o);this.state.numBytes+=c-u.bytes,u.bytes=c}return s},r.prototype.makeTensorFromDataId=function(t,e,n,a){var o=new Oe(e,n=n||"float32",t,this.nextTensorId());return this.incRef(o,a),o},r.prototype.makeVariable=function(t,e,n,a){e===void 0&&(e=!0),n=n||this.nextVariableId().toString(),a!=null&&a!==t.dtype&&(t=t.asType(a));var o=new dr(t,e,n,this.nextTensorId());if(this.state.registeredVariables[o.name]!=null)throw new Error("Variable with name "+o.name+" was already registered");return this.state.registeredVariables[o.name]=o,this.incRef(o,this.backend),o},r.prototype.incRef=function(t,e){var n=this.state.tensorInfo.has(t.dataId)?this.state.tensorInfo.get(t.dataId).refCount:0;if(this.state.numTensors++,t.dtype==="string"&&this.state.numStringTensors++,n===0){this.state.numDataBuffers++;var a=0;t.dtype!=="complex64"&&t.dtype!=="string"&&(a=t.size*wu(t.dtype)),this.state.tensorInfo.set(t.dataId,{backend:e||this.backend,dtype:t.dtype,shape:t.shape,bytes:a,refCount:0}),this.state.numBytes+=a}this.state.tensorInfo.get(t.dataId).refCount++,t instanceof dr||this.track(t)},r.prototype.disposeTensor=function(t){if(this.state.tensorInfo.has(t.dataId)){this.state.numTensors--,t.dtype==="string"&&this.state.numStringTensors--;var e=this.state.tensorInfo.get(t.dataId);e.refCount<=1?(t.dtype!=="complex64"&&(this.state.numBytes-=e.bytes),this.state.numDataBuffers--,e.backend.disposeData(t.dataId),this.state.tensorInfo.delete(t.dataId)):this.state.tensorInfo.get(t.dataId).refCount--}},r.prototype.disposeVariables=function(){for(var t in this.state.registeredVariables){var e=this.state.registeredVariables[t];this.disposeVariable(e)}},r.prototype.disposeVariable=function(t){this.disposeTensor(t),this.state.registeredVariables[t.name]!=null&&delete this.state.registeredVariables[t.name]},r.prototype.memory=function(){var t=this.backend.memory();return t.numTensors=this.state.numTensors,t.numDataBuffers=this.state.numDataBuffers,t.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(t.unreliable=!0,t.reasons==null&&(t.reasons=[]),t.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),t},r.prototype.profile=function(t){return ne(this,void 0,void 0,function(){var e,n;return re(this,function(a){return this.state.profiling=!0,e=this.state.numBytes,n=this.state.numTensors,this.state.activeProfile.kernels=[],this.state.activeProfile.result=t(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max.apply(Math,this.state.activeProfile.kernels.map(function(o){return o.totalBytesSnapshot})),this.state.activeProfile.newBytes=this.state.numBytes-e,this.state.activeProfile.newTensors=this.state.numTensors-n,[2,this.state.activeProfile]})})},r.prototype.isTapeOn=function(){return this.state.gradientDepth>0&&this.state.kernelDepth===0},r.prototype.addTapeNode=function(t,e,n,a,o){var i=this,s={id:this.state.nextTapeNodeId++,kernelName:t,inputs:e,outputs:n,saved:o},u=mf(t);u!=null&&(a=u.gradFunc),a!=null&&(s.gradient=function(c){return c=c.map(function(l,d){if(l==null){var h=n[d],f=Br(h.size,h.dtype);return i.makeTensor(f,h.shape,h.dtype)}return l}),a(c.length>1?c:c[0],o)}),this.state.activeTape.push(s)},r.prototype.keep=function(t){return t.kept=!0,t},r.prototype.startTape=function(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++},r.prototype.endTape=function(){this.state.gradientDepth--},r.prototype.startScope=function(t){var e={track:[],name:"unnamed scope",id:this.state.nextScopeId++};t&&(e.name=t),this.state.scopeStack.push(e),this.state.activeScope=e},r.prototype.endScope=function(t){for(var e=this,n=Su(t),a=new Set(n.map(function(u){return u.id})),o=0;o<this.state.activeScope.track.length;o++){var i=this.state.activeScope.track[o];i.kept||a.has(i.id)||i.dispose()}var s=this.state.scopeStack.pop();this.state.activeScope=this.state.scopeStack.length===0?null:this.state.scopeStack[this.state.scopeStack.length-1],n.forEach(function(u){u.kept||u.scopeId!==s.id||e.track(u)})},r.prototype.gradients=function(t,e,n,a){var o=this;if(a===void 0&&(a=!1),E(e.length>0,function(){return"gradients() received an empty list of xs."}),n!=null&&n.dtype!=="float32")throw new Error("dy must have 'float32' dtype, but has '"+n.dtype+"'");var i=this.scopedRun(function(){return o.startTape()},function(){return o.endTape()},function(){return o.tidy("forward",t)});E(i instanceof Oe,function(){return"The result y returned by f() must be a tensor."});var s=function(u,c,l){for(var d={},h={},f=0;f<c.length;f++)d[c[f].id]=!0;for(f=0;f<u.length;f++){var p=(w=u[f]).inputs;for(var v in p){for(var m=p[v],g=!1,x=0;x<c.length;x++)if(d[m.id]){w.outputs.forEach(function(R){return d[R.id]=!0}),g=!0,h[w.id]=!0;break}if(g)break}}var b={};b[l.id]=!0;var _={};for(f=u.length-1;f>=0;f--)for(p=(w=u[f]).inputs,x=0;x<w.outputs.length;x++)if(b[w.outputs[x].id]){for(var v in p)b[p[v].id]=!0,_[w.id]=!0;break}var y=[];for(f=0;f<u.length;f++){var w;if(h[(w=u[f]).id]&&_[w.id]){var S={};for(var v in w.inputs){var I=w.inputs[v];d[I.id]&&(S[v]=I)}var k=Object.assign({},w);k.inputs=S,k.outputs=w.outputs,y.push(k)}}return y}(this.state.activeTape,e,i);if(!a&&s.length===0&&e.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",function(){var u,c,l={};l[i.id]=n??(u=i.shape,c=Eu(ae(u),"float32"),T.makeTensor(c,u,"float32")),function(h,f,p){for(var v=function(g){var x=f[g],b=[];if(x.outputs.forEach(function(S){var I=h[S.id];I!=null?b.push(I):b.push(null)}),x.gradient==null)throw new Error("Cannot compute gradient: gradient function not found for "+x.kernelName+".");var _=x.gradient(b),y=function(S){if(!(S in _))throw new Error("Cannot backprop through input "+S+". Available gradients found: "+Object.keys(_)+".");var I=p(function(){return _[S]()});if(I.dtype!=="float32")throw new Error("Error in gradient for op "+x.kernelName+". The gradient of input "+S+" must have 'float32' dtype, but has '"+I.dtype+"'");var k=x.inputs[S];if(!Qe(I.shape,k.shape))throw new Error("Error in gradient for op "+x.kernelName+". The gradient of input '"+S+"' has shape '"+I.shape+"', which does not match the shape of the input '"+k.shape+"'");if(h[k.id]==null)h[k.id]=I;else{var R=h[k.id];h[k.id]=R.add(I),R.dispose()}};for(var w in x.inputs)y(w)},m=f.length-1;m>=0;m--)v(m)}(l,s,function(h){return o.tidy(h)});var d=e.map(function(h){return l[h.id]});return o.state.gradientDepth===0&&(o.state.activeTape.forEach(function(h){for(var f=0,p=h.saved;f<p.length;f++)p[f].dispose()}),o.state.activeTape=null),{value:i,grads:d}})},r.prototype.customGrad=function(t){var e=this;return E(Fo(t),function(){return"The f passed in customGrad(f) must be a function."}),function(){for(var n,a=[],o=0;o<arguments.length;o++)a[o]=arguments[o];E(a.every(function(s){return s instanceof Oe}),function(){return"The args passed in customGrad(f)(x1, x2,...) must all be tensors"});var i={};return a.forEach(function(s,u){i[u]=s}),e.runKernelFunc(function(s,u){return E((n=t.apply(void 0,a.concat([u]))).value instanceof Oe,function(){return"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"}),E(Fo(n.gradFunc),function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."}),n.value},i,function(s,u){var c=n.gradFunc(s,u),l=Array.isArray(c)?c:[c];E(l.length===a.length,function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."}),E(l.every(function(h){return h instanceof Oe}),function(){return"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."});var d={};return l.forEach(function(h,f){d[f]=function(){return h}}),d})}},r.prototype.readSync=function(t){return this.state.tensorInfo.get(t).backend.readSync(t)},r.prototype.read=function(t){return this.state.tensorInfo.get(t).backend.read(t)},r.prototype.time=function(t){return ne(this,void 0,void 0,function(){var e,n;return re(this,function(a){switch(a.label){case 0:return e=Ut(),[4,this.backend.time(t)];case 1:return(n=a.sent()).wallMs=Ut()-e,[2,n]}})})},r.prototype.track=function(t){return this.state.activeScope!=null&&(t.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(t)),t},Object.defineProperty(r.prototype,"registeredVariables",{get:function(){return this.state.registeredVariables},enumerable:!0,configurable:!0}),r.prototype.reset=function(){for(var t in this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new fs,this.registry)this.disposeRegisteredKernels(t),this.registry[t].dispose(),delete this.registry[t];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null},r.nextTensorId=0,r.nextVariableId=0,r}(),T=function(){var r=function(){if(ro==null){var e=void 0;if(typeof window<"u")e=window;else if(typeof global<"u")e=global;else if(typeof process<"u")e=process;else{if(typeof self>"u")throw new Error("Could not find a global object");e=self}ro=e}return ro}();if(r._tfengine==null){var t=new pf(r);r._tfengine=new Pf(t)}return function(e){gu=e}(r._tfengine.ENV),Gt=function(){return r._tfengine},r._tfengine}();function Au(){return typeof window<"u"&&window.document!=null||typeof WorkerGlobalScope<"u"}var rn=z();rn.registerFlag("DEBUG",function(){return!1},function(r){r&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")}),rn.registerFlag("IS_BROWSER",function(){return Au()}),rn.registerFlag("IS_NODE",function(){return typeof process<"u"&&process.versions!==void 0&&process.versions.node!==void 0}),rn.registerFlag("IS_CHROME",function(){return typeof navigator<"u"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}),rn.registerFlag("PROD",function(){return!1}),rn.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",function(){return rn.getBool("DEBUG")}),rn.registerFlag("DEPRECATION_WARNINGS_ENABLED",function(){return!0}),rn.registerFlag("IS_TEST",function(){return!1});var Sr,bt,xt,Tn={},ao={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function Mf(r,t){Tn[r]=t}function Yt(r){r in Tn||(Tn[r]=function(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");var n=function(a){if(typeof OffscreenCanvas<"u"&&a===2)return new OffscreenCanvas(300,150);if(typeof document<"u")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}(e);return n.addEventListener("webglcontextlost",function(a){a.preventDefault(),delete Tn[e]},!1),e===1?n.getContext("webgl",ao)||n.getContext("experimental-webgl",ao):n.getContext("webgl2",ao)}(r));var t=Tn[r];return t.isContextLost()?(delete Tn[r],Yt(r)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),Tn[r])}function Ta(r,t){return[t,r]}function Cr(r){var t=ae(r);return No(Math.ceil(t/4))}function Lr(r,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(r/2))]}function ai(r,t){var e,n,a,o,i,s,u,c,l,d=r;return z().getNumber("WEBGL_VERSION")===2?(e=d.R32F,n=d.R16F,a=d.RGBA16F,o=d.RGBA32F,i=d.RED,s=4,u=1,c=d.HALF_FLOAT,l=d.FLOAT):(e=r.RGBA,n=r.RGBA,a=r.RGBA,o=d.RGBA,i=r.RGBA,s=4,u=4,c=t!=null?t.HALF_FLOAT_OES:null,l=r.FLOAT),{internalFormatFloat:e,internalFormatHalfFloat:n,internalFormatPackedHalfFloat:a,internalFormatPackedFloat:o,textureFormatFloat:i,downloadTextureFormat:r.RGBA,downloadUnpackNumChannels:s,defaultNumChannels:u,textureTypeHalfFloat:c,textureTypeFloat:l}}function oe(r,t,e){var n=e();return t&&function(a){var o=a.getError();if(o!==a.NO_ERROR)throw new Error("WebGL Error: "+Wf(a,o))}(r),n}(function(r){r[r.DENSE=0]="DENSE",r[r.SHARED_BATCH=1]="SHARED_BATCH"})(Sr||(Sr={})),function(r){r[r.RENDER=0]="RENDER",r[r.UPLOAD=1]="UPLOAD",r[r.PIXELS=2]="PIXELS",r[r.DOWNLOAD=3]="DOWNLOAD"}(bt||(bt={})),function(r){r[r.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",r[r.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",r[r.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",r[r.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",r[r.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"}(xt||(xt={}));var Of=596e-10,Bf=65504;function Lf(r){return!!(z().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||r===0||Of<Math.abs(r)&&Math.abs(r)<Bf)}function Wf(r,t){switch(t){case r.NO_ERROR:return"NO_ERROR";case r.INVALID_ENUM:return"INVALID_ENUM";case r.INVALID_VALUE:return"INVALID_VALUE";case r.INVALID_OPERATION:return"INVALID_OPERATION";case r.INVALID_FRAMEBUFFER_OPERATION:return"INVALID_FRAMEBUFFER_OPERATION";case r.OUT_OF_MEMORY:return"OUT_OF_MEMORY";case r.CONTEXT_LOST_WEBGL:return"CONTEXT_LOST_WEBGL";default:return"Unknown error code "+t}}function jr(r,t,e){return un(r,t,function(){return r.getExtension(e)},'Extension "'+e+'" not supported on this browser.')}function Vf(r,t,e){var n=un(r,t,function(){return r.createShader(r.VERTEX_SHADER)},"Unable to create vertex WebGLShader.");if(oe(r,t,function(){return r.shaderSource(n,e)}),oe(r,t,function(){return r.compileShader(n)}),r.getShaderParameter(n,r.COMPILE_STATUS)===!1)throw console.log(r.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function zf(r,t,e){var n=un(r,t,function(){return r.createShader(r.FRAGMENT_SHADER)},"Unable to create fragment WebGLShader.");if(oe(r,t,function(){return r.shaderSource(n,e)}),oe(r,t,function(){return r.compileShader(n)}),r.getShaderParameter(n,r.COMPILE_STATUS)===!1)throw function(a,o){var i=Uf.exec(o);if(i==null)return console.log("Couldn't parse line number in error: "+o),void console.log(a);for(var s=+i[1],u=a.split(`
`),c=u.length.toString().length+2,l=u.map(function(m,g){return nr((g+1).toString(),c)+m}),d=0,h=0;h<l.length;h++)d=Math.max(l[h].length,d);var f=l.slice(0,s-1),p=l.slice(s-1,s),v=l.slice(s);console.log(f.join(`
`)),console.log(o.split(`
`)[0]),console.log("%c "+nr(p[0],d),"border:1px solid red; background-color:#e3d2d2; color:#a61717"),console.log(v.join(`
`))}(e,r.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var oo,io,Uf=/ERROR: [0-9]+:([0-9]+):/g;function Gf(r,t){return un(r,t,function(){return r.createProgram()},"Unable to create WebGLProgram.")}function Hf(r,t,e){if(oe(r,t,function(){return r.linkProgram(e)}),r.getProgramParameter(e,r.LINK_STATUS)===!1)throw console.log(r.getProgramInfoLog(e)),new Error("Failed to link vertex and fragment shaders.")}function so(r,t,e){if(oe(r,t,function(){return r.validateProgram(e)}),r.getProgramParameter(e,r.VALIDATE_STATUS)===!1)throw console.log(r.getProgramInfoLog(e)),new Error("Shader program validation failed.")}function $f(r,t,e){var n=un(r,t,function(){return r.createBuffer()},"Unable to create WebGLBuffer");return oe(r,t,function(){return r.bindBuffer(r.ARRAY_BUFFER,n)}),oe(r,t,function(){return r.bufferData(r.ARRAY_BUFFER,e,r.STATIC_DRAW)}),n}function jf(r,t,e){var n=un(r,t,function(){return r.createBuffer()},"Unable to create WebGLBuffer");return oe(r,t,function(){return r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,n)}),oe(r,t,function(){return r.bufferData(r.ELEMENT_ARRAY_BUFFER,e,r.STATIC_DRAW)}),n}function qf(r,t){return un(r,t,function(){return r.createTexture()},"Unable to create WebGLTexture.")}function Kf(r,t){var e=z().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(r<=0||t<=0){var n="["+r+"x"+t+"]";throw new Error("Requested texture size "+n+" is invalid.")}if(r>e||t>e)throw n="["+r+"x"+t+"]",new Error("Requested texture size "+n+" greater than WebGL maximum on this browser / GPU "+("["+e+"x"+e+"]")+".")}function Xf(r,t){return un(r,t,function(){return r.createFramebuffer()},"Unable to create WebGLFramebuffer.")}function ps(r,t,e,n,a,o,i,s){var u=r.getAttribLocation(e,n);return u!==-1&&(oe(r,t,function(){return r.bindBuffer(r.ARRAY_BUFFER,a)}),oe(r,t,function(){return r.vertexAttribPointer(u,o,r.FLOAT,!1,i,s)}),oe(r,t,function(){return r.enableVertexAttribArray(u)}),!0)}function Yf(r,t,e,n){tp(r,n),oe(r,t,function(){return r.activeTexture(r.TEXTURE0+n)}),oe(r,t,function(){return r.bindTexture(r.TEXTURE_2D,e)})}function Jf(r,t,e,n){return un(r,t,function(){return r.getUniformLocation(e,n)},'uniform "'+n+'" not present in program.')}function Qf(r,t,e){return r.getUniformLocation(t,e)}function Zf(r,t,e,n,a,o){oe(r,t,function(){return Yf(r,t,n,o)}),oe(r,t,function(){return r.uniform1i(a,o)})}function uo(r,t,e,n){oe(r,t,function(){return r.bindFramebuffer(r.FRAMEBUFFER,n)}),oe(r,t,function(){return r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0)})}function vs(r,t,e){oe(r,t,function(){return r.bindFramebuffer(r.FRAMEBUFFER,e)}),oe(r,t,function(){return r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,null,0)})}function qr(r){var t=r.checkFramebufferStatus(r.FRAMEBUFFER);if(t!==r.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+ep(r,t))}function ep(r,t){switch(t){case r.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case r.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case r.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case r.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return"unknown error "+t}}function un(r,t,e,n){var a=oe(r,t,function(){return e()});if(a==null)throw new Error(n);return a}function tp(r,t){var e=r.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,n=t+r.TEXTURE0;if(n<r.TEXTURE0||n>e)throw new Error("textureUnit must be in "+("[gl.TEXTURE0, gl.TEXTURE"+e+"]")+".")}function la(r,t){return t===void 0&&(t=2),ae(r.slice(0,r.length-t))}function da(r){if(r.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[r.length>1?r[r.length-2]:1,r[r.length-1]]}function co(r){var t=[1,1,1];return r.length===0||r.length===1&&r[0]===1||(t=[la(r)].concat(da(r))),t}function np(r,t){var e;t===void 0&&(t=!1);var n=z().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(t&&(n*=2,(r=r.map(function(c,l){return l>=r.length-2?yu(r[l]):r[l]})).length===1&&(r=[2,r[0]])),r.length!==2){var a=Fn(r);r=a.newShape}var o=ae(r);if(r.length<=1&&o<=n)return[1,o];if(r.length===2&&r[0]<=n&&r[1]<=n)return r;if(r.length===3&&r[0]*r[1]<=n&&r[2]<=n)return[r[0]*r[1],r[2]];if(r.length===3&&r[0]<=n&&r[1]*r[2]<=n)return[r[0],r[1]*r[2]];if(r.length===4&&r[0]*r[1]*r[2]<=n&&r[3]<=n)return[r[0]*r[1]*r[2],r[3]];if(r.length===4&&r[0]<=n&&r[1]*r[2]*r[3]<=n)return[r[0],r[1]*r[2]*r[3]];if(t){var i=la(r),s=2,u=2;return r.length&&(s=(e=da(r))[0],u=e[1]),No(o=i*(s/2)*(u/2)).map(function(c){return 2*c})}return No(o)}function Kr(r){return r%2==0}function Xr(r,t){if(Qe(r=r.slice(-2),t=t.slice(-2))||!r.length||!t.length||r[0]===0||r[1]===0||t[0]===0||t[1]===0)return!0;if(r.length!==t.length){var e=r.slice(-1)[0],n=t.slice(-1)[0];if(e===n||Kr(e)&&Kr(n)&&(r[0]===1||t[0]===1))return!0}return r[1]===t[1]&&Kr(r[0])&&Kr(t[0])}function rp(r){if(oo==null){var t=Yt(r);oo=t.getParameter(t.MAX_TEXTURE_SIZE)}return oo}function ap(r){if(io==null){var t=Yt(r);io=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,io)}function op(r){if(r===0)return 0;var t=Yt(r);return kt(t,"EXT_disjoint_timer_query_webgl2")&&r===2?2:kt(t,"EXT_disjoint_timer_query")?1:0}function kt(r,t){return r.getExtension(t)!=null}function ms(r){try{if(Yt(r)!=null)return!0}catch{return!1}return!1}function ip(r){if(r===0)return!1;var t=Yt(r);if(r===1){if(!kt(t,"OES_texture_float"))return!1}else if(!kt(t,"EXT_color_buffer_float"))return!1;return Wo(t)}function sp(r){if(r===0)return!1;var t=Yt(r);if(r!==1){if(kt(t,"EXT_color_buffer_float"))return Wo(t);if(kt(t,"EXT_color_buffer_half_float")){var e=t.getExtension("EXT_color_buffer_half_float");return function(n,a){var o=ai(n,a),i=n.createTexture();n.bindTexture(n.TEXTURE_2D,i),n.texImage2D(n.TEXTURE_2D,0,o.internalFormatHalfFloat,1,1,0,o.textureFormatFloat,o.textureTypeHalfFloat,null);var s=n.createFramebuffer();n.bindFramebuffer(n.FRAMEBUFFER,s),n.framebufferTexture2D(n.FRAMEBUFFER,n.COLOR_ATTACHMENT0,n.TEXTURE_2D,i,0);var u=n.checkFramebufferStatus(n.FRAMEBUFFER)===n.FRAMEBUFFER_COMPLETE;return n.bindTexture(n.TEXTURE_2D,null),n.bindFramebuffer(n.FRAMEBUFFER,null),n.deleteTexture(i),n.deleteFramebuffer(s),u}(t,e)}return!1}return!!kt(t,"OES_texture_float")&&!!kt(t,"WEBGL_color_buffer_float")&&Wo(t)}function Wo(r){var t=ai(r),e=r.createTexture();r.bindTexture(r.TEXTURE_2D,e),r.texImage2D(r.TEXTURE_2D,0,t.internalFormatFloat,1,1,0,t.textureFormatFloat,t.textureTypeFloat,null);var n=r.createFramebuffer();r.bindFramebuffer(r.FRAMEBUFFER,n),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0);var a=r.checkFramebufferStatus(r.FRAMEBUFFER)===r.FRAMEBUFFER_COMPLETE;return r.bindTexture(r.TEXTURE_2D,null),r.bindFramebuffer(r.FRAMEBUFFER,null),r.deleteTexture(e),r.deleteFramebuffer(n),a}function up(r){return r===2&&Yt(r).fenceSync!=null}var le=z();function Du(r){z().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(r+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}function ee(r,t){return T.tidy(r,t)}function pt(r){Su(r).forEach(function(t){return t.dispose()})}function cp(r){return T.keep(r)}function ha(){for(var r=[],t=0;t<arguments.length;t++)r[t]=arguments[t];z().getBool("IS_TEST")||console.warn.apply(console,r)}function En(r,t){var e=r;if(jt(r))return t==="string"?[]:[r.length];if(!Array.isArray(r))return[];for(var n=[];Array.isArray(e)||jt(e)&&t!=="string";)n.push(e.length),e=e[0];return Array.isArray(r)&&z().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&function a(o,i,s){if(s=s||[],!Array.isArray(o)&&!jt(o))return void E(i.length===0,function(){return"Element arr["+s.join("][")+"] is a primitive, but should be an array/TypedArray of "+i[0]+" elements"});E(i.length>0,function(){return"Element arr["+s.join("][")+"] should be a primitive, but is an array of "+o.length+" elements"}),E(o.length===i[0],function(){return"Element arr["+s.join("][")+"] should have "+i[0]+" elements, but has "+o.length+" elements"});for(var u=i.slice(1),c=0;c<o.length;++c)a(o[c],u,s.concat(c))}(r,n,[]),n}function gs(r,t,e,n){if(r!=null&&(r!=="numeric"&&r!==t||r==="numeric"&&t==="string"))throw new Error("Argument '"+e+"' passed to '"+n+"' must be "+r+" tensor, but got "+t+" tensor")}function C(r,t,e,n){if(n===void 0&&(n="numeric"),r instanceof Oe)return gs(n,r.dtype,t,e),r;var a=Or(r);if(a!=="string"&&["bool","int32","float32"].indexOf(n)>=0&&(a=n),gs(n,a,t,e),r==null||!jt(r)&&!Array.isArray(r)&&typeof r!="number"&&typeof r!="boolean"&&typeof r!="string"){var o=r==null?"null":r.constructor.name;throw new Error("Argument '"+t+"' passed to '"+e+"' must be a Tensor or TensorLike, but got '"+o+"'")}var i=En(r,a);jt(r)||Array.isArray(r)||(r=[r]);var s=a!=="string"?Cu(r,a,z().getBool("DEBUG")):lr(r,[],!0);return T.makeTensor(s,i,a)}function fa(r,t,e,n){if(n===void 0&&(n="numeric"),!Array.isArray(r))throw new Error("Argument "+t+" passed to "+e+" must be a `Tensor[]` or `TensorLike[]`");return r.map(function(a,o){return C(a,t+"["+o+"]",e)},n)}function Tu(r,t){for(var e=0;e<r.length;++e)if(r[r.length-e-1]!==t-1-e)return!1;return!0}function lp(r,t,e){for(var n=r.length+t.length,a=[],o=0,i=0,s=0;s<n;s++)e.indexOf(s)===-1?a.push(r[o++]):a.push(t[i++]);return a}function at(r,t){for(var e=[],n=r.length,a=0;a<n;a++)t.indexOf(a)===-1&&e.push(r[a]);return[e,t.map(function(o){return r[o]})]}function vt(r,t){return lp(r,t.map(function(e){return 1}),t)}function _t(r,t,e){E(Tu(t,e),function(){return r+" supports only inner-most axes for now. Got axes "+t+" and rank-"+e+" input."})}function Jt(r,t){if(Tu(r,t))return null;for(var e=[],n=0;n<t;++n)r.indexOf(n)===-1&&e.push(n);return r.forEach(function(a){return e.push(a)}),e}function oi(r){return r.map(function(t,e){return[e,t]}).sort(function(t,e){return t[1]-e[1]}).map(function(t){return t[0]})}function Qt(r,t){for(var e=[],n=t-r;n<t;++n)e.push(n);return e}function dp(r,t){var e=r[0].length;r.forEach(function(a,o){E(a.length===e,function(){return"Error in concat"+e+"D: rank of tensors["+o+"] must be the same as the rank of the rest ("+e+")"})}),E(t>=0&&t<e,function(){return"Error in concat"+e+"D: axis must be between 0 and "+(e-1)+"."});var n=r[0];r.forEach(function(a,o){for(var i=0;i<e;i++)E(i===t||a[i]===n[i],function(){return"Error in concat"+e+"D: Shape of tensors["+o+"] ("+a+") does not match the shape of the rest ("+n+") along the non-concatenated axis "+o+"."})})}function hr(r,t){for(var e=r[0].slice(),n=1;n<r.length;n++)e[t]+=r[n][t];return e}function A(r){var t=Object.keys(r);if(t.length!==1)throw new Error("Please provide an object with a single key (operation name) mapping to a function. Got an object with "+t.length+" keys.");var e=t[0],n=r[e];e.endsWith("_")&&(e=e.substring(0,e.length-1));var a=function(){for(var o=[],i=0;i<arguments.length;i++)o[i]=arguments[i];T.startScope(e);try{var s=n.apply(void 0,o);return s instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),T.endScope(s),s}catch(u){throw T.endScope(null),u}};return Object.defineProperty(a,"name",{value:e,configurable:!0}),a}le.registerFlag("HAS_WEBGL",function(){return le.getNumber("WEBGL_VERSION")>0}),le.registerFlag("WEBGL_VERSION",function(){return ms(2)?2:ms(1)?1:0}),le.registerFlag("WEBGL_BUFFER_SUPPORTED",function(){return le.get("WEBGL_VERSION")===2}),le.registerFlag("WEBGL_CPU_FORWARD",function(){return!0}),le.registerFlag("WEBGL_FORCE_F16_TEXTURES",function(){return!1}),le.registerFlag("WEBGL_PACK",function(){return le.getBool("HAS_WEBGL")}),le.registerFlag("WEBGL_PACK_NORMALIZATION",function(){return le.getBool("WEBGL_PACK")}),le.registerFlag("WEBGL_PACK_CLIP",function(){return le.getBool("WEBGL_PACK")}),le.registerFlag("WEBGL_PACK_DEPTHWISECONV",function(){return!1}),le.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",function(){return le.getBool("WEBGL_PACK")}),le.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",function(){return le.getBool("WEBGL_PACK")}),le.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",function(){return le.getBool("WEBGL_PACK")}),le.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",function(){return le.getBool("WEBGL_PACK")}),le.registerFlag("WEBGL_PACK_REDUCE",function(){return le.getBool("WEBGL_PACK")}),le.registerFlag("WEBGL_LAZILY_UNPACK",function(){return le.getBool("WEBGL_PACK")}),le.registerFlag("WEBGL_CONV_IM2COL",function(){return le.getBool("WEBGL_PACK")}),le.registerFlag("WEBGL_MAX_TEXTURE_SIZE",function(){return rp(le.getNumber("WEBGL_VERSION"))}),le.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",function(){return ap(le.getNumber("WEBGL_VERSION"))}),le.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",function(){var r=le.getNumber("WEBGL_VERSION");return r===0?0:op(r)}),le.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",function(){return le.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&(r=navigator.userAgent||navigator.vendor||window.opera,!(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(r)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(r.substr(0,4))));var r}),le.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",function(){return ip(le.getNumber("WEBGL_VERSION"))}),le.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",function(){return!le.getBool("WEBGL_FORCE_F16_TEXTURES")&&le.getBool("WEBGL_RENDER_FLOAT32_CAPABLE")}),le.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",function(){return sp(le.getNumber("WEBGL_VERSION"))}),le.registerFlag("WEBGL_FENCE_API_ENABLED",function(){return up(le.getNumber("WEBGL_VERSION"))}),le.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",function(){return le.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0}),Iu=Du;var tt=A({complex_:function(r,t){var e=C(r,"real","complex"),n=C(t,"imag","complex");return Ae(e.shape,n.shape,"real and imag shapes, "+e.shape+" and "+n.shape+", must match in call to tf.complex()."),T.runKernelFunc(function(a){return a.complex(e,n)},{$real:e,$imag:n})}}),Rt=A({real_:function(r){var t=C(r,"input","real");return T.runKernelFunc(function(e){return e.real(t)},{$input:t})}}),Ht=A({imag_:function(r){var t=C(r,"input","imag");return T.runKernelFunc(function(e){return e.imag(t)},{$input:t})}});function rt(r,t,e){return Rn(r,t,En(r,e),e)}function Rn(r,t,e,n){if(n==null&&(n=Or(r)),n==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!jt(r)&&!Array.isArray(r)&&typeof r!="number"&&typeof r!="boolean"&&typeof r!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){Ru(t);var a=ae(t),o=ae(e);E(a===o,function(){return"Based on the provided shape, ["+t+"], the tensor should have "+a+" values but has "+o});for(var i=0;i<e.length;++i){var s=e[i],u=i!==e.length-1||s!==ae(t.slice(i));E(e[i]===t[i]||!u,function(){return"Error creating a new Tensor. Inferred shape ("+e+") does not match the provided shape ("+t+"). "})}}return jt(r)||Array.isArray(r)||(r=[r]),t=t||e,r=n!=="string"?Cu(r,n,z().getBool("DEBUG")):lr(r,[],!0),T.makeTensor(r,t,n)}function J(r,t){if((jt(r)&&t!=="string"||Array.isArray(r))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&jt(r)&&!(r instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Rn(r,[],[],t)}function Ge(r,t){pr(r);var e=En(r,t);if(e.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Rn(r,null,e,t)}function xn(r,t,e){if(pr(r),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");var n=En(r,e);if(n.length!==2&&n.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Rn(r,t,n,e)}function ii(r,t,e){if(pr(r),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");var n=En(r,e);if(n.length!==3&&n.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Rn(r,t,n,e)}function dt(r,t,e){if(pr(r),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");var n=En(r,e);if(n.length!==4&&n.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Rn(r,t,n,e)}function hp(r,t,e){if(pr(r),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");var n=En(r,e);if(n.length!==5&&n.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Rn(r,t,n,e)}function fp(r,t,e){if(pr(r),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");var n=En(r,e);if(n.length!==6&&n.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(n.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return Rn(r,t=t||n,n,e)}function pp(r,t,e,n){return t===void 0&&(t=!0),T.makeVariable(r,t,e,n)}function vr(r,t){if(t===void 0&&(t="float32"),t==="complex64"){var e=vr(r,"float32"),n=Me(r,"float32");return tt(e,n)}var a=Eu(ae(r),t);return T.makeTensor(a,r,t)}function Me(r,t){if(t===void 0&&(t="float32"),t==="complex64"){var e=Me(r,"float32"),n=Me(r,"float32");return tt(e,n)}var a=Br(ae(r),t);return T.makeTensor(a,r,t)}function Kt(r,t,e){return T.runKernelFunc(function(n){return n.fill(r,t,e)},{})}function vp(r,t,e){if(e<=0)throw new Error("The number of values should be positive.");return T.runKernelFunc(function(n){return n.linspace(r,t,e)},{})}function pa(r,t,e,n){if(e===void 0&&(e=1),n===void 0&&(n="float32"),e===0)throw new Error("Cannot have a step of zero");if(r===t||r<t&&e<0||t<r&&e>1)return Me([0],n);var a=Br(Math.abs(Math.ceil((t-r)/e)),n);t<r&&e===1&&(e=-1),a[0]=r;for(var o=1;o<a.length;o++)a[o]=a[o-1]+e;return Ge(a,n)}var Nu=A({onesLike_:function(r){var t=C(r,"x","onesLike");if(t.dtype==="complex64"){var e=Nu(Rt(t)),n=Ie(Ht(t));return tt(e,n)}return T.runKernelFunc(function(a){return a.onesLike(t)},{$x:t},function(a,o){return{$x:function(){return Ie(a)}}})}}),Ie=A({zerosLike_:function(r){var t=C(r,"x","zerosLike");return T.runKernelFunc(function(e){return e.zerosLike(t)},{$x:t},function(e,n){return{$x:function(){return Ie(e)}}})}}),je=A({concat_:function(r,t){t===void 0&&(t=0),E(r.length>=1,function(){return"Pass at least one tensor to concat"});var e=fa(r,"tensors","concat");e[0].dtype==="complex64"&&e.forEach(function(s){if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor
          with dtype `+s.dtype+". ")}),t=Ye(t,e[0].shape)[0];var n=hr(e.map(function(s){return s.shape}),t);if(ae(n)===0)return rt([],n);if((e=e.filter(function(s){return s.size>0})).length===1)return e[0];var a=e.map(function(s){return s.shape});dp(a,t);var o=e,i={axis:t};return T.runKernelFunc(function(s){return s.concat(e,t)},o,function(s){var u=a.map(function(c){return c[t]});return si(s,u,t).map(function(c){return function(){return c}})},"Concat",i)}}),mp=A({concat1d_:function(r){return je(r,0)}}),gp=A({concat2d_:function(r,t){return je(r,t)}}),_p=A({concat3d_:function(r,t){return je(r,t)}}),xp=A({concat4d_:function(r,t){return je(r,t)}}),si=A({split_:function(r,t,e){e===void 0&&(e=0);var n,a=C(r,"x","split");return e=Ye(e,a.shape)[0],typeof t=="number"?(E(a.shape[e]%t==0,function(){return"Number of splits must evenly divide the axis."}),n=new Array(t).fill(a.shape[e]/t)):(E(a.shape[e]===t.reduce(function(o,i){return o+i}),function(){return"The sum of sizes must match the size of the axis dimension."}),n=t),T.runKernelFunc(function(o){return o.split(a,n,e)},{$x:a},function(o){return{$x:function(){return je(o,e)}}})}});function Wn(r,t){return r(t={exports:{}},t.exports),t.exports}var bp=Wn(function(r){(function(t,e,n){function a(s){var u,c=this,l=(u=4022871197,function(d){d=d.toString();for(var h=0;h<d.length;h++){var f=.02519603282416938*(u+=d.charCodeAt(h));f-=u=f>>>0,u=(f*=u)>>>0,u+=4294967296*(f-=u)}return 23283064365386963e-26*(u>>>0)});c.next=function(){var d=2091639*c.s0+23283064365386963e-26*c.c;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=0|d)},c.c=1,c.s0=l(" "),c.s1=l(" "),c.s2=l(" "),c.s0-=l(s),c.s0<0&&(c.s0+=1),c.s1-=l(s),c.s1<0&&(c.s1+=1),c.s2-=l(s),c.s2<0&&(c.s2+=1),l=null}function o(s,u){return u.c=s.c,u.s0=s.s0,u.s1=s.s1,u.s2=s.s2,u}function i(s,u){var c=new a(s),l=u&&u.state,d=c.next;return d.int32=function(){return 4294967296*c.next()|0},d.double=function(){return d()+11102230246251565e-32*(2097152*d()|0)},d.quick=d,l&&(typeof l=="object"&&o(l,c),d.state=function(){return o(c,{})}),d}e&&e.exports?e.exports=i:n&&n.amd?n(function(){return i}):this.alea=i})(0,r,!1)}),yp=Wn(function(r){(function(t,e,n){function a(s){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},s===(0|s)?u.x=s:c+=s;for(var l=0;l<c.length+64;l++)u.x^=0|c.charCodeAt(l),u.next()}function o(s,u){return u.x=s.x,u.y=s.y,u.z=s.z,u.w=s.w,u}function i(s,u){var c=new a(s),l=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},d.int32=c.next,d.quick=d,l&&(typeof l=="object"&&o(l,c),d.state=function(){return o(c,{})}),d}e&&e.exports?e.exports=i:n&&n.amd?n(function(){return i}):this.xor128=i})(0,r,!1)}),wp=Wn(function(r){(function(t,e,n){function a(s){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^d^d<<1)|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,s===(0|s)?u.x=s:c+=s;for(var l=0;l<c.length+64;l++)u.x^=0|c.charCodeAt(l),l==c.length&&(u.d=u.x<<10^u.x>>>4),u.next()}function o(s,u){return u.x=s.x,u.y=s.y,u.z=s.z,u.w=s.w,u.v=s.v,u.d=s.d,u}function i(s,u){var c=new a(s),l=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},d.int32=c.next,d.quick=d,l&&(typeof l=="object"&&o(l,c),d.state=function(){return o(c,{})}),d}e&&e.exports?e.exports=i:n&&n.amd?n(function(){return i}):this.xorwow=i})(0,r,!1)}),Cp=Wn(function(r){(function(t,e,n){function a(s){var u=this;u.next=function(){var c,l,d=u.x,h=u.i;return c=d[h],l=(c^=c>>>7)^c<<24,l^=(c=d[h+1&7])^c>>>10,l^=(c=d[h+3&7])^c>>>3,l^=(c=d[h+4&7])^c<<7,c=d[h+7&7],l^=(c^=c<<13)^c<<9,d[h]=l,u.i=h+1&7,l},function(c,l){var d,h=[];if(l===(0|l))h[0]=l;else for(l=""+l,d=0;d<l.length;++d)h[7&d]=h[7&d]<<15^l.charCodeAt(d)+h[d+1&7]<<13;for(;h.length<8;)h.push(0);for(d=0;d<8&&h[d]===0;++d);for(d==8?h[7]=-1:h[d],c.x=h,c.i=0,d=256;d>0;--d)c.next()}(u,s)}function o(s,u){return u.x=s.x.slice(),u.i=s.i,u}function i(s,u){s==null&&(s=+new Date);var c=new a(s),l=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},d.int32=c.next,d.quick=d,l&&(l.x&&o(l,c),d.state=function(){return o(c,{})}),d}e&&e.exports?e.exports=i:n&&n.amd?n(function(){return i}):this.xorshift7=i})(0,r,!1)}),Ep=Wn(function(r){(function(t,e,n){function a(s){var u=this;u.next=function(){var c,l,d=u.w,h=u.X,f=u.i;return u.w=d=d+1640531527|0,l=h[f+34&127],c=h[f=f+1&127],l^=l<<13,c^=c<<17,l^=l>>>15,c^=c>>>12,l=h[f]=l^c,u.i=f,l+(d^d>>>16)|0},function(c,l){var d,h,f,p,v,m=[],g=128;for(l===(0|l)?(h=l,l=null):(l+="\0",h=0,g=Math.max(g,l.length)),f=0,p=-32;p<g;++p)l&&(h^=l.charCodeAt((p+32)%l.length)),p===0&&(v=h),h^=h<<10,h^=h>>>15,h^=h<<4,h^=h>>>13,p>=0&&(v=v+1640531527|0,f=(d=m[127&p]^=h+v)==0?f+1:0);for(f>=128&&(m[127&(l&&l.length||0)]=-1),f=127,p=512;p>0;--p)h=m[f+34&127],d=m[f=f+1&127],h^=h<<13,d^=d<<17,h^=h>>>15,d^=d>>>12,m[f]=h^d;c.w=v,c.X=m,c.i=f}(u,s)}function o(s,u){return u.i=s.i,u.w=s.w,u.X=s.X.slice(),u}function i(s,u){s==null&&(s=+new Date);var c=new a(s),l=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},d.int32=c.next,d.quick=d,l&&(l.X&&o(l,c),d.state=function(){return o(c,{})}),d}e&&e.exports?e.exports=i:n&&n.amd?n(function(){return i}):this.xor4096=i})(0,r,!1)}),Rp=Wn(function(r){(function(t,e,n){function a(s){var u=this,c="";u.next=function(){var d=u.b,h=u.c,f=u.d,p=u.a;return d=d<<25^d>>>7^h,h=h-f|0,f=f<<24^f>>>8^p,p=p-d|0,u.b=d=d<<20^d>>>12^h,u.c=h=h-f|0,u.d=f<<16^h>>>16^p,u.a=p-d|0},u.a=0,u.b=0,u.c=-1640531527,u.d=1367130551,s===Math.floor(s)?(u.a=s/4294967296|0,u.b=0|s):c+=s;for(var l=0;l<c.length+20;l++)u.b^=0|c.charCodeAt(l),u.next()}function o(s,u){return u.a=s.a,u.b=s.b,u.c=s.c,u.d=s.d,u}function i(s,u){var c=new a(s),l=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=((c.next()>>>11)+(c.next()>>>0)/4294967296)/2097152;while(h===0);return h},d.int32=c.next,d.quick=d,l&&(typeof l=="object"&&o(l,c),d.state=function(){return o(c,{})}),d}e&&e.exports?e.exports=i:n&&n.amd?n(function(){return i}):this.tychei=i})(0,r,!1)}),Nn=Wn(function(r){(function(t,e){var n,a=this,o=256,i=6,s="random",u=e.pow(o,i),c=e.pow(2,52),l=2*c,d=o-1;function h(g,x,b){var _=[],y=v(function I(k,R){var N,D=[],V=typeof k;if(R&&V=="object")for(N in k)try{D.push(I(k[N],R-1))}catch{}return D.length?D:V=="string"?k:k+"\0"}((x=x==1?{entropy:!0}:x||{}).entropy?[g,m(t)]:g??function(){try{var I;return n&&(I=n.randomBytes)?I=I(o):(I=new Uint8Array(o),(a.crypto||a.msCrypto).getRandomValues(I)),m(I)}catch{var k=a.navigator,R=k&&k.plugins;return[+new Date,a,R,a.screen,m(t)]}}(),3),_),w=new f(_),S=function(){for(var I=w.g(i),k=u,R=0;I<c;)I=(I+R)*o,k*=o,R=w.g(1);for(;I>=l;)I/=2,k/=2,R>>>=1;return(I+R)/k};return S.int32=function(){return 0|w.g(4)},S.quick=function(){return w.g(4)/4294967296},S.double=S,v(m(w.S),t),(x.pass||b||function(I,k,R,N){return N&&(N.S&&p(N,w),I.state=function(){return p(w,{})}),R?(e[s]=I,k):I})(S,y,"global"in x?x.global:this==e,x.state)}function f(g){var x,b=g.length,_=this,y=0,w=_.i=_.j=0,S=_.S=[];for(b||(g=[b++]);y<o;)S[y]=y++;for(y=0;y<o;y++)S[y]=S[w=d&w+g[y%b]+(x=S[y])],S[w]=x;(_.g=function(I){for(var k,R=0,N=_.i,D=_.j,V=_.S;I--;)k=V[N=d&N+1],R=R*o+V[d&(V[N]=V[D=d&D+k])+(V[D]=k)];return _.i=N,_.j=D,R})(o)}function p(g,x){return x.i=g.i,x.j=g.j,x.S=g.S.slice(),x}function v(g,x){for(var b,_=g+"",y=0;y<_.length;)x[d&y]=d&(b^=19*x[d&y])+_.charCodeAt(y++);return m(x)}function m(g){return String.fromCharCode.apply(0,g)}if(e["seed"+s]=h,v(e.random(),t),r.exports){r.exports=h;try{n=require("crypto")}catch{}}})([],Math)});Nn.alea=bp,Nn.xor128=yp,Nn.xorwow=wp,Nn.xorshift7=Cp,Nn.xor4096=Ep,Nn.tychei=Rp;var Na=Nn.alea,ui=function(){function r(t,e,n,a,o){this.mean=t,this.stdDev=e,this.dtype=n,this.nextVal=NaN,this.truncated=a,this.truncated&&(this.upper=this.mean+2*this.stdDev,this.lower=this.mean-2*this.stdDev);var i=o||Math.random();this.random=Na(i.toString())}return r.prototype.nextValue=function(){if(!isNaN(this.nextVal)){var t=this.nextVal;return this.nextVal=NaN,t}for(var e,n,a=!1;!a;){var o=void 0,i=void 0,s=void 0;do s=(o=2*this.random()-1)*o+(i=2*this.random()-1)*i;while(s>=1||s===0);var u=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*o*u,n=this.mean+this.stdDev*i*u,this.truncated&&!this.isValidTruncated(e)||(a=!0)}return this.truncated&&!this.isValidTruncated(n)||(this.nextVal=this.convertValue(n)),this.convertValue(e)},r.prototype.convertValue=function(t){return this.dtype==null||this.dtype==="float32"?t:Math.round(t)},r.prototype.isValidTruncated=function(t){return t<=this.upper&&t>=this.lower},r}(),kp=function(){function r(t,e,n,a){this.alpha=t,this.beta=1/e,this.dtype=n;var o=a||Math.random();this.randu=Na(o.toString()),this.randn=new ui(0,1,n,!1,this.randu()),this.d=t<1?t+2/3:t-1/3,this.c=1/Math.sqrt(9*this.d)}return r.prototype.nextValue=function(){for(var t,e,n,a,o,i;;){do a=this.randn.nextValue(),i=1+this.c*a;while(i<=0);if(i*=i*i,e=1-.331*(t=a*a)*t,n=.5*t+this.d*(1-i+Math.log(i)),(o=this.randu())<e||Math.log(o)<n)break}return i=1/this.beta*this.d*i,this.alpha<1&&(i*=Math.pow(this.randu(),1/this.alpha)),this.convertValue(i)},r.prototype.convertValue=function(t){return this.dtype==="float32"?t:Math.round(t)},r}(),Ip=function(){function r(t,e,n,a){var o=this;if(t===void 0&&(t=0),e===void 0&&(e=1),this.canReturnFloat=function(){return o.dtype==null||o.dtype==="float32"},this.min=t,this.range=e-t,this.dtype=n,a==null&&(a=Math.random()),typeof a=="number"&&(a=a.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error("The difference between "+t+" - "+e+" <= 1 and dtype is not float");this.random=Na(a)}return r.prototype.convertValue=function(t){return this.canReturnFloat()?t:Math.round(t)},r.prototype.nextValue=function(){return this.convertValue(this.min+this.range*this.random())},r}();function pe(r,t,e){return t===void 0&&(t="float32"),t=t||"float32",Ru(r),new Ir(r,t,e)}function Sp(r,t){t===void 0&&(t=!1),console.log(r.toString(t))}var Fu=A({batchToSpaceND_:function(r,t,e){var n=C(r,"x","batchToSpaceND"),a=t.reduce(function(o,i){return o*i});return E(n.rank>=1+t.length,function(){return"input rank is "+n.rank+" but should be > than blockShape.length "+t.length}),E(e.length===t.length,function(){return"crops.length is "+e.length+" but should be equal to blockShape.length  "+t.length}),E(n.shape[0]%a==0,function(){return"input tensor batch is "+n.shape[0]+" but is not divisible by the product of the elements of blockShape "+t.join(" * ")+" === "+a}),T.runKernelFunc(function(o){return o.batchToSpaceND(n,t,e)},{$x:n},function(o){return{$x:function(){return o.spaceToBatchND(t,e)}}})}}),Ap=A({broadcastTo_:function(r,t){var e=C(r,"broadcastTo","x"),n=e.shape;if(t.some(function(u){return!(u>0)||u%1!=0}))throw new Error("broadcastTo(): Invalid broadcast shape ["+t+"].");if(t.length<e.rank)throw new Error("broadcastTo(): shape.length="+t.length+" < input.rank="+e.rank+".");if(t.length>e.rank){for(var a=e.shape.slice();a.length<t.length;)a.unshift(1);e=e.reshape(a)}for(var o=Array.from(t),i=t.length-1;i>=0;i--)if(e.shape[i]===t[i])o[i]=1;else if(e.shape[i]!==1)throw new Error("broadcastTo(): ["+n+"] cannot be broadcast to ["+t+"].");var s=o.map(function(u,c){return u>1?c:-1}).filter(function(u){return u>=0});return s.length===0?e.clone():T.runKernelFunc(function(u){return u.tile(e,o)},{input:e},function(u){return{input:function(){return u.sum(s,!0)}}})}}),Dp=A({cast_:function(r,t){var e=C(r,"x","cast");if(!wf(t))throw new Error("Failed to cast to unknown dtype "+t);if(t==="string"&&e.dtype!=="string"||t!=="string"&&e.dtype==="string")throw new Error("Only strings can be casted to strings");var n={dtype:t};return T.runKernelFunc(function(a){return a.cast(e,t)},{x:e},function(a){return{x:function(){return a.clone()}}},"Cast",n)}}),Tp=A({clone_:function(r){var t=C(r,"x","clone",null);return T.runKernelFunc(function(){return T.makeTensorFromDataId(t.dataId,t.shape,t.dtype)},{$x:t},function(e){return{$x:function(){return e.toFloat()}}})}}),Np=A({cumsum_:function(r,t,e,n){t===void 0&&(t=0),e===void 0&&(e=!1),n===void 0&&(n=!1);var a=C(r,"x","cumsum"),o=Jt([t|=0],a.rank),i=a;o!=null&&(i=a.transpose(o));var s=Qt(1,a.rank)[0],u=T.runKernelFunc(function(c){return c.cumsum(i,s,e,n)},{permutedX:i},function(c){return{permutedX:function(){return c.cumsum(t,e,!n)}}});return o!=null&&(u=u.transpose(o)),u}}),Fp=A({depthToSpace_:function(r,t,e){e===void 0&&(e="NHWC");var n=C(r,"x","depthToSpace"),a=e==="NHWC"?n.shape[1]:n.shape[2],o=e==="NHWC"?n.shape[2]:n.shape[3],i=e==="NHWC"?n.shape[3]:n.shape[1];return E(a*t>=0,function(){return`Negative dimension size caused by overflow when multiplying
      `+a+" and "+t+`  for depthToSpace with input shape
      `+n.shape}),E(o*t>=0,function(){return`Negative dimension size caused by overflow when multiplying
      `+o+" and "+t+` for depthToSpace with input shape
          `+n.shape}),E(i%(t*t)==0,function(){return"Dimension size must be evenly divisible by "+t*t+" but is "+i+" for depthToSpace with input shape "+n.shape}),T.runKernelFunc(function(s){return s.depthToSpace(n,t,e)},{$x:n})}}),Et=A({expandDims_:function(r,t){t===void 0&&(t=0);var e=C(r,"x","expandDims",null);E(t<=e.rank,function(){return"Axis must be <= rank of the tensor"});var n=e.shape.slice();return t<0&&(E(-(e.rank+1)<=t,function(){return"Axis must be in the interval ["+-(e.rank+1)+", "+e.rank+"]"}),t=e.rank+t+1),n.splice(t,0,1),Ft(e,n)}}),Pu=A({eye_:function(r,t,e,n){n===void 0&&(n="float32"),t==null&&(t=r);for(var a=pe([r,t],n),o=r<=t?r:t,i=0;i<o;++i)a.set(1,i,i);var s=a.toTensor().as2D(r,t);if(e==null)return s;if(e.length===1)return rr(Et(s,0),[e[0],1,1]);if(e.length===2)return rr(Et(Et(s,0),0),[e[0],e[1],1,1]);if(e.length===3)return rr(Et(Et(Et(s,0),0),0),[e[0],e[1],e[2],1,1]);throw new Error("eye() currently supports only 1D and 2D batchShapes, but received "+e.length+"D.")}}),Pp=A({multinomial_:function(r,t,e,n){n===void 0&&(n=!1);var a=C(r,"logits","multinomial"),o=a.size,i=a.rank;if(o<2)throw new Error("Error in multinomial: you need at least 2 outcomes, but got "+o+".");if(i>2)throw new Error("Rank of probabilities must be 1 or 2, but is "+i);e=e||Math.random();var s=i===1?a.as2D(1,-1):a,u=T.runKernelFunc(function(c){return c.multinomial(s,n,t,e)},{logits2D:s});return i===1?u.as1D():u}}),Vo=A({oneHot_:function(r,t,e,n){if(e===void 0&&(e=1),n===void 0&&(n=0),t<2)throw new Error("Error in oneHot: depth must be >=2, but it is "+t);var a=C(r,"indices","oneHot","int32"),o=a.shape.concat([t]);return a=a.flatten(),T.runKernelFunc(function(i){return i.oneHot(a,t,e,n)},{$indices:a},function(i){return{$indices:function(){return Me(a.shape,"float32")}}}).reshape(o)}}),Vn=A({pad_:function(r,t,e){e===void 0&&(e=0);var n=C(r,"x","pad");if(n.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");var a={paddings:t,constantValue:e};return T.runKernelFunc(function(o){return o.pad(n,t,e)},{x:n},function(o){var i=t.map(function(s){return s[0]});return{x:function(){return o.slice(i,n.shape)}}},"PadV2",a)}}),Mp=A({pad1d_:function(r,t,e){return e===void 0&&(e=0),E(t.length===2,function(){return"Invalid number of paddings. Must be length of 2."}),Vn(r,[t],e)}}),Op=A({pad2d_:function(r,t,e){return e===void 0&&(e=0),E(t.length===2&&t[0].length===2&&t[1].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),Vn(r,t,e)}}),Bp=A({pad3d_:function(r,t,e){return e===void 0&&(e=0),E(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),Vn(r,t,e)}}),Lp=A({pad4d_:function(r,t,e){return e===void 0&&(e=0),E(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,function(){return"Invalid number of paddings. Must be length of 2 each."}),Vn(r,t,e)}}),Wp=A({rand_:function(r,t,e){var n=ae(r),a=null;if(e==null||e==="float32")a=new Float32Array(n);else if(e==="int32")a=new Int32Array(n);else{if(e!=="bool")throw new Error("Unknown data type "+e);a=new Uint8Array(n)}for(var o=0;o<n;o++)a[o]=t();return T.makeTensor(a,r,e)}}),Vp=A({randomNormal_:function(r,t,e,n,a){if(t===void 0&&(t=0),e===void 0&&(e=1),n!=null&&n==="bool")throw new Error("Unsupported data type "+n);for(var o=new ui(t,e,n,!1,a),i=pe(r,n),s=0;s<i.values.length;s++)i.values[s]=o.nextValue();return i.toTensor()}}),zp=A({randomGamma_:function(r,t,e,n,a){if(e===void 0&&(e=1),n===void 0&&(n="float32"),e==null&&(e=1),n==null&&(n="float32"),n!=="float32"&&n!=="int32")throw new Error("Unsupported data type "+n);for(var o=new kp(t,e,n,a),i=pe(r,n),s=0;s<i.values.length;s++)i.values[s]=o.nextValue();return i.toTensor()}}),Mu=A({randomUniform_:function(r,t,e,n,a){t===void 0&&(t=0),e===void 0&&(e=1),n===void 0&&(n="float32");for(var o=pe(r,n),i=new Ip(t,e,null,a),s=0;s<o.values.length;s++)o.values[s]=i.nextValue();return o.toTensor()}}),Ft=A({reshape_:function(r,t){var e=C(r,"x","reshape",null);t=bf(t,e.size),E(e.size===ae(t),function(){return"new shape and old shape must have the same number of elements."});var n={shape:t};return T.runKernelFunc(function(a){return a.reshape(e,t)},{x:e},function(a){return{x:function(){return a.reshape(e.shape)}}},"Reshape",n)}}),Ou=A({spaceToBatchND_:function(r,t,e){var n=C(r,"x","spaceToBatchND");return E(n.rank>=1+t.length,function(){return"input rank "+n.rank+" should be > than [blockShape] "+t.length}),E(e.length===t.length,function(){return"paddings.shape[0] "+e.length+" must be equal to [blockShape] "+t.length}),E(n.shape.reduce(function(a,o,i){return i>0&&i<=t.length?a&&(o+e[i-1][0]+e[i-1][1])%t[i-1]==0:a},!0),function(){return"input spatial dimensions "+n.shape.slice(1)+" with paddings "+e.toString()+" must be divisible by blockShapes "+t.toString()}),T.runKernelFunc(function(a){return a.spaceToBatchND(n,t,e)},{$x:n},function(a){return{$x:function(){return a.batchToSpaceND(t,e)}}})}}),Bu=A({squeeze_:function(r,t){var e=C(r,"x","squeeze");return Ft(e,Fn(e.shape,t).newShape)}}),Ct=A({stack_:function(r,t){t===void 0&&(t=0);var e=fa(r,"tensors","stack");if(E(e.length>=1,function(){return"Pass at least one tensor to tf.stack"}),e.length===1)return e[0].expandDims(t);var n=e[0].rank,a=e[0].shape,o=e[0].dtype;E(t<=n,function(){return"Axis must be <= rank of the tensor"}),e.forEach(function(s){Ae(a,s.shape,"All tensors passed to stack must have matching shapes")}),e.forEach(function(s){E(o===s.dtype,function(){return"All tensors passed to stack must have matching dtypes"})});var i=e.map(function(s){return s.expandDims(t)});return je(i,t)}}),rr=A({tile_:function(r,t){var e=C(r,"x","tile",null);E(e.rank===t.length,function(){return"Error in transpose: rank of input "+e.rank+" must match length of reps "+t+"."});var n=[e],a={reps:t};return T.runKernelFunc(function(o,i){var s=o.tile(e,t);return i([e]),s},{x:e},function(o,i){var s=i[0];return{x:function(){var u=Ie(s);if(s.rank===1)for(var c=0;c<t[0];++c)u=u.add(o.slice([c*s.shape[0]],[s.shape[0]]));else if(s.rank===2)for(c=0;c<t[0];++c)for(var l=0;l<t[1];++l)u=u.add(o.slice([c*s.shape[0],l*s.shape[1]],[s.shape[0],s.shape[1]]));else if(s.rank===3)for(c=0;c<t[0];++c)for(l=0;l<t[1];++l)for(var d=0;d<t[2];++d)u=u.add(o.slice([c*s.shape[0],l*s.shape[1],d*s.shape[2]],[s.shape[0],s.shape[1],s.shape[2]]));else{if(s.rank!==4)throw new Error("Gradient for tile operation is not implemented for rank-"+s.rank+" tensors yet.");for(c=0;c<t[0];++c)for(l=0;l<t[1];++l)for(d=0;d<t[2];++d)for(var h=0;h<t[3];++h)u=u.add(o.slice([c*s.shape[0],l*s.shape[1],d*s.shape[2],h*s.shape[3]],[s.shape[0],s.shape[1],s.shape[2],s.shape[3]]))}return u}}},"Tile",a,n)}}),Up=A({truncatedNormal_:function(r,t,e,n,a){if(t===void 0&&(t=0),e===void 0&&(e=1),n!=null&&n==="bool")throw new Error("Unsupported data type "+n);for(var o=new ui(t,e,n,!0,a),i=pe(r,n),s=0;s<i.values.length;s++)i.values[s]=o.nextValue();return i.toTensor()}}),qe=A({unstack_:function(r,t){t===void 0&&(t=0),t=t||0;var e=C(r,"x","unstack");E(t>=-e.shape.length&&t<e.shape.length,function(){return"Axis = "+t+" is not in [-"+e.shape.length+", "+e.shape.length+")"}),t<0&&(t+=e.shape.length);var n={axis:t};return T.runKernelFunc(function(a){return a.unstack(e,t)},{x:e},function(a){return{x:function(){return Ct(a,t)}}},"Unpack",n)}}),Gp=function(r,t){return ne(this,void 0,void 0,function(){var e,n,a,o,i,s,u,c,l,d;return re(this,function(h){switch(h.label){case 0:return e=C(r,"x","setdiff1d"),n=C(t,"y","setdiff1d"),E(e.dtype===n.dtype,function(){return"x and y should have the same dtype, but got x ("+e.dtype+") and y ("+n.dtype+")."}),E(e.rank===1,function(){return"x should be 1D tensor, but got x ("+e.shape+")."}),E(n.rank===1,function(){return"y should be 1D tensor, but got y ("+n.shape+")."}),[4,e.data()];case 1:return a=h.sent(),[4,n.data()];case 2:for(o=h.sent(),i=new Set(o),s=0,l=0;l<a.length;l++)i.has(a[l])||s++;for(u=new Ir([s],e.dtype),c=new Ir([s],"int32"),l=0,d=0;l<a.length;l++)i.has(a[l])||(u.values[d]=a[l],c.values[d]=l,d++);return[2,[u.toTensor(),c.toTensor()]]}})})};function va(r,t,e,n){n===void 0&&(n=!0);var a=[];if(n)(a=a.concat(t.slice(0))).push(r[0]/e),a=a.concat(r.slice(1));else{a=a.concat(r[0]);for(var o=t.length,i=0;i<o;++i)a=a.concat([r[i+1]/t[i],t[i]]);a=a.concat(r.slice(o+1))}return a}function ma(r,t,e){e===void 0&&(e=!0);var n=[];if(e){n.push(t);for(var a=t+1;a<r;++a)a<=2*t?(n.push(a),n.push(a-(t+1))):n.push(a)}else{var o=[],i=[];for(a=1;a<r;++a)a>=2*t+1||a%2==1?i.push(a):o.push(a);n.push.apply(n,o),n.push(0),n.push.apply(n,i)}return n}function ga(r,t,e,n){n===void 0&&(n=!0);var a=[];n?a.push(r[0]/e):a.push(r[0]*e);for(var o=1;o<r.length;++o)o<=t.length?n?a.push(t[o-1]*r[o]):a.push(r[o]/t[o-1]):a.push(r[o]);return a}function Lu(r,t){for(var e=[0],n=0;n<t;++n)e.push(r[n][0]);return e}function Wu(r,t,e){for(var n=r.slice(0,1),a=0;a<e;++a)n.push(r[a+1]-t[a][0]-t[a][1]);return n}function Vu(r,t){if(r.rank<1)throw new Error("tf.gatherND() expects the input to be rank 1 or higher, but the rank was "+r.rank+".");if(t.rank<1)throw new Error("tf.gatherND() expects the indices to be rank 1 or higher, but the rank was "+t.rank+".");if(t.dtype!=="int32")throw new Error("tf.gatherND() expects the indices to be int32 type, but the dtype was "+t.dtype+".");if(t.shape[t.rank-1]>r.rank)throw new Error("index innermost dimension length must be <= tensor rank; saw: "+t.shape[t.rank-1]+" vs. "+r.rank);if(r.size===0)throw new Error("Requested more than 0 entries, but input is empty. Input shape: "+r.shape+".");for(var e=t.shape,n=e[e.length-1],a=1,o=0;o<e.length-1;++o)a*=e[o];var i=r.shape,s=e.slice();s.pop();var u=1;for(o=n;o<r.rank;++o)u*=i[o],s.push(i[o]);var c=qt(r.shape).map(function(l){return l/u}).concat([1]).slice(0,n);return[s,a,u,c]}var zu=30;function lo(r){return r<=zu?r:Po(r,Math.floor(Math.sqrt(r)))}function Hp(r,t,e){var n=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,o="Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: "+e.shape+", indices.shape: "+t.shape+", shape: "+r+", sliceDim: "+n+", and batchDim: "+a+".";if(e.rank<a)throw new Error(o+" update.rank < "+a+". ");if(r.length<n+(e.rank-a))throw new Error(o+" Output shape length < "+(n+(e.rank-a)));if(e.rank!==a+r.length-n)throw new Error(o+" update.rank != "+(a+r.length-n));for(var i=0;i<a;++i)if(e.shape[i]!==t.shape[i])throw new Error(o+" updates.shape["+i+"] ("+e.shape[i]+") != indices.shape["+i+"] ("+t.shape[i]+").");for(i=0;i<e.rank-a;++i)if(e.shape[i+a]!==r[i+n])throw new Error(o+" updates.shape["+(i+a)+"] ("+e.shape[i+a]+") != shape["+(i+a)+"] ("+r[i+a]+")")}function $p(r,t,e){if(t.rank<1)throw new Error("tf.scatterND() expects the indices to be rank 1 or higher, but the rank was "+t.rank+".");if(r.rank<1)throw new Error("tf.scatterND() expects the updates to be rank 1 or higher, but the rank was "+r.rank+".");if(t.dtype!=="int32")throw new Error("The dtype of 'indices' should be int32, but got dtype: "+t.dtype);if(e.length<1)throw new Error("Output rank must be greater or equal to 1, but got shape: "+e);if(e.length===0){if(t.size===0)throw new Error("Indices specified for empty output. indices shape: "+t.shape);if(r.size===0)throw new Error("Updates specified for empty output. updates shape: "+r.shape)}Hp(e,t,r)}function _a(r,t,e){for(var n=t.shape.length,a=n>1?t.shape[n-1]:1,o=e.length,i=1,s=a;s<o;++s)i*=e[s];var u=a<1?1:a;return{sliceRank:a,numUpdates:ae(t.shape)/u,sliceSize:i,strides:qt(e.slice(0,a)).concat([1]),outputSize:ae(e)}}function jp(r,t,e){E(r.rank===t.length,function(){return"Error in slice"+r.rank+"D: Length of begin "+t+" must match the rank of the array ("+r.rank+")."}),E(r.rank===e.length,function(){return"Error in slice"+r.rank+"D: Length of size "+e+" must match the rank of the array ("+r.rank+")."});for(var n=function(o){E(t[o]+e[o]<=r.shape[o],function(){return"Error in slice"+r.rank+"D: begin["+o+"] + size["+o+"] ("+(t[o]+e[o])+") would overflow input.shape["+o+"] ("+r.shape[o]+")"})},a=0;a<r.rank;++a)n(a)}function _s(r){for(var t=[],e=0;r>0;)1&r&&t.push(e),r/=2,e++;return t}function ci(r,t,e){for(var n=[],a=0;a<r.length;a++)n[a]=Math.ceil((t[a]-r[a])/e[a]);return n}function qp(r,t,e,n,a){var o=t[a],i=e[a]||1;(r&1<<a||o==null)&&(o=i>0?Number.MIN_SAFE_INTEGER:Number.MAX_SAFE_INTEGER);var s=n[a];return o<0&&(o+=s),o=To(0,o,s-1)}function Kp(r,t,e,n,a){var o=t[a],i=e[a]||1;(r&1<<a||o==null)&&(o=i>0?Number.MAX_SAFE_INTEGER:Number.MIN_SAFE_INTEGER);var s=n[a];return o<0&&(o+=s),o=i>0?To(0,o,s):To(-1,o,s-1)}function Uu(r,t,e){for(var n=e.length,a=0;a<e.length;a++)if(e[a]>1){n=a;break}for(a=n+1;a<e.length;a++)if(t[a]>0||e[a]!==r[a])return!1;return!0}function Gu(r,t){for(var e=r.length>0?r[r.length-1]:1,n=0;n<r.length-1;n++)e+=r[n]*t[n];return e}function Xp(r,t){E(Fo(r),function(){return"The f passed in variableGrads(f) must be a function"}),E(t==null||Array.isArray(t)&&t.every(function(l){return l instanceof dr}),function(){return"The varList passed in variableGrads(f, varList) must be an array of variables"});var e=t!=null;if(!e)for(var n in t=[],T.registeredVariables)t.push(T.registeredVariables[n]);var a=e?t.filter(function(l){return!l.trainable}):null,o=t.length;E((t=t.filter(function(l){return l.trainable})).length>0,function(){return"variableGrads() expects at least one of the input variables to be trainable, but none of the "+o+" variables is trainable."});var i=T.gradients(r,t,null,!0),s=i.value,u=i.grads;E(u.some(function(l){return l!=null}),function(){return"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."}),E(s.rank===0,function(){return"The f passed in variableGrads(f) must return a scalar, but it returned a rank-"+s.rank+" tensor"});var c={};return t.forEach(function(l,d){u[d]!=null&&(c[l.name]=u[d])}),a!=null&&a.forEach(function(l){return c[l.name]=null}),{value:s,grads:c}}function Fa(r){return T.customGrad(r)}var cn=A({softmax_:function(r,t){t===void 0&&(t=-1);var e=C(r,"logits","softmax","float32");if(t===-1&&(t=e.rank-1),t!==e.rank-1)throw Error("Softmax along a non-last dimension is not yet supported. Logits was rank "+e.rank+" and dim was "+t);return T.runKernelFunc(function(n,a){var o=n.softmax(e,t);return a([o]),o},{logits:e},function(n,a){var o=a[0],i=n.mul(o);return{logits:function(){return i.sub(i.sum([t],!0).mul(o))}}},"Softmax",{dim:t},[],[!0])}}),Yp=A({logSoftmax_:function(r,t){t===void 0&&(t=-1);var e=C(r,"logits","logSoftmax");if(t===-1&&(t=e.rank-1),t!==e.rank-1)throw Error("Log Softmax along a non-last dimension is not yet supported. Logits was rank "+e.rank+" and axis was "+t);return Fa(function(n,a){var o=n.max(t,!0),i=n.sub(o),s=i.toFloat().sub(i.exp().sum(t,!0).log());return a([s]),{value:s,gradFunc:function(u,c){var l=c[0].exp();return u.sub(u.sum(t,!0).mul(l))}}})(e)}}),Hu=function(){function r(t,e){this.backend=t,this.dataMover=e,this.data=new WeakMap,this.dataIdsCount=0}return r.prototype.get=function(t){return this.data.has(t)||this.dataMover.moveData(this.backend,t),this.data.get(t)},r.prototype.set=function(t,e){this.dataIdsCount++,this.data.set(t,e)},r.prototype.has=function(t){return this.data.has(t)},r.prototype.delete=function(t){return this.dataIdsCount--,this.data.delete(t)},r.prototype.numDataIds=function(){return this.dataIdsCount},r}(),$u=function(){function r(){}return r.prototype.time=function(t){return M("time")},r.prototype.read=function(t){return M("read")},r.prototype.readSync=function(t){return M("readSync")},r.prototype.numDataIds=function(){return M("numDataIds")},r.prototype.disposeData=function(t){return M("disposeData")},r.prototype.write=function(t,e,n){return M("write")},r.prototype.move=function(t,e,n,a){return M("move")},r.prototype.memory=function(){return M("memory")},r.prototype.floatPrecision=function(){return M("floatPrecision")},r.prototype.epsilon=function(){return this.floatPrecision()===32?1e-7:1e-4},r.prototype.batchMatMul=function(t,e,n,a){return M("batchMatMul")},r.prototype.fusedBatchMatMul=function(t){return t.a,t.b,t.transposeA,t.transposeB,t.bias,t.activation,t.preluActivationWeights,M("fusedBatchMatMul")},r.prototype.slice=function(t,e,n){return M("slice")},r.prototype.stridedSlice=function(t,e,n,a){return M("stridedSlice")},r.prototype.unstack=function(t,e){return M("unstack")},r.prototype.reverse=function(t,e){return M("reverse")},r.prototype.concat=function(t,e){return M("concat")},r.prototype.neg=function(t){return M("neg")},r.prototype.add=function(t,e){return M("add")},r.prototype.addN=function(t){return M("addN")},r.prototype.subtract=function(t,e){return M("subtract")},r.prototype.multiply=function(t,e){return M("multiply")},r.prototype.realDivide=function(t,e){return M("realDivide")},r.prototype.floorDiv=function(t,e){return M("floorDiv")},r.prototype.sum=function(t,e){return M("sum")},r.prototype.prod=function(t,e){return M("prod")},r.prototype.unsortedSegmentSum=function(t,e,n){return M("unsortedSegmentSum")},r.prototype.argMin=function(t,e){return M("argMin")},r.prototype.argMax=function(t,e){return M("argMax")},r.prototype.equal=function(t,e){return M("equal")},r.prototype.notEqual=function(t,e){return M("notEqual")},r.prototype.less=function(t,e){return M("less")},r.prototype.lessEqual=function(t,e){return M("lessEqual")},r.prototype.greater=function(t,e){return M("greater")},r.prototype.greaterEqual=function(t,e){return M("greaterEqual")},r.prototype.logicalNot=function(t){return M("logicalNot")},r.prototype.logicalAnd=function(t,e){return M("logicalAnd")},r.prototype.logicalOr=function(t,e){return M("logicalOr")},r.prototype.where=function(t){return M("where")},r.prototype.select=function(t,e,n){return M("select")},r.prototype.topk=function(t,e,n){return M("topk")},r.prototype.min=function(t,e){return M("min")},r.prototype.minimum=function(t,e){return M("minimum")},r.prototype.mod=function(t,e){return M("mod")},r.prototype.max=function(t,e){return M("max")},r.prototype.maximum=function(t,e){return M("maximum")},r.prototype.all=function(t,e){return M("all")},r.prototype.any=function(t,e){return M("any")},r.prototype.squaredDifference=function(t,e){return M("squaredDifference")},r.prototype.ceil=function(t){return M("ceil")},r.prototype.floor=function(t){return M("floor")},r.prototype.round=function(t){return M("round")},r.prototype.sign=function(t){return M("sign")},r.prototype.isNaN=function(t){return M("isNaN")},r.prototype.isInf=function(t){return M("isInf")},r.prototype.isFinite=function(t){return M("isFinite")},r.prototype.pow=function(t,e){return M("pow")},r.prototype.exp=function(t){return M("exp")},r.prototype.expm1=function(t){return M("expm1")},r.prototype.softmax=function(t,e){return M("softmax")},r.prototype.log=function(t){return M("log")},r.prototype.log1p=function(t){return M("log1p")},r.prototype.sqrt=function(t){return M("sqrt")},r.prototype.rsqrt=function(t){return M("rsqrt")},r.prototype.square=function(t){return M("square")},r.prototype.reciprocal=function(t){return M("reciprocal")},r.prototype.relu=function(t){return M("relu")},r.prototype.relu6=function(t){return M("relu6")},r.prototype.prelu=function(t,e){return M("prelu")},r.prototype.elu=function(t){return M("elu")},r.prototype.eluDer=function(t,e){return M("eluDer")},r.prototype.selu=function(t){return M("selu")},r.prototype.int=function(t){return M("int")},r.prototype.clip=function(t,e,n){return M("clip")},r.prototype.abs=function(t){return M("abs")},r.prototype.complexAbs=function(t){return M("complexAbs")},r.prototype.sigmoid=function(t){return M("sigmoid")},r.prototype.softplus=function(t){return M("softplus")},r.prototype.sin=function(t){return M("sin")},r.prototype.cos=function(t){return M("cos")},r.prototype.tan=function(t){return M("tan")},r.prototype.asin=function(t){return M("asin")},r.prototype.acos=function(t){return M("acos")},r.prototype.atan=function(t){return M("atan")},r.prototype.atan2=function(t,e){return M("atan2")},r.prototype.sinh=function(t){return M("sinh")},r.prototype.cosh=function(t){return M("cosh")},r.prototype.tanh=function(t){return M("tanh")},r.prototype.asinh=function(t){return M("asinh")},r.prototype.acosh=function(t){return M("acosh")},r.prototype.atanh=function(t){return M("atanh")},r.prototype.erf=function(t){return M("erf")},r.prototype.step=function(t,e){return M("step")},r.prototype.fusedConv2d=function(t){return t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights,M("fusedConv2d")},r.prototype.conv2d=function(t,e,n){return M("conv2d")},r.prototype.conv2dDerInput=function(t,e,n){return M("conv2dDerInput")},r.prototype.conv2dDerFilter=function(t,e,n){return M("conv2dDerFilter")},r.prototype.fusedDepthwiseConv2D=function(t){return t.input,t.filter,t.convInfo,t.bias,t.activation,t.preluActivationWeights,M("fusedDepthwiseConv2D")},r.prototype.depthwiseConv2D=function(t,e,n){return M("depthwiseConv2D")},r.prototype.depthwiseConv2DDerInput=function(t,e,n){return M("depthwiseConv2DDerInput")},r.prototype.depthwiseConv2DDerFilter=function(t,e,n){return M("depthwiseConv2DDerFilter")},r.prototype.conv3d=function(t,e,n){return M("conv3d")},r.prototype.conv3dDerInput=function(t,e,n){return M("conv3dDerInput")},r.prototype.conv3dDerFilter=function(t,e,n){return M("conv3dDerFilter")},r.prototype.maxPool=function(t,e){return M("maxPool")},r.prototype.maxPoolBackprop=function(t,e,n,a){return M("maxPoolBackprop")},r.prototype.avgPool=function(t,e){return M("avgPool")},r.prototype.avgPoolBackprop=function(t,e,n){return M("avgPoolBackprop")},r.prototype.avgPool3d=function(t,e){return M("avgPool3d")},r.prototype.avgPool3dBackprop=function(t,e,n){return M("avgPool3dBackprop")},r.prototype.maxPool3d=function(t,e){return M("maxPool3d")},r.prototype.maxPool3dBackprop=function(t,e,n,a){return M("maxPool3dBackprop")},r.prototype.reshape=function(t,e){return M("reshape")},r.prototype.cast=function(t,e){return M("cast")},r.prototype.tile=function(t,e){return M("tile")},r.prototype.pad=function(t,e,n){return M("pad")},r.prototype.transpose=function(t,e){return M("transpose")},r.prototype.gather=function(t,e,n){return M("gather")},r.prototype.gatherND=function(t,e){return M("gatherND")},r.prototype.scatterND=function(t,e,n){return M("scatterND")},r.prototype.batchToSpaceND=function(t,e,n){return M("batchToSpaceND")},r.prototype.spaceToBatchND=function(t,e,n){return M("spaceToBatchND")},r.prototype.resizeBilinear=function(t,e,n,a){return M("resizeBilinear")},r.prototype.resizeBilinearBackprop=function(t,e,n){return M("resizeBilinearBackprop")},r.prototype.resizeNearestNeighbor=function(t,e,n,a){return M("resizeNearestNeighbor")},r.prototype.resizeNearestNeighborBackprop=function(t,e,n){return M("resizeNearestNeighborBackprop")},r.prototype.batchNormalization=function(t,e,n,a,o,i){return M("batchNormalization")},r.prototype.localResponseNormalization4D=function(t,e,n,a,o){return M("localResponseNormalization4D")},r.prototype.LRNGrad=function(t,e,n,a,o,i,s){return M("LRNGrad")},r.prototype.multinomial=function(t,e,n,a){return M("multinomial")},r.prototype.oneHot=function(t,e,n,a){return M("oneHot")},r.prototype.cumsum=function(t,e,n,a){return M("cumsum")},r.prototype.nonMaxSuppression=function(t,e,n,a,o){return M("nonMaxSuppression")},r.prototype.fft=function(t){return M("fft")},r.prototype.ifft=function(t){return M("ifft")},r.prototype.complex=function(t,e){return M("complex")},r.prototype.real=function(t){return M("real")},r.prototype.imag=function(t){return M("imag")},r.prototype.cropAndResize=function(t,e,n,a,o,i){return M("cropAndResize")},r.prototype.depthToSpace=function(t,e,n){return M("depthToSpace")},r.prototype.split=function(t,e,n){return M("split")},r.prototype.sparseToDense=function(t,e,n,a){return M("sparseToDense")},r.prototype.diag=function(t){return M("diag")},r.prototype.fill=function(t,e,n){return M("fill")},r.prototype.onesLike=function(t){return M("onesLike")},r.prototype.zerosLike=function(t){return M("zerosLike")},r.prototype.linspace=function(t,e,n){return M("linspace")},r.prototype.dispose=function(){return M("dispose")},r}();function M(r){throw new Error("'"+r+"' not yet implemented or not found in the registry. Did you forget to import the kernel?")}function gn(r,t){for(var e=r.length,n=[],a=0;a<e;a++){var o=e-1-a,i=r[o]||1;(t[t.length-1-a]||1)>1&&i===1&&n.unshift(o)}return n}function Ke(r,t){for(var e=[],n=0;n<t.length;n++){var a=r[r.length-n-1],o=t.length-n-1,i=t[o];(a==null||a===1&&i>1)&&e.unshift(o)}return e}function Ee(r,t){for(var e=[],n=Math.max(r.length,t.length),a=0;a<n;a++){var o=r[r.length-a-1];o==null&&(o=1);var i=t[t.length-a-1];if(i==null&&(i=1),o===1)e.unshift(i);else if(i===1)e.unshift(o);else{if(o!==i)throw Error("Operands could not be broadcast together with shapes "+r+" and "+t+".");e.unshift(o)}}return e}function Ar(r,t,e,n,a,o,i){i===void 0&&(i="channelsLast");var s,u=ya(t),c=u[0],l=u[1];if(i==="channelsLast")s=[c,l,r[3],r[3]];else{if(i!=="channelsFirst")throw new Error("Unknown dataFormat "+i);s=[c,l,r[1],r[1]]}return zn(r,s,e,n,a,o,!1,i)}function xa(r,t,e,n,a,o,i){i===void 0&&(i="NDHWC");var s,u,c=zo(t),l=c[0],d=c[1],h=c[2];if(i==="NDHWC")u="channelsLast",s=[l,d,h,r[4],r[4]];else{if(i!=="NCDHW")throw new Error("Unknown dataFormat "+i);u="channelsFirst",s=[l,d,h,r[1],r[1]]}return ba(r,s,e,n,a,!1,u,o)}function zn(r,t,e,n,a,o,i,s){i===void 0&&(i=!1),s===void 0&&(s="channelsLast");var u=[-1,-1,-1,-1],c=u[0],l=u[1],d=u[2],h=u[3];if(s==="channelsLast")c=r[0],l=r[1],d=r[2],h=r[3];else{if(s!=="channelsFirst")throw new Error("Unknown dataFormat "+s);c=r[0],h=r[1],l=r[2],d=r[3]}var f,p=t[0],v=t[1],m=t[3],g=ya(e),x=g[0],b=g[1],_=ya(n),y=_[0],w=_[1],S=ar(p,y),I=ar(v,w),k=function(L,W,H,G,U,$,q,Q){var te,Y,ue;if(typeof L=="number"){te={top:L,bottom:L,left:L,right:L,type:L===0?"VALID":"NUMBER"};var de=function(he,be,ye,ke,Ne){ke==null&&(ke=ju(he,be,ye));var Pe=he[0],Tt=he[1],Bt=Er((Pe-be+2*ke)/ye+1,Ne);E(ze(Bt),function(){return"The output # of rows ("+Bt+") must be an integer. Change the stride and/or zero pad parameters"});var gt=Er((Tt-be+2*ke)/ye+1,Ne);return E(ze(gt),function(){return"The output # of columns ("+gt+") must be an integer. Change the stride and/or zero pad parameters"}),[Bt,gt]}([W,H],$,G,L,Q);Y=de[0],ue=de[1]}else if(L==="same"){Y=Math.ceil(W/G),ue=Math.ceil(H/U);var ve=Math.max(0,(Y-1)*G+$-W),xe=Math.max(0,(ue-1)*U+q-H),ge=Math.floor(ve/2),X=ve-ge,_e=Math.floor(xe/2);te={top:ge,bottom:X,left:_e,right:xe-_e,type:"SAME"}}else{if(L!=="valid")throw Error("Unknown padding parameter: "+L);te={top:0,bottom:0,left:0,right:0,type:"VALID"},Y=Math.ceil((W-$+1)/G),ue=Math.ceil((H-q+1)/U)}return{padInfo:te,outHeight:Y,outWidth:ue}}(a,l,d,x,b,S,I,o),R=k.padInfo,N=k.outHeight,D=k.outWidth,V=i?m*h:m;return s==="channelsFirst"?f=[c,V,N,D]:s==="channelsLast"&&(f=[c,N,D,V]),{batchSize:c,dataFormat:s,inHeight:l,inWidth:d,inChannels:h,outHeight:N,outWidth:D,outChannels:V,padInfo:R,strideHeight:x,strideWidth:b,filterHeight:p,filterWidth:v,effectiveFilterHeight:S,effectiveFilterWidth:I,dilationHeight:y,dilationWidth:w,inShape:r,outShape:f,filterShape:t}}function ba(r,t,e,n,a,o,i,s){o===void 0&&(o=!1),i===void 0&&(i="channelsLast");var u=[-1,-1,-1,-1,-1],c=u[0],l=u[1],d=u[2],h=u[3],f=u[4];if(i==="channelsLast")c=r[0],l=r[1],d=r[2],h=r[3],f=r[4];else{if(i!=="channelsFirst")throw new Error("Unknown dataFormat "+i);c=r[0],f=r[1],l=r[2],d=r[3],h=r[4]}var p,v=t[0],m=t[1],g=t[2],x=t[4],b=zo(e),_=b[0],y=b[1],w=b[2],S=zo(n),I=S[0],k=S[1],R=S[2],N=ar(v,I),D=ar(m,k),V=ar(g,R),L=function(q,Q,te,Y,ue,de,ve,xe,ge,X,_e){var he,be,ye,ke;if(typeof q=="number"){he={top:q,bottom:q,left:q,right:q,front:q,back:q,type:q===0?"VALID":"NUMBER"};var Ne=function($n,nn,Ya,jn,Lt,Ja){Lt==null&&(Lt=ju($n,nn,jn));var Ol=$n[0],Bl=$n[1],Ll=$n[2],Qa=Er((Ol-nn+2*Lt)/jn+1,Ja);E(ze(Qa),function(){return"The output # of depths ("+Qa+") must be an integer. Change the stride and/or zero pad parameters"});var Za=Er((Bl-nn+2*Lt)/jn+1,Ja);E(ze(Za),function(){return"The output # of rows ("+Za+") must be an integer. Change the stride and/or zero pad parameters"});var eo=Er((Ll-nn+2*Lt)/jn+1,Ja);return E(ze(eo),function(){return"The output # of columns ("+eo+") must be an integer. Change the stride and/or zero pad parameters"}),[Qa,Za,eo,Ya]}([Q,te,Y,1],xe,1,ue,q,_e);be=Ne[0],ye=Ne[1],ke=Ne[2]}else if(q==="same"){be=Math.ceil(Q/ue),ye=Math.ceil(te/de),ke=Math.ceil(Y/ve);var Pe=(be-1)*ue+xe-Q,Tt=(ye-1)*de+ge-te,Bt=(ke-1)*ve+X-Y,gt=Math.floor(Pe/2),Hn=Pe-gt,en=Math.floor(Tt/2),pn=Tt-en,tn=Math.floor(Bt/2);he={top:en,bottom:pn,left:tn,right:Bt-tn,front:gt,back:Hn,type:"SAME"}}else{if(q!=="valid")throw Error("Unknown padding parameter: "+q);he={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},be=Math.ceil((Q-xe+1)/ue),ye=Math.ceil((te-ge+1)/de),ke=Math.ceil((Y-X+1)/ve)}return{padInfo:he,outDepth:be,outHeight:ye,outWidth:ke}}(a,l,d,h,_,y,w,N,D,V,s),W=L.padInfo,H=L.outDepth,G=L.outHeight,U=L.outWidth,$=o?x*f:x;return i==="channelsFirst"?p=[c,$,H,G,U]:i==="channelsLast"&&(p=[c,H,G,U,$]),{batchSize:c,dataFormat:i,inDepth:l,inHeight:d,inWidth:h,inChannels:f,outDepth:H,outHeight:G,outWidth:U,outChannels:$,padInfo:W,strideDepth:_,strideHeight:y,strideWidth:w,filterDepth:v,filterHeight:m,filterWidth:g,effectiveFilterDepth:N,effectiveFilterHeight:D,effectiveFilterWidth:V,dilationDepth:I,dilationHeight:k,dilationWidth:R,inShape:r,outShape:p,filterShape:t}}function ju(r,t,e,n){n===void 0&&(n=1);var a=ar(t,n);return Math.floor((r[0]*(e-1)-e+a)/2)}function ya(r){return typeof r=="number"?[r,r,r]:r.length===2?[r[0],r[1],1]:r}function zo(r){return typeof r=="number"?[r,r,r]:r}function ar(r,t){return t<=1?r:r+(r-1)*(t-1)}function Er(r,t){if(!t)return r;switch(t){case"round":return Math.round(r);case"ceil":return Math.ceil(r);case"floor":return Math.floor(r);default:throw new Error("Unknown roundingMode "+t)}}function fr(r){var t=ya(r),e=t[0],n=t[1],a=t[2];return e===1&&n===1&&a===1}function mt(r,t){return fr(r)||fr(t)}function li(r){if(r==="NHWC")return"channelsLast";if(r==="NCHW")return"channelsFirst";throw new Error("Unknown dataFormat "+r)}function qu(r,t,e){if(t==="complex64"){if(r.dtype==="complex64")return r.clone();var n=Me(r.shape),a=r.toFloat(),o=e.complex(a,n);return n.dispose(),a.dispose(),o}if(!Cf(r.dtype,t))return T.makeTensorFromDataId(r.dataId,r.shape,t);if(r.dtype==="complex64"){var i=e.real(r);return o=i.cast(t),i.dispose(),o}if(t==="int32")return e.int(r);if(t==="bool"){var s=J(0,r.dtype);return o=e.notEqual(r,s),s.dispose(),o}throw new Error("Error in Cast: failed to cast "+r.dtype+" to "+t)}function Uo(r,t){return T.makeTensorFromDataId(r.dataId,t,r.dtype)}function Ku(r,t,e){var n=(t-r)/(e-1),a=Br(e,"float32");a[0]=r;for(var o=1;o<a.length;o++)a[o]=a[o-1]+n;return Ge(a,"float32")}function Go(r,t){if(r.length!==t.length)throw new Error("Cannot merge real and imag arrays of different lengths. real:"+r.length+", imag: "+t.length+".");for(var e=new Float32Array(2*r.length),n=0;n<e.length;n+=2)e[n]=r[n/2],e[n+1]=t[n/2];return e}function xs(r,t){return{real:r[2*t],imag:r[2*t+1]}}function Jp(r,t,e,n){r[2*n]=t,r[2*n+1]=e}function Qp(r,t,e){var n=(e?2:-2)*Math.PI*(r/t);return{real:Math.cos(n),imag:Math.sin(n)}}function Zp(r,t,e){var n=function(o,i,s){return function(u,c,l){for(var d=0,h=u.length,f=0,p=!1;d<h;){var v=l(c,u[f=d+(h-d>>>1)]);v>0?d=f+1:(h=f,p=!v)}return p?d:-d-1}(o,i,s||ev)}(r,t,e),a=n<0?-(n+1):n;r.splice(a,0,t)}function ev(r,t){return r>t?1:r<t?-1:0}function di(r,t,e,n,a){return Xu(r,t,e,n,a,0).selectedIndices}function hi(r,t,e,n,a,o){var i=Xu(r,t,e,n,a,o);return i.numValidOutputs.dispose(),{selectedIndices:i.selectedIndices,selectedScores:i.selectedScores}}function Xu(r,t,e,n,a,o,i,s){s===void 0&&(s=!1);for(var u=Array.from(t).map(function(_,y){return{score:_,boxIndex:y,suppressBeginIndex:0}}).filter(function(_){return _.score>a}).sort(bs),c=o>0?-.5/o:0,l=[],d=[];l.length<e&&u.length>0;){var h=u.pop(),f=h.score,p=h.boxIndex,v=h.suppressBeginIndex;if(f<a)break;for(var m=!1,g=l.length-1;g>=v;--g){var x=tv(r,p,l[g]);if(x>=n){m=!0;break}if(h.score=h.score*nv(n,c,x),h.score<=a)break}h.suppressBeginIndex=l.length,m||(h.score===f?(l.push(p),d.push(h.score)):h.score>a&&Zp(u,h,bs))}var b=l.length;return s&&(l.fill(0,b),d.fill(0,b)),{selectedIndices:Ge(l,"int32"),selectedScores:Ge(d,"float32"),numValidOutputs:J(b,"int32")}}function tv(r,t,e){var n=r.subarray(4*t,4*t+4),a=r.subarray(4*e,4*e+4),o=Math.min(n[0],n[2]),i=Math.min(n[1],n[3]),s=Math.max(n[0],n[2]),u=Math.max(n[1],n[3]),c=Math.min(a[0],a[2]),l=Math.min(a[1],a[3]),d=Math.max(a[0],a[2]),h=Math.max(a[1],a[3]),f=(s-o)*(u-i),p=(d-c)*(h-l);if(f<=0||p<=0)return 0;var v=Math.max(o,c),m=Math.max(i,l),g=Math.min(s,d),x=Math.min(u,h),b=Math.max(g-v,0)*Math.max(x-m,0);return b/(f+p-b)}function nv(r,t,e){var n=Math.exp(t*e*e);return e<=r?n:0}function bs(r,t){return r.score-t.score||r.score===t.score&&t.boxIndex-r.boxIndex}function Yu(r,t,e){var n=new Array(r.rank).fill(0),a=r.shape.slice();return t.map(function(o){a[e]=o;var i=r.slice(n,a);return n[e]+=o,i})}function Ju(r,t){for(var e=new Array(r.rank),n=0;n<e.length;n++)e[n]=r.shape[n]*t[n];var a=pe(e,r.dtype);for(n=0;n<a.values.length;++n){for(var o=a.indexToLoc(n),i=new Array(r.rank),s=0;s<i.length;s++)i[s]=o[s]%r.shape[s];var u=r.locToIndex(i);a.values[n]=r.values[u]}return a.toTensor()}function Qu(r,t,e,n,a){for(var o=t[t.length-1],i=[r.length/o,o],s=i[0],u=i[1],c=kr(e,s*n),l=kr("int32",s*n),d=0;d<s;d++){for(var h=d*u,f=r.subarray(h,h+u),p=[],v=0;v<f.length;v++)p.push({value:f[v],index:v});p.sort(function(_,y){return y.value-_.value});var m=d*n,g=c.subarray(m,m+n),x=l.subarray(m,m+n);for(v=0;v<n;v++)g[v]=p[v].value,x[v]=p[v].index}var b=t.slice();return b[b.length-1]=n,[rt(c,b,e),rt(l,b,"int32")]}function fi(r,t){for(var e=[],n=0;n<t.length;n++)t[n]&&e.push(n);var a=pe(r,"int32"),o=pe([e.length,r.length],"int32");for(n=0;n<e.length;n++){var i=a.indexToLoc(e[n]),s=n*r.length;o.values.set(i,s)}return o.toTensor()}var rv=function(r,t){this.outputShape=[],this.outputShape=r,this.variableNames=t.map(function(a,o){return"T"+o});var e=[];this.variableNames.forEach(function(a){e.push("float v"+a+" = get"+a+"AtOutCoords();")});var n=this.variableNames.map(function(a){return"v"+a}).join(" + ");this.userCode=`
      void main() {
        `+e.join(`
        `)+`

        float result = `+n+`;
        setOutput(result);
      }
    `},av=function(r,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r,this.variableNames=t.map(function(a,o){return"T"+o});var e=[];this.variableNames.forEach(function(a){e.push("vec4 v"+a+" = get"+a+"AtOutCoords();")});var n=this.variableNames.map(function(a){return"v"+a}).join(" + ");this.userCode=`
      void main() {
        `+e.join(`
        `)+`

        vec4 result = `+n+`;
        setOutput(result);
      }
    `},ov=function(r,t,e){this.variableNames=["A"];var n=r.windowSize,a=r.batchSize,o=r.inSize,i=Math.ceil(o/n);e||this.variableNames.push("bestIndicesA"),this.outputShape=[a,i];var s=t==="max"?">":"<",u=e?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=`
      void main() {
        ivec2 coords = getOutputCoords();
        int batch = coords[0];
        int outIdx = coords[1];
        int inOffset = outIdx * `+n+`;

        int bestIndex = inOffset;
        float bestValue = getA(batch, bestIndex);

        for (int i = 0; i < `+n+`; i++) {
          int inIdx = `+u+`;
          float candidate = getA(batch, inIdx);
          if (candidate `+s+` bestValue) {
            bestValue = candidate;
            bestIndex = inIdx;
          }
        }
        setOutput(float(bestIndex));
      }
    `};function Zu(r,t){return["x","y","z","w","u","v"].slice(0,t).map(function(e){return r+"."+e})}function ft(r,t){return t===1?[r]:Zu(r,t)}function it(){var r,t,e,n,a,o,i,s,u,c;return z().getNumber("WEBGL_VERSION")===2?(r="#version 300 es",t="in",e="out",n="in",a="texture",o="outputColor",i="out vec4 outputColor;",s=`
      bool isnan_custom(float val) {
        return (val > 0.0 || val < 0.0) ? false : val != 0.0;
      }

      bvec4 isnan_custom(vec4 val) {
        return bvec4(isnan_custom(val.x),
          isnan_custom(val.y), isnan_custom(val.z), isnan_custom(val.w));
      }

      #define isnan(value) isnan_custom(value)
    `,u="",c=`
      #define round(value) newRound(value)
      int newRound(float value) {
        return int(floor(value + 0.5));
      }

      ivec4 newRound(vec4 value) {
        return ivec4(floor(value + vec4(0.5)));
      }
    `):(r="",t="attribute",e="varying",n="varying",a="texture2D",o="gl_FragColor",i="",s=`
      #define isnan(value) isnan_custom(value)
      bool isnan_custom(float val) {
        return (val > 0. || val < 1. || val == 0.) ? false : true;
      }
      bvec4 isnan_custom(vec4 val) {
        return bvec4(isnan(val.x), isnan(val.y), isnan(val.z), isnan(val.w));
      }
    `,u=`
      uniform float INFINITY;

      bool isinf(float val) {
        return abs(val) == INFINITY;
      }
      bvec4 isinf(vec4 val) {
        return equal(abs(val), vec4(INFINITY));
      }
    `,c=`
      int round(float value) {
        return int(floor(value + 0.5));
      }

      ivec4 round(vec4 value) {
        return ivec4(floor(value + vec4(0.5)));
      }
    `),{version:r,attribute:t,varyingVs:e,varyingFs:n,texture2D:a,output:o,defineOutput:i,defineSpecialNaN:s,defineSpecialInf:u,defineRound:c}}function Pn(r,t,e){e===void 0&&(e="index");var n=qt(t);return n.map(function(a,o){return"int "+r[o]+" = "+e+" / "+a+"; "+(o===n.length-1?"int "+r[o+1]+" = "+e+" - "+r[o]+" * "+a:"index -= "+r[o]+" * "+a)+";"}).join("")}function pi(r){var t=qt(r).map(function(e){return e.toString()});return`
  int getFlatIndex(ivec3 coords) {
    return coords.x * `+t[0]+" + coords.y * "+t[1]+` + coords.z;
  }
`}var ec=`
  const float FLOAT_MAX = 1.70141184e38;
  const float FLOAT_MIN = 1.17549435e-38;

  lowp vec4 encode_float(highp float v) {
    if (isnan(v)) {
      return vec4(255, 255, 255, 255);
    }

    highp float av = abs(v);

    if(av < FLOAT_MIN) {
      return vec4(0.0, 0.0, 0.0, 0.0);
    } else if(v > FLOAT_MAX) {
      return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;
    } else if(v < -FLOAT_MAX) {
      return vec4(0.0, 0.0,  128.0, 255.0) / 255.0;
    }

    highp vec4 c = vec4(0,0,0,0);

    highp float e = floor(log2(av));
    highp float m = exp2(fract(log2(av))) - 1.0;

    c[2] = floor(128.0 * m);
    m -= c[2] / 128.0;
    c[1] = floor(32768.0 * m);
    m -= c[1] / 32768.0;
    c[0] = floor(8388608.0 * m);

    highp float ebias = e + 127.0;
    c[3] = floor(ebias / 2.0);
    ebias -= c[3] * 2.0;
    c[2] += floor(ebias) * 128.0;

    c[3] += 128.0 * step(0.0, -v);

    return c / 255.0;
  }
`;function iv(r,t,e,n){var a=[];r.forEach(function(f){var p=ae(f.shapeInfo.logicalShape);f.shapeInfo.isUniform?a.push("uniform float "+f.name+(p>1?"["+p+"]":"")+";"):(a.push("uniform sampler2D "+f.name+";"),a.push("uniform int offset"+f.name+";"))});var o,i,s=a.join(`
`),u=r.map(function(f){return function(p,v,m){m===void 0&&(m=!1);var g="";g+=m?tc(p):Jn(p);var x=p.shapeInfo.logicalShape,b=v.logicalShape;return x.length<=b.length&&(g+=m?function(_,y){var w,S=_.name,I=S.charAt(0).toUpperCase()+S.slice(1),k="get"+I+"AtOutCoords",R=_.shapeInfo.logicalShape.length,N=y.logicalShape.length,D=gn(_.shapeInfo.logicalShape,y.logicalShape),V=Fe(N),L=N-R,W=["x","y","z","w","u","v"];w=R===0?"":N<2&&D.length>=1?"coords = 0;":D.map(function(te){return"coords."+W[te+L]+" = 0;"}).join(`
`);var H="";H=N<2&&R>0?"coords":_.shapeInfo.logicalShape.map(function(te,Y){return"coords."+W[Y+L]}).join(", ");var G="return outputValue;",U=ae(_.shapeInfo.logicalShape)===1,$=ae(y.logicalShape)===1;if(R!==1||U||$){if(U&&!$)G=N===1?`
        return vec4(outputValue.x, outputValue.x, 0., 0.);
      `:`
        return vec4(outputValue.x);
      `;else if(D.length){var q=R-2,Q=R-1;D.indexOf(q)>-1&&D.indexOf(Q)>-1?G="return vec4(outputValue.x);":D.indexOf(q)>-1?G="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":D.indexOf(Q)>-1&&(G="return vec4(outputValue.xx, outputValue.zz);")}}else G=`
      return vec4(outputValue.xy, outputValue.xy);
    `;return`
    vec4 `+k+`() {
      `+V+` coords = getOutputCoords();
      `+w+`
      vec4 outputValue = get`+I+"("+H+`);
      `+G+`
    }
  `}(p,v):function(_,y){var w=_.name,S=w.charAt(0).toUpperCase()+w.slice(1),I="get"+S+"AtOutCoords",k=y.texShape,R=_.shapeInfo.texShape,N=_.shapeInfo.logicalShape.length,D=y.logicalShape.length;if(!_.shapeInfo.isUniform&&N===D&&_.shapeInfo.flatOffset==null&&Qe(R,k))return`
      float `+I+`() {
        return sampleTexture(`+w+`, resultUV);
      }
    `;var V,L=Fe(D),W=gn(_.shapeInfo.logicalShape,y.logicalShape),H=D-N,G=["x","y","z","w","u","v"];V=N===0?"":D<2&&W.length>=1?"coords = 0;":W.map(function($){return"coords."+G[$+H]+" = 0;"}).join(`
`);var U="";return U=D<2&&N>0?"coords":_.shapeInfo.logicalShape.map(function($,q){return"coords."+G[q+H]}).join(", "),`
    float `+I+`() {
      `+L+` coords = getOutputCoords();
      `+V+`
      return get`+S+"("+U+`);
    }
  `}(p,v)),g}(f,t,n)}).join(`
`),c=t.texShape,l=it(),d=function(f){return`
    float sampleTexture(sampler2D textureSampler, vec2 uv) {
      return `+f.texture2D+`(textureSampler, uv).r;
    }
  `}(l),h=function(f){return f.version+`
    precision highp float;
    precision highp int;
    precision highp sampler2D;
    `+f.varyingFs+` vec2 resultUV;
    `+f.defineOutput+`
    const vec2 halfCR = vec2(0.5, 0.5);

    struct ivec5
    {
      int x;
      int y;
      int z;
      int w;
      int u;
    };

    struct ivec6
    {
      int x;
      int y;
      int z;
      int w;
      int u;
      int v;
    };

    uniform float NAN;
    `+f.defineSpecialNaN+`
    `+f.defineSpecialInf+`
    `+f.defineRound+`

    int imod(int x, int y) {
      return x - y * (x / y);
    }

    int idiv(int a, int b, float sign) {
      int res = a / b;
      int mod = imod(a, b);
      if (sign < 0. && mod != 0) {
        res -= 1;
      }
      return res;
    }

    //Based on the work of Dave Hoskins
    //https://www.shadertoy.com/view/4djSRW
    #define HASHSCALE1 443.8975
    float random(float seed){
      vec2 p = resultUV * seed;
      vec3 p3  = fract(vec3(p.xyx) * HASHSCALE1);
      p3 += dot(p3, p3.yzx + 19.19);
      return fract((p3.x + p3.y) * p3.z);
    }

    `+sv+`
    `+uv+`
    `+cv+`
  `}(l);return t.isPacked?(o=function(f,p){switch(f.length){case 0:return`
    int getOutputCoords() {
      return 0;
    }
  `;case 1:return function(_,y){var w=[Math.ceil(y[0]/2),Math.ceil(y[1]/2)];return w[0]===1?`
      int getOutputCoords() {
        return 2 * int(resultUV.x * `+w[1]+`.0);
      }
    `:w[1]===1?`
      int getOutputCoords() {
        return 2 * int(resultUV.y * `+w[0]+`.0);
      }
    `:`
    int getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx *
                             vec2(`+w[0]+", "+w[1]+`));
      return 2 * (resTexRC.x * `+w[1]+` + resTexRC.y);
    }
  `}(0,p);case 2:return function(_,y){var w=[Math.ceil(y[0]/2),Math.ceil(y[1]/2)];if(Qe(_,y))return`
      ivec2 getOutputCoords() {
        return 2 * ivec2(resultUV.yx * vec2(`+w[0]+", "+w[1]+`));
      }
    `;var S=Math.ceil(_[1]/2);return`
    ivec2 getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx *
                             vec2(`+w[0]+", "+w[1]+`));

      int index = resTexRC.x * `+w[1]+` + resTexRC.y;
      int r = 2 * (index / `+S+`);
      int c = imod(index, `+S+`) * 2;

      return ivec2(r, c);
    }
  `}(f,p);case 3:return v=f,m=p,g=[Math.ceil(m[0]/2),Math.ceil(m[1]/2)],x=Math.ceil(v[2]/2),b=x*Math.ceil(v[1]/2),`
    ivec3 getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx *
                             vec2(`+g[0]+", "+g[1]+`));
      int index = resTexRC.x * `+g[1]+` + resTexRC.y;

      int b = index / `+b+`;
      index -= b * `+b+`;

      int r = 2 * (index / `+x+`);
      int c = imod(index, `+x+`) * 2;

      return ivec3(b, r, c);
    }
  `;default:return function(_,y){for(var w=[Math.ceil(y[0]/2),Math.ceil(y[1]/2)],S=Math.ceil(_[_.length-1]/2),I=S*Math.ceil(_[_.length-2]/2),k=I,R="",N="b, r, c",D=2;D<_.length-1;D++)k*=_[_.length-D-1],R=`
      int b`+D+" = index / "+k+`;
      index -= b`+D+" * "+k+`;
    `+R,N="b"+D+", "+N;return`
    ivec`+_.length+` getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx *
                             vec2(`+w[0]+", "+w[1]+`));
      int index = resTexRC.x * `+w[1]+` + resTexRC.y;

      `+R+`

      int b = index / `+I+`;
      index -= b * `+I+`;

      int r = 2 * (index / `+S+`);
      int c = imod(index, `+S+`) * 2;

      return ivec`+_.length+"("+N+`);
    }
  `}(f,p)}var v,m,g,x,b}(t.logicalShape,c),i=function(f){return`
    void setOutput(vec4 val) {
      `+f.output+` = val;
    }
  `}(l)):(o=function(f,p){switch(f.length){case 0:return`
    int getOutputCoords() {
      return 0;
    }
  `;case 1:return function(g,x){return x[0]===1?`
      int getOutputCoords() {
        return int(resultUV.x * `+x[1]+`.0);
      }
    `:x[1]===1?`
      int getOutputCoords() {
        return int(resultUV.y * `+x[0]+`.0);
      }
    `:`
    int getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx *
                             vec2(`+x[0]+", "+x[1]+`));
      return resTexRC.x * `+x[1]+` + resTexRC.y;
    }
  `}(0,p);case 2:return function(g,x){return Qe(g,x)?`
      ivec2 getOutputCoords() {
        return ivec2(resultUV.yx * vec2(`+x[0]+", "+x[1]+`));
      }
    `:g[1]===1?`
      ivec2 getOutputCoords() {
        ivec2 resTexRC = ivec2(resultUV.yx *
                               vec2(`+x[0]+", "+x[1]+`));
        int index = resTexRC.x * `+x[1]+` + resTexRC.y;
        return ivec2(index, 0);
      }
    `:g[0]===1?`
      ivec2 getOutputCoords() {
        ivec2 resTexRC = ivec2(resultUV.yx *
                               vec2(`+x[0]+", "+x[1]+`));
        int index = resTexRC.x * `+x[1]+` + resTexRC.y;
        return ivec2(0, index);
      }
    `:`
    ivec2 getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx *
                             vec2(`+x[0]+", "+x[1]+`));
      int index = resTexRC.x * `+x[1]+` + resTexRC.y;
      int r = index / `+g[1]+`;
      int c = index - r * `+g[1]+`;
      return ivec2(r, c);
    }
  `}(f,p);case 3:return v=p,m=Pn(["r","c","d"],f),`
    ivec3 getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx *
                             vec2(`+v[0]+", "+v[1]+`));
      int index = resTexRC.x * `+v[1]+` + resTexRC.y;
      `+m+`
      return ivec3(r, c, d);
    }
  `;case 4:return function(g,x){var b=Pn(["r","c","d","d2"],g);return`
    ivec4 getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx *
        vec2(`+x[0]+", "+x[1]+`));
      int index = resTexRC.x * `+x[1]+` + resTexRC.y;
      `+b+`
      return ivec4(r, c, d, d2);
    }
  `}(f,p);case 5:return function(g,x){var b=Pn(["r","c","d","d2","d3"],g);return`
    ivec5 getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx * vec2(`+x[0]+`,
                             `+x[1]+`));

      int index = resTexRC.x * `+x[1]+` + resTexRC.y;

      `+b+`

      ivec5 outShape = ivec5(r, c, d, d2, d3);
      return outShape;
    }
  `}(f,p);case 6:return function(g,x){var b=Pn(["r","c","d","d2","d3","d4"],g);return`
    ivec6 getOutputCoords() {
      ivec2 resTexRC = ivec2(resultUV.yx *
        vec2(`+x[0]+", "+x[1]+`));
      int index = resTexRC.x * `+x[1]+` + resTexRC.y;

      `+b+`

      ivec6 result = ivec6(r, c, d, d2, d3, d4);
      return result;
    }
  `}(f,p);default:throw new Error(f.length+"-D output sampling is not yet supported")}var v,m}(t.logicalShape,c),i=function(f){return`
    void setOutput(float val) {
      `+f.output+` = vec4(val, 0, 0, 0);
    }
  `}(l)),n&&(h+=lv),[h,d,i,s,o,u,e].join(`
`)}function Jn(r){var t=r.shapeInfo.logicalShape;switch(t.length){case 0:return function(e){var n=e.name,a="get"+n.charAt(0).toUpperCase()+n.slice(1);if(e.shapeInfo.isUniform)return"float "+a+"() {return "+n+";}";var o=e.shapeInfo.texShape,i=o[0],s=o[1];if(i===1&&s===1)return`
      float `+a+`() {
        return sampleTexture(`+n+`, halfCR);
      }
    `;var u=e.shapeInfo.texShape,c=u[0],l=u[1],d=An(n);return`
    float `+a+`() {
      vec2 uv = uvFromFlat(`+c+", "+l+", "+d+`);
      return sampleTexture(`+n+`, uv);
    }
  `}(r);case 1:return function(e){var n=e.name,a="get"+n.charAt(0).toUpperCase()+n.slice(1);if(e.shapeInfo.isUniform)return`
      float `+a+`(int index) {
        `+qn(e)+`
      }
    `;var o=e.shapeInfo.texShape,i=o[0],s=o[1];if(s===1&&i===1)return`
      float `+a+`(int index) {
        return sampleTexture(`+n+`, halfCR);
      }
    `;var u=An(n);return s===1?`
      float `+a+`(int index) {
        vec2 uv = vec2(0.5, (float(index + `+u+") + 0.5) / "+i+`.0);
        return sampleTexture(`+n+`, uv);
      }
    `:i===1?`
      float `+a+`(int index) {
        vec2 uv = vec2((float(index + `+u+") + 0.5) / "+s+`.0, 0.5);
        return sampleTexture(`+n+`, uv);
      }
    `:`
    float `+a+`(int index) {
      vec2 uv = uvFromFlat(`+i+", "+s+", index + "+u+`);
      return sampleTexture(`+n+`, uv);
    }
  `}(r);case 2:return function(e){var n=e.shapeInfo.logicalShape,a=e.name,o="get"+a.charAt(0).toUpperCase()+a.slice(1),i=e.shapeInfo.texShape;if(i!=null&&Qe(n,i)){var s=i[0],u=i[1];return`
    float `+o+`(int row, int col) {
      vec2 uv = (vec2(col, row) + halfCR) / vec2(`+u+".0, "+s+`.0);
      return sampleTexture(`+a+`, uv);
    }
  `}var c=Fn(n),l=c.newShape,d=c.keptDims,h=l;if(h.length<n.length){var f=Qn(e,h);return`
      `+Jn(f)+`
      float `+o+`(int row, int col) {
        return `+o+"("+Zn(["row","col"],d)+`);
      }
    `}if(e.shapeInfo.isUniform)return`
      float `+o+`(int row, int col) {
        int index = round(dot(vec2(row, col), vec2(`+n[1]+`, 1)));
        `+qn(e)+`
      }
    `;var p=i[0],v=i[1],m=An(a);return v===1?`
    float `+o+`(int row, int col) {
      float index = dot(vec3(row, col, `+m+"), vec3("+n[1]+`, 1, 1));
      vec2 uv = vec2(0.5, (index + 0.5) / `+p+`.0);
      return sampleTexture(`+a+`, uv);
    }
  `:p===1?`
    float `+o+`(int row, int col) {
      float index = dot(vec3(row, col, `+m+"), vec3("+n[1]+`, 1, 1));
      vec2 uv = vec2((index + 0.5) / `+v+`.0, 0.5);
      return sampleTexture(`+a+`, uv);
    }
  `:`
  float `+o+`(int row, int col) {
    // Explicitly use integer operations as dot() only works on floats.
    int index = row * `+n[1]+" + col + "+m+`;
    vec2 uv = uvFromFlat(`+p+", "+v+`, index);
    return sampleTexture(`+a+`, uv);
  }
`}(r);case 3:return function(e){var n=e.shapeInfo.logicalShape,a=e.name,o="get"+a.charAt(0).toUpperCase()+a.slice(1),i=n[1]*n[2],s=n[2],u=Fn(n),c=u.newShape,l=u.keptDims,d=c;if(d.length<n.length){var h=Qn(e,d);return`
        `+Jn(h)+`
        float `+o+`(int row, int col, int depth) {
          return `+o+"("+Zn(["row","col","depth"],l)+`);
        }
      `}if(e.shapeInfo.isUniform)return`
      float `+o+`(int row, int col, int depth) {
        int index = round(dot(vec3(row, col, depth),
                          vec3(`+i+", "+s+`, 1)));
        `+qn(e)+`
      }
    `;var f=e.shapeInfo.texShape,p=f[0],v=f[1],m=e.shapeInfo.flatOffset;if(v===i&&m==null)return`
        float `+o+`(int row, int col, int depth) {
          float texR = float(row);
          float texC = dot(vec2(col, depth), vec2(`+s+`, 1));
          vec2 uv = (vec2(texC, texR) + halfCR) /
                     vec2(`+v+".0, "+p+`.0);
          return sampleTexture(`+a+`, uv);
        }
      `;if(v===s&&m==null)return`
    float `+o+`(int row, int col, int depth) {
      float texR = dot(vec2(row, col), vec2(`+n[1]+`, 1));
      float texC = float(depth);
      vec2 uv = (vec2(texC, texR) + halfCR) / vec2(`+v+".0, "+p+`.0);
      return sampleTexture(`+a+`, uv);
    }
  `;var g=An(a);return`
      float `+o+`(int row, int col, int depth) {
        // Explicitly use integer operations as dot() only works on floats.
        int index = row * `+i+" + col * "+s+" + depth + "+g+`;
        vec2 uv = uvFromFlat(`+p+", "+v+`, index);
        return sampleTexture(`+a+`, uv);
      }
  `}(r);case 4:return function(e){var n=e.shapeInfo.logicalShape,a=e.name,o="get"+a.charAt(0).toUpperCase()+a.slice(1),i=n[3],s=n[2]*i,u=n[1]*s,c=Fn(n),l=c.newShape,d=c.keptDims;if(l.length<n.length){var h=Qn(e,l);return`
      `+Jn(h)+`
      float `+o+`(int row, int col, int depth, int depth2) {
        return `+o+"("+Zn(["row","col","depth","depth2"],d)+`);
      }
    `}if(e.shapeInfo.isUniform)return`
      float `+o+`(int row, int col, int depth, int depth2) {
        int index = round(dot(vec4(row, col, depth, depth2),
                          vec4(`+u+", "+s+", "+i+`, 1)));
        `+qn(e)+`
      }
    `;var f=e.shapeInfo.flatOffset,p=e.shapeInfo.texShape,v=p[0],m=p[1];if(m===u&&f==null)return`
      float `+o+`(int row, int col, int depth, int depth2) {
        float texR = float(row);
        float texC =
            dot(vec3(col, depth, depth2),
                vec3(`+s+", "+i+`, 1));
        vec2 uv = (vec2(texC, texR) + halfCR) /
                   vec2(`+m+".0, "+v+`.0);
        return sampleTexture(`+a+`, uv);
      }
    `;if(m===i&&f==null)return`
      float `+o+`(int row, int col, int depth, int depth2) {
        float texR = dot(vec3(row, col, depth),
                         vec3(`+n[1]*n[2]+", "+n[2]+`, 1));
        float texC = float(depth2);
        vec2 uv = (vec2(texC, texR) + halfCR) /
                  vec2(`+m+".0, "+v+`.0);
        return sampleTexture(`+a+`, uv);
      }
    `;var g=An(a);return`
    float `+o+`(int row, int col, int depth, int depth2) {
      // Explicitly use integer operations as dot() only works on floats.
      int index = row * `+u+" + col * "+s+` +
          depth * `+i+` + depth2;
      vec2 uv = uvFromFlat(`+v+", "+m+", index + "+g+`);
      return sampleTexture(`+a+`, uv);
    }
  `}(r);case 5:return function(e){var n=e.shapeInfo.logicalShape,a=e.name,o="get"+a.charAt(0).toUpperCase()+a.slice(1),i=n[4],s=n[3]*i,u=n[2]*s,c=n[1]*u,l=Fn(n),d=l.newShape,h=l.keptDims;if(d.length<n.length){var f=Qn(e,d);return`
      `+Jn(f)+`
      float `+o+`(int row, int col, int depth, int depth2, int depth3) {
        return `+o+"("+Zn(["row","col","depth","depth2","depth3"],h)+`);
      }
    `}if(e.shapeInfo.isUniform)return`
      float `+o+`(int row, int col, int depth, int depth2, int depth3) {
        float index = dot(
          vec4(row, col, depth, depth2),
          vec4(`+c+", "+u+", "+s+", "+i+`)) +
          depth3;
        `+qn(e)+`
      }
    `;var p=e.shapeInfo.flatOffset,v=e.shapeInfo.texShape,m=v[0],g=v[1];if(g===c&&p==null)return`
      float `+o+`(int row, int col, int depth, int depth2, int depth3) {
        int texR = row;
        float texC = dot(vec4(col, depth, depth2, depth3),
                         vec4(`+u+", "+s+", "+i+`, 1));
        vec2 uv = (vec2(texC, texR) + halfCR) /
                   vec2(`+g+".0, "+m+`.0);
        return sampleTexture(`+a+`, uv);
      }
    `;if(g===i&&p==null)return`
      float `+o+`(int row, int col, int depth, int depth2, int depth3) {
        float texR = dot(
          vec4(row, col, depth, depth2),
          vec4(`+n[1]*n[2]*n[3]+`,
               `+n[2]*n[3]+", "+n[3]+`, 1));
        int texC = depth3;
        vec2 uv = (vec2(texC, texR) + halfCR) /
                  vec2(`+g+".0, "+m+`.0);
        return sampleTexture(`+a+`, uv);
      }
    `;var x=An(a);return`
    float `+o+`(int row, int col, int depth, int depth2, int depth3) {
      // Explicitly use integer operations as dot() only works on floats.
      int index = row * `+c+" + col * "+u+" + depth * "+s+` +
          depth2 * `+i+" + depth3 + "+x+`;
      vec2 uv = uvFromFlat(`+m+", "+g+`, index);
      return sampleTexture(`+a+`, uv);
    }
  `}(r);case 6:return function(e){var n=e.shapeInfo.logicalShape,a=e.name,o="get"+a.charAt(0).toUpperCase()+a.slice(1),i=Fn(n),s=i.newShape,u=i.keptDims;if(s.length<n.length){var c=Qn(e,s);return`
      `+Jn(c)+`
      float `+o+`(int row, int col, int depth,
                    int depth2, int depth3, int depth4) {
        return `+o+"("+Zn(["row","col","depth","depth2","depth3","depth4"],u)+`);
      }
    `}var l=n[5],d=n[4]*l,h=n[3]*d,f=n[2]*h,p=n[1]*f;if(e.shapeInfo.isUniform)return`
      float `+o+`(int row, int col, int depth,
                  int depth2, int depth3, int depth4) {
        int index = round(dot(
          vec4(row, col, depth, depth2),
          vec4(`+p+", "+f+", "+h+", "+d+`)) +
          dot(
            vec2(depth3, depth4),
            vec2(`+l+`, 1)));
        `+qn(e)+`
      }
    `;var v=e.shapeInfo.flatOffset,m=e.shapeInfo.texShape,g=m[0],x=m[1];if(x===p&&v==null)return`
      float `+o+`(int row, int col, int depth,
                    int depth2, int depth3, int depth4) {
        int texR = row;
        float texC = dot(vec4(col, depth, depth2, depth3),
          vec4(`+f+", "+h+", "+d+", "+l+`)) +
               float(depth4);
        vec2 uv = (vec2(texC, texR) + halfCR) /
                   vec2(`+x+".0, "+g+`.0);
        return sampleTexture(`+a+`, uv);
      }
    `;if(x===l&&v==null)return`
      float `+o+`(int row, int col, int depth,
                    int depth2, int depth3, int depth4) {
        float texR = dot(vec4(row, col, depth, depth2),
          vec4(`+n[1]*n[2]*n[3]*n[4]+`,
               `+n[2]*n[3]*n[4]+`,
               `+n[3]*n[4]+`,
               `+n[4]+`)) + float(depth3);
        int texC = depth4;
        vec2 uv = (vec2(texC, texR) + halfCR) /
                  vec2(`+x+".0, "+g+`.0);
        return sampleTexture(`+a+`, uv);
      }
    `;var b=An(a);return`
    float `+o+`(int row, int col, int depth,
                  int depth2, int depth3, int depth4) {
      // Explicitly use integer operations as dot() only works on floats.
      int index = row * `+p+" + col * "+f+" + depth * "+h+` +
          depth2 * `+d+" + depth3 * "+l+" + depth4 + "+b+`;
      vec2 uv = uvFromFlat(`+g+", "+x+`, index);
      return sampleTexture(`+a+`, uv);
    }
  `}(r);default:throw new Error(t.length+"-D input sampling is not yet supported")}}function tc(r){var t,e,n;switch(r.shapeInfo.logicalShape.length){case 0:return t=r.name,e="get"+t.charAt(0).toUpperCase()+t.slice(1),n=it(),`
    vec4 `+e+`() {
      return `+n.texture2D+"("+t+`, halfCR);
    }
  `;case 1:return function(a){var o=a.name,i="get"+o.charAt(0).toUpperCase()+o.slice(1),s=a.shapeInfo.texShape,u=[Math.ceil(s[0]/2),Math.ceil(s[1]/2)],c=it();return`
    vec4 `+i+`(int index) {
      vec2 uv = packedUVfrom1D(
        `+u[0]+", "+u[1]+`, index);
      return `+c.texture2D+"("+o+`, uv);
    }
  `}(r);case 2:return function(a){var o=a.shapeInfo.logicalShape,i=a.name,s="get"+i.charAt(0).toUpperCase()+i.slice(1),u=a.shapeInfo.texShape,c=u[0],l=u[1],d=it();if(u!=null&&Qe(o,u))return`
      vec4 `+s+`(int row, int col) {
        vec2 uv = (vec2(col, row) + halfCR) / vec2(`+l+".0, "+c+`.0);

        return `+d.texture2D+"("+i+`, uv);
      }
    `;var h=[Math.ceil(u[0]/2),Math.ceil(u[1]/2)],f=Math.ceil(o[1]/2);return`
    vec4 `+s+`(int row, int col) {
      vec2 uv = packedUVfrom2D(`+f+", "+h[0]+", "+h[1]+`, row, col);
      return `+d.texture2D+"("+i+`, uv);
    }
  `}(r);case 3:return function(a){var o=a.shapeInfo.logicalShape,i=a.name,s="get"+i.charAt(0).toUpperCase()+i.slice(1),u=a.shapeInfo.texShape,c=[Math.ceil(u[0]/2),Math.ceil(u[1]/2)];if(o[0]===1){var l=o.slice(1),d=Qn(a,l);return`
        `+tc(d)+`
        vec4 `+s+`(int b, int row, int col) {
          return `+s+"("+Zn(["b","row","col"],[1,2])+`);
        }
      `}var h=c[0],f=c[1],p=Math.ceil(o[2]/2),v=p*Math.ceil(o[1]/2),m=it();return`
    vec4 `+s+`(int b, int row, int col) {
      vec2 uv = packedUVfrom3D(
        `+h+", "+f+", "+v+", "+p+`, b, row, col);
      return `+m.texture2D+"("+i+`, uv);
    }
  `}(r);default:return function(a){for(var o=a.shapeInfo.logicalShape,i=o.length,s=a.name,u="get"+s.charAt(0).toUpperCase()+s.slice(1),c=a.shapeInfo.texShape,l=[Math.ceil(c[0]/2),Math.ceil(c[1]/2)],d=l[0],h=l[1],f=Math.ceil(o[i-1]/2),p=f*Math.ceil(o[i-2]/2),v="int b, int row, int col",m="b * "+p+" + (row / 2) * "+f+" + (col / 2)",g=2;g<i-1;g++)v="int b"+g+", "+v,p*=o[i-g-1],m="b"+g+" * "+p+" + "+m;var x=it();return`
    vec4 `+u+"("+v+`) {
      int index = `+m+`;
      int texR = index / `+h+`;
      int texC = index - texR * `+h+`;
      vec2 uv = (vec2(texC, texR) + halfCR) / vec2(`+h+", "+d+`);
      return `+x.texture2D+"("+s+`, uv);
    }
  `}(r)}}var sv=`
vec2 uvFromFlat(int texNumR, int texNumC, int index) {
  int texR = index / texNumC;
  int texC = index - texR * texNumC;
  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
}
vec2 packedUVfrom1D(int texNumR, int texNumC, int index) {
  int texelIndex = index / 2;
  int texR = texelIndex / texNumC;
  int texC = texelIndex - texR * texNumC;
  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
}
`,uv=`
vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR,
  int texNumC, int row, int col) {
  int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);
  int texR = texelIndex / texNumC;
  int texC = texelIndex - texR * texNumC;
  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
}
`,cv=`
vec2 packedUVfrom3D(int texNumR, int texNumC,
    int texelsInBatch, int texelsInLogicalRow, int b,
    int row, int col) {
  int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);
  int texR = index / texNumC;
  int texC = index - texR * texNumC;
  return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
}
`,lv=`
  float getChannel(vec4 frag, vec2 innerDims) {
    vec2 modCoord = mod(innerDims, 2.);
    return modCoord.x == 0. ?
      (modCoord.y == 0. ? frag.r : frag.g) :
      (modCoord.y == 0. ? frag.b : frag.a);
  }
  float getChannel(vec4 frag, int dim) {
    float modCoord = mod(float(dim), 2.);
    return modCoord == 0. ? frag.r : frag.g;
  }
`;function An(r){return"offset"+r}function qn(r){var t=r.name,e=ae(r.shapeInfo.logicalShape);return e<2?"return "+t+";":`
    for (int i = 0; i < `+e+`; i++) {
      if (i == index) {
        return `+t+`[i];
      }
    }
  `}function Fe(r){if(r<=1)return"int";if(r===2)return"ivec2";if(r===3)return"ivec3";if(r===4)return"ivec4";if(r===5)return"ivec5";if(r===6)return"ivec6";throw Error("GPU for rank "+r+" is not yet supported")}function Qn(r,t){var e=JSON.parse(JSON.stringify(r));return e.shapeInfo.logicalShape=t,e}function Zn(r,t){return t.map(function(e){return r[e]}).join(", ")}var dv=function(r,t,e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,E(r.length>2,function(){return"Packed arg"+(e.charAt(0).toUpperCase()+e.slice(1))+" supports only inputs with rank above 2."});var a=r[r.length-1],o=Math.ceil(a/t);this.outputShape=r.slice(0,-1),o>1&&this.outputShape.push(o),n||this.variableNames.push("bestIndicesA");var i,s,u=this.outputShape,c=u.length,l=Fe(c),d=ft("coords",c);if(o===1){var h=Fe(s=c+1);i=`
        `+h+" sourceLocR = "+h+"("+d.join()+`, 0);
        ++`+d[c-1]+`;
        `+h+" sourceLocG = "+h+"("+d.join()+`, 0);
        ++`+d[c-2]+`;
        `+h+" sourceLocA = "+h+"("+d.join()+`, 0);
        --`+d[c-1]+`;
        `+h+" sourceLocB = "+h+"("+d.join()+`, 0);
        --`+d[c-2]+";"}else s=c,i=`
        `+l+` sourceLocR = coords;
        ++`+d[c-1]+`;
        `+l+` sourceLocG = coords;
        ++`+d[c-2]+`;
        `+l+` sourceLocA = coords;
        --`+d[c-1]+`;
        `+l+` sourceLocB = coords;
        --`+d[c-2]+";";var f=["x","y","z","w","u","v"].slice(0,s),p="."+f[s-1],v=f.map(function(I){return"int "+I}),m=ft("sourceLocR",s-1).concat("inIdx.r"),g=ft("sourceLocG",s-1).concat("inIdx.g"),x=ft("sourceLocB",s-1).concat("inIdx.b"),b=ft("sourceLocA",s-1).concat("inIdx.a"),_=e==="max"?"greaterThan":"lessThan",y=n?"":`
          inIdx = round(vec4(getBestIndicesAChannel(`+m.join()+`),
                             getBestIndicesAChannel(`+g.join()+`),
                             getBestIndicesAChannel(`+x.join()+`),
                             getBestIndicesAChannel(`+b.join()+")));",w=`vec4(
            getAChannel(`+m.join()+`),
            hasNextCol ? getAChannel(`+g.join()+`) : 0.,
            hasNextRow ? getAChannel(`+x.join()+`) : 0.,
            hasNextRow && hasNextCol ? getAChannel(`+b.join()+") : 0.)",S=n?"":`
      float getBestIndicesAChannel(`+v.join()+`) {
        return getChannel(getBestIndicesA(`+f.join()+`),
                                          vec2(`+f.slice(-2).join()+`));
      }`;this.userCode=`
      float getAChannel(`+v.join()+`) {
        return getChannel(getA(`+f.join()+`),
                               vec2(`+f.slice(-2).join()+`));
      }
      `+S+`
      void main() {
        `+l+` coords = getOutputCoords();
        bool hasNextCol = `+d[c-1]+" < "+(u[c-1]-1)+`;
        bool hasNextRow = `+d[c-2]+" < "+(u[c-2]-1)+`;
        `+i+`
        ivec4 srcIdx = ivec4(sourceLocR`+p+", sourceLocG"+p+`,
          sourceLocB`+p+", sourceLocA"+p+") * "+t+`;
        ivec4 inIdx = srcIdx;
        vec4 bestIndex = vec4(inIdx);
        vec4 bestValue = `+w+`;

        for (int i = 0; i < `+t+`; i++) {
          inIdx = srcIdx;
          `+y+`
          vec4 candidate = `+w+`;
          bvec4 nan = isnan(candidate);
          bvec4 replace = bvec4(
            vec4(`+_+`(candidate, bestValue)) * (vec4(1.0) - vec4(nan)));

          bestValue = vec4(replace.x  ? candidate.x : bestValue.x,
                           replace.y  ? candidate.y : bestValue.y,
                           replace.z  ? candidate.z : bestValue.z,
                           replace.w  ? candidate.w : bestValue.w);
          bestIndex = mix(bestIndex, vec4(inIdx), vec4(replace));
          srcIdx++;
        }
        setOutput(bestIndex);
      }
    `},hv=function(r){this.variableNames=["dy"],this.outputShape=r.inShape;var t=r.filterHeight,e=r.filterWidth,n=r.strideHeight,a=r.strideWidth,o=r.dilationHeight,i=r.dilationWidth,s=r.effectiveFilterHeight,u=r.effectiveFilterWidth,c=s-1-r.padInfo.top,l=u-1-r.padInfo.left,d=1/(t*e);this.userCode=`
      const ivec2 pads = ivec2(`+c+", "+l+`);
      const float avgMultiplier = float(`+d+`);

      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int d = coords[3];

        ivec2 dyRCCorner = coords.yz - pads;
        int dyRCorner = dyRCCorner.x;
        int dyCCorner = dyRCCorner.y;

        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).
        // ? = to be determined. : = across all values in that axis.
        float dotProd = 0.0;
        for (int wR = 0; wR < `+s+`;
            wR += `+o+`) {
          float dyR = float(dyRCorner + wR) / `+n+`.0;

          if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 || fract(dyR) > 0.0) {
            continue;
          }
          int idyR = int(dyR);

          for (int wC = 0; wC < `+u+`;
            wC+= `+i+`) {
            float dyC = float(dyCCorner + wC) / `+a+`.0;

            if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
                fract(dyC) > 0.0) {
              continue;
            }
            int idyC = int(dyC);

            float dyValue = getDy(b, idyR, idyC, d);

            dotProd += dyValue * avgMultiplier;
          }
        }
        setOutput(dotProd);
      }
    `},fv=function(r){this.variableNames=["dy"],this.outputShape=r.inShape;var t=r.filterDepth,e=r.filterHeight,n=r.filterWidth,a=r.strideDepth,o=r.strideHeight,i=r.strideWidth,s=r.dilationDepth,u=r.dilationHeight,c=r.dilationWidth,l=r.effectiveFilterDepth,d=r.effectiveFilterHeight,h=r.effectiveFilterWidth,f=l-1-r.padInfo.front,p=d-1-r.padInfo.top,v=h-1-r.padInfo.left,m=1/(t*e*n);this.userCode=`
      const ivec3 pads = ivec3(`+f+", "+p+", "+v+`);
      const float avgMultiplier = float(`+m+`);

      void main() {
        ivec5 coords = getOutputCoords();
        int batch = coords.x;
        int ch = coords.u;

        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;
        int dyDCorner = dyCorner.x;
        int dyRCorner = dyCorner.y;
        int dyCCorner = dyCorner.z;

        // Convolve dy(?, ?, ?, d) with pos mask(:, :, :, ch) to get
        // dx(xD, xR, xC, ch).
        // ? = to be determined. : = across all values in that axis.
        float dotProd = 0.0;

        for (int wD = 0; wD < `+l+`;
            wD += `+s+`) {
          float dyD = float(dyDCorner + wD) / `+a+`.0;

          if (dyD < 0.0 || dyD >= `+r.outDepth+`.0 || fract(dyD) > 0.0) {
            continue;
          }
          int idyD = int(dyD);

          for (int wR = 0; wR < `+d+`;
              wR += `+u+`) {
            float dyR = float(dyRCorner + wR) / `+o+`.0;

            if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 ||
                fract(dyR) > 0.0) {
              continue;
            }
            int idyR = int(dyR);

            for (int wC = 0; wC < `+h+`;
                wC += `+c+`) {
              float dyC = float(dyCCorner + wC) / `+i+`.0;

              if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
                  fract(dyC) > 0.0) {
                continue;
              }
              int idyC = int(dyC);

              float dyValue = getDy(batch, idyD, idyR, idyC, ch);

              dotProd += dyValue * avgMultiplier;
            }
          }
        }
        setOutput(dotProd);
      }
    `},pv=function(r,t,e,n,a,o){this.outputShape=[],this.variableNames=["x","mean","variance"],Ee(r,t),Ee(r,e);var i="0.0";n!=null&&(Ee(r,n),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");var s="1.0";a!=null&&(Ee(r,a),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=r,this.userCode=`
      void main() {
        float x = getXAtOutCoords();
        float mean = getMeanAtOutCoords();
        float variance = getVarianceAtOutCoords();
        float offset = `+i+`;
        float scale = `+s+`;
        float inv = scale * inversesqrt(variance + float(`+o+`));
        setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1)));
      }
    `},vv=function(r,t,e,n,a,o){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],Ee(r,t),Ee(r,e);var i="vec4(0.0)";n!=null&&(Ee(r,n),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");var s="vec4(1.0)";a!=null&&(Ee(r,a),this.variableNames.push("scale"),s="getScaleAtOutCoords()"),this.outputShape=r,this.userCode=`
      void main() {
        vec4 offset = `+i+`;
        vec4 scale = `+s+`;

        vec4 x = getXAtOutCoords();
        vec4 mean = getMeanAtOutCoords();
        vec4 variance = getVarianceAtOutCoords();

        vec4 inv = scale * inversesqrt(variance + vec4(`+o+`));

        setOutput((x - mean) * inv + offset);
      }
    `},mv="return areal * breal - aimag * bimag;",gv="return areal * bimag + aimag * breal;",ys=function(r,t,e){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=Ee(t,e),this.userCode=`
      float binaryOpComplex(
          float areal, float aimag, float breal, float bimag) {
        `+r+`
      }

      void main() {
        float areal = getARealAtOutCoords();
        float aimag = getAImagAtOutCoords();
        float breal = getBRealAtOutCoords();
        float bimag = getBImagAtOutCoords();
        setOutput(binaryOpComplex(areal, aimag, breal, bimag));
      }
    `},ho="return a + b;",fo="return a - b;",ws="return a * b;",nc="return (a < 0.) ? b * a : a;",Ve=function(r,t,e){this.variableNames=["A","B"],this.outputShape=Ee(t,e),this.userCode=`
      float binaryOperation(float a, float b) {
        `+r+`
      }

      void main() {
        float a = getAAtOutCoords();
        float b = getBAtOutCoords();
        setOutput(binaryOperation(a, b));
      }
    `},rc=`
  vec4 aLessThanZero = vec4(lessThan(a, vec4(0.)));
  return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a);
`,an=function(r,t,e,n){n===void 0&&(n=!1),this.variableNames=["A","B"],this.supportsBroadcasting=!0,this.packedInputs=!0,this.packedOutput=!0,this.outputShape=Ee(t,e);var a=this.outputShape.length,o="";if(n)if(a===0||ae(this.outputShape)===1)o=`
          result.y = 0.;
          result.z = 0.;
          result.w = 0.;
        `;else if(o=`
          `+Fe(a)+` coords = getOutputCoords();
        `,a===1)o+=`
            result.y = (coords + 1) >= `+this.outputShape[0]+` ? 0. : result.y;
            result.z = 0.;
            result.w = 0.;
          `;else{var i=ft("coords",a);o+=`
            bool nextRowOutOfBounds =
              (`+i[a-2]+" + 1) >= "+this.outputShape[a-2]+`;
            bool nextColOutOfBounds =
              (`+i[a-1]+" + 1) >= "+this.outputShape[a-1]+`;
            result.y = nextColOutOfBounds ? 0. : result.y;
            result.z = nextRowOutOfBounds ? 0. : result.z;
            result.w = nextColOutOfBounds || nextRowOutOfBounds ? 0. : result.w;
          `}this.userCode=`
      vec4 binaryOperation(vec4 a, vec4 b) {
        `+r+`
      }

      void main() {
        vec4 a = getAAtOutCoords();
        vec4 b = getBAtOutCoords();

        vec4 result = binaryOperation(a, b);
        `+o+`

        setOutput(result);
      }
    `},_v=function(){function r(t){this.variableNames=["A"],this.outputShape=t,this.userCode=`
      uniform float minVal;
      uniform float maxVal;

      void main() {
        float value = getAAtOutCoords();
        if (isnan(value)) {
          setOutput(value);
          return;
        }

        setOutput(clamp(value, minVal, maxVal));
      }
    `}return r.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(a,o){n.minLoc==null&&(n.minLoc=a.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=a.getUniformLocationNoThrow(o,"maxVal")),a.gl.uniform1f(n.minLoc,t),a.gl.uniform1f(n.maxLoc,e)}},r}(),xv=function(){function r(t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.userCode=`
      uniform float minVal;
      uniform float maxVal;

      void main() {
        vec4 value = getAAtOutCoords();

        if (any(isnan(value))) {
          setOutput(value);
          return;
        }

        setOutput(clamp(value, vec4(minVal), vec4(maxVal)));
      }
    `}return r.prototype.getCustomSetupFunc=function(t,e){var n=this;return function(a,o){n.minLoc==null&&(n.minLoc=a.getUniformLocationNoThrow(o,"minVal"),n.maxLoc=a.getUniformLocationNoThrow(o,"maxVal")),a.gl.uniform1f(n.minLoc,t),a.gl.uniform1f(n.maxLoc,e)}},r}(),bv=function(r){this.variableNames=["real","imag"],this.outputShape=r,this.userCode=`
      void main() {
        float re = abs(getRealAtOutCoords());
        float im = abs(getImagAtOutCoords());
        float mx = max(re, im);

        // sadly the length function in glsl is not underflow-safe
        // (at least not on Intel GPUs). So the safe solution is
        // to ensure underflow-safety in all cases.
        setOutput(
          mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx))
        );
      }
    `},yv=function(r){this.outputShape=[],this.outputShape=hr(r,1),this.variableNames=r.map(function(s,u){return"T"+u});var t=new Array(r.length-1);t[0]=r[0][1];for(var e=1;e<t.length;e++)t[e]=t[e-1]+r[e][1];var n=["if (yC < "+t[0]+") setOutput(getT0(yR, yC));"];for(e=1;e<t.length;e++){var a=t[e-1];n.push("else if (yC < "+t[e]+") setOutput(getT"+e+"(yR, yC-"+a+"));")}var o=t.length,i=t[t.length-1];n.push("else setOutput(getT"+o+"(yR, yC-"+i+"));"),this.userCode=`
      void main() {
        ivec2 coords = getOutputCoords();
        int yR = coords.x;
        int yC = coords.y;

        `+n.join(`
        `)+`
      }
    `},wv=function(r,t){this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[],this.outputShape=hr(r,t);var e=this.outputShape,n=e.length,a=Fe(n),o=ft("coords",n),i=["x","y","z","w","u","v"].slice(0,n);this.variableNames=r.map(function(m,g){return"T"+g});var s=new Array(r.length-1);s[0]=r[0][t];for(var u=1;u<s.length;u++)s[u]=s[u-1]+r[u][t];var c=i[t],l=i.slice(-2),d=i.join(),h="if ("+c+" < "+s[0]+`) {
        return getChannel(
            getT0(`+d+"), vec2("+l.join()+`));
        }`;for(u=1;u<s.length;u++){var f=s[u-1];h+=`
        if (`+c+" < "+s[u]+"  && "+c+" >= "+s[u-1]+`) {
          return getChannel(
            getT`+u+"("+Yr(i,c,f)+`),
            vec2(`+Yr(l,c,f)+`));
        }`}var p=s.length,v=s[s.length-1];h+=`
        return getChannel(
          getT`+p+"("+Yr(i,c,v)+`),
          vec2(`+Yr(l,c,v)+"));",this.userCode=`
      float getValue(`+i.map(function(m){return"int "+m})+`) {
        `+h+`
      }

      void main() {
        `+a+` coords = getOutputCoords();
        vec4 result = vec4(getValue(`+o+`), 0., 0., 0.);

        `+o[n-1]+" = "+o[n-1]+` + 1;
        if (`+o[n-1]+" < "+e[n-1]+`) {
          result.g = getValue(`+o+`);
        }

        `+o[n-2]+" = "+o[n-2]+` + 1;
        if (`+o[n-2]+" < "+e[n-2]+`) {
          result.a = getValue(`+o+`);
        }

        `+o[n-1]+" = "+o[n-1]+` - 1;
        if (`+o[n-2]+" < "+e[n-2]+` &&
            `+o[n-1]+" < "+e[n-1]+`) {
          result.b = getValue(`+o+`);
        }
        setOutput(result);
      }
    `};function Yr(r,t,e){var n=r.indexOf(t);return r.map(function(a,o){return o===n?a+" - "+e:a}).join()}var Cv=function(r){this.variableNames=["x","dy"],this.outputShape=r.filterShape;var t=r.strideHeight,e=r.strideWidth,n=r.padInfo.top,a=r.padInfo.left,o=r.dataFormat==="channelsLast";this.userCode=`
      void main() {
        ivec4 coords = getOutputCoords();
        int wR = coords.x;
        int wC = coords.y;
        int d1 = coords.z;
        int d2 = coords.w;

        // Convolve x(?, ?, d1) with dy(:, :, d2) to get dw(wR, wC, d1, d2).
        // ? = to be determined. : = across all values in that axis.
        float dotProd = 0.0;

        for (int b = 0; b < `+r.batchSize+`; b++) {
          for (int yR = 0; yR < `+r.outHeight+`; yR++) {
            int xR = wR + yR * `+t+" - "+n+`;

            if (xR < 0 || xR >= `+r.inHeight+`) {
              continue;
            }

            for (int yC = 0; yC < `+r.outWidth+`; yC++) {
              int xC = wC + yC * `+e+" - "+a+`;

              if (xC < 0 || xC >= `+r.inWidth+`) {
                continue;
              }

              if (`+o+`) {
                float dyValue = getDy(b, yR, yC, d2);
                float xValue = getX(b, xR, xC, d1);
                dotProd += (xValue * dyValue);
              } else {
                float dyValue = getDy(b, d2, yR, yC);
                float xValue = getX(b, d1, xR, xC);
                dotProd += (xValue * dyValue);
              }

            }
          }
        }
        setOutput(dotProd);
      }
    `},Ev=function(r){this.variableNames=["dy","W"],this.outputShape=r.inShape;var t=r.filterHeight,e=r.filterWidth,n=r.strideHeight,a=r.strideWidth,o=r.dataFormat==="channelsLast",i=t-1-r.padInfo.top,s=e-1-r.padInfo.left,u=o?1:2,c=o?2:3,l=o?3:1;this.userCode=`
      const ivec2 pads = ivec2(`+i+", "+s+`);

      void main() {
        ivec4 coords = getOutputCoords();
        int batch = coords[0];
        int d1 = coords[`+l+`];

        ivec2 dyCorner = ivec2(coords[`+u+"], coords["+c+`]) - pads;
        int dyRCorner = dyCorner.x;
        int dyCCorner = dyCorner.y;

        // Convolve dy(?, ?, d2) with w(:, :, d1, d2) to compute dx(xR, xC, d1).
        // ? = to be determined. : = across all values in that axis.
        float dotProd = 0.0;
        for (int wR = 0; wR < `+t+`; wR++) {
          float dyR = float(dyRCorner + wR) / `+n+`.0;

          if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 || fract(dyR) > 0.0) {
            continue;
          }
          int idyR = int(dyR);

          int wRPerm = `+t+` - 1 - wR;

          for (int wC = 0; wC < `+e+`; wC++) {
            float dyC = float(dyCCorner + wC) / `+a+`.0;

            if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
                fract(dyC) > 0.0) {
              continue;
            }
            int idyC = int(dyC);

            int wCPerm = `+e+` - 1 - wC;

            for (int d2 = 0; d2 < `+r.outChannels+`; d2++) {

              if (`+o+`) {
                float xValue = getDy(batch, idyR, idyC, d2);
                float wValue = getW(wRPerm, wCPerm, d1, d2);
                dotProd += xValue * wValue;
              } else {
                float xValue = getDy(batch, d2, idyR, idyC);
                float wValue = getW(wRPerm, wCPerm, d1, d2);
                dotProd += xValue * wValue;
              }

            }
          }
        }
        setOutput(dotProd);
      }
    `},Rv=function(r){this.variableNames=["x","dy"],this.outputShape=r.filterShape;var t=r.strideDepth,e=r.strideHeight,n=r.strideWidth,a=r.padInfo.front,o=r.padInfo.top,i=r.padInfo.left;this.userCode=`
      void main() {
        ivec5 coords = getOutputCoords();
        int wF = coords.x;
        int wR = coords.y;
        int wC = coords.z;
        int d1 = coords.w;
        int d2 = coords.u;

        float dotProd = 0.0;

        for (int b = 0; b < `+r.batchSize+`; b++) {
          for (int yF = 0; yF < `+r.outDepth+`; yF++) {
            int xF = wF + yF * `+t+" - "+a+`;

            if (xF < 0 || xF >= `+r.inDepth+`) {
              continue;
            }

            for (int yR = 0; yR < `+r.outHeight+`; yR++) {
              int xR = wR + yR * `+e+" - "+o+`;

              if (xR < 0 || xR >= `+r.inHeight+`) {
                continue;
              }

              for (int yC = 0; yC < `+r.outWidth+`; yC++) {
                int xC = wC + yC * `+n+" - "+i+`;

                if (xC < 0 || xC >= `+r.inWidth+`) {
                  continue;
                }

                float dyValue = getDy(b, yF, yR, yC, d2);
                float xValue = getX(b, xF, xR, xC, d1);
                dotProd += (xValue * dyValue);
              }
            }
          }
        }
        setOutput(dotProd);
      }
    `},kv=function(r){this.variableNames=["dy","W"],this.outputShape=r.inShape;var t=r.filterDepth,e=r.filterHeight,n=r.filterWidth,a=r.strideDepth,o=r.strideHeight,i=r.strideWidth,s=t-1-r.padInfo.front,u=e-1-r.padInfo.top,c=n-1-r.padInfo.left;this.userCode=`
      const ivec3 pads = ivec3(`+s+", "+u+", "+c+`);

      void main() {
        ivec5 coords = getOutputCoords();
        int batch = coords.x;
        int d1 = coords.u;


        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;
        int dyFCorner = dyCorner.x;
        int dyRCorner = dyCorner.y;
        int dyCCorner = dyCorner.z;

        float dotProd = 0.0;
        for (int wF = 0; wF < `+t+`; wF++) {
          float dyF = float(dyFCorner + wF) / `+a+`.0;

          if (dyF < 0.0 || dyF >= `+r.outDepth+`.0 || fract(dyF) > 0.0) {
            continue;
          }
          int idyF = int(dyF);

          int wFPerm = `+t+` - 1 - wF;

          for (int wR = 0; wR < `+e+`; wR++) {
            float dyR = float(dyRCorner + wR) / `+o+`.0;

            if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 ||
              fract(dyR) > 0.0) {
              continue;
            }
            int idyR = int(dyR);

            int wRPerm = `+e+` - 1 - wR;

            for (int wC = 0; wC < `+n+`; wC++) {
              float dyC = float(dyCCorner + wC) / `+i+`.0;

              if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
                  fract(dyC) > 0.0) {
                continue;
              }
              int idyC = int(dyC);

              int wCPerm = `+n+` - 1 - wC;

              for (int d2 = 0; d2 < `+r.outChannels+`; d2++) {
                float xValue = getDy(batch, idyF, idyR, idyC, d2);
                float wValue = getW(wFPerm, wRPerm, wCPerm, d1, d2);
                dotProd += xValue * wValue;
              }
            }
          }
        }
        setOutput(dotProd);
      }
    `},Iv=function(r){this.variableNames=["x","dy"],this.outputShape=r.filterShape;var t=r.strideHeight,e=r.strideWidth,n=r.padInfo.top,a=r.padInfo.left,o=r.outChannels/r.inChannels;this.userCode=`
      void main() {
        ivec4 coords = getOutputCoords();
        int wR = coords.x;
        int wC = coords.y;
        int d1 = coords.z;
        int dm = coords.w;
        int d2 = d1 * `+o+` + dm;

        float dotProd = 0.0;

        // TO DO: Vec4 over the batch size
        for (int b = 0; b < `+r.batchSize+`; b++) {
          for (int yR = 0; yR < `+r.outHeight+`; yR++) {
            int xR = wR + yR * `+t+" - "+n+`;

            if (xR < 0 || xR >= `+r.inHeight+`) {
              continue;
            }

            for (int yC = 0; yC < `+r.outWidth+`; yC++) {
              int xC = wC + yC * `+e+" - "+a+`;

              if (xC < 0 || xC >= `+r.inWidth+`) {
                continue;
              }

              float dyValue = getDy(b, yR, yC, d2);
              float xValue = getX(b, xR, xC, d1);
              dotProd += (xValue * dyValue);
            }
          }
        }
        setOutput(dotProd);
      }
    `},Sv=function(r){this.variableNames=["dy","W"],this.outputShape=r.inShape;var t=r.filterHeight,e=r.filterWidth,n=r.strideHeight,a=r.strideWidth,o=t-1-r.padInfo.top,i=e-1-r.padInfo.left,s=r.outChannels/r.inChannels;this.userCode=`
      const ivec2 pads = ivec2(`+o+", "+i+`);

      void main() {
        ivec4 coords = getOutputCoords();
        int batch = coords[0];
        int d1 = coords[3];
        ivec2 dyCorner = coords.yz - pads;
        int dyRCorner = dyCorner.x;
        int dyCCorner = dyCorner.y;

        float dotProd = 0.0;

        for (int wR = 0; wR < `+t+`; wR++) {
          float dyR = float(dyRCorner + wR) / `+n+`.0;

          if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 || fract(dyR) > 0.0) {
            continue;
          }
          int idyR = int(dyR);

          int wRPerm = `+t+` - 1 - wR;

          for (int wC = 0; wC < `+e+`; wC++) {
            float dyC = float(dyCCorner + wC) / `+a+`.0;

            if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
                fract(dyC) > 0.0) {
              continue;
            }
            int idyC = int(dyC);

            int wCPerm = `+e+` - 1 - wC;

            // TO DO: Vec4 over the channelMul
            for (int dm = 0; dm < `+s+`; dm++) {
              int d2 = d1 * `+s+` + dm;
              float xValue = getDy(batch, idyR, idyC, d2);
              float wValue = getW(wRPerm, wCPerm, d1, dm);
              dotProd += xValue * wValue;
            }
          }
        }
        setOutput(dotProd);
      }
    `},Cs=function(r,t,e,n){t===void 0&&(t=!1),e===void 0&&(e=null),n===void 0&&(n=!1),this.variableNames=["x","W"],this.outputShape=r.outShape;var a=r.padInfo.top,o=r.padInfo.left,i=r.strideHeight,s=r.strideWidth,u=r.dilationHeight,c=r.dilationWidth,l=r.filterHeight,d=r.filterWidth,h=4*Math.floor(r.inChannels/4),f=r.inChannels%4,p=r.dataFormat==="channelsLast",v=p?1:2,m=p?2:3,g=p?3:1,x="",b="";e&&(x=n?`float activation(float a) {
          float b = getPreluActivationWeightsAtOutCoords();
          `+e+`
        }`:`
          float activation(float x) {
            `+e+`
          }
        `,b="result = activation(result);");var _=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),this.userCode=`
      `+x+`

      const ivec2 strides = ivec2(`+i+", "+s+`);
      const ivec2 pads = ivec2(`+a+", "+o+`);

      void main() {
        ivec4 coords = getOutputCoords();
        int batch = coords[0];
        int d2 = coords[`+g+`];

        ivec2 xRCCorner =
            ivec2(coords[`+v+"], coords["+m+`]) * strides - pads;
        int xRCorner = xRCCorner.x;
        int xCCorner = xRCCorner.y;

        // Convolve x(?, ?, d1) with w(:, :, d1, d2) to get y(yR, yC, d2).
        // ? = to be determined. : = across all values in that axis.
        float dotProd = 0.0;
        for (int wR = 0; wR < `+l+`; wR++) {
          int xR = xRCorner + wR * `+u+`;

          if (xR < 0 || xR >= `+r.inHeight+`) {
            continue;
          }

          for (int wC = 0; wC < `+d+`; wC++) {
            int xC = xCCorner + wC * `+c+`;

            if (xC < 0 || xC >= `+r.inWidth+`) {
              continue;
            }

            for (int d1 = 0; d1 < `+h+`; d1 += 4) {
              vec4 wValues = vec4(
                getW(wR, wC, d1, d2),
                getW(wR, wC, d1 + 1, d2),
                getW(wR, wC, d1 + 2, d2),
                getW(wR, wC, d1 + 3, d2)
              );

              if (`+p+`) {
                vec4 xValues = vec4(
                  getX(batch, xR, xC, d1),
                  getX(batch, xR, xC, d1 + 1),
                  getX(batch, xR, xC, d1 + 2),
                  getX(batch, xR, xC, d1 + 3)
                );
                dotProd += dot(xValues, wValues);
              } else {
                vec4 xValues = vec4(
                  getX(batch, d1, xR, xC),
                  getX(batch, d1 + 1, xR, xC),
                  getX(batch, d1 + 2, xR, xC),
                  getX(batch, d1 + 3, xR, xC)
                );
                dotProd += dot(xValues, wValues);
              }
            }

            if (`+(f===1)+`) {

              if (`+p+`) {
                dotProd +=
                    getX(batch, xR, xC, `+h+`) *
                    getW(wR, wC, `+h+`, d2);
              } else {
                dotProd +=
                    getX(batch, `+h+`, xR, xC) *
                    getW(wR, wC, `+h+`, d2);
              }

            } else if (`+(f===2)+`) {
              vec2 wValues = vec2(
                getW(wR, wC, `+h+`, d2),
                getW(wR, wC, `+h+` + 1, d2)
              );

              if (`+p+`) {
                vec2 xValues = vec2(
                  getX(batch, xR, xC, `+h+`),
                  getX(batch, xR, xC, `+h+` + 1)
                );
                dotProd += dot(xValues, wValues);
              } else {
                vec2 xValues = vec2(
                  getX(batch, `+h+`, xR, xC),
                  getX(batch, `+h+` + 1, xR, xC)
                );
                dotProd += dot(xValues, wValues);
              }

            } else if (`+(f===3)+`) {
              vec3 wValues = vec3(
                getW(wR, wC, `+h+`, d2),
                getW(wR, wC, `+h+` + 1, d2),
                getW(wR, wC, `+h+` + 2, d2)
              );

              if (`+p+`) {
                vec3 xValues = vec3(
                  getX(batch, xR, xC, `+h+`),
                  getX(batch, xR, xC, `+h+` + 1),
                  getX(batch, xR, xC, `+h+` + 2)
                );
                dotProd += dot(xValues, wValues);
              } else {
                vec3 xValues = vec3(
                  getX(batch, `+h+`, xR, xC),
                  getX(batch, `+h+` + 1, xR, xC),
                  getX(batch, `+h+` + 2, xR, xC)
                );
                dotProd += dot(xValues, wValues);
              }

            }
          }
        }

        float result = dotProd;
        `+_+`
        `+b+`
        setOutput(result);
      }
    `},Av=function(r){this.variableNames=["x","W"],this.outputShape=r.outShape;var t=r.padInfo.front,e=r.padInfo.top,n=r.padInfo.left,a=r.strideDepth,o=r.strideHeight,i=r.strideWidth,s=r.dilationDepth,u=r.dilationHeight,c=r.dilationWidth,l=r.filterDepth,d=r.filterHeight,h=r.filterWidth,f=4*Math.floor(r.inChannels/4),p=r.inChannels%4;this.userCode=`
      const ivec3 strides = ivec3(`+a+", "+o+", "+i+`);
      const ivec3 pads = ivec3(`+t+", "+e+", "+n+`);

      void main() {
        ivec5 coords = getOutputCoords();
        int batch = coords.x;
        int d2 = coords.u;

        ivec3 xFRCCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;
        int xFCorner = xFRCCorner.x;
        int xRCorner = xFRCCorner.y;
        int xCCorner = xFRCCorner.z;

        // Convolve x(?, ?, ?, d1) with w(:, :, :, d1, d2) to get
        // y(yF, yR, yC, d2). ? = to be determined. : = across all
        // values in that axis.
        float dotProd = 0.0;
        for (int wF = 0; wF < `+l+`; wF++) {
          int xF = xFCorner + wF * `+s+`;

          if (xF < 0 || xF >= `+r.inDepth+`) {
            continue;
          }

          for (int wR = 0; wR < `+d+`; wR++) {
            int xR = xRCorner + wR * `+u+`;

            if (xR < 0 || xR >= `+r.inHeight+`) {
              continue;
            }

            for (int wC = 0; wC < `+h+`; wC++) {
              int xC = xCCorner + wC * `+c+`;

              if (xC < 0 || xC >= `+r.inWidth+`) {
                continue;
              }

              for (int d1 = 0; d1 < `+f+`; d1 += 4) {
                vec4 xValues = vec4(
                  getX(batch, xF, xR, xC, d1),
                  getX(batch, xF, xR, xC, d1 + 1),
                  getX(batch, xF, xR, xC, d1 + 2),
                  getX(batch, xF, xR, xC, d1 + 3)
                );
                vec4 wValues = vec4(
                  getW(wF, wR, wC, d1, d2),
                  getW(wF, wR, wC, d1 + 1, d2),
                  getW(wF, wR, wC, d1 + 2, d2),
                  getW(wF, wR, wC, d1 + 3, d2)
                );

                dotProd += dot(xValues, wValues);
              }

              if (`+(p===1)+`) {
                dotProd +=
                  getX(batch, xF, xR, xC, `+f+`) *
                  getW(wF, wR, wC, `+f+`, d2);
              } else if (`+(p===2)+`) {
                vec2 xValues = vec2(
                  getX(batch, xF, xR, xC, `+f+`),
                  getX(batch, xF, xR, xC, `+f+` + 1)
                );
                vec2 wValues = vec2(
                  getW(wF, wR, wC, `+f+`, d2),
                  getW(wF, wR, wC, `+f+` + 1, d2)
                );
                dotProd += dot(xValues, wValues);
              } else if (`+(p===3)+`) {
                vec3 xValues = vec3(
                  getX(batch, xF, xR, xC, `+f+`),
                  getX(batch, xF, xR, xC, `+f+` + 1),
                  getX(batch, xF, xR, xC, `+f+` + 2)
                );
                vec3 wValues = vec3(
                  getW(wF, wR, wC, `+f+`, d2),
                  getW(wF, wR, wC, `+f+` + 1, d2),
                  getW(wF, wR, wC, `+f+` + 2, d2)
                );
                dotProd += dot(xValues, wValues);
              }
            }
          }
        }
        setOutput(dotProd);
      }
    `},Es=function(r,t,e,n){t===void 0&&(t=!1),e===void 0&&(e=null),n===void 0&&(n=!1),this.variableNames=["x","W"],this.outputShape=r.outShape;var a=r.inHeight,o=r.inWidth,i=r.padInfo.top,s=r.padInfo.left,u=r.strideHeight,c=r.strideWidth,l=r.dilationHeight,d=r.dilationWidth,h=r.filterHeight,f=r.filterWidth,p=r.outChannels/r.inChannels,v="",m="";e&&(v=n?`float activation(float a) {
          float b = getPreluActivationWeightsAtOutCoords();
          `+e+`
        }`:`
          float activation(float x) {
            `+e+`
          }
        `,m="result = activation(result);");var g=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),this.userCode=`
      `+v+`

      const ivec2 strides = ivec2(`+u+", "+c+`);
      const ivec2 pads = ivec2(`+i+", "+s+`);

      void main() {
        ivec4 coords = getOutputCoords();
        int batch = coords.x;
        ivec2 xRCCorner = coords.yz * strides - pads;
        int d2 = coords.w;
        int d1 = d2 / `+p+`;
        int q = d2 - d1 * `+p+`;

        int xRCorner = xRCCorner.x;
        int xCCorner = xRCCorner.y;

        // Convolve x(?, ?, d1) with w(:, :, d1, q) to get y(yR, yC, d2).
        // ? = to be determined. : = across all values in that axis.
        float dotProd = 0.0;
        // TO DO(dsmilkov): Flatten the two for loops and vec4 the operations.
        for (int wR = 0; wR < `+h+`; wR++) {
          int xR = xRCorner + wR * `+l+`;

          if (xR < 0 || xR >= `+a+`) {
            continue;
          }

          for (int wC = 0; wC < `+f+`; wC++) {
            int xC = xCCorner + wC * `+d+`;

            if (xC < 0 || xC >= `+o+`) {
              continue;
            }

            float xVal = getX(batch, xR, xC, d1);
            float wVal = getW(wR, wC, d1, q);
            dotProd += xVal * wVal;
          }
        }

        float result = dotProd;
        `+g+`
        `+m+`
        setOutput(result);
      }
    `},Rs=function(r,t,e,n){t===void 0&&(t=!1),e===void 0&&(e=null),n===void 0&&(n=!1),this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r.outShape;for(var a=r.inHeight,o=r.inWidth,i=r.padInfo.top,s=r.padInfo.left,u=r.strideHeight,c=r.strideWidth,l=r.dilationHeight,d=r.dilationWidth,h=r.filterHeight,f=r.filterWidth,p=f,v="int xR; int xC; int xCOffset;",m=0;m<h;m++)for(var g=0;g<f;g++)v+=`
          vec4 xTexelR`+m+"C"+2*g+` = vec4(0.);
          vec4 wR`+m+"C"+g+` = vec4(0.);
          vec4 xR`+m+"C"+g+" = vec4(0.);";for(m=0;m<h;m++)for(var x=0;x<p;x++){if(v+=`
          xR = xRCorner + `+m*l+`;
          xC = xCCorner + `+(g=2*x)*d+`;
        `,c===1){if(g<f&&(v+=s%2==1?`
                xCOffset = xC + 1;
                if(xR >= 0 && xR < `+a+" && xCOffset >= 0 && xCOffset < "+o+`) {
                  xTexelR`+m+"C"+g+` = getX(batch, xR, xCOffset, d1);

                  // Need to manually clear unused channels in case
                  // we're reading from recycled texture.
                  if(xCOffset + 1 >= `+o+`) {
                    xTexelR`+m+"C"+g+`.zw = vec2(0.);
                  }
                } else {
                  xTexelR`+m+"C"+g+` = vec4(0.);
                }

                xCOffset = xC + 1 - 2;
                if(xR >= 0 && xR < `+a+" && xCOffset >= 0 && xCOffset < "+o+`) {
                  vec4 previous = getX(batch, xR, xCOffset, d1);

                  // Need to manually clear unused channels in case
                  // we're reading from recycled texture.
                  if(xCOffset + 1 >= `+o+`) {
                    previous.zw = vec2(0.);
                  }

                  xR`+m+"C"+g+" = vec4(previous.zw, xTexelR"+m+"C"+g+`.xy);
                } else {
                  xR`+m+"C"+g+" = vec4(0, 0, xTexelR"+m+"C"+g+`.xy);
                }
              `:`
                if(xR >= 0 && xR < `+a+" && xC >= 0 && xC < "+o+`) {
                  xTexelR`+m+"C"+g+` = getX(batch, xR, xC, d1);
                } else {
                  xTexelR`+m+"C"+g+` = vec4(0.);
                }

                xR`+m+"C"+g+" = xTexelR"+m+"C"+g+`;
              `,g+1<f)){var b=s%2==0?yu(d):d;d%2==0&&s%2==1||d%2!=0&&s%2!=1?(v+=`
                  xCOffset = xC + `+s%2+" + "+b+`;

                  if(xR >= 0 && xR < `+a+` &&
                    xCOffset >= 0 && xCOffset < `+o+`) {
                    xTexelR`+m+"C"+(g+2)+` = getX(batch, xR, xCOffset, d1);
                  }
                `,d>1&&(v+=`
                    xCOffset -= 2;
                    if(xR >= 0 && xR < `+a+` &&
                      xCOffset >= 0 && xCOffset < `+o+`) {
                      xTexelR`+m+"C"+g+` = getX(batch, xR, xCOffset, d1);
                    } else {
                      xTexelR`+m+"C"+g+` = vec4(0.);
                    }
                  `),v+=`
                  xR`+m+"C"+(g+1)+` = vec4(
                    xTexelR`+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+`.xy);
                `):v+=`
                  xCOffset = xC + `+b+`;

                  if(xR >= 0 && xR < `+a+` &&
                    xCOffset >= 0 && xCOffset < `+o+`) {
                    xTexelR`+m+"C"+(g+2)+` = getX(batch, xR, xCOffset, d1);
                  }

                  xR`+m+"C"+(g+1)+" = xTexelR"+m+"C"+(g+2)+`;
                `}}else g<f&&(v+=`
              if(xR >= 0 && xR < `+a+`) {
            `,s%2==1?(v+=`
                xCOffset = xC + 1 - `+c+`;
                if(xCOffset >= 0 && xCOffset < `+o+`) {
                  xTexelR`+m+"C"+g+` = getX(batch, xR, xCOffset, d1);
                } else {
                  xTexelR`+m+"C"+g+` = vec4(0.);
                }

                if(xC + 1 >= 0 && xC + 1 < `+o+`) {
                  xTexelR`+m+"C"+(g+2)+` = getX(batch, xR, xC + 1, d1);
                } else {
                  xTexelR`+m+"C"+(g+2)+` = vec4(0.);
                }

                xR`+m+"C"+g+` = vec4(
                  xTexelR`+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+`.zw);
              `,g+1<f&&(v+=`
                  vec4 final = vec4(0.);
                  xCOffset = xC + 1 + `+c+`;
                  if(xCOffset >= 0 && xCOffset < `+o+`) {
                    final = getX(batch, xR, xCOffset, d1);
                  }
                  xR`+m+"C"+(g+1)+" = vec4(xTexelR"+m+"C"+(g+2)+`.xy, final.xy);
                `)):(v+=`
                if(xC >= 0 && xC < `+o+`) {
                  xTexelR`+m+"C"+g+` = getX(batch, xR, xC, d1);
                } else {
                  xTexelR`+m+"C"+g+` = vec4(0.);
                }

                xCOffset = xC + `+c+`;
                if(xCOffset >= 0 && xCOffset < `+o+`) {
                  xTexelR`+m+"C"+(g+2)+` = getX(batch, xR, xCOffset, d1);
                } else {
                  xTexelR`+m+"C"+(g+2)+` = vec4(0.);
                }

                xR`+m+"C"+g+` = vec4(
                  xTexelR`+m+"C"+g+".xy, xTexelR"+m+"C"+(g+2)+`.xy);
              `,g+1<f&&(v+=`
                  xR`+m+"C"+(g+1)+` = vec4(
                    xTexelR`+m+"C"+g+".zw, xTexelR"+m+"C"+(g+2)+`.zw);
                `)),v+="}");g<f&&(v+=`
            vec4 wTexelR`+m+"C"+g+" = getW("+m+", "+g+`, d1, q);
            wR`+m+"C"+g+" = vec4(wTexelR"+m+"C"+g+".xz, wTexelR"+m+"C"+g+`.xz);
          `,g+1<f&&(v+=`
              vec4 wTexelR`+m+"C"+(g+1)+" = getW("+m+", "+(g+1)+`, d1, q);
              wR`+m+"C"+(g+1)+` =
                vec4(wTexelR`+m+"C"+(g+1)+".xz, wTexelR"+m+"C"+(g+1)+".xz);"))}for(m=0;m<h;m++)for(g=0;g<f;g++)v+="dotProd += xR"+m+"C"+g+" * wR"+m+"C"+g+";";var _="",y="";e&&(_=n?`vec4 activation(vec4 a) {
          vec4 b = getPreluActivationWeightsAtOutCoords();
          `+e+`
        }`:`vec4 activation(vec4 x) {
          `+e+`
        }`,y="result = activation(result);");var w=t?"result += getBiasAtOutCoords();":"";t&&this.variableNames.push("bias"),n&&this.variableNames.push("preluActivationWeights"),this.userCode=`
      `+_+`

      const ivec2 strides = ivec2(`+u+", "+c+`);
      const ivec2 pads = ivec2(`+i+", "+s+`);

      void main() {

        ivec4 coords = getOutputCoords();
        int batch = coords.x;
        ivec2 xRCCorner = coords.yz * strides - pads;
        int d2 = coords.w;
        int d1 = d2;
        int q = 0;
        int xRCorner = xRCCorner.x;
        int xCCorner = xRCCorner.y;

        vec4 dotProd = vec4(0.);

        `+v+`

        vec4 result = dotProd;
        `+w+`
        `+y+`
        setOutput(result);
      }
    `},Dv=function(r,t,e,n,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];var o=r[0],i=r[1],s=r[2],u=r[3],c=t[0],l=e[0],d=e[1];this.outputShape=[c,l,d,u];var h=n==="bilinear"?1:0,f=[i-1+".0",s-1+".0"],p=f[0],v=f[1],m=l>1?[""+(i-1)/(l-1),"(y2-y1) * height_ratio","y1*"+p+" + float(y)*(height_scale)"]:["0.0","0.0","0.5 * (y1+y2) * "+p],g=m[0],x=m[1],b=m[2],_=d>1?[""+(s-1)/(d-1),"(x2-x1) * width_ratio","x1*"+v+" + float(x)*(width_scale)"]:["0.0","0.0","0.5 * (x1+x2) * "+v],y=_[0],w=_[1],S=_[2];this.userCode=`
      const float height_ratio = float(`+g+`);
      const float width_ratio = float(`+y+`);
      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int y = coords[1];
        int x = coords[2];
        int d = coords[3];

        // get box vals
        float y1 = getBoxes(b,0);
        float x1 = getBoxes(b,1);
        float y2 = getBoxes(b,2);
        float x2 = getBoxes(b,3);

        // get image in batch index
        int bInd = round(getBoxInd(b));
        if(bInd < 0 || bInd >= `+o+`) {
          return;
        }

        float height_scale = `+x+`;
        float width_scale = `+w+`;

        float in_y = `+b+`;
        if( in_y < 0.0 || in_y > `+p+` ) {
          setOutput(float(`+a+`));
          return;
        }
        float in_x = `+S+`;
        if( in_x < 0.0 || in_x > `+v+` ) {
          setOutput(float(`+a+`));
          return;
        }

        vec2 sourceFracIndexCR = vec2(in_x,in_y);
        if(`+h+` == 1) {
          // Compute the four integer indices.
          ivec2 sourceFloorCR = ivec2(sourceFracIndexCR);
          ivec2 sourceCeilCR = ivec2(ceil(sourceFracIndexCR));

          float topLeft = getImage(b, sourceFloorCR.y, sourceFloorCR.x, d);
          float bottomLeft = getImage(b, sourceCeilCR.y, sourceFloorCR.x, d);
          float topRight = getImage(b, sourceFloorCR.y, sourceCeilCR.x, d);
          float bottomRight = getImage(b, sourceCeilCR.y, sourceCeilCR.x, d);

          vec2 fracCR = sourceFracIndexCR - vec2(sourceFloorCR);

          float top = topLeft + (topRight - topLeft) * fracCR.x;
          float bottom = bottomLeft + (bottomRight - bottomLeft) * fracCR.x;
          float newValue = top + (bottom - top) * fracCR.y;
          setOutput(newValue);
        } else {
          // Compute the coordinators of nearest neighbor point.
          ivec2 sourceNearestCR = ivec2(floor(
            sourceFracIndexCR + vec2(0.5,0.5)));
          float newValue = getImage(b, sourceNearestCR.y, sourceNearestCR.x, d);
          setOutput(newValue);
        }
      }
    `},Tv=function(r,t,e){this.variableNames=["x"],this.outputShape=r;var n=r.length,a=r[r.length-1],o=e?"<":">";this.userCode=`
      int getIndex(int i) {
        `+(e?"return "+a+" -i - 1;":"return i;")+`
      }

      void main() {
        `+Fe(n)+` coords = getOutputCoords();
        int end = `+ks(n,"coords")+`;
        float val = 0.0;
        for (int i = `+a+` - 1; i >= 0; i -= 1) {
          int idx = getIndex(i);
          if (idx `+o+` end) {
            continue;
          }
          if (idx == end && `+t+`) {
            continue;
          }
          `+ks(n,"coords")+` = idx;
          val += getX(`+function(i,s){if(i===1)return""+s;if(i===2)return s+".x, "+s+".y";if(i===3)return s+".x, "+s+".y, "+s+".z";if(i===4)return s+".x, "+s+".y, "+s+".z, "+s+".w";throw Error("Cumulative sum for rank "+i+" is not yet supported")}(n,"coords")+`);
        }
        setOutput(val);
      }
    `};function ks(r,t){if(r===1)return""+t;if(r===2)return t+".y";if(r===3)return t+".z";if(r===4)return t+".w";throw Error("Cumulative sum for rank "+r+" is not yet supported")}var Nv=function(r){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=Sr.DENSE;var t=Cr(r),e=it();this.outputShape=r,this.userCode=`
      ivec3 outCoordsFromFlatIndex(int index) {
        `+Pn(["r","c","d"],r)+`
        return ivec3(r, c, d);
      }

      void main() {
        ivec2 resTexRC = ivec2(resultUV.yx *
          vec2(`+t[0]+", "+t[1]+`));
        int index = 4 * (resTexRC.x * `+t[1]+` + resTexRC.y);

        vec4 result = vec4(0.);

        for (int i=0; i<4; i++) {
          int flatIndex = index + i;
          ivec3 rc = outCoordsFromFlatIndex(flatIndex);
          result[i] = getA(rc.x, rc.y, rc.z);
        }

        `+e.output+` = result;
      }
    `},Fv=function(r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=Sr.DENSE;var t=Cr(r),e=it();this.outputShape=r,this.userCode=`
      ivec3 outCoordsFromFlatIndex(int index) {
        `+Pn(["r","c","d"],r)+`
        return ivec3(r, c, d);
      }

      void main() {
        ivec2 resTexRC = ivec2(resultUV.yx *
          vec2(`+t[0]+", "+t[1]+`));
        int index = 4 * (resTexRC.x * `+t[1]+` + resTexRC.y);

        vec4 result = vec4(0.);

        for (int i=0; i<4; i++) {
          int flatIndex = index + i;
          ivec3 rc = outCoordsFromFlatIndex(flatIndex);
          result[i] = getChannel(getA(rc.x, rc.y, rc.z), vec2(rc.y, rc.z));
        }

        `+e.output+` = result;
      }
    `},Pv=function(){function r(t,e,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=t,this.blockSize=e,this.dataFormat=n,this.userCode=`
    void main() {
      ivec4 coords = getOutputCoords();
      int b = coords[0];
      int h = `+this.getHeightCoordString()+`;
      int w = `+this.getWidthCoordString()+`;
      int d = `+this.getDepthCoordString()+`;

      int in_h = h / `+e+`;
      int offset_h = imod(h, `+e+`);
      int in_w = w / `+e+`;
      int offset_w = imod(w, `+e+`);
      int offset_d = (offset_h * `+e+` + offset_w) *
        `+this.getOutputDepthSize()+`;
      int in_d = d + offset_d;

      float result = `+this.getInputSamplingString()+`;
      setOutput(result);
    }
  `}return r.prototype.getHeightCoordString=function(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"},r.prototype.getWidthCoordString=function(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"},r.prototype.getDepthCoordString=function(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"},r.prototype.getOutputDepthSize=function(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]},r.prototype.getInputSamplingString=function(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"},r}(),Mv=function(r){this.variableNames=["X"],this.outputShape=[r,r],this.userCode=`
      void main() {
          ivec2 coords = getOutputCoords();
          float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0;
          setOutput(val);
      }
    `},Ov=function(r){this.variableNames=["A"],this.outTexUsage=bt.DOWNLOAD;var t=it();this.outputShape=r,this.userCode=`
      `+ec+`

      void main() {
        float x = getAAtOutCoords();
        `+t.output+` = encode_float(x);
      }
    `},Bv=function(r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=bt.DOWNLOAD;var t=it();this.outputShape=r,this.userCode=`
      `+ec+`

      void main() {
        ivec3 coords = getOutputCoords();
        float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z));
        `+t.output+` = encode_float(x);
      }
    `},Lv=function(r,t,e){e===void 0&&(e=!1),this.variableNames=["A"];var n=it(),a=t[0],o=t[1];this.outputShape=r;var i="result";e&&(i="floor(result * 255. + 0.5)"),this.userCode=`
      `+pi(r)+`

      void main() {
        ivec3 coords = getOutputCoords();

        int flatIndex = getFlatIndex(coords);
        int offset = imod(flatIndex, 4);

        flatIndex = idiv(flatIndex, 4, 1.);
        
        int r = flatIndex / `+o+`;
        int c = imod(flatIndex, `+o+`);
        vec2 uv = (vec2(c, r) + halfCR) / vec2(`+o+".0, "+a+`.0);
        vec4 values = `+n.texture2D+`(A, uv);

        float result;

        if(offset == 0) {
          result = values[0];
        } else if(offset == 1) {
          result = values[1];
        } else if(offset == 2) {
          result = values[2];
        } else {
          result = values[3];
        }

        `+n.output+" = vec4("+i+`, 0., 0., 0.);
      }
    `},Wv=function(r,t,e){e===void 0&&(e=!1),this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var n=it(),a=t[0],o=t[1];this.outputShape=r;var i="",s="result";e&&(s="floor(result * 255. + 0.5)");for(var u=0;u<=1;u++)for(var c=0;c<=1;c++){var l=2*u+c;i+=`
          localCoords = coords;
          if(localCoords[2] + `+c+" < "+r[2]+`) {
            localCoords[2] += `+c+`;
            if(localCoords[1] + `+u+" < "+r[1]+`) {
              localCoords[1] += `+u+`;

              flatIndex = getFlatIndex(localCoords);
              offset = imod(flatIndex, 4);

              flatIndex = idiv(flatIndex, 4, 1.);

              r = flatIndex / `+o+`;
              c = imod(flatIndex, `+o+`);
              uv = (vec2(c, r) + halfCR) / vec2(`+o+".0, "+a+`.0);
              values = `+n.texture2D+`(A, uv);

              if(offset == 0) {
                result[`+l+`] = values[0];
              } else if(offset == 1) {
                result[`+l+`] = values[1];
              } else if(offset == 2) {
                result[`+l+`] = values[2];
              } else {
                result[`+l+`] = values[3];
              }
            }
          }
        `}this.userCode=`
      `+pi(r)+`

      void main() {
        ivec3 coords = getOutputCoords();

        vec4 result = vec4(0.);
        int flatIndex, r, c, offset;
        ivec3 localCoords;
        vec2 uv;
        vec4 values;

        `+i+`

        `+n.output+" = "+s+`;
      }
    `},Vv="return real * expR - imag * expI;",zv="return real * expI + imag * expR;",Is=function(r,t,e){this.variableNames=["real","imag"];var n=t[1];this.outputShape=t;var a=e?"2.0 * "+Math.PI:"-2.0 * "+Math.PI,o=e?n+".0":"1.0";this.userCode=`
      const float exponentMultiplier = `+a+`;

      float unaryOpComplex(float real, float expR, float imag, float expI) {
        `+r+`
      }

      float mulMatDFT(int batch, int index) {
        float indexRatio = float(index) / float(`+n+`);
        float exponentMultiplierTimesIndexRatio =
            exponentMultiplier * indexRatio;

        float result = 0.0;

        for (int i = 0; i < `+n+`; i++) {
          // x = (-2|2 * PI / N) * index * i;
          float x = exponentMultiplierTimesIndexRatio * float(i);
          float expR = cos(x);
          float expI = sin(x);
          float real = getReal(batch, i);
          float imag = getImag(batch, i);

          result +=
              unaryOpComplex(real, expR, imag, expI) / `+o+`;
        }

        return result;
      }

      void main() {
        ivec2 coords = getOutputCoords();
        setOutput(mulMatDFT(coords[0], coords[1]));
      }
    `},Uv=function(){function r(t,e){this.outputShape=[],this.variableNames=["x"],this.outputShape=t,this.userCode=`
      uniform float value;
      void main() {
        // Input can be obtained from uniform value.
        setOutput(value);
      }
    `}return r.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,a){e.valueLoc==null&&(e.valueLoc=n.getUniformLocationNoThrow(a,"value")),n.gl.uniform1f(e.valueLoc,t)}},r}(),Gv=function(r,t,e){this.variableNames=["A","indices"];var n=r.slice();n[e]=t,this.outputShape=n,this.rank=n.length;var a=Fe(this.rank),o=function(i,s){var u=i.length;if(u>4)throw Error("Gather for rank "+u+" is not yet supported");if(u===1)return"int(getIndices(resRC))";for(var c=["resRC.x","resRC.y","resRC.z","resRC.w"],l=[],d=0;d<i.length;d++)d===s?l.push("int(getIndices("+c[d]+"))"):l.push(""+c[d]);return l.join()}(r,e);this.userCode=`
      void main() {
        `+a+` resRC = getOutputCoords();
        setOutput(getA(`+o+`));
      }
    `},Hv=function(r,t,e){this.sliceDim=r,this.strides=t,this.variableNames=["x","indices"],this.outputShape=e;var n=Fe(t.length),a=Fe(e.length),o=this.sliceDim>1?"strides[j]":"strides";this.userCode=`
        `+n+" strides = "+n+"("+this.strides+`);
         void main() {
          `+a+` coords = getOutputCoords();
          int flattenIndex = 0;
          for (int j = 0; j < `+this.sliceDim+`; j++) {
            int index = round(getIndices(coords[0], j));
            flattenIndex += index * `+o+`;
          }
          setOutput(getX(flattenIndex, coords[1]));
        }
      `};function $v(r,t){var e=it();return Vf(r,t,e.version+`
    precision highp float;
    `+e.attribute+` vec3 clipSpacePos;
    `+e.attribute+` vec2 uv;
    `+e.varyingVs+` vec2 resultUV;

    void main() {
      gl_Position = vec4(clipSpacePos, 1);
      resultUV = uv;
    }`)}function jv(r,t){return $f(r,t,new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]))}function qv(r,t){return jf(r,t,new Uint16Array([0,1,2,2,1,3]))}function Wr(r,t,e,n,a,o,i){Kf(e,n);var s=qf(r,t),u=r.TEXTURE_2D;return oe(r,t,function(){return r.bindTexture(u,s)}),oe(r,t,function(){return r.texParameteri(u,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE)}),oe(r,t,function(){return r.texParameteri(u,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE)}),oe(r,t,function(){return r.texParameteri(u,r.TEXTURE_MIN_FILTER,r.NEAREST)}),oe(r,t,function(){return r.texParameteri(u,r.TEXTURE_MAG_FILTER,r.NEAREST)}),oe(r,t,function(){return r.texImage2D(u,0,a,e,n,0,o,i,null)}),oe(r,t,function(){return r.bindTexture(r.TEXTURE_2D,null)}),s}function Kv(r,t,e,n,a){var o=Ta(e,n);return Wr(r,t,o[0],o[1],a.internalFormatFloat,a.textureFormatFloat,r.FLOAT)}function Xv(r,t,e,n,a){var o=Ta(e,n);return Wr(r,t,o[0],o[1],a.internalFormatHalfFloat,a.textureFormatFloat,a.textureTypeHalfFloat)}function Yv(r,t,e,n,a){var o=Ta(e,n);return Wr(r,t,o[0],o[1],r.RGBA,r.RGBA,r.UNSIGNED_BYTE)}function Jv(r,t,e,n,a){var o=Lr(e,n);return Wr(r,t,o[0],o[1],a.internalFormatPackedFloat,r.RGBA,r.FLOAT)}function Qv(r,t,e,n,a){var o=Lr(e,n);return Wr(r,t,o[0],o[1],a.internalFormatPackedHalfFloat,r.RGBA,a.textureTypeHalfFloat)}function Zv(r,t,e,n){return oe(r,t,function(){return r.bindBuffer(r.ARRAY_BUFFER,n)}),ps(r,t,e,"clipSpacePos",n,3,20,0)&&ps(r,t,e,"uv",n,2,20,12)}function em(r,t,e,n,a,o,i){var s,u,c;oe(r,t,function(){return r.bindTexture(r.TEXTURE_2D,e)}),o instanceof Uint8Array?(s=new Uint8Array(n*a*4),u=r.UNSIGNED_BYTE,c=r.RGBA):(s=new Float32Array(n*a*4),u=r.FLOAT,c=i.internalFormatPackedFloat),s.set(o),oe(r,t,function(){return r.texImage2D(r.TEXTURE_2D,0,c,n,a,0,r.RGBA,u,s)}),oe(r,t,function(){return r.bindTexture(r.TEXTURE_2D,null)})}function tm(r,t,e,n){oe(r,t,function(){return r.bindTexture(r.TEXTURE_2D,e)}),n.data instanceof Uint8Array?oe(r,t,function(){return r.texImage2D(r.TEXTURE_2D,0,r.RGBA,n.width,n.height,0,r.RGBA,r.UNSIGNED_BYTE,n.data)}):oe(r,t,function(){return r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,n)}),oe(r,t,function(){return r.bindTexture(r.TEXTURE_2D,null)})}function nm(r,t,e,n,a){var o=r.createBuffer();oe(r,t,function(){return r.bindBuffer(r.PIXEL_PACK_BUFFER,o)});var i=16*e*n;return oe(r,t,function(){return r.bufferData(r.PIXEL_PACK_BUFFER,i,r.STREAM_READ)}),oe(r,t,function(){return r.readPixels(0,0,n,e,r.RGBA,r.FLOAT,0)}),oe(r,t,function(){return r.bindBuffer(r.PIXEL_PACK_BUFFER,null)}),o}function rm(r,t,e){var n=r,a=new Float32Array(e);return n.bindBuffer(n.PIXEL_PACK_BUFFER,t),n.getBufferSubData(n.PIXEL_PACK_BUFFER,0,a),n.bindBuffer(n.PIXEL_PACK_BUFFER,null),a}function am(r,t,e,n,a){var o=Ta(e,n),i=o[0],s=o[1],u=new Uint8Array(e*n*4);return oe(r,t,function(){return r.readPixels(0,0,i,s,a.downloadTextureFormat,r.UNSIGNED_BYTE,u)}),new Float32Array(u.buffer)}function om(r,t,e,n,a,o,i,s){var u=r,c=new Float32Array(function(l,d){var h=Lr(l,d);return h[0]*h[1]*4}(o,i));return u.bindBuffer(u.PIXEL_PACK_BUFFER,t),u.getBufferSubData(u.PIXEL_PACK_BUFFER,0,c),u.bindBuffer(u.PIXEL_PACK_BUFFER,null),c}function im(r,t,e,n){var a=new Float32Array(e*n*4);return oe(r,t,function(){return r.readPixels(0,0,n,e,r.RGBA,r.FLOAT,a)}),a}var sm=function(){function r(t){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];var e=z().getNumber("WEBGL_VERSION");t!=null?(this.gl=t,Mf(e,t)):this.gl=Yt(e);var n="WEBGL_color_buffer_float";if(z().getNumber("WEBGL_VERSION")===1){if(this.textureFloatExtension=jr(this.gl,this.debug,"OES_texture_float"),kt(this.gl,"OES_texture_half_float"))this.textureHalfFloatExtension=jr(this.gl,this.debug,"OES_texture_half_float");else if(z().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),kt(this.gl,"EXT_color_buffer_half_float"))this.colorBufferHalfFloatExtension=jr(this.gl,this.debug,"EXT_color_buffer_half_float");else if(z().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",kt(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else{if(!kt(this.gl,"EXT_color_buffer_half_float"))throw new Error("GL context does not support color renderable floats");this.colorBufferHalfFloatExtension=this.gl.getExtension("EXT_color_buffer_half_float")}this.vertexBuffer=jv(this.gl,this.debug),this.indexBuffer=qv(this.gl,this.debug),this.framebuffer=Xf(this.gl,this.debug),this.textureConfig=ai(this.gl,this.textureHalfFloatExtension)}return Object.defineProperty(r.prototype,"debug",{get:function(){return z().getBool("DEBUG")},enumerable:!0,configurable:!0}),r.prototype.dispose=function(){var t=this;if(!this.disposed){this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture.  This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");var e=this.gl;oe(e,this.debug,function(){return e.finish()}),oe(e,this.debug,function(){return e.bindFramebuffer(e.FRAMEBUFFER,null)}),oe(e,this.debug,function(){return e.deleteFramebuffer(t.framebuffer)}),oe(e,this.debug,function(){return e.bindBuffer(e.ARRAY_BUFFER,null)}),oe(e,this.debug,function(){return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)}),oe(e,this.debug,function(){return e.deleteBuffer(t.indexBuffer)}),this.disposed=!0}},r.prototype.createFloat32MatrixTexture=function(t,e){return this.throwIfDisposed(),Kv(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.createFloat16MatrixTexture=function(t,e){return this.throwIfDisposed(),Xv(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.createUnsignedBytesMatrixTexture=function(t,e){return this.throwIfDisposed(),Yv(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.uploadPixelDataToTexture=function(t,e){this.throwIfDisposed(),tm(this.gl,this.debug,t,e)},r.prototype.uploadDenseMatrixToTexture=function(t,e,n,a){this.throwIfDisposed(),em(this.gl,this.debug,t,e,n,a,this.textureConfig)},r.prototype.createFloat16PackedMatrixTexture=function(t,e){return this.throwIfDisposed(),Qv(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.createPackedMatrixTexture=function(t,e){return this.throwIfDisposed(),Jv(this.gl,this.debug,t,e,this.textureConfig)},r.prototype.deleteMatrixTexture=function(t){var e=this;this.throwIfDisposed(),this.outputTexture===t&&(vs(this.gl,this.debug,this.framebuffer),this.outputTexture=null),oe(this.gl,this.debug,function(){return e.gl.deleteTexture(t)})},r.prototype.downloadByteEncodedFloatMatrixFromOutputTexture=function(t,e,n){var a=this;return this.downloadMatrixDriver(t,function(){return am(a.gl,a.debug,e,n,a.textureConfig)})},r.prototype.downloadPackedMatrixFromBuffer=function(t,e,n,a,o,i){return om(this.gl,t,0,0,0,o,i,this.textureConfig)},r.prototype.downloadFloat32MatrixFromBuffer=function(t,e){return rm(this.gl,t,e)},r.prototype.createBufferFromTexture=function(t,e,n){this.bindTextureToFrameBuffer(t);var a=nm(this.gl,this.debug,e,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),a},r.prototype.createAndWaitForFence=function(){var t=this.createFence(this.gl);return this.pollFence(t)},r.prototype.createFence=function(t){var e,n,a=this;if(z().getBool("WEBGL_FENCE_API_ENABLED")){var o=t,i=o.fenceSync(o.SYNC_GPU_COMMANDS_COMPLETE,0);t.flush(),n=function(){var s=o.clientWaitSync(i,0,0);return s===o.ALREADY_SIGNALED||s===o.CONDITION_SATISFIED},e=i}else z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(e=this.beginQuery(),this.endQuery(),n=function(){return a.isQueryAvailable(e,z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}):n=function(){return!0};return{query:e,isFencePassed:n}},r.prototype.downloadMatrixFromPackedTexture=function(t,e,n){var a=this;return this.downloadMatrixDriver(t,function(){return im(a.gl,a.debug,e,n)})},r.prototype.createProgram=function(t){this.throwIfDisposed();var e=this.gl,n=zf(e,this.debug,t),a=$v(e,this.debug),o=Gf(e,this.debug);return oe(e,this.debug,function(){return e.attachShader(o,a)}),oe(e,this.debug,function(){return e.attachShader(o,n)}),Hf(e,this.debug,o),this.debug&&so(e,this.debug,o),this.vertexAttrsAreBound||(this.setProgram(o),this.vertexAttrsAreBound=Zv(e,this.debug,this.program,this.vertexBuffer)),o},r.prototype.deleteProgram=function(t){var e=this;this.throwIfDisposed(),t===this.program&&(this.program=null),t!=null&&oe(this.gl,this.debug,function(){return e.gl.deleteProgram(t)})},r.prototype.setProgram=function(t){var e=this;this.throwIfDisposed(),this.program=t,this.program!=null&&this.debug&&so(this.gl,this.debug,this.program),oe(this.gl,this.debug,function(){return e.gl.useProgram(t)})},r.prototype.getUniformLocation=function(t,e,n){return n===void 0&&(n=!0),this.throwIfDisposed(),n?Jf(this.gl,this.debug,t,e):Qf(this.gl,t,e)},r.prototype.getAttributeLocation=function(t,e){var n=this;return this.throwIfDisposed(),oe(this.gl,this.debug,function(){return n.gl.getAttribLocation(t,e)})},r.prototype.getUniformLocationNoThrow=function(t,e){return this.throwIfDisposed(),this.gl.getUniformLocation(t,e)},r.prototype.setInputMatrixTexture=function(t,e,n){this.throwIfDisposed(),this.throwIfNoProgram(),Zf(this.gl,this.debug,this.program,t,e,n)},r.prototype.setOutputMatrixTexture=function(t,e,n){this.setOutputMatrixTextureDriver(t,n,e)},r.prototype.setOutputPackedMatrixTexture=function(t,e,n){this.throwIfDisposed();var a=Lr(e,n),o=a[0],i=a[1];this.setOutputMatrixTextureDriver(t,o,i)},r.prototype.setOutputMatrixWriteRegion=function(t,e,n,a){this.setOutputMatrixWriteRegionDriver(n,t,a,e)},r.prototype.setOutputPackedMatrixWriteRegion=function(t,e,n,a){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")},r.prototype.debugValidate=function(){this.program!=null&&so(this.gl,this.debug,this.program),qr(this.gl)},r.prototype.executeProgram=function(){this.throwIfDisposed(),this.throwIfNoProgram();var t=this.gl;this.debug&&this.debugValidate(),oe(t,this.debug,function(){return t.drawElements(t.TRIANGLES,6,t.UNSIGNED_SHORT,0)})},r.prototype.blockUntilAllProgramsCompleted=function(){var t=this;this.throwIfDisposed(),oe(this.gl,this.debug,function(){return t.gl.finish()})},r.prototype.getQueryTimerExtension=function(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=jr(this.gl,this.debug,z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension},r.prototype.getQueryTimerExtensionWebGL2=function(){return this.getQueryTimerExtension()},r.prototype.getQueryTimerExtensionWebGL1=function(){return this.getQueryTimerExtension()},r.prototype.beginQuery=function(){if(z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){var t=this.gl,e=this.getQueryTimerExtensionWebGL2(),n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}var a=this.getQueryTimerExtensionWebGL1(),o=a.createQueryEXT();return a.beginQueryEXT(a.TIME_ELAPSED_EXT,o),o},r.prototype.endQuery=function(){if(z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")!==2){var t=this.getQueryTimerExtensionWebGL1();t.endQueryEXT(t.TIME_ELAPSED_EXT)}else{var e=this.gl,n=this.getQueryTimerExtensionWebGL2();e.endQuery(n.TIME_ELAPSED_EXT)}},r.prototype.waitForQueryAndGetTime=function(t){return ne(this,void 0,void 0,function(){var e=this;return re(this,function(n){switch(n.label){case 0:return[4,us(function(){return e.disposed||e.isQueryAvailable(t,z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))})];case 1:return n.sent(),[2,this.getQueryTime(t,z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))]}})})},r.prototype.getQueryTime=function(t,e){if(e===0)return null;if(e===2){var n=this.gl;return n.getQueryParameter(t,n.QUERY_RESULT)/1e6}var a=this.getQueryTimerExtensionWebGL1();return a.getQueryObjectEXT(t,a.QUERY_RESULT_EXT)/1e6},r.prototype.isQueryAvailable=function(t,e){if(e===0)return!0;if(e===2){var n=this.gl,a=this.getQueryTimerExtensionWebGL2(),o=n.getQueryParameter(t,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(a.GPU_DISJOINT_EXT)),o&&!this.disjoint}return o=(a=this.getQueryTimerExtensionWebGL1()).getQueryObjectEXT(t,a.QUERY_RESULT_AVAILABLE_EXT),this.disjoint==null&&(this.disjoint=this.gl.getParameter(a.GPU_DISJOINT_EXT)),o&&!this.disjoint},r.prototype.pollFence=function(t){var e=this;return new Promise(function(n){e.addItemToPoll(function(){return t.isFencePassed()},function(){return n()})})},r.prototype.pollItems=function(){for(var t=function(n){for(var a=0;a<n.length&&n[a]();++a);return a-1}(this.itemsToPoll.map(function(n){return n.isDoneFn})),e=0;e<=t;++e)(0,this.itemsToPoll[e].resolveFn)();this.itemsToPoll=this.itemsToPoll.slice(t+1)},r.prototype.addItemToPoll=function(t,e){var n=this;this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),this.itemsToPoll.length>1||us(function(){return n.pollItems(),n.itemsToPoll.length===0})},r.prototype.bindTextureToFrameBuffer=function(t){this.throwIfDisposed(),uo(this.gl,this.debug,t,this.framebuffer),this.debug&&qr(this.gl)},r.prototype.unbindTextureToFrameBuffer=function(){this.outputTexture!=null?(uo(this.gl,this.debug,this.outputTexture,this.framebuffer),this.debug&&qr(this.gl)):vs(this.gl,this.debug,this.framebuffer)},r.prototype.downloadMatrixDriver=function(t,e){this.bindTextureToFrameBuffer(t);var n=e();return this.unbindTextureToFrameBuffer(),n},r.prototype.setOutputMatrixTextureDriver=function(t,e,n){this.throwIfDisposed();var a=this.gl;uo(a,this.debug,t,this.framebuffer),this.debug&&qr(a),this.outputTexture=t,oe(a,this.debug,function(){return a.viewport(0,0,e,n)}),oe(a,this.debug,function(){return a.scissor(0,0,e,n)})},r.prototype.setOutputMatrixWriteRegionDriver=function(t,e,n,a){var o=this;this.throwIfDisposed(),oe(this.gl,this.debug,function(){return o.gl.scissor(t,e,n,a)})},r.prototype.throwIfDisposed=function(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")},r.prototype.throwIfNoProgram=function(){if(this.program==null)throw new Error("No GPU program is currently set.")},r}();function Ss(r,t){if(r.length!==t.length)throw Error("Binary was compiled with "+r.length+" inputs, but was executed with "+t.length+" inputs");r.forEach(function(e,n){var a=e.logicalShape,o=t[n],i=o.shape;if(!Qe(a,i))throw Error("Binary was compiled with different shapes than the current args. Shapes "+a+" and "+i+" must match");if(!e.isUniform||!o.isUniform){var s=e.texShape,u=o.isUniform?null:o.texData.texShape;if(!Qe(s,u))throw Error("Binary was compiled with different texture shapes than the current args. Shape "+s+" and "+u+" must match")}})}var um=function(r,t,e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r;for(var n=e.filterWidth,a=e.inChannels,o=e.strideWidth,i=e.strideHeight,s=e.padInfo,u=e.outWidth,c=e.dilationWidth,l=e.dilationHeight,d=e.dataFormat,h=s.left,f=s.top,p=a*n,v=it(),m=d==="channelsLast",g=m?0:1,x=m?1:2,b="",_=0;_<=1;_++)for(var y=0;y<=1;y++)b+=`
          blockIndex = rc.y + `+y+`;
          pos = rc.x + `+_+`;

          if(blockIndex < `+r[1]+" && pos < "+r[0]+`) {
            offsetY = int(blockIndex / (`+u+")) * "+i+" - "+f+`;
            d0 = offsetY + `+l+" * (pos / "+p+`);

            if(d0 < `+t[g]+` && d0 >= 0) {

              offsetX = int(mod(float(blockIndex), `+u+".) * "+o+". - "+h+`.);
              d1 = offsetX + `+c+" * (int(mod(float(pos), "+p+".) / "+a+`.));

              if(d1 < `+t[x]+` && d1 >= 0) {

                ch = int(mod(float(pos), `+a+`.));

                if (`+m+`) {
                  innerDims = vec2(d1, ch);
                  result[`+(2*_+y)+`] = getChannel(
                    getA(d0, int(innerDims.x),
                    int(innerDims.y)), innerDims);
                } else {
                  innerDims = vec2(d0, d1);
                  result[`+(2*_+y)+`] = getChannel(
                    getA(ch, int(innerDims.x),
                    int(innerDims.y)), innerDims);
                }
              }
            }
          }
        `;this.userCode=`
      void main() {
        ivec2 rc = getOutputCoords();

        vec4 result = vec4(0);

        int blockIndex, pos, offsetY, d0, offsetX, d1, ch;
        vec2 innerDims;

        `+b+`

        `+v.output+` = result;
      }
    `},cm=function(r,t,e,n,a){this.variableNames=["x"],this.outputShape=[];var o,i=t,s=r[3]-1;this.outputShape=r;var u="float("+e+") + float("+n+") * sum";o=a===.5?"inversesqrt("+u+")":a===1?"1.0/("+u+")":"exp(log("+u+") * float(-"+a+"));",this.userCode=`
      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int r = coords[1];
        int c = coords[2];
        int d = coords[3];
        float x = getX(b, r, c, d);
        float sum = 0.0;
        for (int j = -`+i+"; j <= "+i+`; j++) {
          int idx = d + j;
          if (idx >= 0 && idx <=  `+s+`) {
            float z = getX(b, r, c, idx);
            sum += z * z;
          }
        }
        float val = x * `+o+`;
        setOutput(val);
      }
    `},lm=function(r,t,e,n,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=r,this.depth=r[3],this.depthRadius=t,this.bias=e,this.alpha=n,this.beta=a,this.userCode=`
      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int r = coords[1];
        int c = coords[2];

        float result = 0.0;
        for (int d = 0; d < `+this.depth+`; ++d) {
          int depthBegin = int(max(0.0, float(d - `+t+`)));
          int depthEnd = int(min(float(`+this.depth+`),
              float(d + `+t+` + 1)));

          const int MIN_DEPTH_BEGIN = 0;
          const int MAX_DEPTH_END = `+this.depth+`;

          float norm = 0.0;
          for (int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k) {
            if (k < depthBegin){
              continue;
            }
            else if (k >= depthBegin && k < depthEnd) {
              norm += getInputImage(b, r, c, k) * getInputImage(b, r, c, k);
            }
            else {
              break;
            }
          }

          norm = float(`+n+") * norm + float("+e+`);

          for(int k = MIN_DEPTH_BEGIN; k < MAX_DEPTH_END; ++k){
            if (k < depthBegin){
              continue;
            }
            else if (k >= depthBegin && k < depthEnd){
              float dyi = -2.0 * float(`+n+`)
                * float(`+a+`)
                * getInputImage(b ,r ,c, k) * getOutputImage(b, r, c, d)
                / norm;
              if (k == d) {
                dyi += pow(norm, -1.0 * `+a+`);
              }
              if (k == coords[3]) {
                dyi *= getDy(b, r, c, d);
                result += dyi;
              }
            }
            else {
              break;
            }
          }
      }
      setOutput(result);
      }
    `},dm=function(r,t,e,n,a){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;var o,i=t,s=r[3]-1;this.outputShape=r;var u="float("+e+") + float("+n+") * sum";o=a===.5?"inversesqrt("+u+")":a===1?"1.0/("+u+")":"exp(log("+u+") * float(-"+a+"));",this.userCode=`
      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords.x;
        int r = coords.y;
        int c = coords.z;
        int d = coords.w;

        bool hasNextCol = d < `+this.outputShape[3]+`;
        bool hasNextRow = c < `+this.outputShape[2]+`;

        vec4 sum = vec4(0.);
        vec4 xFragAtOutputCoords = getX(b, r, c, d);

        vec4 xAtOutputCoords = vec4(
          getChannel(xFragAtOutputCoords, vec2(c, d)),
          hasNextCol ?
            getChannel(xFragAtOutputCoords, vec2(c, d + 1)) : 0.0,
          hasNextRow ?
            getChannel(xFragAtOutputCoords , vec2(c + 1, d)) : 0.0,
          (hasNextRow && hasNextCol) ?
            getChannel(xFragAtOutputCoords, vec2(c + 1, d + 1)) : 0.0
        );

        int firstChannel = d - `+i+`;
        vec2 cache = vec2(0.);
        if(firstChannel >= 0){
          vec4 firstChannelFrag = getX(b, r, c, firstChannel);
          cache.x = getChannel(firstChannelFrag, vec2(c, firstChannel));
            if(hasNextRow){
              cache.y = getChannel(firstChannelFrag, vec2(c + 1, firstChannel));
            }
        }

        ivec2 depth = ivec2(d, d + 1);
        for (int j = - `+i+"; j <= "+i+`; j++) {
          ivec2 idx = depth + j;
          bvec2 aboveLowerBound = greaterThanEqual(idx, ivec2(0));
          bvec2 belowUpperBound = lessThanEqual(idx, ivec2(`+s+`));

          bool depthInRange = aboveLowerBound.x && belowUpperBound.x;
          bool depthPlusOneInRange = aboveLowerBound.y && belowUpperBound.y;

          if(depthInRange || depthPlusOneInRange){
            vec4 z = vec4(0.);
            vec4 xFragAtCurrentDepth;
            z.xz = cache.xy;
            if(depthPlusOneInRange && hasNextCol){
              xFragAtCurrentDepth = idx.y != d ?
                getX(b, r, c, idx.y) : xFragAtOutputCoords;
              z.y = getChannel(xFragAtCurrentDepth, vec2(c, idx.y));
              if(hasNextRow){
                z.w = getChannel(xFragAtCurrentDepth, vec2(c + 1, idx.y));
              }
            }
            cache.xy = z.yw;
            sum += z * z;
          }
        }
        vec4 result = xAtOutputCoords * `+o+`;
        setOutput(result);
      }
    `},hm=function(r){this.variableNames=["dy","maxPos"],this.outputShape=r.inShape;var t=r.strideHeight,e=r.strideWidth,n=r.dilationHeight,a=r.effectiveFilterHeight,o=r.effectiveFilterWidth,i=a-1-r.padInfo.top,s=o-1-r.padInfo.left,u=a*o-1;this.userCode=`
      const ivec2 pads = ivec2(`+i+", "+s+`);

      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int d = coords[3];

        ivec2 dyRCCorner = coords.yz - pads;
        int dyRCorner = dyRCCorner.x;
        int dyCCorner = dyRCCorner.y;

        // Convolve dy(?, ?, d) with pos mask(:, :, d) to get dx(xR, xC, d).
        // ? = to be determined. : = across all values in that axis.
        float dotProd = 0.0;
        for (int wR = 0; wR < `+a+`;
          wR += `+n+`) {
          float dyR = float(dyRCorner + wR) / `+t+`.0;

          if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 || fract(dyR) > 0.0) {
            continue;
          }
          int idyR = int(dyR);

          for (int wC = 0; wC < `+o+`; wC++) {
            float dyC = float(dyCCorner + wC) / `+e+`.0;

            if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
                fract(dyC) > 0.0) {
              continue;
            }
            int idyC = int(dyC);

            float dyValue = getDy(b, idyR, idyC, d);
            int maxPosValue = `+u+` - int(getMaxPos(b, idyR, idyC, d));

            // Get the current value, check it against the value from the
            // position matrix.
            int curPosValue = wR * `+o+` + wC;
            float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);

            dotProd += dyValue * mask;
          }
        }
        setOutput(dotProd);
      }
    `},fm=function(r){this.variableNames=["dy","maxPos"],this.outputShape=r.inShape;var t=r.strideDepth,e=r.strideHeight,n=r.strideWidth,a=r.dilationDepth,o=r.dilationHeight,i=r.dilationWidth,s=r.effectiveFilterDepth,u=r.effectiveFilterHeight,c=r.effectiveFilterWidth,l=s-1-r.padInfo.front,d=u-1-r.padInfo.top,h=c-1-r.padInfo.left,f=s*u*c-1;this.userCode=`
      const ivec3 pads = ivec3(`+l+", "+d+", "+h+`);

      void main() {
        ivec5 coords = getOutputCoords();
        int batch = coords.x;
        int ch = coords.u;

        ivec3 dyCorner = ivec3(coords.y, coords.z, coords.w) - pads;
        int dyDCorner = dyCorner.x;
        int dyRCorner = dyCorner.y;
        int dyCCorner = dyCorner.z;

        // Convolve dy(?, ?, ?, ch) with pos mask(:, :, :, d) to get
        // dx(xD, xR, xC, ch).
        // ? = to be determined. : = across all values in that axis.
        float dotProd = 0.0;

        for (int wD = 0; wD < `+s+`;
           wD += `+a+`) {
          float dyD = float(dyDCorner + wD) / `+t+`.0;

          if (dyD < 0.0 || dyD >= `+r.outDepth+`.0 || fract(dyD) > 0.0) {
            continue;
          }
          int idyD = int(dyD);

          for (int wR = 0; wR < `+u+`;
              wR += `+o+`) {
            float dyR = float(dyRCorner + wR) / `+e+`.0;

            if (dyR < 0.0 || dyR >= `+r.outHeight+`.0 ||
                fract(dyR) > 0.0) {
              continue;
            }
            int idyR = int(dyR);

            for (int wC = 0; wC < `+c+`;
                wC += `+i+`) {
              float dyC = float(dyCCorner + wC) / `+n+`.0;

              if (dyC < 0.0 || dyC >= `+r.outWidth+`.0 ||
                  fract(dyC) > 0.0) {
                continue;
              }
              int idyC = int(dyC);

              float dyValue = getDy(batch, idyD, idyR, idyC, ch);
              int maxPosValue = `+f+` -
                  int(getMaxPos(batch, idyD, idyR, idyC, ch));

              // Get the current value, check it against the value from the
              // position matrix.
              int curPosValue =
                  wD * `+u+" * "+c+` +
                  wR * `+c+` + wC;
              float mask = float(maxPosValue == curPosValue ? 1.0 : 0.0);

              dotProd += dyValue * mask;
            }
          }
        }
        setOutput(dotProd);
      }
    `},po=function(r,t,e,n,a,o,i){e===void 0&&(e=!1),n===void 0&&(n=!1),a===void 0&&(a=!1),o===void 0&&(o=null),i===void 0&&(i=!1),this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t;var s=e?r[1]:r[2],u=Math.ceil(s/2),c=e?"i * 2, rc.y":"rc.y, i * 2",l=n?"rc.z, i * 2":"i * 2, rc.z",d=e?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],h=n?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],f="",p="";o&&(f=i?`vec4 activation(vec4 a) {
          vec4 b = getPreluActivationWeightsAtOutCoords();
          `+o+`
        }`:`vec4 activation(vec4 x) {
          `+o+`
        }`,p="result = activation(result);");var v=a?"result += getBiasAtOutCoords();":"";a&&this.variableNames.push("bias"),i&&this.variableNames.push("preluActivationWeights"),this.userCode=`
      `+f+`

      const float sharedDimension = `+u+`.0;

      vec4 dot2x2ARowBCol(ivec3 rc) {
        vec4 result = vec4(0);
        for (int i = 0; i < `+u+`; i++) {
          vec4 a = getMatrixA(rc.x, `+c+`);
          vec4 b = getMatrixB(rc.x, `+l+`);

          // These swizzled products need to be separately added.
          // See: https://github.com/tensorflow/tfjs/issues/1735
          result += (`+d[0]+" * "+h[0]+`);
          result += (`+d[1]+" * "+h[1]+`);
        }
        return result;
      }

      void main() {
        ivec3 rc = getOutputCoords();
        vec4 result = dot2x2ARowBCol(rc);

        `+v+`

        `+p+`

        setOutput(result);
      }
    `},pm=function(){function r(t,e,n){this.variableNames=["probs"],this.outputShape=[t,n],this.userCode=`
      uniform float seed;

      void main() {
        ivec2 coords = getOutputCoords();
        int batch = coords[0];

        float r = random(seed);
        float cdf = 0.0;

        for (int i = 0; i < `+(e-1)+`; i++) {
          cdf += getProbs(batch, i);

          if (r < cdf) {
            setOutput(float(i));
            return;
          }
        }

        // If no other event happened, last event happened.
        setOutput(float(`+(e-1)+`));
      }
    `}return r.prototype.getCustomSetupFunc=function(t){var e=this;return function(n,a){e.seedLoc==null&&(e.seedLoc=n.getUniformLocation(a,"seed")),n.gl.uniform1f(e.seedLoc,t)}},r}(),vm=function(r,t,e,n){this.variableNames=["indices"],this.outputShape=[r,t],this.userCode=`
      void main() {
        ivec2 coords = getOutputCoords();
        int index = round(getIndices(coords.x));
        setOutput(mix(float(`+n+"), float("+e+`),
                      float(index == coords.y)));
      }
    `},mm=function(r){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outputShape=r;var t=r.length;if(t===0)this.userCode=`
        void main() {
          setOutput(vec4(getA(), 0., 0., 0.));
        }
      `;else{var e=ft("rc",t),n=Fe(t),a=function(s,u,c){if(s===1)return"rc > "+u[0];for(var l="",d=s-2;d<s;d++)l+=c[d]+" >= "+u[d],d<s-1&&(l+="||");return l}(t,r,e),o=function(s,u,c,l){if(s===1)return"";var d=l.slice(-2);return`
    int r = `+d[0]+`;
    int c = `+d[1]+`;
    int rp1 = r + 1;
    int cp1 = c + 1;

    bool cEdge = cp1 >= `+u+`;
    bool rEdge = rp1 >= `+c+`;
  `}(t,r[r.length-1],r[r.length-2],e),i=function(s,u){var c=s.length,l=function(d,h){for(var f=[],p=0;p<=1;p++)for(var v=0;v<=1;v++){for(var m=(p===0?"r":"rp1")+", "+(v===0?"c":"cp1"),g=2;g<d;g++)m=h[h.length-1-g]+","+m;f.push(m)}return f}(c,u);return c===1?`getA(rc),
            rc + 1 >= `+s[0]+` ? 0. : getA(rc + 1),
            0, 0`:"getA("+l[0]+`),
          cEdge ? 0. : getA(`+l[1]+`),
          rEdge ? 0. : getA(`+l[2]+`),
          rEdge || cEdge ? 0. : getA(`+l[3]+")"}(r,e);this.userCode=`
        void main() {
          `+n+` rc = getOutputCoords();

          if(`+a+`) {
            setOutput(vec4(0));
          } else {
            `+o+`

            setOutput(vec4(`+i+`));
          }
        }
      `}},gm=function(r,t,e){this.variableNames=["x"],this.outputShape=t.map(function(u,c){return u[0]+r[c]+u[1]});var n=r.length,a=Fe(n),o=t.map(function(u){return u[0]}).join(","),i=t.map(function(u,c){return u[0]+r[c]}).join(","),s=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,n);this.userCode=n!==1?`
      `+a+" start = "+a+"("+o+`);
      `+a+" end = "+a+"("+i+`);

      void main() {
        `+a+` outC = getOutputCoords();
        if (any(lessThan(outC, start)) || any(greaterThanEqual(outC, end))) {
          setOutput(float(`+e+`));
        } else {
          `+a+` coords = outC - start;
          setOutput(getX(`+s+`));
        }
      }
    `:`
        int start = `+o+`;
        int end = `+i+`;

        void main() {
          int outC = getOutputCoords();
          if (outC < start || outC >= end) {
            setOutput(float(`+e+`));
          } else {
            setOutput(getX(outC - start));
          }
        }
      `},_m=function(r,t,e){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map(function(m,g){return m[0]+r[g]+m[1]});for(var n=r.length,a=Fe(n),o=t.map(function(m){return m[0]}).join(","),i=t.map(function(m,g){return m[0]+r[g]}).join(","),s=ft("rc",n),u=ft("source",n),c=s[n-1]+" < "+this.outputShape[n-1],l=n===1?"source":"vec2("+u.slice(-2).join()+")",d=[a+" rc = outputLoc;",s[n-1]+` += 1;
       if(`+c+`) {
      `,n===1?"":`}
       rc = outputLoc;
       `+s[n-2]+` += 1;
       if(`+s[n-2]+" < "+this.outputShape[n-2]+") {",n===1?"":"  "+s[n-1]+` += 1;
         if(`+c+") {"],h=n===1?"rc < start || rc >= end":"any(lessThan(rc, start)) || any(greaterThanEqual(rc, end))",f="",p=0,v=n===1?2:4;p<v;p++)f+=`
        `+d[p]+`
        if (`+h+`) {
          result[`+p+"] = float("+e+`);
        } else {
          `+a+` source = rc - start;
          result[`+p+"] = getChannel(getX("+u.join()+"), "+l+`);
        }
      `;f+=n===1?"} ":"}}",this.userCode=`
      const `+a+" start = "+a+"("+o+`);
      const `+a+" end = "+a+"("+i+`);

      void main() {
        `+a+` outputLoc = getOutputCoords();
        vec4 result = vec4(0.);
        `+f+`
        setOutput(result);
      }
    `},vo=function(r,t,e){if(this.variableNames=["x"],t==="avg"&&e)throw new Error("Cannot compute positions for average pool.");var n=r.filterWidth,a=r.strideHeight,o=r.strideWidth,i=r.dilationHeight,s=r.dilationWidth,u=r.effectiveFilterHeight,c=r.effectiveFilterWidth,l=r.padInfo.top,d=r.padInfo.left;this.outputShape=r.outShape;var h=t==="avg",f="0.0";if(h||(f="-1.0 / 1e-20"),e)this.userCode=`
        const ivec2 strides = ivec2(`+a+", "+o+`);
        const ivec2 pads = ivec2(`+l+", "+d+`);

        void main() {
          ivec4 coords = getOutputCoords();
          int batch = coords[0];
          int d = coords[3];

          ivec2 xRCCorner = coords.yz * strides - pads;
          int xRCorner = xRCCorner.x;
          int xCCorner = xRCCorner.y;

          // max/min x(?, ?, d) to get y(yR, yC, d).
          // ? = to be determined
          float minMaxValue = 0.0;
          float minMaxValueFound = 0.0;
          int minMaxPosition = 0;
          float avgValue = 0.0;

          for (int wR = 0; wR < `+u+`;
              wR += `+i+`) {
            int xR = xRCorner + wR;

            if (xR < 0 || xR >= `+r.inHeight+`) {
              continue;
            }

            for (int wC = 0; wC < `+c+`;
                wC += `+s+`) {
              int xC = xCCorner + wC;

              if (xC < 0 || xC >= `+r.inWidth+`) {
                continue;
              }

              float value = getX(batch, xR, xC, d);

              // If a min / max value has already been found, use it. If not,
              // use the current value.
              float currMinMaxValue = mix(
                  value, minMaxValue, minMaxValueFound);
              if (value >= currMinMaxValue) {
                minMaxValue = value;
                minMaxValueFound = 1.0;
                minMaxPosition = wR * `+c+` + wC;
              }
            }
          }
          setOutput(float(minMaxPosition));
        }
      `;else{var p=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";t==="avg"&&(p="avgValue / count");var v=4*Math.floor(n/4),m=n%4,g=`
      if (`+h+`) {
        avgValue += dot(values, ones);
      } else {
        minMaxValue = max(values, minMaxValue);
      }
    `;this.userCode=`
      const ivec2 strides = ivec2(`+a+", "+o+`);
      const ivec2 pads = ivec2(`+l+", "+d+`);
      const float initializationValue = `+f+`;
      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);

      float count = 0.0;

      float getValue(int batch, int xR, int xC, int d) {
        if (xC < 0 || xC >= `+r.inWidth+`) {
          return initializationValue;
        }
        count += 1.0;
        return getX(batch, xR, xC, d);
      }

      void main() {
        ivec4 coords = getOutputCoords();
        int batch = coords[0];
        int d = coords[3];

        ivec2 xRCCorner = coords.yz * strides - pads;
        int xRCorner = xRCCorner.x;
        int xCCorner = xRCCorner.y;

        // max/min x(?, ?, d) to get y(yR, yC, d).
        // ? = to be determined
        vec4 minMaxValue = vec4(`+f+`);
        float avgValue = 0.0;
        count = 0.0;

        for (int wR = 0; wR < `+u+`;
            wR += `+i+`) {
          int xR = xRCorner + wR;

          if (xR < 0 || xR >= `+r.inHeight+`) {
            continue;
          }

          for (int wC = 0; wC < `+v+`; wC += 4) {
            int xC = xCCorner + wC * `+s+`;

            vec4 values = vec4(
              getValue(batch, xR, xC, d),
              getValue(batch, xR, xC + `+s+`, d),
              getValue(batch, xR, xC + 2 * `+s+`, d),
              getValue(batch, xR, xC + 3 * `+s+`, d)
            );

            `+g+`
          }

          int xC = xCCorner + `+v+`;
          if (`+(m===1)+`) {
            vec4 values = vec4(
              getValue(batch, xR, xC, d),
              initializationValue,
              initializationValue,
              initializationValue
            );

            `+g+`
          } else if (`+(m===2)+`) {
            vec4 values = vec4(
              getValue(batch, xR, xC, d),
              getValue(batch, xR, xC + `+s+`, d),
              initializationValue,
              initializationValue
            );

            `+g+`
          } else if (`+(m===3)+`) {
            vec4 values = vec4(
              getValue(batch, xR, xC, d),
              getValue(batch, xR, xC + `+s+`, d),
              getValue(batch, xR, xC + 2 * `+s+`, d),
              initializationValue
            );

            `+g+`
          }
        }
        setOutput(`+p+`);
      }
    `}},mo=function(r,t,e){if(this.variableNames=["x"],t==="avg"&&e)throw new Error("Cannot compute positions for average pool.");var n=r.filterWidth,a=r.strideDepth,o=r.strideHeight,i=r.strideWidth,s=r.dilationDepth,u=r.dilationHeight,c=r.dilationWidth,l=r.effectiveFilterDepth,d=r.effectiveFilterHeight,h=r.effectiveFilterWidth,f=r.padInfo.front,p=r.padInfo.top,v=r.padInfo.left;this.outputShape=r.outShape;var m=t==="avg",g="0.0";if(m||(g="-1.0 / 1e-20"),e)this.userCode=`
        const ivec3 strides =
            ivec3(`+a+", "+o+", "+i+`);
        const ivec3 pads = ivec3(`+f+", "+p+", "+v+`);

        void main() {
          ivec5 coords = getOutputCoords();
          int batch = coords.x;
          int ch = coords.u;

          ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;
          int xDCorner = xCorner.x;
          int xRCorner = xCorner.y;
          int xCCorner = xCorner.z;

          // max/min x(?, ?, ?, ch) to get y(yD, yR, yC, ch).
          // ? = to be determined
          float minMaxValue = 0.0;
          float minMaxValueFound = 0.0;
          int minMaxPosition = 0;

          for (int wD = 0; wD < `+l+`;
              wD += `+s+`) {
            int xD = xDCorner + wD;

            if (xD < 0 || xD >= `+r.inDepth+`) {
              continue;
            }

            for (int wR = 0; wR < `+d+`;
                wR += `+u+`) {
              int xR = xRCorner + wR;

              if (xR < 0 || xR >= `+r.inHeight+`) {
                continue;
              }

              for (int wC = 0; wC < `+h+`;
                  wC += `+c+`) {
                int xC = xCCorner + wC;

                if (xC < 0 || xC >= `+r.inWidth+`) {
                  continue;
                }

                float value = getX(batch, xD, xR, xC, ch);

                // If a min / max value has already been found, use it. If not,
                // use the current value.
                float currMinMaxValue = mix(
                    value, minMaxValue, minMaxValueFound);
                if (value >= currMinMaxValue) {
                  minMaxValue = value;
                  minMaxValueFound = 1.0;
                  minMaxPosition =
                      wD * `+d+" * "+h+` +
                      wR * `+h+` + wC;;
                }
              }
            }
          }
          setOutput(float(minMaxPosition));
        }
      `;else{var x=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";t==="avg"&&(x="avgValue / count");var b=4*Math.floor(n/4),_=n%4,y=`
      if (`+m+`) {
        avgValue += dot(values, ones);
      } else {
        minMaxValue = max(values, minMaxValue);
      }
    `;this.userCode=`
      const ivec3 strides =
        ivec3(`+a+", "+o+", "+i+`);
      const ivec3 pads = ivec3(`+f+", "+p+", "+v+`);
      const float initializationValue = `+g+`;
      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);

      float count = 0.0;

      float getValue(int batch, int xD, int xR, int xC, int ch) {
        if (xC < 0 || xC >= `+r.inWidth+`) {
          return initializationValue;
        }
        count += 1.0;
        return getX(batch, xD, xR, xC, ch);
      }

      void main() {
        ivec5 coords = getOutputCoords();
        int batch = coords.x;
        int ch = coords.u;

        ivec3 xCorner = ivec3(coords.y, coords.z, coords.w) * strides - pads;
        int xDCorner = xCorner.x;
        int xRCorner = xCorner.y;
        int xCCorner = xCorner.z;

        // max/min x(?, ?, ?, d) to get y(yD, yR, yC, ch).
        // ? = to be determined
        vec4 minMaxValue = vec4(`+g+`);
        float avgValue = 0.0;
        count = 0.0;

        for (int wD = 0; wD < `+l+`;
            wD += `+s+`) {
          int xD = xDCorner + wD;

          if (xD < 0 || xD >= `+r.inDepth+`) {
            continue;
          }

          for (int wR = 0; wR < `+d+`;
            wR += `+u+`) {
            int xR = xRCorner + wR;

            if (xR < 0 || xR >= `+r.inHeight+`) {
              continue;
            }

            for (int wC = 0; wC < `+b+`; wC += 4) {
              int xC = xCCorner + wC * `+c+`;

              vec4 values = vec4(
                getValue(batch, xD, xR, xC, ch),
                getValue(batch, xD, xR, xC + `+c+`, ch),
                getValue(batch, xD, xR, xC + 2 * `+c+`, ch),
                getValue(batch, xD, xR, xC + 3 * `+c+`, ch)
              );

              `+y+`
            }

            int xC = xCCorner + `+b+`;
            if (`+(_===1)+`) {
              vec4 values = vec4(
                getValue(batch, xD, xR, xC, ch),
                initializationValue,
                initializationValue,
                initializationValue
              );

              `+y+`
            } else if (`+(_===2)+`) {
              vec4 values = vec4(
                getValue(batch, xD, xR, xC, ch),
                getValue(batch, xD, xR, xC + `+c+`, ch),
                initializationValue,
                initializationValue
              );

              `+y+`
            } else if (`+(_===3)+`) {
              vec4 values = vec4(
                getValue(batch, xD, xR, xC, ch),
                getValue(batch, xD, xR, xC + `+c+`, ch),
                getValue(batch, xD, xR, xC + 2 * `+c+`, ch),
                initializationValue
              );

              `+y+`
            }
          }
          setOutput(`+x+`);
        }
      }
    `}},xm=function(r,t){this.variableNames=["x"];var e=r.windowSize,n=r.batchSize,a=r.inSize,o=Math.ceil(a/e);this.outputShape=[n,o];var i="0.0",s="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",s="min"):t==="max"&&(i="-1.0 / 1e-20",s="max");var u=t+"("+t+"("+t+"(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])";t==="sum"?u="sumValue":t==="prod"?u="prodValue":t==="all"?u="allValue":t==="any"&&(u="anyValue");var c=4*Math.floor(e/4),l=e%4,d=`
      if (`+(t==="sum")+`) {
        sumValue += dot(values, ones);
      } else if (`+(t==="prod")+`) {
        vec2 tmp = vec2(values[0], values[1]) * vec2(values[2], values[3]);
        prodValue *= tmp[0] * tmp[1];
      } else {
        minMaxValue = `+s+`(values, minMaxValue);
      }
    `,h="vec4";t==="all"?(i="1.0",d=`
        bool reducedAllValue = all(values);
        float floatedReducedAllValue = float(reducedAllValue);
        allValue = float(allValue >= 1.0 && floatedReducedAllValue >= 1.0);
      `,h="bvec4"):t==="any"&&(i="0.0",d=`
        bool reducedAnyValue = any(values);
        float floatedReducedAnyValue = float(reducedAnyValue);
        anyValue = float(anyValue >= 1.0 || floatedReducedAnyValue >= 1.0);
      `,h="bvec4");var f="";a%e>0&&(f=`
        if (inIdx < 0 || inIdx >= `+a+`) {
          return initializationValue;
        }
      `),this.userCode=`
      const float initializationValue = `+i+`;
      const vec4 ones = vec4(1.0, 1.0, 1.0, 1.0);

      float getValue(int batch, int inIdx) {
        `+f+`
        return getX(batch, inIdx);
      }

      void main() {
        ivec2 coords = getOutputCoords();
        int batch = coords[0];
        int outIdx = coords[1];
        int inOffset = outIdx * `+e+`;

        vec4 minMaxValue = vec4(`+i+`);
        float prodValue = 1.0;
        float sumValue = 0.0;
        float allValue = 1.0;
        float anyValue = 0.0;

        for (int i = 0; i < `+c+`; i += 4) {
          int inIdx = inOffset + i;
          `+h+" values = "+h+`(
            getValue(batch, inIdx),
            getValue(batch, inIdx + 1),
            getValue(batch, inIdx + 2),
            getValue(batch, inIdx + 3)
          );

          `+d+`
        }

        int inIdx = inOffset + `+c+`;
        if (`+(l===1)+`) {
          `+h+" values = "+h+`(
            getValue(batch, inIdx),
            initializationValue,
            initializationValue,
            initializationValue
          );

          `+d+`
        } else if (`+(l===2)+`) {
          `+h+" values = "+h+`(
            getValue(batch, inIdx),
            getValue(batch, inIdx + 1),
            initializationValue,
            initializationValue
          );

          `+d+`
        } else if (`+(l===3)+`) {
          `+h+" values = "+h+`(
            getValue(batch, inIdx),
            getValue(batch, inIdx + 1),
            getValue(batch, inIdx + 2),
            initializationValue
          );

          `+d+`
        }
        setOutput(`+u+`);
      }
    `},bm=function(r,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r;for(var e="",n=0;n<4;n++){var a="thisRC = rc;";n%2==1&&(a+="thisRC.z += 1;"),n>1&&(a+="thisRC.y += 1;"),e+=`
        `+a+`
        `+(n>0?"if(thisRC.y < rows && thisRC.z < cols){":"")+`
          int flatIndex = getFlatIndex(thisRC);

          ivec3 inputRC = inputCoordsFromReshapedOutCoords(flatIndex);
          vec2 inputRCInnerDims = vec2(float(inputRC.y),float(inputRC.z));

          result[`+n+`] =
            getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims);
        `+(n>0?"}":"")+`
      `}this.userCode=`
      
    ivec3 inputCoordsFromReshapedOutCoords(int index) {
      `+Pn(["r","c","d"],t)+`
      return ivec3(r, c, d);
    }
  
      `+pi(r)+`

      void main() {
        ivec3 rc = getOutputCoords();

        vec4 result = vec4(0.);

        ivec3 thisRC;
        int rows = `+r[1]+`;
        int cols = `+r[2]+`;

        `+e+`

        setOutput(result);
      }
    `},ym=function(r,t,e){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var n=t.shape,a=n[1],o=n[2],i=r.shape,s=i[1],u=i[2],c=[e&&s>1?a-1:a,e&&u>1?o-1:o],l=[e&&s>1?s-1:s,e&&u>1?u-1:u],d=c[0]/l[0],h=c[1]/l[1],f=1/d,p=1/h,v=2*Math.ceil(f)+2,m=2*Math.ceil(p)+2;this.userCode=`
      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int d = coords[3];
        int r = coords[1];
        int c = coords[2];

        float accumulator = 0.0;

        const float heightScale = float(`+d+`);
        const float widthScale = float(`+h+`);

        const float invHeightScale = float(`+f+`);
        const float invWidthScale = float(`+p+`);

        const int winHeight = int(`+v+`);
        const int winWidth = int(`+m+`);

        // Compute bounds for where in dy we will look
        float startRLerp = floor(float(r) * invHeightScale);
        int startDyR = int(startRLerp - float(winHeight / 2));

        float startCLerp = floor(float(c) * invWidthScale);
        int startDyC = int(startCLerp - float(winWidth / 2));

        // Loop over dy
        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {
          int dyR = dyROffset + startDyR;

          // Guard against the window exceeding the bounds of dy
          if (dyR < 0 || dyR >= `+s+`) {
            continue;
          }

          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {
            int dyC = dyCOffset + startDyC;

            // Guard against the window exceeding the bounds of dy
            if (dyC < 0 || dyC >= `+u+`) {
              continue;
            }

            float dxR = float(dyR) * heightScale;
            int topDxRIndex = int(floor(dxR));
            int bottomDxRIndex = int(min(ceil(dxR), `+(a-1)+`.0));
            float dxRLerp = dxR - float(topDxRIndex);
            float inverseDxRLerp = 1.0 - dxRLerp;

            float dxC = float(dyC) * widthScale;
            int leftDxCIndex = int(floor(dxC));
            int rightDxCIndex = int(min(ceil(dxC), `+(o-1)+`.0));
            float dxCLerp = dxC - float(leftDxCIndex);
            float inverseDxCLerp = 1.0 - dxCLerp;

            if (r == topDxRIndex && c == leftDxCIndex) {
              // topLeft
              accumulator +=
                getDy(b, dyR, dyC, d) * inverseDxRLerp * inverseDxCLerp;
            }

            if (r == topDxRIndex && c == rightDxCIndex) {
              // topRight
              accumulator += getDy(b, dyR, dyC, d) * inverseDxRLerp * dxCLerp;
            }

            if (r == bottomDxRIndex && c == leftDxCIndex) {
              // bottomLeft
              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * inverseDxCLerp;
            }

            if (r == bottomDxRIndex && c == rightDxCIndex) {
              // bottomRight
              accumulator += getDy(b, dyR, dyC, d) * dxRLerp * dxCLerp;
            }
          }
        }
        // End loop over dy

        setOutput(accumulator);
      }
    `},wm=function(r,t,e,n){this.variableNames=["A"],this.outputShape=[];var a=r[0],o=r[1],i=r[2],s=r[3];this.outputShape=[a,t,e,s];var u=[n&&t>1?o-1:o,n&&e>1?i-1:i],c=[n&&t>1?t-1:t,n&&e>1?e-1:e];this.userCode=`
      const vec2 effectiveInputOverOutputRatioRC = vec2(
          `+u[0]/c[0]+`,
          `+u[1]/c[1]+`);
      const vec2 inputShapeRC = vec2(`+o+".0, "+i+`.0);

      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int d = coords[3];
        ivec2 yRC = coords.yz;

        // Fractional source index.
        vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;

        // Compute the four integer indices.
        ivec2 sourceFloorRC = ivec2(sourceFracIndexRC);
        ivec2 sourceCeilRC = ivec2(
          min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));

        float topLeft = getA(b, sourceFloorRC.x, sourceFloorRC.y, d);
        float bottomLeft = getA(b, sourceCeilRC.x, sourceFloorRC.y, d);
        float topRight = getA(b, sourceFloorRC.x, sourceCeilRC.y, d);
        float bottomRight = getA(b, sourceCeilRC.x, sourceCeilRC.y, d);

        vec2 fracRC = sourceFracIndexRC - vec2(sourceFloorRC);

        float top = topLeft + (topRight - topLeft) * fracRC.y;
        float bottom = bottomLeft + (bottomRight - bottomLeft) * fracRC.y;
        float newValue = top + (bottom - top) * fracRC.x;

        setOutput(newValue);
      }
    `},Cm=function(r,t,e,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];var a=r[0],o=r[1],i=r[2],s=r[3];this.outputShape=[a,t,e,s];var u=[n&&t>1?o-1:o,n&&e>1?i-1:i],c=[n&&t>1?t-1:t,n&&e>1?e-1:e];this.userCode=`
      const vec3 effectiveInputOverOutputRatioRC = vec3(
          `+u[0]/c[0]+`,
          `+u[1]/c[1]+`,
          `+u[1]/c[1]+`);
      const vec3 inputShapeRC = vec3(`+o+".0, "+i+`.0,
                                     `+i+`.0);

      float getAValue(int b, int r, int c, int d) {
        return getChannel(getA(b, r, c, d), vec2(c, d));
      }

      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int d = coords[3];
        // Calculate values for next column in yRC.z.
        ivec3 yRC = coords.yzz + ivec3(0, 0, 1);

        // Fractional source index.
        vec3 sourceFracIndexRC = vec3(yRC) * effectiveInputOverOutputRatioRC;

        // Compute the four integer indices.
        ivec3 sourceFloorRC = ivec3(sourceFracIndexRC);
        ivec3 sourceCeilRC = ivec3(
          min(inputShapeRC - 1.0, ceil(sourceFracIndexRC)));

        // Should we calculate next column and row elements in 2x2 packed cell.
        bool hasNextCol = d < `+(s-1)+`;
        bool hasNextRow = coords.z < `+(e-1)+`;

        // In parallel, construct four corners for all four components in
        // packed 2x2 cell.
        vec4 topLeft = vec4(
          getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d),
          hasNextCol ? getAValue(b, sourceFloorRC.x, sourceFloorRC.y, d + 1)
                     : 0.0,
          hasNextRow ? getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d)
                     : 0.0,
          (hasNextRow && hasNextCol) ?
            getAValue(b, sourceFloorRC.x, sourceFloorRC.z, d + 1) : 0.0);

        vec4 bottomLeft = vec4(
          getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d),
          hasNextCol ? getAValue(b, sourceCeilRC.x, sourceFloorRC.y, d + 1)
                     : 0.0,
          hasNextRow ? getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d)
                     : 0.0,
          (hasNextRow && hasNextCol) ?
            getAValue(b, sourceCeilRC.x, sourceFloorRC.z, d + 1) : 0.0);

        vec4 topRight = vec4(
          getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d),
          hasNextCol ? getAValue(b, sourceFloorRC.x, sourceCeilRC.y, d + 1)
                     : 0.0,
          hasNextRow ? getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d)
                     : 0.0,
          (hasNextRow && hasNextCol) ?
            getAValue(b, sourceFloorRC.x, sourceCeilRC.z, d + 1) : 0.0);

        vec4 bottomRight = vec4(
          getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d),
          hasNextCol ? getAValue(b, sourceCeilRC.x, sourceCeilRC.y, d + 1)
                     : 0.0,
          hasNextRow ? getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d)
                     : 0.0,
          (hasNextRow && hasNextCol) ?
            getAValue(b, sourceCeilRC.x, sourceCeilRC.z, d + 1) : 0.0);

        vec3 fracRC = sourceFracIndexRC - vec3(sourceFloorRC);

        vec4 top = mix(topLeft, topRight, fracRC.yyzz);
        vec4 bottom = mix(bottomLeft, bottomRight, fracRC.yyzz);
        vec4 newValue = mix(top, bottom, fracRC.x);

        setOutput(newValue);
      }
    `},Em=function(r,t,e){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t.shape;var n=t.shape,a=n[1],o=n[2],i=r.shape,s=i[1],u=i[2],c=[e&&s>1?a-1:a,e&&u>1?o-1:o],l=[e&&s>1?s-1:s,e&&u>1?u-1:u],d=c[0]/l[0],h=c[1]/l[1],f=1/d,p=1/h,v=2*Math.ceil(f)+2,m=2*Math.ceil(p)+2;this.userCode=`
      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int d = coords[3];
        int r = coords[1];
        int c = coords[2];

        float accumulator = 0.0;

        const float heightScale = float(`+d+`);
        const float widthScale = float(`+h+`);

        const float invHeightScale = float(`+f+`);
        const float invWidthScale = float(`+p+`);

        const int winHeight = int(`+v+`);
        const int winWidth = int(`+m+`);

        // Compute bounds for where in dy we will look
        float startRLerp = floor(float(r) * invHeightScale);
        int startDyR = int(floor(startRLerp - float(winHeight / 2)));

        float startCLerp = floor(float(c) * invWidthScale);
        int startDyC = int(floor(startCLerp - float(winWidth / 2)));

        // Loop over dy
        for (int dyROffset = 0; dyROffset < winHeight; dyROffset++) {
          int dyR = dyROffset + startDyR;

          // Guard against the window exceeding the bounds of dy
          if (dyR < 0 || dyR >= `+s+`) {
            continue;
          }

          for (int dyCOffset = 0; dyCOffset < winWidth; dyCOffset++) {
            int dyC = dyCOffset + startDyC;

            // Guard against the window exceeding the bounds of dy
            if (dyC < 0 || dyC >= `+u+`) {
              continue;
            }

            float sourceFracRow =
              float(`+c[0]+`) *
                (float(dyR) / float(`+l[0]+`));

            float sourceFracCol =
                float(`+c[1]+`) *
                  (float(dyC) / float(`+l[1]+`));

            int sourceNearestRow = int(min(
                float(int(`+a+`) - 1),
                `+e+` ? float(round(sourceFracRow)) :
                                  float(floor(sourceFracRow))));

            int sourceNearestCol = int(min(
                float(int(`+o+`) - 1),
                `+e+` ? float(round(sourceFracCol)) :
                                  float(floor(sourceFracCol))));

            if (r == sourceNearestRow && c == sourceNearestCol) {
              accumulator += getDy(b, dyR, dyC, d);
            }
          }
        }
        // End loop over dy

        setOutput(accumulator);
      }
    `},Rm=function(r,t,e,n){this.variableNames=["A"],this.outputShape=[];var a=r[0],o=r[1],i=r[2],s=r[3];this.outputShape=[a,t,e,s];var u=[n&&t>1?o-1:o,n&&e>1?i-1:i],c=[n&&t>1?t-1:t,n&&e>1?e-1:e],l=n?"0.5":"0.0";this.userCode=`
      const vec2 effectiveInputOverOutputRatioRC = vec2(
          `+u[0]/c[0]+`,
          `+u[1]/c[1]+`);
      const vec2 inputShapeRC = vec2(`+o+".0, "+i+`.0);

      void main() {
        ivec4 coords = getOutputCoords();
        int b = coords[0];
        int d = coords[3];
        ivec2 yRC = coords.yz;

        // Fractional source index.
        vec2 sourceFracIndexRC = vec2(yRC) * effectiveInputOverOutputRatioRC;

        // Compute the coordinators of nearest neighbor point.
        ivec2 sourceNearestRC = ivec2(
          min(inputShapeRC - 1.0, floor(sourceFracIndexRC + `+l+`)));

        float newValue = getA(b, sourceNearestRC.x, sourceNearestRC.y, d);

        setOutput(newValue);
      }
    `},km=function(r,t){this.variableNames=["x"];var e=r.length;if(e>4)throw new Error("WebGL backend: Reverse of rank-"+e+" tensor is not yet supported");if(this.outputShape=r,e!==1){var n=r.map(function(o,i){return function(s){return t.indexOf(s)!==-1&&r[s]!==1?r[s]+" - coords["+s+"] - 1":"coords["+s+"]"}(i)}).join(","),a=Fe(e);this.userCode=`
      void main() {
        `+a+` coords = getOutputCoords();
        setOutput(getX(`+n+`));
      }
    `}else this.userCode=`
        void main() {
          int coord = getOutputCoords();
          setOutput(getX(`+r[0]+` - coord - 1));
        }
      `},Im=function(r,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;var e=r.length;if(e>4)throw new Error("WebGL backend: Reverse of rank-"+e+" tensor is not yet supported");this.outputShape=r;var n=ft("rc",e),a=n[e-1]+" + 1 < "+this.outputShape[e-1],o=n[e-2]+" + 1 < "+this.outputShape[e-2],i=Fe(e);function s(u){var c=r.map(function(l,d){return function(h,f){return t.indexOf(h)!==-1&&r[h]!==1?r[h]+" - "+f[h]+" - 1":""+f[h]}(d,u)});return"getChannel(getX("+c.join(",")+"), vec2("+c.slice(-2).join(",")+"))"}this.userCode=e===1?`
        void main(){
          int rc = getOutputCoords();
          vec4 result = vec4(0.);
          result.r = getChannel(getX(`+r[0]+` - rc - 1),
            `+r[0]+` - rc - 1);
          if(`+a+`){
              result.g = getChannel(getX(`+r[0]+` - (rc  + 1) - 1),
                `+r[0]+` - (rc  + 1) - 1);
          }
          setOutput(result);
        }
      `:`
        void main() {
          `+i+` rc = getOutputCoords();
          vec4 result = vec4(0.);
          result.r = `+function(u){return s(u)}(n.slice())+`;
          if(`+a+`){
            result.g = `+function(u){return u[e-1]="("+u[e-1]+" + 1)",s(u)}(n.slice())+`;
          }
          if(`+o+`) {
            result.b = `+function(u){return u[e-2]="("+u[e-2]+" + 1)",s(u)}(n.slice())+`;
            if(`+a+`) {
              result.a = `+function(u){return u[e-1]="("+u[e-1]+" + 1)",u[e-2]="("+u[e-2]+" + 1)",s(u)}(n.slice())+`;
            }
          }
          setOutput(result);
        }
    `},As=function(r,t,e,n,a,o,i){this.variableNames=["updates","indices","defaultValue"],this.outputShape=o;var s=Fe(a.length),u=Fe(o.length),c="";e===1?c="i":e===2&&(c="i, j");var l="getIndices("+c+")",d="";n===1?d="i":n===2&&(d="i, coords[1]");var h="getUpdates("+d+")",f=t>1?"strides[j]":"strides";this.userCode=`
        `+s+" strides = "+s+"("+a+`);

        void main() {
          `+u+` coords = getOutputCoords();
          float sum = 0.0;
          bool found = false;
          for (int i = 0; i < `+r+`; i++) {
            int flattenedIndex = 0;
            for (int j = 0; j < `+t+`; j++) {
              int index = round(`+l+`);
              flattenedIndex += index * `+f+`;
            }
            if (flattenedIndex == coords[0]) {
              sum += `+h+`;
              found = true;
            }
          }
          setOutput(mix(getDefaultValue(), sum, float(found)));
        }
      `},Sm=function(r,t){this.variableNames=["x","segmentIds"];var e=r.windowSize,n=r.batchSize,a=r.inSize,o=r.numSegments,i=o*Math.ceil(a/e);this.outputShape=[n,i];var s=4*Math.floor(e/4),u=e%4,c=`
        sumValue += dot(values, segFilter);
    `,l="";a%e>0&&(l=`
        if (inIdx < 0 || inIdx >= `+a+`) {
          return initializationValue;
        }
      `);var d="";a%e>0&&(d=`
        if (inIdx < 0 || inIdx >= `+a+`) {
          return -1.0;
        }
      `),this.userCode=`
      const float initializationValue = 0.0;

      float getValue(int batch, int inIdx) {
        `+l+`
        return getX(batch, inIdx);
      }

      float getSegmentIdAtIndex(int inIdx) {
        `+d+`
        return getSegmentIds(inIdx);
      }

      void main() {
        ivec2 coords = getOutputCoords();
        int batch = coords[0];
        int outIdx = coords[1];
        int inOffset = int(floor(float(outIdx) / float(
          `+o+")) * float("+e+`));
        int currentSeg = int(mod(float(outIdx), float(`+o+`)));

        float sumValue = 0.0;

        for (int i = 0; i < `+s+`; i += 4) {
          int inIdx = inOffset + i;
          vec4 values = vec4(
            getValue(batch, inIdx),
            getValue(batch, inIdx + 1),
            getValue(batch, inIdx + 2),
            getValue(batch, inIdx + 3)
          );

          vec4 segFilter = vec4(
            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,
            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,
            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,
            int(getSegmentIdAtIndex(inIdx + 3)) == currentSeg ? 1 : 0
          );

          `+c+`
        }

        int inIdx = inOffset + `+s+`;
        if (`+(u===1)+`) {
          vec4 values = vec4(
            getValue(batch, inIdx),
            initializationValue,
            initializationValue,
            initializationValue
          );

          int inIdxSeg = int(getSegmentIdAtIndex(inIdx));

          vec4 segFilter = vec4(
            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,
            0,
            0,
            0
          );

          `+c+`
        } else if (`+(u===2)+`) {
          vec4 values = vec4(
            getValue(batch, inIdx),
            getValue(batch, inIdx + 1),
            initializationValue,
            initializationValue
          );

          vec4 segFilter = vec4(
            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,
            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,
              0,
              0
          );

          `+c+`
        } else if (`+(u===3)+`) {
          vec4 values = vec4(
            getValue(batch, inIdx),
            getValue(batch, inIdx + 1),
            getValue(batch, inIdx + 2),
            initializationValue
          );

          vec4 segFilter = vec4(
            int(getSegmentIdAtIndex(inIdx)) == currentSeg ? 1 : 0,
            int(getSegmentIdAtIndex(inIdx + 1)) == currentSeg ? 1 : 0,
            int(getSegmentIdAtIndex(inIdx + 2)) == currentSeg ? 1 : 0,
            0
          );

          `+c+`
        }
        setOutput(sumValue);
      }
    `},Am=function(r,t,e){var n,a;if(this.variableNames=["c","a","b"],this.outputShape=t,e>4)throw Error("Where for rank "+e+" is not yet supported");if(e===1)a="resRC",n="resRC";else{for(var o=["resRC.x","resRC.y","resRC.z","resRC.w"],i=[],s=[],u=0;u<t.length;u++)s.push(""+o[u]),u<r&&i.push(""+o[u]);n=i.join(),a=s.join()}var c=Fe(e);this.userCode=`
      void main() {
        `+c+` resRC = getOutputCoords();
        float cVal = getC(`+n+`);
        if (cVal >= 1.0) {
          setOutput(getA(`+a+`));
        } else {
          setOutput(getB(`+a+`));
        }
      }
    `},Dm=function(){function r(t){this.variableNames=["source"],this.outputShape=t,this.rank=t.length;var e,n=Fe(this.rank),a="uniform int start["+this.rank+"];",o=function(i){if(i===1)return"sourceLoc";if(i<=6)return go.slice(0,i).map(function(s){return"sourceLoc."+s}).join(",");throw Error("Slicing for rank "+i+" is not yet supported")}(this.rank);e=`
        `+n+` sourceLoc;
        `+n+` coords = getOutputCoords();
        `+t.map(function(i,s){return"sourceLoc."+go[s]+" = start["+s+"] + coords."+go[s]+";"}).join(`
`)+`
      `,this.userCode=`
      `+a+`
      void main() {
        `+e+`
        setOutput(getSource(`+o+`));
      }
    `}return r.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,a){e.startLoc==null&&(e.startLoc=n.getUniformLocationNoThrow(a,"start"),e.startLoc==null)||n.gl.uniform1iv(e.startLoc,t)}},r}(),go=["x","y","z","w","u","v"],Tm=function(){function r(t){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t,this.rank=t.length;var e=Fe(this.rank),n=ft("coords",this.rank),a=ft("sourceLoc",this.rank),o=this.rank===1?"sourceLoc":"vec2("+a.slice(-2).join()+")",i="getChannel(getSource("+a.join()+"), "+o+")",s=`
      result.x = `+i+`;
      if (++`+n[this.rank-1]+" < "+t[this.rank-1]+`) {
        ++`+a[this.rank-1]+`;
        result.y = `+i+`;
        --`+a[this.rank-1]+`;
      }
    `,u=this.rank===1?"":`
      --`+n[this.rank-1]+`;
      if (++`+n[this.rank-2]+" < "+t[this.rank-2]+`) {
        ++`+a[this.rank-2]+`;
        result.z = `+i+`;
        if (++`+n[this.rank-1]+" < "+t[this.rank-1]+`) {
          ++`+a[this.rank-1]+`;
          result.w = `+i+`;
        }
      }
    `,c=this.rank<=4?`sourceLoc = coords +
            `+e+"("+t.map(function(l,d){return"start["+d+"]"}).join()+");":t.map(function(l,d){return a[d]+" = "+n[d]+" + start["+d+"];"}).join(`
`);this.userCode=`
      uniform int start[`+this.rank+`];
      void main() {
        `+e+` coords = getOutputCoords();
        `+e+` sourceLoc;
        `+c+`
        vec4 result = vec4(0.);
        `+s+`
        `+u+`
        setOutput(result);
      }
    `}return r.prototype.getCustomSetupFunc=function(t){var e=this;if(t.length!==this.rank)throw Error("The rank ("+this.rank+") of the program must match the length of start ("+t.length+")");return function(n,a){e.startLoc==null&&(e.startLoc=n.getUniformLocationNoThrow(a,"start"),e.startLoc==null)||n.gl.uniform1iv(e.startLoc,t)}},r}(),Nm=function(r,t,e){this.variableNames=["x"],this.outputShape=e;var n=e.length,a=Fe(e.length),o=Fe(e.length),i="";if(n===1)i="coords * strides + begin";else{var s=0;i=e.map(function(u,c){return s++,e.length===1?"coords * strides["+c+"] + begin["+c+"]":"coords["+(s-1)+"] * strides["+c+"] + begin["+c+"]"}).join(",")}this.userCode=`
      `+a+" begin = "+a+"("+r+`);
      `+a+" strides = "+a+"("+t+`);

      void main() {
        `+o+` coords = getOutputCoords();
        setOutput(getX(`+i+`));
      }
    `},Fm=function(){function r(t){this.gpgpu=t,this.numUsedTextures=0,this.numFreeTextures=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}return r.prototype.acquireTexture=function(t,e,n){var a,o=Ds(e,n),i=Ts(t,o,n);if(i in this.freeTextures||(this.freeTextures[i]=[]),i in this.usedTextures||(this.usedTextures[i]=[]),this.freeTextures[i].length>0){this.numFreeTextures--,this.numUsedTextures++,this.log();var s=this.freeTextures[i].shift();return this.usedTextures[i].push(s),s}return this.numUsedTextures++,this.log(),o===xt.PACKED_2X2_FLOAT32?a=this.gpgpu.createPackedMatrixTexture(t[0],t[1]):o===xt.PACKED_2X2_FLOAT16?a=this.gpgpu.createFloat16PackedMatrixTexture(t[0],t[1]):o===xt.UNPACKED_FLOAT32?a=this.gpgpu.createFloat32MatrixTexture(t[0],t[1]):o===xt.UNPACKED_FLOAT16?a=this.gpgpu.createFloat16MatrixTexture(t[0],t[1]):o===xt.PACKED_4X1_UNSIGNED_BYTE&&(a=this.gpgpu.createUnsignedBytesMatrixTexture(t[0],t[1])),this.usedTextures[i].push(a),a},r.prototype.releaseTexture=function(t,e,n,a){if(this.freeTextures!=null){var o=Ts(e,Ds(n,a),a);o in this.freeTextures||(this.freeTextures[o]=[]),this.freeTextures[o].push(t),this.numFreeTextures++,this.numUsedTextures--;var i=this.usedTextures[o],s=i.indexOf(t);if(s<0)throw new Error("Cannot release a texture that was never provided by this texture manager");i.splice(s,1),this.log()}},r.prototype.log=function(){if(this.logEnabled){var t=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",this.numFreeTextures+" / "+this.numUsedTextures,"("+t+")")}},r.prototype.getNumUsedTextures=function(){return this.numUsedTextures},r.prototype.getNumFreeTextures=function(){return this.numFreeTextures},r.prototype.dispose=function(){var t=this;if(this.freeTextures!=null){for(var e in this.freeTextures)this.freeTextures[e].forEach(function(n){t.gpgpu.deleteMatrixTexture(n)});for(var e in this.usedTextures)this.usedTextures[e].forEach(function(a){t.gpgpu.deleteMatrixTexture(a)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0}},r}();function Ds(r,t){if(r===bt.UPLOAD)return xt.PACKED_2X2_FLOAT32;if(r===bt.RENDER||r==null)return function(e){return z().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?xt.PACKED_2X2_FLOAT32:xt.UNPACKED_FLOAT32:e?xt.PACKED_2X2_FLOAT16:xt.UNPACKED_FLOAT16}(t);if(r===bt.DOWNLOAD||r===bt.PIXELS)return xt.PACKED_4X1_UNSIGNED_BYTE;throw new Error("Unknown logical texture type "+r)}function Ts(r,t,e){return r[0]+"_"+r[1]+"_"+t+"_"+e}var Pm=function(r,t){this.variableNames=["A"];for(var e=new Array(r.length),n=0;n<e.length;n++)e[n]=r[n]*t[n];this.outputShape=e,this.rank=e.length;var a=Fe(this.rank),o=function(i){var s=i.length;if(s>5)throw Error("Tile for rank "+s+" is not yet supported");if(s===1)return"imod(resRC, "+i[0]+")";for(var u=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],c=[],l=0;l<i.length;l++)c.push("imod("+u[l]+", "+i[l]+")");return c.join()}(r);this.userCode=`
      void main() {
        `+a+` resRC = getOutputCoords();
        setOutput(getA(`+o+`));
      }
    `},Mm=function(r,t){this.variableNames=["A"];for(var e=new Array(r.length),n=0;n<e.length;n++)e[n]=r[t[n]];this.outputShape=e,this.rank=e.length;var a=Fe(this.rank),o=function(i){var s=i.length;if(s>6)throw Error("Transpose for rank "+s+" is not yet supported");for(var u=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],c=new Array(s),l=0;l<i.length;l++)c[i[l]]=u[l];return c.join()}(t);this.userCode=`
    void main() {
      `+a+` resRC = getOutputCoords();
      setOutput(getA(`+o+`));
    }
    `},Om=function(r,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0;for(var e=new Array(r.length),n=0;n<e.length;n++)e[n]=r[t[n]];if(this.outputShape=e,this.rank=e.length,this.rank>6)throw Error("Packed transpose for rank "+this.rank+" is not yet supported.");var a=Fe(this.rank),o=Zu("rc",this.rank),i=new Array(this.rank);for(n=0;n<t.length;n++)i[t[n]]=o[n];var s="vec2("+i.slice(-2).join()+")",u="++"+o[this.rank-1]+" < "+e[this.rank-1],c="getChannel(getA("+i.join()+"), "+s+")";this.userCode=`
    void main() {
      `+a+` rc = getOutputCoords();
      vec4 result = vec4(0.);
      result[0] = `+c+`;
      if(`+u+`) {
        result[1] = `+c+`;
      }
      --`+o[this.rank-1]+`;
      if(++`+o[this.rank-2]+" < "+e[this.rank-2]+`) {
        result[2] = `+c+`;
        if(`+u+`) {
          result[3] = `+c+`;
        }
      }
      setOutput(result);
    }
    `},vi=1.7580993408473768,mi=1.0507009873554805,me=function(r,t){this.variableNames=["A"],this.outputShape=r,this.userCode=`
      float unaryOperation(float x) {
        `+t+`
      }

      void main() {
        float x = getAAtOutCoords();
        float y = unaryOperation(x);

        setOutput(y);
      }
    `},Ot="if (isnan(x)) return x;",Bm="return x;",Ns="return abs(x);",ac=Ot+`
  return (x < 0.0) ? 0.0 : x;
`,oc=Ot+`
  return (x < 0.0) ? 0.0 : min(6.0, x);
`,ic="return (x >= 0.0) ? x : (exp(x) - 1.0);",Lm=`
  // Stable and Attracting Fixed Point (0, 1) for Normalized Weights.
  // see: https://arxiv.org/abs/1706.02515
  float scaleAlpha = `+vi+`;
  float scale = `+mi+`;
  return (x >= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0);
`,Fs="return -x;",Ps="return ceil(x);",Ms="return floor(x);",Os="return exp(x);",Bs="return exp(x) - 1.0;",Wm=Ot+`
  return sin(x);
`,Vm=Ot+`
  return cos(x);
`,zm=Ot+`
  if (abs(x) > 1.) {
    return NAN;
  }
  return asin(x);
`,Um=Ot+`
  if (abs(x) > 1.) {
    return NAN;
  }
  return acos(x);
`,Gm=Ot+`
  return atan(x);
`,Hm=Ot+"return log(x + sqrt(x * x + 1.0));",$m=Ot+`
  if (x < 1.0) return NAN;
  return log(x + sqrt(x * x - 1.0));`,jm=Ot+`
  if ((x < -1.0) || (x > 1.0)) return NAN;
  return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,Jr="return x;",qm="return x;",sc=`
  vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0)));
  bvec4 isNaN = isnan(x);

  result.r = isNaN.r ? x.r : result.r;
  result.g = isNaN.g ? x.g : result.g;
  result.b = isNaN.b ? x.b : result.b;
  result.a = isNaN.a ? x.a : result.a;

  return result;
`,uc=`
  vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0)));
  bvec4 isNaN = isnan(x);

  result.r = isNaN.r ? x.r : result.r;
  result.g = isNaN.g ? x.g : result.g;
  result.b = isNaN.b ? x.b : result.b;
  result.a = isNaN.a ? x.a : result.a;

  return result;
`,cc=`
  vec4 result;

  result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0);
  result.g = (x.g >= 0.0) ? x.g : (exp(x.g) - 1.0);
  result.b = (x.b >= 0.0) ? x.b : (exp(x.b) - 1.0);
  result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0);

  return result;
`,wr=function(r,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=r,this.userCode=`
      vec4 unaryOperation(vec4 x) {
        `+t+`
      }

      void main() {
        vec4 x = getAAtOutCoords();
        vec4 y = unaryOperation(x);

        setOutput(y);
      }
    `},Km=function(r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=r;var t=r.length,e=ft("rc",t),n=Fe(t),a=function(s,u){if(s===1)return"rc";for(var c="",l=0;l<s;l++)c+=u[l],l<s-1&&(c+=",");return c}(t,e),o=e.slice(-2),i=t<=1?"rc":"vec2("+o.join(",")+")";this.userCode=`
      void main() {
        `+n+` rc = getOutputCoords();
        vec4 packedInput = getA(`+a+`);

        setOutput(getChannel(packedInput, `+i+`));
      }
    `},Qr={};function Zr(r,t){if(t===void 0&&(t=!1),r==="linear")return t?qm:Bm;if(r==="relu")return t?sc:ac;if(r==="elu")return t?cc:ic;if(r==="relu6")return t?uc:oc;if(r==="prelu")return t?rc:nc;throw new Error("Activation "+r+" has not been implemented for the WebGL backend.")}var Xm=600,Ym=function(r){function t(e){var n,a=r.call(this)||this;if(a.pendingRead=new WeakMap,a.pendingDisposal=new WeakSet,a.dataRefCount=new WeakMap,a.numBytesInGPU=0,a.uploadWaitMs=0,a.downloadWaitMs=0,a.warnedAboutMemory=!1,a.pendingDeletes=0,a.disposed=!1,!z().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){var o=Yt(z().getNumber("WEBGL_VERSION"));a.binaryCache=((n=z().getNumber("WEBGL_VERSION"))in Qr||(Qr[n]={}),Qr[n]),a.gpgpu=new sm(o),a.canvas=o.canvas,a.gpgpuCreatedLocally=!0}else a.gpgpu=e,a.binaryCache={},a.gpgpuCreatedLocally=!1,a.canvas=e.gl.canvas;return a.textureManager=new Fm(a.gpgpu),a.numMBBeforeWarning=z().global.screen==null?1024:z().global.screen.height*z().global.screen.width*window.devicePixelRatio*Xm/1024/1024,a.texData=new Hu(a,T),a}return Mt(t,r),t.prototype.numDataIds=function(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes},t.prototype.write=function(e,n,a){if(z().getBool("DEBUG")&&this.checkNumericalProblems(e),a==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");var o={};return this.texData.set(o,{shape:n,dtype:a,values:e,usage:bt.UPLOAD}),o},t.prototype.move=function(e,n,a,o){if(z().getBool("DEBUG")&&this.checkNumericalProblems(n),o==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:a,dtype:o,values:n,usage:bt.UPLOAD})},t.prototype.readSync=function(e){var n=this.texData.get(e),a=n.values,o=n.dtype,i=n.complexTensors,s=n.slice,u=n.shape,c=n.isPacked;if(s!=null){var l=void 0;l=c?new wr(u,Jr):new me(u,Jr);var d=this.runWebGLProgram(l,[{dataId:e,shape:u,dtype:o}],o),h=this.readSync(d.dataId);return this.disposeData(d.dataId),h}if(a!=null)return this.convertAndCacheOnCPU(e);if(o==="string")return a;var f,p,v=this.activeTimers!=null;return v&&(f=Ut()),o==="complex64"?p=Go(i.real.dataSync(),i.imag.dataSync()):p=this.getValuesFromTexture(e),v&&(this.downloadWaitMs+=Ut()-f),this.convertAndCacheOnCPU(e,p)},t.prototype.read=function(e){return ne(this,void 0,void 0,function(){var n,a,o,i,s,u,c,l,d,h,f,p,v,m,g,x,b,_,y,w,S,I;return re(this,function(k){switch(k.label){case 0:if(this.pendingRead.has(e))return n=this.pendingRead.get(e),[2,new Promise(function(R){return n.push(R)})];if(a=this.texData.get(e),o=a.values,i=a.shape,s=a.slice,u=a.dtype,c=a.complexTensors,l=a.isPacked,s!=null)return d=void 0,d=l?new wr(i,Jr):new me(i,Jr),h=this.runWebGLProgram(d,[{dataId:e,shape:i,dtype:u}],u),f=this.read(h.dataId),this.disposeData(h.dataId),[2,f];if(o!=null)return[2,this.convertAndCacheOnCPU(e)];if(!z().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&z().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");return p=null,u!=="complex64"&&z().get("WEBGL_BUFFER_SUPPORTED")&&(v=this.decode(e),m=this.texData.get(v.dataId),p=(I=this.gpgpu).createBufferFromTexture.apply(I,[m.texture].concat(Cr(i)))),this.pendingRead.set(e,[]),u==="complex64"?[3,2]:[4,this.gpgpu.createAndWaitForFence()];case 1:k.sent(),k.label=2;case 2:return u!=="complex64"?[3,4]:[4,Promise.all([c.real.data(),c.imag.data()])];case 3:return x=k.sent(),b=x[0],_=x[1],g=Go(b,_),[3,5];case 4:p==null?g=this.getValuesFromTexture(e):(y=ae(i),g=this.gpgpu.downloadFloat32MatrixFromBuffer(p,y)),k.label=5;case 5:return v!=null&&this.disposeData(v.dataId),w=this.convertAndCacheOnCPU(e,g),S=this.pendingRead.get(e),this.pendingRead.delete(e),S.forEach(function(R){return R(w)}),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e),this.pendingDeletes--),[2,w]}})})},t.prototype.checkNumericalProblems=function(e){if(e!=null)for(var n=0;n<e.length;n++){var a=e[n];if(!Lf(a))throw z().getBool("WEBGL_RENDER_FLOAT32_CAPABLE")?Error("The value "+a+" cannot be represented with your current settings. Consider enabling float32 rendering: 'tf.env().set('WEBGL_RENDER_FLOAT32_ENABLED', true);'"):Error("The value "+a+" cannot be represented on this device.")}},t.prototype.getValuesFromTexture=function(e){var n,a=this.texData.get(e),o=a.shape,i=a.dtype,s=a.isPacked,u=ae(o);if(z().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")){var c=this.decode(e),l=this.texData.get(c.dataId),d=(n=this.gpgpu).downloadMatrixFromPackedTexture.apply(n,[l.texture].concat(Cr(o))).subarray(0,u);return this.disposeData(c.dataId),d}var h=z().getBool("WEBGL_PACK")&&s===!0,f=h?co(o):o,p=h?new Bv(f):new Ov(f),v=this.runWebGLProgram(p,[{shape:f,dtype:i,dataId:e}],"float32"),m=this.texData.get(v.dataId),g=this.gpgpu.downloadByteEncodedFloatMatrixFromOutputTexture(m.texture,m.texShape[0],m.texShape[1]).subarray(0,u);return this.disposeData(v.dataId),g},t.prototype.time=function(e){return ne(this,void 0,void 0,function(){var n,a,o,i,s,u,c;return re(this,function(l){switch(l.label){case 0:return n=this.activeTimers,a=[],o=!1,this.programTimersStack==null?(this.programTimersStack=a,o=!0):this.activeTimers.push(a),this.activeTimers=a,e(),i=lr(this.activeTimers.map(function(d){return d.query})).filter(function(d){return d!=null}),s=lr(this.activeTimers.map(function(d){return d.name})).filter(function(d){return d!=null}),this.activeTimers=n,o&&(this.programTimersStack=null),u={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null},z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[4,Promise.all(i)]:[3,2];case 1:return c=l.sent(),u.kernelMs=_f(c),u.getExtraProfileInfo=function(){return c.map(function(d,h){return{name:s[h],ms:d}}).map(function(d){return d.name+": "+d.ms}).join(", ")},[3,3];case 2:u.kernelMs={error:"WebGL query timers are not supported in this environment."},l.label=3;case 3:return this.uploadWaitMs=0,this.downloadWaitMs=0,[2,u]}})})},t.prototype.memory=function(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU}},t.prototype.startTimer=function(){return z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:Ut(),endMs:null}},t.prototype.endTimer=function(e){return z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=Ut(),e)},t.prototype.getQueryTime=function(e){return ne(this,void 0,void 0,function(){var n;return re(this,function(a){return z().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?[2,this.gpgpu.waitForQueryAndGetTime(e)]:[2,(n=e).endMs-n.startMs]})})},t.prototype.disposeData=function(e){if(!this.pendingDisposal.has(e)){if(this.pendingRead.has(e))return this.pendingDisposal.add(e),void this.pendingDeletes++;if(this.texData.has(e)){this.releaseGPUData(e);var n=this.texData.get(e).complexTensors;n!=null&&(n.real.dispose(),n.imag.dispose()),this.texData.delete(e)}}},t.prototype.releaseGPUData=function(e){var n=this.texData.get(e),a=n.texture,o=n.dtype,i=n.texShape,s=n.usage,u=n.isPacked,c=n.slice,l=c&&c.origDataId||e,d=this.dataRefCount.get(l);d>1?this.dataRefCount.set(l,d-1):(this.dataRefCount.delete(l),a!=null&&(this.numBytesInGPU-=this.computeBytes(i,o),this.textureManager.releaseTexture(a,i,s,u)));var h=this.texData.get(e);h.texture=null,h.texShape=null,h.isPacked=!1,h.slice=null},t.prototype.getTexture=function(e){return this.uploadToGPU(e),this.texData.get(e).texture},t.prototype.getDataInfo=function(e){return this.texData.get(e)},t.prototype.getCPUBackend=function(){return z().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=T.findBackend("cpu")),this.cpuBackend):null},t.prototype.shouldExecuteOnCPU=function(e,n){var a=this;return n===void 0&&(n=128),this.getCPUBackend()!=null&&e.every(function(o){return a.texData.get(o.dataId).texture==null&&o.size<n})},t.prototype.getGPGPUContext=function(){return this.gpgpu},t.prototype.complex=function(e,n){var a=this.makeOutput(e.shape,"complex64");return this.texData.get(a.dataId).complexTensors={real:T.keep(e.clone()),imag:T.keep(n.clone())},a},t.prototype.real=function(e){return this.texData.get(e.dataId).complexTensors.real.clone()},t.prototype.imag=function(e){return this.texData.get(e.dataId).complexTensors.imag.clone()},t.prototype.slice=function(e,n,a){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.slice(e,n,a);if(ae(a)===0)return rt([],a,e.dtype);var o=this.texData.get(e.dataId).isPacked,i=Uu(e.shape,n,a);if(o||!i){var s=z().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Tm(a):new Dm(a),u=s.getCustomSetupFunc(n);return this.compileAndRun(s,[e],null,u)}return this.uploadToGPU(e.dataId),this.shallowSlice(e,n,a)},t.prototype.shallowSlice=function(e,n,a){var o=this.texData.get(e.dataId),i=this.makeOutput(a,e.dtype),s=this.texData.get(i.dataId);Object.assign(s,o),s.shape=a,s.dtype=e.dtype;var u=Gu(n,e.strides);o.slice&&(u+=o.slice.flatOffset),s.slice={flatOffset:u,origDataId:o.slice&&o.slice.origDataId||e.dataId};var c=this.dataRefCount.get(s.slice.origDataId)||1;return this.dataRefCount.set(s.slice.origDataId,c+1),i},t.prototype.stridedSlice=function(e,n,a,o){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.stridedSlice(e,n,a,o);var i=ci(n,a,o);if(i.some(function(u){return u===0}))return rt([],i);var s=new Nm(n,o,i);return this.compileAndRun(s,[e])},t.prototype.reverse=function(e,n){var a=z().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Im(e.shape,n):new km(e.shape,n);return this.compileAndRun(a,[e])},t.prototype.concat=function(e,n){if(e[0].dtype==="complex64"){var a=e.map(function(f){return Rt(f)}),o=e.map(function(f){return Ht(f)});return tt(this.concat(a,n),this.concat(o,n))}if(this.shouldExecuteOnCPU(e))return this.cpuBackend.concat(e,n);if(e.length===1)return e[0];if(e.length>z().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){var i=Math.floor(e.length/2),s=this.concat(e.slice(0,i),n),u=this.concat(e.slice(i),n);return this.concat([s,u],n)}if(z().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].rank>1){var c=new wv(e.map(function(f){return f.shape}),n);return this.compileAndRun(c,e)}var l=hr(e.map(function(f){return f.shape}),n),d=e.map(function(f){return f.as2D(-1,ae(f.shape.slice(n)))}),h=new yv(d.map(function(f){return f.shape}));return this.compileAndRun(h,d).reshape(l)},t.prototype.neg=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.neg(e);if(z().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Fs,e.dtype);var n=new me(e.shape,Fs);return this.compileAndRun(n,[e])},t.prototype.batchMatMul=function(e,n,a,o){var i=a?e.shape[2]:e.shape[1],s=o?n.shape[1]:n.shape[2],u=a?e.shape[1]:e.shape[2],c=e.shape[0];if((i===1||s===1)&&u>1e3){a&&(e=e.transpose([0,2,1])),o&&(n=n.transpose([0,2,1]));var l=s===1?e:e.as3D(c,u,1),d=s===1?2:1,h=s===1?n.as3D(c,1,u):n;return this.multiply(l,h).sum(d,!0)}var f=nt(e.dtype,n.dtype),p=new po(e.shape,[c,i,s],a,o);return this.compileAndRun(p,[e,n],f)},t.prototype.fusedBatchMatMul=function(e){var n=e.a,a=e.b,o=e.transposeA,i=e.transposeB,s=e.bias,u=e.activation,c=e.preluActivationWeights,l=o?n.shape[2]:n.shape[1],d=i?a.shape[1]:a.shape[2],h=n.shape[0],f=nt(n.dtype,a.dtype),p=s!=null,v=c!=null,m=u?Zr(u,!0):null,g=new po(n.shape,[h,l,d],o,i,p,m,v),x=[n,a];return s&&x.push(s),c&&x.push(c),this.compileAndRun(g,x,f)},t.prototype.multiply=function(e,n){if(e.dtype==="complex64"){var a=this.texData.get(e.dataId),o=this.texData.get(n.dataId),i=new ys(mv,e.shape,n.shape),s=new ys(gv,e.shape,n.shape),u=[this.makeComplexComponentTensorInfo(e,a.complexTensors.real),this.makeComplexComponentTensorInfo(e,a.complexTensors.imag),this.makeComplexComponentTensorInfo(n,o.complexTensors.real),this.makeComplexComponentTensorInfo(n,o.complexTensors.imag)],c=this.compileAndRun(i,u),l=this.compileAndRun(s,u),d=this.complex(c,l);return c.dispose(),l.dispose(),d}if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.multiply(e,n);if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,ws,e.dtype);var h=new Ve(ws,e.shape,n.shape);return this.compileAndRun(h,[e,n],e.dtype)},t.prototype.batchNormalization=function(e,n,a,o,i,s){var u=[e,n,a],c=null;s!=null&&(c=s.shape,u.push(s));var l=null;if(i!=null&&(l=i.shape,u.push(i)),z().getBool("WEBGL_PACK_NORMALIZATION")){var d=new vv(e.shape,n.shape,a.shape,c,l,o);return this.compileAndRun(d,u)}var h=new pv(e.shape,n.shape,a.shape,c,l,o);return this.compileAndRun(h,u)},t.prototype.localResponseNormalization4D=function(e,n,a,o,i){var s=z().getBool("WEBGL_PACK_NORMALIZATION")?new dm(e.shape,n,a,o,i):new cm(e.shape,n,a,o,i);return this.compileAndRun(s,[e])},t.prototype.LRNGrad=function(e,n,a,o,i,s,u){var c=new lm(n.shape,o,i,s,u);return this.compileAndRun(c,[n,a,e])},t.prototype.tile=function(e,n){if(e.dtype==="string"){var a=this.readSync(e.dataId).map(function(i){return ca(i)});return Ju(pe(e.shape,e.dtype,a),n)}var o=new Pm(e.shape,n);return this.compileAndRun(o,[e])},t.prototype.pad=function(e,n,a){var o=z().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new _m(e.shape,n,a):new gm(e.shape,n,a);return this.compileAndRun(o,[e])},t.prototype.transpose=function(e,n){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.transpose(e,n);var a=z().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Om(e.shape,n):new Mm(e.shape,n);return this.compileAndRun(a,[e])},t.prototype.gather=function(e,n,a){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.gather(e,n,a);var o=new Gv(e.shape,n.size,a);return this.compileAndRun(o,[e,n])},t.prototype.batchToSpaceND=function(e,n,a){E(e.rank<=4,function(){return"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet"});var o=n.reduce(function(d,h){return d*h}),i=va(e.shape,n,o),s=ma(i.length,n.length),u=ga(e.shape,n,o),c=Lu(a,n.length),l=Wu(u,a,n.length);return e.reshape(i).transpose(s).reshape(u).slice(c,l)},t.prototype.spaceToBatchND=function(e,n,a){E(e.rank<=4,function(){return"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet"});var o=n.reduce(function(h,f){return h*f}),i=[[0,0]];i.push.apply(i,a);for(var s=1+n.length;s<e.shape.length;++s)i.push([0,0]);var u=e.pad(i),c=va(u.shape,n,o,!1),l=ma(c.length,n.length,!1),d=ga(u.shape,n,o,!1);return u.reshape(c).transpose(l).reshape(d)},t.prototype.reduce=function(e,n,a){var o=e.shape[0],i=e.shape[1],s=lo(i),u=new xm({windowSize:s,inSize:i,batchSize:o},n),c=this.compileAndRun(u,[e],a);return c.shape[1]===1?c:this.reduce(c,n,a)},t.prototype.argReduce=function(e,n,a){a===void 0&&(a=null);var o=e.shape[0],i=e.shape[1];a!=null&&(o=a.shape[0],i=a.shape[1]);var s=lo(i),u=new ov({windowSize:s,inSize:i,batchSize:o},n,a==null),c=[e];a!=null&&c.push(a);var l=this.compileAndRun(u,c,"int32");return l.shape[1]===1?l:this.argReduce(e,n,l)},t.prototype.argReducePacked=function(e,n,a){a===void 0&&(a=null);var o=a!=null?a.shape:e.shape,i=lo(o[o.length-1]),s=new dv(o,i,n,a==null),u=a==null?[e]:[e,a],c=this.compileAndRun(s,u,"int32");return c.rank===e.rank?this.argReducePacked(e,n,c):c},t.prototype.sum=function(e,n){_t("sum",n,e.rank);var a=at(e.shape,n),o=a[0],i=ae(a[1]),s=e.as2D(-1,i),u=no(e.dtype);return this.reduce(s,"sum",u).reshape(o)},t.prototype.prod=function(e,n){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.prod(e,n);var a=at(e.shape,n),o=a[0],i=ae(a[1]),s=e.as2D(-1,i),u=no(e.dtype);return this.reduce(s,"prod",u).reshape(o)},t.prototype.unsortedSegmentSum=function(e,n,a){var o=0,i=Jt([o],e.rank),s=e;i!=null&&(s=e.transpose(i),o=Qt(1,e.rank)[0]);var u=function(f,p,v){for(var m=[],g=f.length,x=0;x<g;x++)x!==p?m.push(f[x]):m.push(v);return m}(s.shape,o,a),c=ae([s.shape[o]]),l=s.as2D(-1,c),d=no(e.dtype),h=this.segOpCompute(l,"unsortedSegmentSum",n,d,a).reshape(u);return i!=null&&(h=h.transpose(oi(i))),h},t.prototype.segOpCompute=function(e,n,a,o,i){var s=e.shape[0],u=e.shape[1],c=function(h,f){var p,v=!1;for(h<=zu?(p=h,v=!0):p=Po(h,Math.floor(Math.sqrt(h)));!v;)p>f||p===h?v=!0:p=Po(h,p+1);return p}(u,i),l=new Sm({windowSize:c,inSize:u,batchSize:s,numSegments:i}),d=this.compileAndRun(l,[e,a],o);return d.shape[1]===i?d:(a=pa(0,i).tile([u/c]),this.segOpCompute(d,n,a,o,i))},t.prototype.argMinMaxReduce=function(e,n,a){var o=[n];if(_t("arg"+a.charAt(0).toUpperCase()+a.slice(1),o,e.rank),!z().getBool("WEBGL_PACK_REDUCE")||e.rank<=2){var i=at(e.shape,o),s=i[0],u=ae(i[1]),c=e.as2D(-1,u);return this.argReduce(c,a).reshape(s)}return this.argReducePacked(e,a)},t.prototype.argMin=function(e,n){return this.argMinMaxReduce(e,n,"min")},t.prototype.argMax=function(e,n){return this.argMinMaxReduce(e,n,"max")},t.prototype.cumsum=function(e,n,a,o){if(n!==e.rank-1)throw new Error("WebGL cumsum shader expects an inner-most axis="+(e.rank-1)+" but got axis="+n);var i=new Tv(e.shape,a,o);return this.compileAndRun(i,[e])},t.prototype.equal=function(e,n){if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  return vec4(equal(a, b));
`,"bool");var a=new Ve("return float(a == b);",e.shape,n.shape);return this.compileAndRun(a,[e,n],"bool")},t.prototype.notEqual=function(e,n){if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  return vec4(notEqual(a, b));
`,"bool");var a=new Ve("return float(a != b);",e.shape,n.shape);return this.compileAndRun(a,[e,n],"bool")},t.prototype.less=function(e,n){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.less(e,n);if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  return vec4(lessThan(a, b));
`,"bool");var a=new Ve("return float(a < b);",e.shape,n.shape);return this.compileAndRun(a,[e,n],"bool")},t.prototype.lessEqual=function(e,n){if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  return vec4(lessThanEqual(a, b));
`,"bool");var a=new Ve("return float(a <= b);",e.shape,n.shape);return this.compileAndRun(a,[e,n],"bool")},t.prototype.greater=function(e,n){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.greater(e,n);if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  return vec4(greaterThan(a, b));
`,"bool");var a=new Ve("return float(a > b);",e.shape,n.shape);return this.compileAndRun(a,[e,n],"bool")},t.prototype.greaterEqual=function(e,n){if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  return vec4(greaterThanEqual(a, b));
`,"bool");var a=new Ve("return float(a >= b);",e.shape,n.shape);return this.compileAndRun(a,[e,n],"bool")},t.prototype.logicalNot=function(e){var n=new me(e.shape,"return float(!(x >= 1.0));");return this.compileAndRun(n,[e])},t.prototype.logicalAnd=function(e,n){if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  return vec4(
    vec4(greaterThanEqual(a, vec4(1.0))) *
    vec4(greaterThanEqual(b, vec4(1.0))));
`,"bool");var a=new Ve("return float(a >= 1.0 && b >= 1.0);",e.shape,n.shape);return this.compileAndRun(a,[e,n],"bool")},t.prototype.logicalOr=function(e,n){if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  return min(
    vec4(greaterThanEqual(a, vec4(1.0))) +
    vec4(greaterThanEqual(b, vec4(1.0))),
    vec4(1.0));
`,"bool");var a=new Ve("return float(a >= 1.0 || b >= 1.0);",e.shape,n.shape);return this.compileAndRun(a,[e,n],"bool")},t.prototype.select=function(e,n,a){var o=new Am(e.rank,n.shape,n.rank);return this.compileAndRun(o,[e,n,a],nt(n.dtype,a.dtype))},t.prototype.where=function(e){ha("tf.where() in webgl locks the UI thread. Call tf.whereAsync() instead");var n=e.dataSync();return fi(e.shape,n)},t.prototype.topk=function(e,n,a){return Qu(e.dataSync(),e.shape,e.dtype,n)},t.prototype.min=function(e,n){_t("min",n,e.rank);var a=at(e.shape,n),o=a[0],i=ae(a[1]),s=e.as2D(-1,i);return this.reduce(s,"min",s.dtype).reshape(o)},t.prototype.minimum=function(e,n){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.minimum(e,n);var a=z().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new an(`
  vec4 result = vec4(min(a, b));
  vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));
  
  result.r = isNaN.r > 0. ? NAN : result.r;
  result.g = isNaN.g > 0. ? NAN : result.g;
  result.b = isNaN.b > 0. ? NAN : result.b;
  result.a = isNaN.a > 0. ? NAN : result.a;

  return result;
`,e.shape,n.shape):new Ve(`
  if (isnan(a)) return a;
  if (isnan(b)) return b;

  return min(a, b);
`,e.shape,n.shape);return this.compileAndRun(a,[e,n])},t.prototype.mod=function(e,n){var a=z().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new an(`
  vec4 result = mod(a, b);
  vec4 isNaN = vec4(equal(b, vec4(0.0)));
  
  result.r = isNaN.r > 0. ? NAN : result.r;
  result.g = isNaN.g > 0. ? NAN : result.g;
  result.b = isNaN.b > 0. ? NAN : result.b;
  result.a = isNaN.a > 0. ? NAN : result.a;

  return result;
`,e.shape,n.shape):new Ve(`if (b == 0.0) return NAN;
  return mod(a, b);`,e.shape,n.shape);return this.compileAndRun(a,[e,n])},t.prototype.max=function(e,n){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.max(e,n);_t("max",n,e.rank);var a=at(e.shape,n),o=a[0],i=ae(a[1]),s=e.as2D(-1,i);return this.reduce(s,"max",s.dtype).reshape(o)},t.prototype.maximum=function(e,n){if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.maximum(e,n);var a=z().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new an(`
  vec4 result = vec4(max(a, b));
  vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));
  
  result.r = isNaN.r > 0. ? NAN : result.r;
  result.g = isNaN.g > 0. ? NAN : result.g;
  result.b = isNaN.b > 0. ? NAN : result.b;
  result.a = isNaN.a > 0. ? NAN : result.a;

  return result;
`,e.shape,n.shape):new Ve(`
  if (isnan(a)) return a;
  if (isnan(b)) return b;

  return max(a, b);
`,e.shape,n.shape);return this.compileAndRun(a,[e,n])},t.prototype.all=function(e,n){_t("all",n,e.rank);var a=at(e.shape,n),o=a[0],i=ae(a[1]),s=e.as2D(-1,i);return this.reduce(s,"all",s.dtype).reshape(o)},t.prototype.any=function(e,n){_t("any",n,e.rank);var a=at(e.shape,n),o=a[0],i=ae(a[1]),s=e.as2D(-1,i);return this.reduce(s,"any",s.dtype).reshape(o)},t.prototype.realDivide=function(e,n){if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  // vec4 one = vec4(equal(a, b));
  // return one + (vec4(1.0) - one) * a / b;
  vec4 result = a / b;
  if(a.x == b.x) {
    result.x = 1.;
  }
  if(a.y == b.y) {
    result.y = 1.;
  }
  if(a.z == b.z) {
    result.z = 1.;
  }
  if(a.w == b.w) {
    result.w = 1.;
  }

  return result;
`,"float32",!0);var a=new Ve(`
if (a == b) {
  return 1.0;
};
return a / b;`,e.shape,n.shape);return this.compileAndRun(a,[e,n],"float32")},t.prototype.floorDiv=function(e,n){if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,`
  ivec4 ia = round(a);
  ivec4 ib = round(b);
  bvec4 cond = notEqual(ib, ivec4(0));
  ivec4 result = ivec4(0);
  vec4 s = sign(a) * sign(b);

  // Windows (D3D) wants guaranteed non-zero int division at compile-time.
  if (cond[0]) {
    result[0] = idiv(ia[0], ib[0], s[0]);
  }
  if (cond[1]) {
    result[1] = idiv(ia[1], ib[1], s[1]);
  }
  if (cond[2]) {
    result[2] = idiv(ia[2], ib[2], s[2]);
  }
  if (cond[3]) {
    result[3] = idiv(ia[3], ib[3], s[3]);
  }
  return vec4(result);
`,"int32");var a=new Ve(`
  float s = sign(a) * sign(b);
  int ia = round(a);
  int ib = round(b);
  if (ib != 0) {
    // Windows (D3D) wants guaranteed non-zero int division at compile-time.
    return float(idiv(ia, ib, s));
  } else {
    return NAN;
  }
`,e.shape,n.shape);return this.compileAndRun(a,[e,n],"int32")},t.prototype.add=function(e,n){if(e.dtype==="complex64"&&n.dtype==="complex64")return this.complexSeparableBinaryOp(e,n,ho);if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.add(e,n);var a=nt(e.dtype,n.dtype);if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,ho,a);var o=new Ve(ho,e.shape,n.shape);return this.compileAndRun(o,[e,n],a)},t.prototype.packedUnaryOp=function(e,n,a){var o=new wr(e.shape,n);return this.compileAndRun(o,[e],a)},t.prototype.packedBinaryOp=function(e,n,a,o,i){i===void 0&&(i=!1);var s=new an(a,e.shape,n.shape,i);return this.compileAndRun(s,[e,n],o)},t.prototype.complexSeparableBinaryOp=function(e,n,a){var o=this,i=this.texData.get(e.dataId),s=this.texData.get(n.dataId),u=[[i.complexTensors.real,s.complexTensors.real],[i.complexTensors.imag,s.complexTensors.imag]].map(function(h){var f=h[0],p=h[1],v=o.makeComplexComponentTensorInfo(e,f),m=o.makeComplexComponentTensorInfo(n,p),g=new Ve(a,e.shape,n.shape);return o.compileAndRun(g,[v,m],nt(f.dtype,p.dtype))}),c=u[0],l=u[1],d=this.complex(c,l);return c.dispose(),l.dispose(),d},t.prototype.makeComplexComponentTensorInfo=function(e,n){return{dataId:n.dataId,dtype:n.dtype,shape:e.shape}},t.prototype.addN=function(e){if(e.length===1)return e[0];if(e.length>z().get("WEBGL_MAX_TEXTURES_IN_SHADER")){var n=Math.floor(e.length/2),a=this.addN(e.slice(0,n)),o=this.addN(e.slice(n));return this.addN([a,o])}var i=e.map(function(c){return c.dtype}).reduce(function(c,l){return nt(c,l)}),s=e.map(function(c){return c.shape}),u=z().getBool("WEBGL_PACK")?new av(e[0].shape,s):new rv(e[0].shape,s);return this.compileAndRun(u,e,i)},t.prototype.subtract=function(e,n){if(e.dtype==="complex64"&&n.dtype==="complex64")return this.complexSeparableBinaryOp(e,n,fo);if(this.shouldExecuteOnCPU([e,n]))return this.cpuBackend.subtract(e,n);var a=nt(e.dtype,n.dtype);if(z().getBool("WEBGL_PACK_BINARY_OPERATIONS"))return this.packedBinaryOp(e,n,fo,e.dtype);var o=new Ve(fo,e.shape,n.shape);return this.compileAndRun(o,[e,n],a)},t.prototype.pow=function(e,n){var a=z().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new an(`
  // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise.
  vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1)));
  vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1);
  vec4 result = multiplier * pow(abs(a), b);

  // Ensure that a^0 = 1, including 0^0 = 1 as this correspond to TF and JS
  bvec4 isExpZero = equal(b, vec4(0.0));
  result.r = isExpZero.r ? 1.0 : result.r;
  result.g = isExpZero.g ? 1.0 : result.g;
  result.b = isExpZero.b ? 1.0 : result.b;
  result.a = isExpZero.a ? 1.0 : result.a;

  vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b));
  
  result.r = isNaN.r > 0. ? NAN : result.r;
  result.g = isNaN.g > 0. ? NAN : result.g;
  result.b = isNaN.b > 0. ? NAN : result.b;
  result.a = isNaN.a > 0. ? NAN : result.a;

  return result;
`,e.shape,n.shape):new Ve(`
if(a < 0.0 && floor(b) < b){
  return NAN;
}
if (b == 0.0) {
  return 1.0;
}
return (round(mod(b, 2.0)) != 1) ?
    pow(abs(a), b) : sign(a) * pow(abs(a), b);
`,e.shape,n.shape),o=nt(e.dtype,n.dtype);return this.compileAndRun(a,[e,n],o)},t.prototype.ceil=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.ceil(e);if(z().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Ps,e.dtype);var n=new me(e.shape,Ps);return this.compileAndRun(n,[e])},t.prototype.floor=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.floor(e);if(z().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Ms,e.dtype);var n=new me(e.shape,Ms);return this.compileAndRun(n,[e])},t.prototype.sign=function(e){var n=new me(e.shape,`
  if (isnan(x)) { return 0.0; }
  return sign(x);
`);return this.compileAndRun(n,[e])},t.prototype.isNaN=function(e){var n=new me(e.shape,"return float(isnan(x));");return this.compileAndRun(n,[e],"bool")},t.prototype.isInf=function(e){var n=new me(e.shape,"return float(isinf(x));");return this.compileAndRun(n,[e],"bool")},t.prototype.isFinite=function(e){var n=new me(e.shape,"return float(!isnan(x) && !isinf(x));");return this.compileAndRun(n,[e],"bool")},t.prototype.round=function(e){var n=new me(e.shape,`
  // OpenGL ES does not support round function.
  // The algorithm is based on banker's rounding.
  float base = floor(x);
  if ((x - base) < 0.5) {
    return floor(x);
  } else if ((x - base) > 0.5) {
    return ceil(x);
  } else {
    if (mod(base, 2.0) == 0.0) {
      return base;
    } else {
      return base + 1.0;
    }
  }
`);return this.compileAndRun(n,[e])},t.prototype.exp=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.exp(e);if(z().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Os,e.dtype);var n=new me(e.shape,Os);return this.compileAndRun(n,[e])},t.prototype.expm1=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.expm1(e);if(z().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Bs,e.dtype);var n=new me(e.shape,Bs);return this.compileAndRun(n,[e])},t.prototype.softmax=function(e,n){var a=Ye([n],e.shape),o=this.max(e,a),i=vt(o.shape,a),s=this.subtract(e,o.reshape(i)),u=this.exp(s),c=this.sum(u,a).reshape(i);return this.realDivide(u,c)},t.prototype.log=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.log(e);if(z().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,`
  vec4 result = log(x);
  vec4 isNaN = vec4(lessThan(x, vec4(0.0)));
  result.r = isNaN.r == 1.0 ? NAN : result.r;
  result.g = isNaN.g == 1.0 ? NAN : result.g;
  result.b = isNaN.b == 1.0 ? NAN : result.b;
  result.a = isNaN.a == 1.0 ? NAN : result.a;

  return result;
`,e.dtype);var n=new me(e.shape,`if (x < 0.0) return NAN;
  return log(x);`);return this.compileAndRun(n,[e])},t.prototype.log1p=function(e){var n=new me(e.shape,"return log(1.0 + x);");return this.compileAndRun(n,[e])},t.prototype.sqrt=function(e){var n=new me(e.shape,"return sqrt(x);");return this.compileAndRun(n,[e])},t.prototype.rsqrt=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.rsqrt(e);var n=new me(e.shape,"return inversesqrt(x);");return this.compileAndRun(n,[e])},t.prototype.reciprocal=function(e){var n=new me(e.shape,"return 1.0 / x;");return this.compileAndRun(n,[e])},t.prototype.relu=function(e){var n;return n=z().getBool("WEBGL_PACK")?new wr(e.shape,sc):new me(e.shape,ac),this.compileAndRun(n,[e])},t.prototype.relu6=function(e){var n;return n=z().getBool("WEBGL_PACK")?new wr(e.shape,uc):new me(e.shape,oc),this.compileAndRun(n,[e])},t.prototype.prelu=function(e,n){var a=z().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new an(rc,e.shape,n.shape):new Ve(nc,e.shape,n.shape);return this.compileAndRun(a,[e,n])},t.prototype.elu=function(e){if(z().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,cc,e.dtype);var n=new me(e.shape,ic);return this.compileAndRun(n,[e])},t.prototype.eluDer=function(e,n){var a=z().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new an(`
  vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.)));
  return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0))));
`,e.shape,n.shape):new Ve("return (b >= 1.0) ? a : a * (b + 1.0);",e.shape,n.shape);return this.compileAndRun(a,[e,n])},t.prototype.selu=function(e){var n=new me(e.shape,Lm);return this.compileAndRun(n,[e])},t.prototype.int=function(e){var n=new me(e.shape,"return float(int(x));");return this.compileAndRun(n,[e],"int32")},t.prototype.clip=function(e,n,a){var o,i=(o=z().getBool("WEBGL_PACK_CLIP")?new xv(e.shape):new _v(e.shape)).getCustomSetupFunc(n,a);return this.compileAndRun(o,[e],null,i)},t.prototype.abs=function(e){if(this.shouldExecuteOnCPU([e]))return this.cpuBackend.abs(e);if(z().getBool("WEBGL_PACK_UNARY_OPERATIONS"))return this.packedUnaryOp(e,Ns,e.dtype);var n=new me(e.shape,Ns);return this.compileAndRun(n,[e])},t.prototype.complexAbs=function(e){var n=this.texData.get(e.dataId),a=new bv(e.shape),o=[this.makeComplexComponentTensorInfo(e,n.complexTensors.real),this.makeComplexComponentTensorInfo(e,n.complexTensors.imag)];return this.compileAndRun(a,o)},t.prototype.sigmoid=function(e){var n=new me(e.shape,"return 1.0 / (1.0 + exp(-1.0 * x));");return this.compileAndRun(n,[e])},t.prototype.softplus=function(e){var n=new me(e.shape,`
  float epsilon = 1.1920928955078125e-7;
  float threshold = log(epsilon) + 2.0;

  bool too_large = x > -threshold;
  bool too_small = x < threshold;

  float result;
  float exp_x = exp(x);

  if (too_large){
    result = x;
  }
  else if (too_small){
    result = exp_x;
  }
  else{
    result = log(exp_x + 1.0);
  }
  return result;
`);return this.compileAndRun(n,[e])},t.prototype.sin=function(e){var n=new me(e.shape,Wm);return this.compileAndRun(n,[e])},t.prototype.cos=function(e){var n=new me(e.shape,Vm);return this.compileAndRun(n,[e])},t.prototype.tan=function(e){var n=new me(e.shape,"return tan(x);");return this.compileAndRun(n,[e])},t.prototype.asin=function(e){var n=new me(e.shape,zm);return this.compileAndRun(n,[e])},t.prototype.acos=function(e){var n=new me(e.shape,Um);return this.compileAndRun(n,[e])},t.prototype.atan=function(e){var n=new me(e.shape,Gm);return this.compileAndRun(n,[e])},t.prototype.atan2=function(e,n){var a=z().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new an(`
  vec4 result = atan(a, b);
  vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0));
  
  result.r = isNaN.r > 0. ? NAN : result.r;
  result.g = isNaN.g > 0. ? NAN : result.g;
  result.b = isNaN.b > 0. ? NAN : result.b;
  result.a = isNaN.a > 0. ? NAN : result.a;

  return result;
`,e.shape,n.shape):new Ve(`
  if (isnan(a)) return a;
  if (isnan(b)) return b;

  return atan(a, b);
`,e.shape,n.shape);return this.compileAndRun(a,[e,n])},t.prototype.sinh=function(e){var n=new me(e.shape,`
  float e2x = exp(x);
  return (e2x - 1.0 / e2x) / 2.0;
`);return this.compileAndRun(n,[e])},t.prototype.cosh=function(e){var n=new me(e.shape,`
  float e2x = exp(-x);
  return (e2x + 1.0 / e2x) / 2.0;
`);return this.compileAndRun(n,[e])},t.prototype.tanh=function(e){var n=new me(e.shape,`
  float e2x = exp(-2.0 * abs(x));
  return sign(x) * (1.0 - e2x) / (1.0 + e2x);
`);return this.compileAndRun(n,[e])},t.prototype.asinh=function(e){var n=new me(e.shape,Hm);return this.compileAndRun(n,[e])},t.prototype.acosh=function(e){var n=new me(e.shape,$m);return this.compileAndRun(n,[e])},t.prototype.atanh=function(e){var n=new me(e.shape,jm);return this.compileAndRun(n,[e])},t.prototype.erf=function(e){var n=new me(e.shape,`
  // Error function is calculated approximately with elementary function.
  // See "Handbook of Mathematical Functions with Formulas,
  // Graphs, and Mathematical Tables", Abramowitz and Stegun.
  float p = 0.3275911;
  float a1 = 0.254829592;
  float a2 = -0.284496736;
  float a3 = 1.421413741;
  float a4 = -1.453152027;
  float a5 = 1.061405429;

  float sign = sign(x);
  x = abs(x);
  float t = 1.0 / (1.0 + p * x);
  return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x));
`);return this.compileAndRun(n,[e])},t.prototype.step=function(e,n){var a=new me(e.shape,function(o){return o===void 0&&(o=0),Ot+`
    return x > 0.0 ? 1.0 : float(`+o+`);
  `}(n));return this.compileAndRun(a,[e])},t.prototype.conv2dByMatMul=function(e,n,a,o,i,s){var u=e.shape,c=this.texData.get(e.dataId),l=a.inChannels,d=u[0]*u[1]*u[2],h=a.outChannels,f=a.dataFormat==="channelsLast",p=(d===1||h===1)&&l>1e3,v=u[2]%2!=0&&!!c.isPacked;if(p||!z().getBool("WEBGL_LAZILY_UNPACK")||!z().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!v){var m=f?u[0]*u[1]*u[2]:u[0]*u[2]*u[3],g=this.reshape(e,[1,m,a.inChannels]),x=this.reshape(n,[1,a.inChannels,a.outChannels]);return this.reshape(this.fusedBatchMatMul({a:g,b:x,transposeA:!1,transposeB:!1,bias:o,activation:i,preluActivationWeights:s}),a.outShape)}var b=f?u[0]*u[1]*(u[2]+1):u[0]*u[2]*(u[3]+1),_={dataId:e.dataId,shape:[1,b,a.inChannels],dtype:e.dtype},y=c.shape;c.shape=c.shape.slice(),c.shape[c.shape.length-2]++,E(Xr(c.shape,_.shape),function(){return"packed reshape "+c.shape+" to "+_.shape+" isn't free"});var w=this.reshape(n,[1,a.inChannels,a.outChannels]),S=this.fusedBatchMatMul({a:_,b:w,transposeA:!1,transposeB:!1,bias:o,activation:i,preluActivationWeights:s}),I=this.texData.get(S.dataId);return E(I.isPacked,function(){return"batchMatMul result is expected to be packed"}),c.shape=y,I.shape=a.outShape,T.makeTensorFromDataId(S.dataId,a.outShape,S.dtype)},t.prototype.conv2dWithIm2Row=function(e,n,a,o,i,s){var u=a.filterWidth,c=a.filterHeight,l=a.inChannels,d=a.outWidth,h=a.outHeight,f=a.dataFormat==="channelsLast",p=u*c*l,v=h*d,m=[p,v],g=e.squeeze([0]),x=n.reshape([1,p,-1]),b=new um(m,g.shape,a),_=this.compileAndRun(b,[g]).reshape([1,m[0],m[1]]),y=o!=null,w=s!=null,S=i?Zr(i,!0):null,I=new po(_.shape,[1,v,a.outChannels],!0,!1,y,S,w),k=[_,x];o&&k.push(o),w&&k.push(s);var R=this.compileAndRun(I,k);return f?R.reshape([1,h,d,a.outChannels]):R.reshape([1,a.outChannels,h,d])},t.prototype.fusedConv2d=function(e){var n=e.input,a=e.filter,o=e.convInfo,i=e.bias,s=e.activation,u=e.preluActivationWeights;if(o.filterHeight===1&&o.filterWidth===1&&o.dilationHeight===1&&o.dilationWidth===1&&o.strideHeight===1&&o.strideWidth===1&&(o.padInfo.type==="SAME"||o.padInfo.type==="VALID"))return this.conv2dByMatMul(n,a,o,i,s,u);if(z().getBool("WEBGL_CONV_IM2COL")&&n.shape[0]===1)return this.conv2dWithIm2Row(n,a,o,i,s,u);var c=i!=null,l=u!=null,d=s?Zr(s,!1):null,h=new Cs(o,c,d,l),f=[n,a];return i&&f.push(i),u&&f.push(u),this.compileAndRun(h,f)},t.prototype.conv2d=function(e,n,a){if(a.filterHeight===1&&a.filterWidth===1&&a.dilationHeight===1&&a.dilationWidth===1&&a.strideHeight===1&&a.strideWidth===1&&(a.padInfo.type==="SAME"||a.padInfo.type==="VALID"))return this.conv2dByMatMul(e,n,a);if(z().getBool("WEBGL_CONV_IM2COL")&&e.shape[0]===1)return this.conv2dWithIm2Row(e,n,a);var o=new Cs(a);return this.compileAndRun(o,[e,n])},t.prototype.conv2dDerInput=function(e,n,a){var o=new Ev(a);return this.compileAndRun(o,[e,n])},t.prototype.conv2dDerFilter=function(e,n,a){var o=new Cv(a);return this.compileAndRun(o,[e,n])},t.prototype.fusedDepthwiseConv2D=function(e){var n,a=e.input,o=e.filter,i=e.convInfo,s=e.bias,u=e.activation,c=e.preluActivationWeights,l=z().getBool("WEBGL_PACK_DEPTHWISECONV")&&i.strideWidth<=2&&i.outChannels/i.inChannels==1,d=u?Zr(u,l):null,h=[a,o],f=s!=null,p=c!=null;return f&&h.push(s),p&&h.push(c),l?(n=new Rs(i,f,d,p),this.compileAndRun(n,h)):(n=new Es(i,f,d,p),this.compileAndRun(n,h))},t.prototype.depthwiseConv2D=function(e,n,a){var o;return z().getBool("WEBGL_PACK_DEPTHWISECONV")&&a.strideWidth<=2&&a.outChannels/a.inChannels==1?(o=new Rs(a),this.compileAndRun(o,[e,n])):(o=new Es(a),this.compileAndRun(o,[e,n]))},t.prototype.depthwiseConv2DDerInput=function(e,n,a){var o=new Sv(a);return this.compileAndRun(o,[e,n])},t.prototype.depthwiseConv2DDerFilter=function(e,n,a){var o=new Iv(a);return this.compileAndRun(o,[e,n])},t.prototype.conv3d=function(e,n,a){var o=new Av(a);return this.compileAndRun(o,[e,n])},t.prototype.conv3dDerInput=function(e,n,a){var o=new kv(a);return this.compileAndRun(o,[e,n])},t.prototype.conv3dDerFilter=function(e,n,a){var o=new Rv(a);return this.compileAndRun(o,[e,n])},t.prototype.maxPool=function(e,n){var a=new vo(n,"max",!1);return this.compileAndRun(a,[e])},t.prototype.avgPool=function(e,n){var a=new vo(n,"avg",!1);return this.compileAndRun(a,[e],"float32")},t.prototype.maxPoolBackprop=function(e,n,a,o){var i=new vo(o,"max",!0),s=this.compileAndRun(i,[n]),u=new hm(o),c=this.compileAndRun(u,[e,s],n.dtype);return s.dispose(),c},t.prototype.avgPoolBackprop=function(e,n,a){var o=new hv(a);return this.compileAndRun(o,[e],n.dtype)},t.prototype.cast=function(e,n){return qu(e,n,this)},t.prototype.unstack=function(e,n){for(var a=e.shape[n],o=new Array(e.rank-1),i=0,s=0;s<e.rank;s++)s!==n&&(o[i++]=e.shape[s]);var u=new Array(e.rank).fill(0),c=e.shape.slice();c[n]=1;var l=new Array(a);for(s=0;s<l.length;s++)u[n]=s,l[s]=this.slice(e,u,c).reshape(o);return l},t.prototype.avgPool3d=function(e,n){var a=new mo(n,"avg",!1);return this.compileAndRun(a,[e],"float32")},t.prototype.avgPool3dBackprop=function(e,n,a){var o=new fv(a);return this.compileAndRun(o,[e],n.dtype)},t.prototype.maxPool3d=function(e,n){var a=new mo(n,"max",!1);return this.compileAndRun(a,[e],"float32")},t.prototype.maxPool3dBackprop=function(e,n,a,o){var i=new mo(o,"max",!0),s=this.compileAndRun(i,[n]),u=new fm(o),c=this.compileAndRun(u,[e,s],n.dtype);return s.dispose(),c},t.prototype.reshape=function(e,n){var a=this.texData.get(e.dataId);if(a.isPacked&&!Xr(e.shape,n)&&(a.texture===null||!Xr(a.shape,n))){var o=this.packedReshape(e,n);return T.makeTensorFromDataId(o.dataId,o.shape,o.dtype)}return Uo(e,n)},t.prototype.resizeBilinear=function(e,n,a,o){var i=z().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new Cm(e.shape,n,a,o):new wm(e.shape,n,a,o);return this.compileAndRun(i,[e],"float32")},t.prototype.resizeBilinearBackprop=function(e,n,a){var o=new ym(e,n,a);return this.compileAndRun(o,[e])},t.prototype.resizeNearestNeighbor=function(e,n,a,o){var i=new Rm(e.shape,n,a,o);return this.compileAndRun(i,[e])},t.prototype.resizeNearestNeighborBackprop=function(e,n,a){var o=new Em(e,n,a);return this.compileAndRun(o,[e])},t.prototype.multinomial=function(e,n,a,o){var i=n?e:cn(e),s=i.shape[0],u=i.shape[1],c=new pm(s,u,a),l=c.getCustomSetupFunc(o);return this.compileAndRun(c,[i],"int32",l)},t.prototype.oneHot=function(e,n,a,o){var i=new vm(e.size,n,a,o);return this.compileAndRun(i,[e])},t.prototype.diag=function(e){var n=new Mv(e.size);return this.compileAndRun(n,[e])},t.prototype.nonMaxSuppression=function(e,n,a,o,i){return ha("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead"),di(e.dataSync(),n.dataSync(),a,o,i)},t.prototype.cropAndResize=function(e,n,a,o,i,s){var u=new Dv(e.shape,n.shape,o,i,s);return this.compileAndRun(u,[e,n,a],"float32")},t.prototype.depthToSpace=function(e,n,a){E(n>1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+n});var o=e.shape[0],i=a==="NHWC"?e.shape[1]:e.shape[2],s=a==="NHWC"?e.shape[2]:e.shape[3],u=a==="NHWC"?e.shape[3]:e.shape[1],c=i*n,l=s*n,d=u/(n*n),h=new Pv(a==="NHWC"?[o,c,l,d]:[o,d,c,l],n,a);return this.compileAndRun(h,[e])},t.prototype.split=function(e,n,a){return Yu(e,n,a)},t.prototype.scatterND=function(e,n,a){var o=_a(0,e,a),i=o.sliceRank,s=o.numUpdates,u=o.sliceSize,c=o.strides,l=o.outputSize,d=[l/u,u],h=e.reshape([s,i]),f=n.reshape([s,u]);if(l===0)return Uo(rt([]),a);var p=J(0),v=new As(s,i,h.rank,f.rank,c,d);return this.compileAndRun(v,[f,h,p]).reshape(a)},t.prototype.sparseToDense=function(e,n,a,o){var i=_a(0,e,a),s=i.sliceRank,u=i.numUpdates,c=i.strides,l=i.outputSize,d=new As(u,s,e.rank,n.rank,c,[l,1]);return this.compileAndRun(d,[n,e,o]).reshape(a)},t.prototype.fft=function(e){return this.fftImpl(e,!1)},t.prototype.ifft=function(e){return this.fftImpl(e,!0)},t.prototype.fftImpl=function(e,n){var a=this.texData.get(e.dataId),o=new Is(Vv,e.shape,n),i=new Is(zv,e.shape,n),s=[this.makeComplexComponentTensorInfo(e,a.complexTensors.real),this.makeComplexComponentTensorInfo(e,a.complexTensors.imag)],u=this.compileAndRun(o,s),c=this.compileAndRun(i,s),l=this.complex(u,c).as2D(e.shape[0],e.shape[1]);return u.dispose(),c.dispose(),l},t.prototype.gatherND=function(e,n){var a=n.shape,o=a[a.length-1],i=Vu(e,n),s=i[0],u=i[1],c=i[2],l=i[3],d=n.reshape([u,o]),h=e.reshape([e.size/c,c]),f=new Hv(o,l,[u,c]);return this.compileAndRun(f,[h,d]).reshape(s)},t.prototype.fill=function(e,n,a){if((a=a||Or(n))==="string"){var o=ua(a,ae(e));return o.fill(n),T.makeTensor(o,e,a,this)}var i=new Uv(e,n),s=i.getCustomSetupFunc(n);return this.compileAndRun(i,[],a,s)},t.prototype.onesLike=function(e){if(e.dtype==="string")throw new Error("onesLike is not supported under string dtype");return this.fill(e.shape,1,e.dtype)},t.prototype.zerosLike=function(e){return this.fill(e.shape,e.dtype==="string"?"":0,e.dtype)},t.prototype.linspace=function(e,n,a){return Ku(e,n,a)},t.prototype.makeTensorInfo=function(e,n){var a=this.write(null,e,n);return this.texData.get(a).usage=null,{dataId:a,shape:e,dtype:n}},t.prototype.makeOutput=function(e,n){var a=this.makeTensorInfo(e,n).dataId;return T.makeTensorFromDataId(a,e,n,this)},t.prototype.unpackTensor=function(e){var n=new Km(e.shape);return this.runWebGLProgram(n,[e],e.dtype)},t.prototype.packTensor=function(e){var n=new mm(e.shape);return this.runWebGLProgram(n,[e],e.dtype,null,!0)},t.prototype.packedReshape=function(e,n){var a=[la(e.shape)].concat(da(e.shape)),o={dtype:e.dtype,shape:a,dataId:e.dataId},i=[la(n)].concat(da(n)),s=new bm(i,a),u=this.runWebGLProgram(s,[o],e.dtype,null,!0);return{dataId:u.dataId,shape:n,dtype:u.dtype}},t.prototype.decode=function(e){var n,a=this.texData.get(e),o=a.isPacked,i=a.shape,s=a.dtype,u=co(i);return n=o?new Fv(u):new Nv(u),{dtype:s,shape:i,dataId:this.runWebGLProgram(n,[{shape:u,dtype:s,dataId:e}],s,null,!0).dataId}},t.prototype.runWebGLProgram=function(e,n,a,o,i){var s=this;i===void 0&&(i=!1);var u=this.makeTensorInfo(e.outputShape,a),c=this.texData.get(u.dataId);if(e.packedOutput&&(c.isPacked=!0),e.outPackingScheme===Sr.DENSE){var l=Cr(e.outputShape);c.texShape=l.map(function(b){return 2*b})}if(e.outTexUsage!=null&&(c.usage=e.outTexUsage),ae(u.shape)===0)return c.values=kr(u.dtype,0),u;var d=[],h=n.map(function(b){if(b.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");var _=s.texData.get(b.dataId);if(_.texture==null){if(!e.packedInputs&&ae(b.shape)<=z().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:b.shape,texData:null,isUniform:!0,uniformValues:_.values};e.packedInputs&&(_.isPacked=!0,_.shape=b.shape)}else if(!!_.isPacked!=!!e.packedInputs)b=_.isPacked?s.unpackTensor(b):s.packTensor(b),d.push(b),_=s.texData.get(b.dataId);else if(_.isPacked&&!Xr(_.shape,b.shape)){var y=b,w=b.shape;b.shape=_.shape,b=s.packedReshape(b,w),d.push(b),_=s.texData.get(b.dataId),y.shape=w}return s.uploadToGPU(b.dataId),{shape:b.shape,texData:_,isUniform:!1}});this.uploadToGPU(u.dataId);var f,p={shape:u.shape,texData:c,isUniform:!1},v=function(b,_,y){var w="";_.concat(y).forEach(function(k){var R=k.texData!=null&&k.texData.slice!=null&&k.texData.slice.flatOffset>0,N=k.isUniform?"uniform":k.texData.texShape;w+=k.shape+"_"+N+"_"+R});var S=b.userCode,I=b.constructor.name;return I+="_"+w+"_"+S}(e,h,p),m=this.getAndSaveBinary(v,function(){return function(b,_,y,w){var S=_.userCode,I=y.map(function(U,$){var q={logicalShape:U.shape,texShape:U.isUniform?null:U.texData.texShape,isUniform:U.isUniform,isPacked:!U.isUniform&&U.texData.isPacked,flatOffset:null};return U.texData!=null&&U.texData.slice!=null&&U.texData.slice.flatOffset>0&&(q.flatOffset=U.texData.slice.flatOffset),{name:_.variableNames[$],shapeInfo:q}}),k=I.map(function(U){return U.shapeInfo}),R={logicalShape:w.shape,texShape:w.texData.texShape,isUniform:!1,isPacked:w.texData.isPacked,flatOffset:null},N=iv(I,R,S,_.packedInputs),D=b.createProgram(N),V=null,L=b.getUniformLocation(D,"NAN",!1);z().getNumber("WEBGL_VERSION")===1&&(V=b.getUniformLocation(D,"INFINITY",!1));for(var W={},H=0;H<_.variableNames.length;H++){var G=_.variableNames[H];W[G]=b.getUniformLocation(D,G,!1),W["offset"+G]=b.getUniformLocation(D,"offset"+G,!1)}return{program:_,source:N,webGLProgram:D,uniformLocations:W,inShapeInfos:k,outShapeInfo:R,infLoc:V,nanLoc:L}}(s.gpgpu,e,h,p)}),g=this.activeTimers!=null;if(g&&(f=this.startTimer()),function(b,_,y,w,S){Ss(_.inShapeInfos,y),Ss([_.outShapeInfo],[w]);var I=w.texData.texture,k=w.texData.texShape;w.texData.isPacked?b.setOutputPackedMatrixTexture(I,k[0],k[1]):b.setOutputMatrixTexture(I,k[0],k[1]),b.setProgram(_.webGLProgram),z().getNumber("WEBGL_VERSION")===1&&_.infLoc!==null&&b.gl.uniform1f(_.infLoc,1/0),_.nanLoc!==null&&b.gl.uniform1f(_.nanLoc,NaN),y.forEach(function(R,N){var D=_.program.variableNames[N],V=_.uniformLocations[D],L=_.uniformLocations["offset"+D];if(V!=null)if(R.isUniform)if(ae(R.shape)<2)b.gl.uniform1f(V,R.uniformValues[0]);else{var W=R.uniformValues;W instanceof Float32Array||(W=new Float32Array(W)),b.gl.uniform1fv(V,W)}else R.texData.slice!=null&&L!=null&&b.gl.uniform1i(L,R.texData.slice.flatOffset),b.setInputMatrixTexture(R.texData.texture,V,N)}),S!=null&&S(b,_.webGLProgram),b.executeProgram()}(this.gpgpu,m,h,p,o),d.forEach(function(b){return s.disposeData(b.dataId)}),g&&(f=this.endTimer(f),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(f)})),!z().getBool("WEBGL_LAZILY_UNPACK")&&c.isPacked&&i===!1){var x=this.unpackTensor(u);return this.disposeData(u.dataId),x}return u},t.prototype.compileAndRun=function(e,n,a,o,i){i===void 0&&(i=!1),a=a||n[0].dtype;var s=this.runWebGLProgram(e,n,a,o,i);return T.makeTensorFromDataId(s.dataId,s.shape,s.dtype)},t.prototype.getAndSaveBinary=function(e,n){return e in this.binaryCache||(this.binaryCache[e]=n()),this.binaryCache[e]},t.prototype.getTextureManager=function(){return this.textureManager},t.prototype.dispose=function(){var e=this;this.disposed||(z().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(function(n){e.gpgpu.deleteProgram(e.binaryCache[n].webGLProgram),delete e.binaryCache[n]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement<"u"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)},t.prototype.floatPrecision=function(){var e=this;return this.floatPrecisionValue==null&&(this.floatPrecisionValue=ee(function(){if(!z().get("WEBGL_RENDER_FLOAT32_ENABLED")){var n=z().getBool("DEBUG");z().set("DEBUG",!1);var a=e.abs(J(1e-8)).dataSync()[0];if(z().set("DEBUG",n),a>0)return 32}return 16})),this.floatPrecisionValue},t.prototype.epsilon=function(){return this.floatPrecision()===32?1e-7:1e-4},t.prototype.uploadToGPU=function(e){var n,a=this.texData.get(e),o=a.shape,i=a.dtype,s=a.values,u=a.texture,c=a.usage,l=a.isPacked;if(u==null){var d,h=this.activeTimers!=null;h&&(d=Ut());var f=a.texShape;if(f==null&&(f=np(o,l),a.texShape=f),s!=null){var p=co(o),v=void 0,m=f[1],g=f[0],x=s instanceof Uint8Array;l?(m=(n=Lr(f[0],f[1]))[0],g=n[1],v=new Wv(p,[g,m],x)):v=new Lv(p,[g,m],x);var b=this.makeTensorInfo([g,m],i);this.texData.get(b.dataId).usage=x?bt.PIXELS:bt.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(b.dataId),m,g,s);var _=this.runWebGLProgram(v,[b],i,null,!0),y=this.texData.get(_.dataId);a.texture=y.texture,a.texShape=y.texShape,a.isPacked=y.isPacked,a.usage=y.usage,this.disposeData(b.dataId),this.texData.delete(_.dataId),a.values=null,h&&(this.uploadWaitMs+=Ut()-d)}else{var w=this.acquireTexture(f,c,i,l);a.texture=w}}},t.prototype.convertAndCacheOnCPU=function(e,n){var a=this.texData.get(e),o=a.dtype;return this.releaseGPUData(e),n!=null&&(a.values=function(i,s){if(s==="float32"||s==="complex64")return i;if(s==="int32"||s==="bool"){for(var u=s==="int32"?new Int32Array(i.length):new Uint8Array(i.length),c=0;c<u.length;++c)u[c]=Math.round(i[c]);return u}throw new Error("Unknown dtype "+s)}(n,o)),a.values},t.prototype.acquireTexture=function(e,n,a,o){if(this.numBytesInGPU+=this.computeBytes(e,a),!this.warnedAboutMemory&&this.numBytesInGPU>1024*this.numMBBeforeWarning*1024){var i=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn("High memory usage in GPU: "+i+" MB, most likely due to a memory leak")}return this.textureManager.acquireTexture(e,n,o)},t.prototype.computeBytes=function(e,n){return e[0]*e[1]*wu(n)},t}($u);Au()&&T.registerBackend("webgl",function(){return new Ym},2);var Jm=A({square_:function(r){var t=C(r,"x","square"),e=[t];return T.runKernelFunc(function(n,a){return a([t]),n.square(t)},{x:t},null,"Square",{},e,[])}}),Dr="SquaredDifference",lc=A({squaredDifference_:function(r,t){var e,n=C(r,"a","squaredDifference"),a=C(t,"b","squaredDifference");e=Le(n,a),n=e[0],a=e[1],Ee(n.shape,a.shape);var o={a:n,b:a},i=[n,a];return T.runKernelFunc(function(s,u){var c=s.squaredDifference(n,a);return u([n,a]),c},o,function(s,u){var c=u[0],l=u[1],d=J(2);return{a:function(){return s.mul(c.sub(l).mul(d))},b:function(){return s.mul(l.sub(c).mul(d))}}},Dr,{},i,[])}}),Qm=A({abs_:function(r){var t=C(r,"x","abs");return t.dtype==="complex64"?T.runKernelFunc(function(e){return e.complexAbs(t)},{$x:t}):T.runKernelFunc(function(e,n){var a=e.abs(t);return n([t]),a},{x:t},function(e,n){var a=n[0];return{x:function(){return e.mul(a.toFloat().step(-1))}}},"Abs")}}),Zm=A({acos_:function(r){var t=C(r,"x","acos");return T.runKernelFunc(function(e,n){var a=e.acos(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.divStrict(J(1).sub(a.toFloat().square()).sqrt()).neg()}}})}}),eg=A({acosh_:function(r){var t=C(r,"x","acosh");return T.runKernelFunc(function(e,n){var a=e.acosh(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.divStrict(a.toFloat().square().sub(1).sqrt())}}})}}),tg=A({asin_:function(r){var t=C(r,"x","asin");return T.runKernelFunc(function(e,n){var a=e.asin(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.divStrict(J(1).sub(a.toFloat().square()).sqrt())}}})}}),ng=A({asinh_:function(r){var t=C(r,"x","asinh");return T.runKernelFunc(function(e,n){var a=e.asinh(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.divStrict(J(1).add(a.toFloat().square()).sqrt())}}})}}),rg=A({atan_:function(r){var t=C(r,"x","atan");return T.runKernelFunc(function(e,n){var a=e.atan(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.div(a.toFloat().square().add(1))}}})}}),ag=A({atanh_:function(r){var t=C(r,"x","atanh");return T.runKernelFunc(function(e,n){var a=e.atanh(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.div(J(1).sub(a.toFloat().square()))}}})}}),og=A({ceil_:function(r){var t=C(r,"x","ceil");return T.runKernelFunc(function(e){return e.ceil(t)},{$x:t},function(e){return{$x:function(){return Ie(e)}}})}}),gi=A({clipByValue_:function(r,t,e){var n=C(r,"x","clipByValue");E(t<=e,function(){return"Error in clip: min ("+t+") must be less than or equal to max ("+e+")."});var a=[n],o={min:t,max:e};return T.runKernelFunc(function(i,s){var u=i.clip(n,t,e);return s([n]),u},{x:n},function(i,s){var u=s[0];return{x:function(){return i.where(u.greaterEqual(t).logicalAnd(u.lessEqual(e)),Ie(i))}}},"ClipByValue",o,a)}}),ig=A({cos_:function(r){var t=C(r,"x","cos"),e=[t];return T.runKernelFunc(function(n,a){var o=n.cos(t);return a([t]),o},{x:t},function(n,a){var o=a[0];return{x:function(){return o.toFloat().sin().neg().mul(n)}}},"Cos",{},e)}}),sg=A({cosh_:function(r){var t=C(r,"x","cosh");return T.runKernelFunc(function(e,n){var a=e.cosh(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return a.toFloat().sinh().mulStrict(e)}}})}}),ug=A({erf_:function(r){var t=C(r,"x","erf");return E(t.dtype==="int32"||t.dtype==="float32",function(){return"Input dtype must be `int32` or `float32`."}),t.dtype==="int32"&&(t=t.toFloat()),T.runKernelFunc(function(e,n){var a=e.erf(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.mul(a.square().neg().exp().mul(2/Math.sqrt(Math.PI)))}}})}}),Ho=A({exp_:function(r){var t=C(r,"x","exp");return T.runKernelFunc(function(e,n){var a=e.exp(t);return n([a]),a},{x:t},function(e,n){return{x:function(){return e.mulStrict(n[0])}}},"Exp",{},[],[!0])}}),cg=A({expm1_:function(r){var t=C(r,"x","expm1");return T.runKernelFunc(function(e,n){var a=e.expm1(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.mul(a.exp())}}})}}),lg=A({floor_:function(r){var t=C(r,"x","floor");return T.runKernelFunc(function(e){return e.floor(t)},{$x:t},function(e){return{$x:function(){return Ie(e)}}})}}),dg=A({log_:function(r){var t=C(r,"x","log"),e=[t];return T.runKernelFunc(function(n,a){var o=n.log(t);return a([t]),o},{x:t},function(n,a){var o=a[0];return{x:function(){return n.div(o.toFloat())}}},"Log",{},e)}}),hg=A({log1p_:function(r){var t=C(r,"x","log1p");return T.runKernelFunc(function(e,n){var a=e.log1p(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.div(a.add(1))}}})}}),fg=A({logSigmoid_:function(r){var t=C(r,"x","logSigmoid");return T.runKernelFunc(function(e,n){var a=e.softplus(t.neg()).neg();return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.mul(a.neg().sigmoid())}}})}}),wa=A({neg_:function(r){var t=C(r,"x","neg"),e=[t];return T.runKernelFunc(function(n){return n.neg(t)},{x:t},function(n){return{x:function(){return n.neg()}}},"Neg",{},e)}}),pg=A({reciprocal_:function(r){var t=C(r,"x","reciprocal");return T.runKernelFunc(function(e,n){var a=e.reciprocal(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.div(a.square().neg())}}})}}),vg=A({round_:function(r){var t=C(r,"x","round");return T.runKernelFunc(function(e){return e.round(t)},{$x:t},function(e){return{$x:function(){return Ie(e)}}})}}),dc=A({rsqrt_:function(r){var t=C(r,"x","rsqrt"),e=[t];return T.runKernelFunc(function(n,a){var o=n.rsqrt(t);return a([t]),o},{x:t},function(n,a){var o=a[0];return{x:function(){return n.div(o.pow(1.5).mul(2)).neg()}}},"Rsqrt",{},e)}}),hc=A({sigmoid_:function(r){var t=C(r,"x","sigmoid");return T.runKernelFunc(function(e,n){var a=e.sigmoid(t);return n([a]),a},{x:t},function(e,n){var a=n[0];return{x:function(){return e.mul(a.mul(J(1).sub(a)))}}},"Sigmoid")}}),mg=A({sign_:function(r){var t=C(r,"x","sign");return T.runKernelFunc(function(e){return e.sign(t)},{$x:t},function(e){return{$x:function(){return Ie(e)}}})}}),gg=A({isNaN_:function(r){var t=C(r,"x","isNaN");return T.runKernelFunc(function(e){return e.isNaN(t)},{$x:t},function(e){return{$x:function(){return Ie(e)}}})}}),_g=A({isInf_:function(r){var t=C(r,"x","isInf");return T.runKernelFunc(function(e){return e.isInf(t)},{$x:t},function(e){return{$x:function(){return Ie(e)}}})}}),xg=A({isFinite_:function(r){var t=C(r,"x","isFinite");return T.runKernelFunc(function(e){return e.isFinite(t)},{$x:t},function(e){return{$x:function(){return Ie(e)}}})}}),bg=A({sin_:function(r){var t=C(r,"x","sin"),e=[t];return T.runKernelFunc(function(n,a){var o=n.sin(t);return a([t]),o},{x:t},function(n,a){var o=a[0];return{x:function(){return o.toFloat().cos().mul(n)}}},"Sin",{},e)}}),yg=A({sinh_:function(r){var t=C(r,"x","sinh");return T.runKernelFunc(function(e,n){var a=e.sinh(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return a.toFloat().cosh().mulStrict(e)}}})}}),wg=A({softplus_:function(r){var t=C(r,"x","softplus");return T.runKernelFunc(function(e,n){var a=e.softplus(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.mul(a.sigmoid())}}})}}),Cg=A({sqrt_:function(r){var t=C(r,"x","sqrt");return T.runKernelFunc(function(e,n){var a=e.sqrt(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.div(a.toFloat().sqrt().mul(2))}}})}}),Eg=A({step_:function(r,t){t===void 0&&(t=0);var e=C(r,"x","step");return T.runKernelFunc(function(n){return n.step(e,t)},{$x:e},function(n){return{$x:function(){return Ie(n)}}})}}),Rg=A({tan_:function(r){var t=C(r,"x","tan");return T.runKernelFunc(function(e,n){var a=e.tan(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return e.div(a.cos().square())}}})}}),kg=A({tanh_:function(r){var t=C(r,"x","tanh");return T.runKernelFunc(function(e,n){var a=e.tanh(t);return n([a]),a},{x:t},function(e,n){var a=n[0];return{x:function(){return J(1).sub(a.square()).mulStrict(e)}}},"Tanh",{},null,[!0])}});function fc(r,t,e,n,a,o){var i,s,u=C(r,"x","batchNorm"),c=C(t,"mean","batchNorm"),l=C(e,"variance","batchNorm");return a!=null&&(i=C(a,"scale","batchNorm")),n!=null&&(s=C(n,"offset","batchNorm")),E(u.rank===2,function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."}),E(c.rank===2||c.rank===1,function(){return"Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank "+c.rank+"."}),E(l.rank===2||l.rank===1,function(){return"Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank "+l.rank+"."}),i!=null&&E(i.rank===2||i.rank===1,function(){return"Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank "+i.rank+"."}),s!=null&&E(s.rank===2||s.rank===1,function(){return"Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank "+s.rank+"."}),Vr(u,c,l,s,i,o)}function pc(r,t,e,n,a,o){var i,s,u=C(r,"x","batchNorm"),c=C(t,"mean","batchNorm"),l=C(e,"variance","batchNorm");return a!=null&&(i=C(a,"scale","batchNorm")),n!=null&&(s=C(n,"offset","batchNorm")),E(u.rank===3,function(){return"Error in batchNorm3D: x must be rank 3 but got rank "+u.rank+"."}),E(c.rank===3||c.rank===1,function(){return"Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank "+c.rank+"."}),E(l.rank===3||l.rank===1,function(){return"Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank "+l.rank+"."}),i!=null&&E(i.rank===3||i.rank===1,function(){return"Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank "+i.rank+"."}),s!=null&&E(s.rank===3||s.rank===1,function(){return"Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank "+s.rank+"."}),Vr(u,c,l,s,i,o)}function vc(r,t,e,n,a,o){var i,s,u=C(r,"x","batchNorm"),c=C(t,"mean","batchNorm"),l=C(e,"variance","batchNorm");return a!=null&&(i=C(a,"scale","batchNorm")),n!=null&&(s=C(n,"offset","batchNorm")),E(u.rank===4,function(){return"Error in batchNorm4D: x must be rank 4 but got rank "+u.rank+"."}),E(c.rank===4||c.rank===1,function(){return"Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank "+c.rank+"."}),E(l.rank===4||l.rank===1,function(){return"Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank "+l.rank+"."}),i!=null&&E(i.rank===4||i.rank===1,function(){return"Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank "+i.rank+"."}),s!=null&&E(s.rank===4||s.rank===1,function(){return"Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank "+s.rank+"."}),Vr(u,c,l,s,i,o)}function Vr(r,t,e,n,a,o){o==null&&(o=.001);var i,s,u,c=C(r,"x","batchNorm"),l=C(t,"mean","batchNorm"),d=C(e,"variance","batchNorm");a!=null&&(i=C(a,"scale","batchNorm")),n!=null&&(s=C(n,"offset","batchNorm")),E(l.rank===d.rank,function(){return"Batch normalization gradient requires mean and variance to have equal ranks."}),E(s==null||l.rank===s.rank,function(){return"Batch normalization gradient requires mean and offset to have equal ranks."}),E(i==null||l.rank===i.rank,function(){return"Batch normalization gradient requires mean and scale to have equal ranks."}),u=c.rank===0||c.rank===1?c.as4D(1,1,1,c.size):c.rank===2?c.as4D(1,1,c.shape[0],c.shape[1]):c.rank===3?c.as4D(1,c.shape[0],c.shape[1],c.shape[2]):c;var h=[c,l,d,i];return T.runKernelFunc(function(f,p){var v=f.batchNormalization(u,ea(l),ea(d),o,ea(i),ea(s));return p([c,l,d,i]),v},{x:c,mean:l,variance:d,scale:i,offset:s},function(f,p){var v=p,m=v[0],g=v[1],x=v[2],b=v[3],_=b??J(1),y=Ke(g.shape,u.shape),w=[];if(g.rank===1){for(var S=0;S<u.shape.length-1;++S)w.push(u.shape[S]);w.push(1)}var I=m.sub(g),k=f.mul(_),R=dc(x.add(J(o))),N=R.mul(R).mul(R).mul(J(-.5));return{x:function(){return g.rank===1?f.mul(rr(R.as4D(1,1,1,g.shape[0]),w)).mul(_).reshape(m.shape):f.mul(R).mul(_).reshape(m.shape)},mean:function(){var D=R.mul(J(-1)).mul(k);return g.rank===1&&(D=D.sum(y)),D.reshape(g.shape)},variance:function(){var D=N.mul(I).mul(k);return g.rank===1&&(D=D.sum(y)),D.reshape(g.shape)},scale:function(){var D=I.mul(R),V=f.mul(D);return g.rank===1&&(V=V.sum(y)),V.reshape(g.shape)},offset:function(){var D=f;return g.rank===1&&(D=D.sum(y)),D.reshape(g.shape)}}},"BatchNormalization",{varianceEpsilon:o},h).reshape(c.shape)}function ea(r){return r==null?null:r.rank===0?r.as1D():r.rank===1?r:r.rank===2?r.as4D(1,1,r.shape[0],r.shape[1]):r.rank===3?r.as4D(1,r.shape[0],r.shape[1],r.shape[2]):r}function Pa(){Du("tf.batchNormalization() is going away. Use tf.batchNorm() instead, and note the positional argument change of scale, offset, and varianceEpsilon")}var Ig=A({batchNormalization2d_:function(r,t,e,n,a,o){return n===void 0&&(n=.001),Pa(),fc(r,t,e,o,a,n)}}),Sg=A({batchNormalization3d_:function(r,t,e,n,a,o){return n===void 0&&(n=.001),Pa(),pc(r,t,e,o,a,n)}}),Ag=A({batchNormalization4d_:function(r,t,e,n,a,o){return n===void 0&&(n=.001),Pa(),vc(r,t,e,o,a,n)}}),Dg=A({batchNormalization_:function(r,t,e,n,a,o){return n===void 0&&(n=.001),Pa(),Vr(r,t,e,o,a,n)}}),mc=A({batchNorm_:Vr}),Tg=A({batchNorm2d_:fc}),Ng=A({batchNorm3d_:pc}),Fg=A({batchNorm4d_:vc}),Ma=A({logicalAnd_:function(r,t){var e=C(r,"a","logicalAnd","bool"),n=C(t,"b","logicalAnd","bool");return Ee(e.shape,n.shape),T.runKernelFunc(function(a){return a.logicalAnd(e,n)},{a:e,b:n},null,"LogicalAnd")}}),Pg=A({logicalNot_:function(r){var t=C(r,"x","logicalNot","bool");return T.runKernelFunc(function(e){return e.logicalNot(t)},{$x:t})}}),gc=A({logicalOr_:function(r,t){var e=C(r,"a","logicalOr","bool"),n=C(t,"b","logicalOr","bool");return Ee(e.shape,n.shape),T.runKernelFunc(function(a){return a.logicalOr(e,n)},{$a:e,$b:n})}}),Mg=A({logicalXor_:function(r,t){var e=C(r,"a","logicalXor","bool"),n=C(t,"b","logicalXor","bool");return Ee(e.shape,n.shape),gc(r,t).logicalAnd(Ma(r,t).logicalNot())}}),Bn=A({where_:function(r,t,e){var n=C(t,"a","where"),a=C(e,"b","where"),o=C(r,"condition","where","bool");return Ae(n.shape,a.shape,"Error in where: "),o.rank===1?E(o.shape[0]===n.shape[0],function(){return"The first dimension of `a` must match the size of `condition`."}):Ae(o.shape,a.shape,"Error in where: "),T.runKernelFunc(function(i,s){var u=i.select(o,n,a);return s([o]),u},{$condition:o,$a:n,$b:a},function(i,s){var u=s[0];return{$condition:function(){return Ie(u).toFloat()},$a:function(){return i.mul(u.cast(i.dtype))},$b:function(){return i.mul(u.logicalNot().cast(i.dtype))}}})}}),_c=function(r){return ne(this,void 0,void 0,function(){var t,e,n;return re(this,function(a){switch(a.label){case 0:return[4,(t=C(r,"condition","whereAsync","bool")).data()];case 1:return e=a.sent(),n=fi(t.shape,e),r!==t&&t.dispose(),[2,n]}})})},Ce=A({add_:function(r,t){var e,n=C(r,"a","add"),a=C(t,"b","add");e=Le(n,a),n=e[0],a=e[1];var o=Ee(n.shape,a.shape);return T.runKernelFunc(function(i){return i.add(n,a)},{a:n,b:a},function(i){return{a:function(){var s=i,u=Ke(n.shape,o);return u.length>0&&(s=s.sum(u)),s.reshape(n.shape)},b:function(){var s=i,u=Ke(a.shape,o);return u.length>0&&(s=s.sum(u)),s.reshape(a.shape)}}},"Add")}}),Og=A({addN_:function(r){E(Array.isArray(r),function(){return"The argument passed to tf.addN() must be a list of tensors"}),E(r.length>=1,function(){return"Must pass at least one tensor to tf.addN(), but got "+r.length});var t=r.map(function(a,o){return C(a,"tensors"+o,"addN")}),e=t[0];t.forEach(function(a){if(a.dtype!==e.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(function(a){if(!Qe(a.shape,e.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});var n=t;return T.runKernelFunc(function(a){return a.addN(t)},n,function(a){var o={};return t.forEach(function(i,s){o[s]=function(){return a.clone()}}),o},"AddN")}}),Bg=A({addStrict_:function(r,t){var e=C(r,"a","addStrict"),n=C(t,"b","addStrict");return Ae(e.shape,n.shape,"Error in addStrict: "),e.add(n)}}),Lg=A({atan2_:function(r,t){var e,n=C(r,"a","atan2"),a=C(t,"b","atan2");e=Le(n,a),n=e[0],a=e[1];var o=Ee(n.shape,a.shape);return T.runKernelFunc(function(i,s){var u=i.atan2(n,a);return s([n,a]),u},{$a:n,$b:a},function(i,s){var u=s[0],c=s[1];return{$a:function(){var l=Ce(u.square(),c.square()),d=i.mul(c.div(l)),h=Ke(u.shape,o);return h.length>0&&(d=d.sum(h)),d.reshape(u.shape)},$b:function(){var l=Ce(u.square(),c.square()),d=wa(i.mul(u.div(l))),h=Ke(c.shape,o);return h.length>0&&(d=d.sum(h)),d.reshape(c.shape)}}})}}),Nt=A({div_:function(r,t){var e,n=C(r,"a","div"),a=C(t,"b","div");if(e=Le(n,a),n=e[0],a=e[1],n.dtype==="int32"&&a.dtype==="int32")return xc(n,a);var o=Ee(n.shape,a.shape);return T.runKernelFunc(function(i,s){var u=i.realDivide(n,a);return s([n,a]),u},{a:n,b:a},function(i,s){var u=s[0],c=s[1];return{a:function(){var l=i.div(c.toFloat()),d=Ke(u.shape,o);return d.length>0?l.sum(d).reshape(u.shape):l},b:function(){var l=i.mul(u.toFloat()),d=Ke(c.shape,o);d.length>0&&(l=l.sum(d).reshape(c.shape));var h=c.square();return l.div(h.toFloat()).neg()}}},"Div")}}),Wg=A({divNoNan_:function(r,t){var e,n=C(r,"a","div"),a=C(t,"b","div");n=(e=Le(n,a))[0],a=e[1];var o=Nt(n,a),i=Ie(o),s=a.equal(i);return Bn(s,i,o)}}),Vg=A({divStrict_:function(r,t){var e=C(r,"a","div"),n=C(t,"b","div");return Ae(e.shape,n.shape,"Error in divideStrict: "),e.div(n)}}),xc=A({floorDiv_:function(r,t){var e,n=C(r,"a","floorDiv"),a=C(t,"b","floorDiv");e=Le(n,a),n=e[0],a=e[1];var o=Ee(n.shape,a.shape);return T.runKernelFunc(function(i,s){var u=i.floorDiv(n,a);return s([n,a]),u},{a:n,b:a},function(i,s){var u=s[0],c=s[1];return{a:function(){var l=i.div(c.toFloat()),d=Ke(u.shape,o);return d.length>0?l.sum(d).reshape(u.shape):l},b:function(){var l=i.mul(u.toFloat()),d=Ke(c.shape,o);d.length>0&&(l=l.sum(d).reshape(c.shape));var h=c.square();return l.div(h.toFloat()).neg()}}},"FloorDiv")}}),_i=A({maximum_:function(r,t){var e,n=C(r,"a","maximum"),a=C(t,"b","maximum");return e=Le(n,a),n=e[0],a=e[1],n.dtype==="bool"&&(n=n.toInt(),a=a.toInt()),Ee(n.shape,a.shape),T.runKernelFunc(function(o,i){var s=o.maximum(n,a);return i([n,a]),s},{a:n,b:a},function(o,i){var s=i[0],u=i[1];return{a:function(){return o.mul(s.greaterEqual(u).toFloat())},b:function(){return o.mul(s.less(u).toFloat())}}},"Maximum")}}),zg=A({maximumStrict_:function(r,t){var e=C(r,"a","maximumStrict"),n=C(t,"b","maximumStrict");return Ae(e.shape,n.shape,"Error in maximumStrict: "),e.maximum(n)}}),bc=A({minimum_:function(r,t){var e,n=C(r,"a","minimum"),a=C(t,"b","minimum");return e=Le(n,a),n=e[0],a=e[1],n.dtype==="bool"&&(n=n.toInt(),a=a.toInt()),Ee(n.shape,a.shape),T.runKernelFunc(function(o,i){var s=o.minimum(n,a);return i([n,a]),s},{a:n,b:a},function(o,i){var s=i[0],u=i[1];return{a:function(){return o.mul(s.lessEqual(u).toFloat())},b:function(){return o.mul(s.greater(u).toFloat())}}},"Minimum")}}),Ug=A({minimumStrict_:function(r,t){var e=C(r,"a","minimumStrict"),n=C(t,"b","minimumStrict");return Ae(e.shape,n.shape,"Error in minimumStrict: "),e.minimum(n)}}),Gg=A({mod_:function(r,t){var e,n=C(r,"a","mod"),a=C(t,"b","mod");e=Le(n,a),n=e[0],a=e[1];var o=Ee(n.shape,a.shape);return T.runKernelFunc(function(i,s){var u=i.mod(n,a);return s([n,a]),u},{$a:n,$b:a},function(i,s){var u=s[0],c=s[1];return{$a:function(){var l=Ke(u.shape,o);return l.length>0?i.sum(l).reshape(u.shape):i},$b:function(){var l=i.mul(u.div(c).floor().neg()),d=Ke(c.shape,o);return d.length>0?l.sum(d).reshape(c.shape):l}}})}}),Hg=A({modStrict_:function(r,t){var e=C(r,"a","modStrict"),n=C(t,"b","modStrict");return Ae(e.shape,n.shape,"Error in modStrict: "),e.mod(n)}}),ut=A({mul_:function(r,t){var e,n=C(r,"a","mul"),a=C(t,"b","mul");e=Le(n,a),n=e[0],a=e[1];var o=Ee(n.shape,a.shape);return T.runKernelFunc(function(i,s){var u=i.multiply(n,a);return s([n,a]),u},{a:n,b:a},function(i,s){var u=s[0],c=s[1];return{a:function(){var l=i.mul(c.toFloat()),d=Ke(u.shape,o);return d.length>0?l.sum(d).reshape(u.shape):l},b:function(){var l=i.mul(u.toFloat()),d=Ke(c.shape,o);return d.length>0?l.sum(d).reshape(c.shape):l}}},"Mul")}}),$g=A({mulStrict_:function(r,t){var e=C(r,"a","mul"),n=C(t,"b","mul");return Ae(e.shape,n.shape,"Error in multiplyStrict: "),e.mul(n)}}),Ca=A({pow_:function(r,t){var e,n=C(r,"base","pow"),a=C(t,"exp","pow");e=Le(n,a),n=e[0],a=e[1];var o=Ee(n.shape,a.shape),i=[n,a];return T.runKernelFunc(function(s,u){var c=s.pow(n,a);return u([n,a,c]),c},{a:n,b:a},function(s,u){var c=u[0],l=u[1],d=u[2];return{a:function(){var h=l.toFloat(),f=s.mul(h.mul(c.pow(h.sub(J(1))))),p=Ke(c.shape,o);return p.length>0&&(f=f.sum(p)),f.reshape(c.shape)},b:function(){var h=c.greater(0),f=c.log().where(h,Ie(c)),p=s.mul(d.mul(f)),v=Ke(l.shape,o);return v.length>0&&(p=p.sum(v)),p.reshape(l.shape)}}},"Pow",{},i,[!0])}}),jg=A({powStrict_:function(r,t){return Ae(r.shape,t.shape,"Error in powStrict: "),r.pow(t)}}),qg=A({squaredDifferenceStrict_:function(r,t){var e=C(r,"a","squaredDifferenceStrict"),n=C(t,"b","squaredDifferenceStrict");return Ae(e.shape,n.shape,"Error in squaredDifferenceStrict: "),e.squaredDifference(n)}}),Xe=A({sub_:function(r,t){var e,n=C(r,"a","sub"),a=C(t,"b","sub");e=Le(n,a),n=e[0],a=e[1];var o=Ee(n.shape,a.shape);return T.runKernelFunc(function(i){return i.subtract(n,a)},{a:n,b:a},function(i){return{a:function(){var s=i,u=Ke(n.shape,o);return u.length>0&&(s=s.sum(u)),s.reshape(n.shape)},b:function(){var s=i,u=Ke(a.shape,o);return u.length>0&&(s=s.sum(u)),s.neg().reshape(a.shape)}}},"Sub")}}),Kg=A({subStrict_:function(r,t){var e=C(r,"a","subStrict"),n=C(t,"b","subStrict");return Ae(e.shape,n.shape,"Error in subStrict: "),e.sub(n)}}),yc=A({equal_:function(r,t){var e,n=C(r,"a","equal"),a=C(t,"b","equal");return e=Le(n,a),n=e[0],a=e[1],Ee(n.shape,a.shape),T.runKernelFunc(function(o){return o.equal(n,a)},{$a:n,$b:a})}}),Xg=A({equalStrict_:function(r,t){var e=C(r,"a","equalStrict"),n=C(t,"b","equalStrict");return Ae(e.shape,n.shape,"Error in equalStrict: "),e.equal(n)}}),Yg=A({greater_:function(r,t){var e,n=C(r,"a","greater"),a=C(t,"b","greater");return e=Le(n,a),n=e[0],a=e[1],Ee(n.shape,a.shape),T.runKernelFunc(function(o){return o.greater(n,a)},{a:n,b:a},null,"Greater")}}),wc=A({greaterEqual_:function(r,t){var e,n=C(r,"a","greaterEqual"),a=C(t,"b","greaterEqual");return e=Le(n,a),n=e[0],a=e[1],Ee(n.shape,a.shape),T.runKernelFunc(function(o,i){var s=o.greaterEqual(n,a);return i([n,a]),s},{a:n,b:a},function(o,i){var s=i[0],u=i[1];return{a:function(){return Ie(s)},b:function(){return Ie(u)}}},"GreaterEqual")}}),Jg=A({greaterEqualStrict_:function(r,t){var e=C(r,"a","greaterEqualStrict"),n=C(t,"b","greaterEqualStrict");return Ae(e.shape,n.shape,"Error in greaterEqualStrict: "),e.greaterEqual(n)}}),Qg=A({greaterStrict_:function(r,t){var e=C(r,"a","greaterStrict"),n=C(t,"b","greaterStrict");return Ae(e.shape,n.shape,"Error in greaterStrict: "),e.greater(n)}}),Zg=A({less_:function(r,t){var e,n=C(r,"a","less"),a=C(t,"b","less");return e=Le(n,a),n=e[0],a=e[1],Ee(n.shape,a.shape),T.runKernelFunc(function(o){return o.less(n,a)},{a:n,b:a},null,"Less")}}),e_=A({lessEqual_:function(r,t){var e,n=C(r,"a","lessEqual"),a=C(t,"b","lessEqual");return e=Le(n,a),n=e[0],a=e[1],Ee(n.shape,a.shape),T.runKernelFunc(function(o,i){var s=o.lessEqual(n,a);return i([n,a]),s},{a:n,b:a},null,"LessEqual")}}),t_=A({lessEqualStrict_:function(r,t){var e=C(r,"a","lessEqualStrict"),n=C(t,"b","lessEqualStrict");return Ae(e.shape,n.shape,"Error in lessEqualStrict: "),e.lessEqual(n)}}),n_=A({lessStrict_:function(r,t){var e=C(r,"a","lessStrict"),n=C(t,"b","lessStrict");return Ae(e.shape,n.shape,"Error in lessStrict: "),e.less(n)}}),r_=A({notEqual_:function(r,t){var e,n=C(r,"a","notEqual"),a=C(t,"b","notEqual");return e=Le(n,a),n=e[0],a=e[1],Ee(n.shape,a.shape),T.runKernelFunc(function(o){return o.notEqual(n,a)},{a:n,b:a},null,"NotEqual")}}),a_=A({notEqualStrict_:function(r,t){var e=C(r,"a","notEqualStrict"),n=C(t,"b","notEqualStrict");return Ae(e.shape,n.shape,"Error in notEqualStrict: "),e.notEqual(n)}});function Ls(r,t){for(var e=[],n=r;n<t;++n)e.push(n);return e}function Ws(r){for(var t=[],e=0;e<r.length;++e)for(var n=0;n<r[e].length;++n)t.push(r[e][n]);return t}var xi=A({gather_:function(r,t,e){e===void 0&&(e=0);var n=C(r,"x","gather"),a=C(t,"indices","gather","int32");e=Ye(e,n.shape)[0];var o=function(i,s,u){for(var c=i.shape[u],l=[],d=1,h=1,f=0;f<u;f++)l.push(i.shape[f]),d*=i.shape[f];for(f=0;f<s.rank;f++)l.push(s.shape[f]);for(f=u+1;f<i.rank;f++)l.push(i.shape[f]),h*=i.shape[f];return{batchSize:d,sliceSize:h,dimSize:c,outputShape:l}}(n,a,e);return T.runKernelFunc(function(i,s){var u=i.gather(n,a.flatten(),e);return s([a]),u},{x:n,indices:a},function(i,s){var u=s[0];return{x:function(){var c=n.shape,l=u.size,d=c.slice(0,e),h=d.length,f=c.slice(e,c.length).slice(1),p=f.length,v=Ls(0,h),m=Ls(h+1,h+1+p),g=Ws([d,[l],f]),x=i.reshape(g),b=u.reshape([l]),_=Ws([[h],v,m]),y=x.transpose(_),w=Cc(y,b,n.shape[e]),S=oi(_);return w=w.transpose(S)},indices:function(){return u}}},"Gather",{axis:e}).reshape(o.outputShape)}}),Cc=A({unsortedSegmentSum_:function(r,t,e){var n=C(r,"x","unsortedSegmentSum"),a=C(t,"segmentIds","unsortedSegmentSum","int32");return E(ze(e),function(){return"numSegments must be of dtype int"}),T.runKernelFunc(function(o,i){var s=o.unsortedSegmentSum(n,a,e);return i([a]),s},{$x:n},function(o,i){var s=i[0];return{$x:function(){return function(u,c){for(var l=_i(c,Ie(c)),d=xi(u,l),h=wc(c,J(0,"int32")),f=d.rank-h.rank,p=0;p<f;++p)h=Et(h,p+1);h=Ma(h,vr(d.shape,"bool"));var v=Ie(d);return Bn(h,d,v)}(o,s)}}})}}),o_=function(r,t,e){return ne(this,void 0,void 0,function(){var n,a,o,i,s,u,c,l,d,h,f,p,v;return re(this,function(m){switch(m.label){case 0:for(n=C(r,"tensor","boolMask"),a=C(t,"mask","boolMask","bool"),o=e??0,i=a.rank,s=n.shape,E(i>0,function(){return"mask cannot be scalar"}),Ae(s.slice(o,o+i),a.shape,"mask's shape must match the first K dimensions of tensor's shape,"),u=1,c=o;c<o+i;c++)u*=s[c];return l=s.slice(0,o).concat([u],s.slice(o+i)),d=n.reshape(l),h=a.reshape([-1]),[4,_c(h)];case 1:return f=m.sent(),p=f.squeeze([1]),v=xi(d,p,o),r!==n&&n.dispose(),t!==a&&a.dispose(),p.dispose(),d.dispose(),h.dispose(),f.dispose(),[2,v]}})})};function Ec(r,t,e,n,a,o,i){o===void 0&&(o="NHWC"),E(r.length===t.rank,function(){return"Length of inShape ("+r.length+") and rank of dy ("+t.rank+") must match"});var s=r,u=t,c=!1;t.rank===3&&(c=!0,u=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]),s=[1,r[0],r[1],r[2]]),E(s.length===4,function(){return"Error in conv2dDerInput: inShape must be length 4, but got length "+s.length+"."}),E(u.rank===4,function(){return"Error in conv2dDerInput: dy must be rank 4, but got rank "+u.rank}),E(e.rank===4,function(){return"Error in conv2dDerInput: filter must be rank 4, but got rank "+e.rank});var l=o==="NHWC"?s[3]:s[1],d=o==="NHWC"?u.shape[3]:u.shape[1];E(l===e.shape[2],function(){return"Error in conv2dDerInput: depth of input ("+l+") must match input depth for filter "+e.shape[2]+"."}),E(d===e.shape[3],function(){return"Error in conv2dDerInput: depth of output ("+d+") must match output depth for filter "+e.shape[3]+"."}),i!=null&&E(ze(a),function(){return"Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+"."});var h=li(o),f=zn(s,e.shape,n,1,a,i,!1,h),p=T.runKernelFunc(function(v,m){var g=v.conv2dDerInput(u,e,f);return m([e,u]),g},{dy4D:u,filter:e},function(v,m){var g=m[0],x=m[1];return{dy4D:function(){return Dt(v,g,n,a,o,1,i)},filter:function(){return bi(v,x,g.shape,n,a,o,i)}}});return c?p.as3D(p.shape[1],p.shape[2],p.shape[3]):p}function _o(r){var t=function(o){return typeof o=="number"?[o,o,o]:o.length===2?[o[0],o[1],1]:o}(r),e=t[0],n=t[1],a=t[2];return e===1&&n===1&&a===1}function Rc(r,t,e,n,a){E(r.length===t.rank,function(){return"Length of inShape ("+r.length+") and rank of dy ("+t.rank+") must match"});var o=r,i=t,s=!1;t.rank===4&&(s=!0,i=t.as5D(1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]),o=[1,r[0],r[1],r[2],r[3]]);var u=o[4],c=i.shape[4];E(o.length===5,function(){return"Error in conv3dDerInput: inShape must be length 5, but got length "+o.length+"."}),E(i.rank===5,function(){return"Error in conv3dDerInput: dy must be rank 5, but got rank "+i.rank}),E(e.rank===5,function(){return"Error in conv3dDerInput: filter must be rank 5, but got rank "+e.rank}),E(u===e.shape[3],function(){return"Error in conv3dDerInput: depth of input ("+u+") must match input depth for filter "+e.shape[3]+"."}),E(c===e.shape[4],function(){return"Error in conv3dDerInput: depth of output ("+c+") must match output depth for filter "+e.shape[4]+"."});var l=ba(o,e.shape,n,1,a),d=T.runKernelFunc(function(h){return h.conv3dDerInput(i,e,l)},{dy5D:i});return s?d.as4D(d.shape[1],d.shape[2],d.shape[3],d.shape[4]):d}var i_=A({conv1d_:function(r,t,e,n,a,o,i){a===void 0&&(a="NWC"),o===void 0&&(o=1);var s=C(r,"x","conv1d"),u=C(t,"filter","conv1d"),c=s,l=!1;s.rank===2&&(l=!0,c=s.as3D(1,s.shape[0],s.shape[1])),E(c.rank===3,function(){return"Error in conv1d: input must be rank 3, but got rank "+c.rank+"."}),E(u.rank===3,function(){return"Error in conv1d: filter must be rank 3, but got rank "+u.rank+"."}),i!=null&&E(ze(n),function(){return"Error in conv1d: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+n+"."}),E(c.shape[2]===u.shape[1],function(){return"Error in conv1d: depth of input ("+c.shape[2]+") must match input depth for filter "+u.shape[1]+"."}),E(mt(e,o),function(){return"Error in conv1D: Either stride or dilation must be 1. Got stride "+e+" and dilation '"+o+"'"}),E(a==="NWC",function(){return"Error in conv1d: got dataFormat of "+a+" but only NWC is currently supported."});var d=u.as4D(1,u.shape[0],u.shape[1],u.shape[2]),h=c.as4D(c.shape[0],1,c.shape[1],c.shape[2]),f=Dt(h,d,[1,e],n,"NHWC",[1,o],i);return l?f.as2D(f.shape[2],f.shape[3]):f.as3D(f.shape[0],f.shape[2],f.shape[3])}}),Dt=A({conv2d_:function(r,t,e,n,a,o,i){a===void 0&&(a="NHWC"),o===void 0&&(o=[1,1]);var s=C(r,"x","conv2d"),u=C(t,"filter","conv2d"),c=s,l=!1;s.rank===3&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),E(c.rank===4,function(){return"Error in conv2d: input must be rank 4, but got rank "+c.rank+"."}),E(u.rank===4,function(){return"Error in conv2d: filter must be rank 4, but got rank "+u.rank+"."}),i!=null&&E(ze(n),function(){return"Error in conv2d: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+n+"."});var d=a==="NHWC"?c.shape[3]:c.shape[1];E(d===u.shape[2],function(){return"Error in conv2d: depth of input ("+d+") must match input depth for filter "+u.shape[2]+"."}),E(mt(e,o),function(){return"Error in conv2D: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+o+"'"});var h=li(a),f=zn(c.shape,u.shape,e,o,n,i,!1,h),p=[u,c],v=T.runKernelFunc(function(m,g){var x=m.conv2d(c,u,f);return g([u,c]),x},{x:c,filter:u},function(m,g){var x=g,b=x[0],_=x[1];return E(fr(o),function(){return"Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+o+"'"}),{x:function(){return kc(_.shape,m,b,e,n,a)},filter:function(){return bi(_,m,b.shape,e,n,a)}}},"Conv2D",f,p);return l?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),s_=A({conv3d_:function(r,t,e,n,a,o){a===void 0&&(a="NDHWC"),o===void 0&&(o=[1,1,1]);var i=C(r,"x","conv3d"),s=C(t,"filter","conv3d"),u=i,c=!1;i.rank===4&&(c=!0,u=i.as5D(1,i.shape[0],i.shape[1],i.shape[2],i.shape[3])),E(u.rank===5,function(){return"Error in conv3d: input must be rank 5, but got rank "+u.rank+"."}),E(s.rank===5,function(){return"Error in conv3d: filter must be rank 5, but got rank "+s.rank+"."}),E(u.shape[4]===s.shape[3],function(){return"Error in conv3d: depth of input ("+u.shape[4]+") must match input depth for filter "+s.shape[3]+"."}),E(function(h,f){return _o(h)||_o(f)}(e,o),function(){return"Error in conv3D: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+o+"'"}),E(a==="NDHWC",function(){return"Error in conv3d: got dataFormat of "+a+" but only NDHWC is currently supported."});var l=ba(u.shape,s.shape,e,o,n),d=T.runKernelFunc(function(h,f){var p=h.conv3d(u,s,l);return f([u,s]),p},{x:u,$filter:s},function(h,f){E(_o(o),function(){return"Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+o+"'"});var p=f[0],v=f[1];return{x:function(){return Rc(p.shape,h,v,e,n)},$filter:function(){return function(m,g,x,b,_){var y=m;m.rank===4&&(y=m.as5D(1,m.shape[0],m.shape[1],m.shape[2],m.shape[3]));var w=g;w.rank===4&&(w=g.as5D(1,g.shape[0],g.shape[1],g.shape[2],g.shape[3])),E(y.rank===5,function(){return"Error in conv3dDerFilter: input must be rank 5, but got shape "+y.shape+"."}),E(w.rank===5,function(){return"Error in conv3dDerFilter: dy must be rank 5, but got shape "+w.shape+"."}),E(x.length===5,function(){return"Error in conv3dDerFilter: filterShape must be length 5, but got "+x+"."}),E(y.shape[4]===x[3],function(){return"Error in conv3dDerFilter: depth of input "+y.shape[4]+") must match input depth in filter ("+x[3]+"."}),E(w.shape[4]===x[4],function(){return"Error in conv3dDerFilter: depth of dy ("+w.shape[4]+") must match output depth for filter ("+x[4]+")."});var S=ba(y.shape,x,b,1,_);return T.runKernelFunc(function(I){return I.conv3dDerFilter(y,w,S)},{x5D:y,dy5D:w})}(p,h,v.shape,e,n)}}});return c?d.as4D(d.shape[1],d.shape[2],d.shape[3],d.shape[4]):d}}),bi=A({conv2dDerFilter_:function(r,t,e,n,a,o,i){o===void 0&&(o="NHWC");var s=r;r.rank===3&&(s=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var u=t;u.rank===3&&(u=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),E(s.rank===4,function(){return"Error in conv2dDerFilter: input must be rank 4, but got shape "+s.shape+"."}),E(u.rank===4,function(){return"Error in conv2dDerFilter: dy must be rank 4, but got shape "+u.shape+"."}),E(e.length===4,function(){return"Error in conv2dDerFilter: filterShape must be length 4, but got "+e+"."});var c=o==="NHWC"?s.shape[3]:s.shape[1],l=o==="NHWC"?u.shape[3]:u.shape[1];E(c===e[2],function(){return"Error in conv2dDerFilter: depth of input "+c+") must match input depth in filter ("+e[2]+"."}),E(l===e[3],function(){return"Error in conv2dDerFilter: depth of dy ("+l+") must match output depth for filter ("+e[3]+")."}),i!=null&&E(ze(a),function(){return"Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+a+"."});var d=li(o),h=zn(s.shape,e,n,1,a,i,!1,d);return T.runKernelFunc(function(f){return f.conv2dDerFilter(s,u,h)},{x4D:s,dy4D:u})}}),kc=A({conv2dDerInput_:Ec}),Oa=A({depthwiseConv2d_:function(r,t,e,n,a,o,i){o===void 0&&(o=[1,1]);var s=C(r,"x","depthwiseConv2d"),u=C(t,"filter","depthwiseConv2d"),c=s,l=!1;s.rank===3&&(l=!0,c=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),E(c.rank===4,function(){return"Error in depthwiseConv2d: input must be rank 4, but got rank "+c.rank+"."}),E(u.rank===4,function(){return"Error in depthwiseConv2d: filter must be rank 4, but got rank "+u.rank+"."}),E(c.shape[3]===u.shape[2],function(){return"Error in depthwiseConv2d: number of input channels ("+c.shape[3]+") must match the inChannels dimension in filter "+u.shape[2]+"."}),o==null&&(o=[1,1]),E(mt(e,o),function(){return"Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+o+"'"}),i!=null&&E(ze(n),function(){return"Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode "+i+" but got pad "+n+"."});var d=zn(c.shape,u.shape,e,o,n,i,!0),h=[c,u],f=T.runKernelFunc(function(p,v){var m=p.depthwiseConv2D(c,u,d);return v([c,u]),m},{x:c,filter:u},function(p,v){E(fr(o),function(){return"Error in gradient of depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+o+"'"});var m=v[0],g=v[1];return{x:function(){return Ic(m.shape,p,g,d)},filter:function(){return Sc(m,p,g.shape,d)}}},"DepthwiseConv2dNative",d,h);return l?f.as3D(f.shape[1],f.shape[2],f.shape[3]):f}}),Ic=A({depthwiseConv2dDerInput_:function(r,t,e,n){var a=t,o=!1;t.rank===3&&(o=!0,a=t.as4D(1,t.shape[0],t.shape[1],t.shape[2]));var i=T.runKernelFunc(function(s){return s.depthwiseConv2DDerInput(a,e,n)},{dy4D:a});return o?i.as3D(i.shape[1],i.shape[2],i.shape[3]):i}}),Sc=A({depthwiseConv2dDerFilter_:function(r,t,e,n){var a=r;r.rank===3&&(a=r.as4D(1,r.shape[0],r.shape[1],r.shape[2]));var o=t;return o.rank===3&&(o=t.as4D(1,t.shape[0],t.shape[1],t.shape[2])),T.runKernelFunc(function(i){return i.depthwiseConv2DDerFilter(a,o,n)},{x4D:a,dy4D:o})}}),yi=A({separableConv2d_:function(r,t,e,n,a,o,i){o===void 0&&(o=[1,1]),i===void 0&&(i="NHWC");var s=C(r,"x","separableConv2d"),u=C(t,"depthwiseFilter","separableConv2d"),c=C(e,"pointwiseFilter","separableConv2d"),l=s,d=!1;if(s.rank===3&&(d=!0,l=s.as4D(1,s.shape[0],s.shape[1],s.shape[2])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");E(l.rank===4,function(){return"Error in separableConv2d: input must be rank 4, but got rank "+l.rank+"."}),E(u.rank===4,function(){return"Error in separableConv2d: depthwise filter must be rank 4, but got rank "+u.rank+"."}),E(c.rank===4,function(){return"Error in separableConv2d: pointwise filter must be rank 4, but got rank "+u.rank+"."}),E(c.shape[0]===1,function(){return"Error in separableConv2d: the first dimension of pointwise filter  must be 1, but got "+c.shape[0]+"."}),E(c.shape[1]===1,function(){return"Error in separableConv2d: the second dimension of pointwise filter must be 1, but got "+c.shape[1]+"."});var h=u.shape[2],f=u.shape[3];E(c.shape[2]===h*f,function(){return"Error in separableConv2d: the third dimension of pointwise filter must be "+h*f+", but got "+c.shape[2]+"."});var p=Oa(l,u,n,a,i,o),v=Dt(p,c,1,"valid",i);return d?v.as3D(v.shape[1],v.shape[2],v.shape[3]):v}}),u_=A({conv2dTranspose_:function(r,t,e,n,a,o){return Ec(e,C(r,"x","conv2dTranspose"),C(t,"filter","conv2dTranspose"),n,a,"NHWC",o)}}),c_=A({conv3dTranspose_:function(r,t,e,n,a){return Rc(e,C(r,"x","conv3dTranspose"),C(t,"filter","conv3dTranspose"),n,a)}}),Ba=A({matMul_:function(r,t,e,n){var a;e===void 0&&(e=!1),n===void 0&&(n=!1);var o=C(r,"a","matMul"),i=C(t,"b","matMul");a=Le(o,i),o=a[0],i=a[1];var s=e?o.shape[o.rank-2]:o.shape[o.rank-1],u=n?i.shape[i.rank-1]:i.shape[i.rank-2],c=e?o.shape[o.rank-1]:o.shape[o.rank-2],l=n?i.shape[i.rank-2]:i.shape[i.rank-1],d=o.shape.slice(0,-2),h=i.shape.slice(0,-2),f=ae(d),p=ae(h);E(o.rank>=2&&i.rank>=2&&o.rank===i.rank,function(){return"Error in matMul: inputs must have the same rank of at least 2, got ranks "+o.rank+" and "+i.rank+"."}),E(Qe(d,h),function(){return"Error in matMul: outer dimensions ("+d+") and ("+h+") of Tensors with shapes "+o.shape+" and "+i.shape+" must match."}),E(s===u,function(){return"Error in matMul: inner shapes ("+s+") and ("+u+") of Tensors with shapes "+o.shape+" and "+i.shape+" and transposeA="+e+" and transposeB="+n+" must match."});var v=o.shape.slice(0,-2).concat([c,l]),m=e?o.as3D(f,s,c):o.as3D(f,c,s),g=n?i.as3D(p,l,u):i.as3D(p,u,l),x={transposeA:e,transposeB:n};return T.runKernelFunc(function(b,_){var y=b.batchMatMul(m,g,e,n);return _([m,g]),y},{a:m,b:g},function(b,_){var y=_,w=y[0],S=y[1];return e||n?!e&&n?{a:function(){return b.matMul(S,!1,!1)},b:function(){return b.matMul(w,!0,!1)}}:e&&!n?{a:function(){return S.matMul(b,!1,!0)},b:function(){return w.matMul(b,!1,!1)}}:{a:function(){return S.matMul(b,!0,!0)},b:function(){return b.matMul(w,!0,!0)}}:{a:function(){return b.matMul(S,!1,!0)},b:function(){return w.matMul(b,!0,!1)}}},"BatchMatMul",x).reshape(v)}}),l_=A({dot_:function(r,t){var e=C(r,"t1","dot"),n=C(t,"t2","dot");E(!(e.rank!==1&&e.rank!==2||n.rank!==1&&n.rank!==2),function(){return"Error in dot: inputs must all be rank 1 or 2, but got ranks "+e.rank+" and "+n.rank+"."});var a=e.rank===1?e.size:e.shape[1],o=n.rank===1?n.size:n.shape[0];return E(a===o,function(){return"Error in dot: inner dimensions of inputs must match, but got "+a+" and "+o+"."}),e.rank===1&&n.rank===1?e.as2D(1,-1).matMul(n.as2D(-1,1)).asScalar():e.rank===1&&n.rank===2?e.as2D(1,-1).matMul(n.as2D(n.shape[0],n.shape[1])).as1D():e.rank===2&&n.rank===1?e.matMul(n.as2D(-1,1)).as1D():e.matMul(n.as2D(n.shape[0],n.shape[1]))}}),d_=A({outerProduct_:function(r,t){var e=C(r,"v1","outerProduct"),n=C(t,"v2","outerProduct");return E(e.rank===1&&n.rank===1,function(){return"Error in outerProduct: inputs must be rank 1, but got ranks "+e.rank+" and "+n.rank+"."}),e.as2D(-1,1).matMul(n.as2D(1,-1))}}),zr=A({reverse_:function(r,t){var e=C(r,"x","reverse");if(e.rank===0)return e.clone();var n=Ye(t,e.shape);return T.runKernelFunc(function(a){return a.reverse(e,n)},{$x:e},function(a){return{$x:function(){return a.reverse(n)}}}).reshapeAs(e)}}),h_=A({reverse1d_:function(r){var t=C(r,"x","reverse");return E(t.rank===1,function(){return"Error in reverse1D: x must be rank 1 but got rank "+t.rank+"."}),zr(t,0)}}),f_=A({reverse2d_:function(r,t){var e=C(r,"x","reverse");return E(e.rank===2,function(){return"Error in reverse2D: x must be rank 2 but got rank "+e.rank+"."}),zr(e,t)}}),p_=A({reverse3d_:function(r,t){var e=C(r,"x","reverse");return E(e.rank===3,function(){return"Error in reverse3D: x must be rank 3 but got rank "+e.rank+"."}),zr(e,t)}}),v_=A({reverse4d_:function(r,t){var e=C(r,"x","reverse");return E(e.rank===4,function(){return"Error in reverse4D: x must be rank 4 but got rank "+e.rank+"."}),zr(e,t)}});function Ac(r,t,e,n,a,o){var i=C(r,"x","maxPool"),s=i,u=!1;i.rank===3&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),n==null&&(n=[1,1]),E(s.rank===4,function(){return"Error in maxPool: input must be rank 4 but got rank "+s.rank+"."}),E(mt(e,n),function(){return"Error in maxPool: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+n+"'"}),o!=null&&E(ze(a),function(){return"Error in maxPool: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+a+"."});var c=Ar(s.shape,t,e,n,a,o);if(c.filterWidth===1&&c.filterHeight===1&&Qe(c.inShape,c.outShape))return i.clone();var l=[s],d=T.runKernelFunc(function(h,f){var p=h.maxPool(s,c);return f([s,p]),p},{x:s},function(h,f){var p=f[0],v=f[1];return{x:function(){return function(m,g,x,b,_,y,w,S){var I=C(m,"dy","maxPoolBackprop"),k=C(g,"input","maxPoolBackprop"),R=C(x,"output","maxPoolBackprop");E(k.rank===I.rank,function(){return"Rank of input ("+k.rank+") does not match rank of dy ("+I.rank+")"}),y==null&&(y=[1,1]),E(mt(_,y),function(){return"Error in maxPoolBackProp: Either strides or dilations must be 1. Got strides "+_+" and dilations '"+y+"'"}),E(I.rank===4,function(){return"Error in maxPoolBackprop: dy must be rank 4 but got rank "+I.rank+"."}),E(k.rank===4,function(){return"Error in maxPoolBackprop: input must be rank 4 but got rank "+k.rank+"."}),S!=null&&E(ze(w),function(){return"Error in maxPoolBackprop: pad must be an integer when using, dimRoundingMode "+S+" but got pad "+w+"."});var N=Ar(k.shape,b,_,y,w,S);return T.runKernelFunc(function(D){return D.maxPoolBackprop(I,k,R,N)},{$dy:I,$input:k})}(h,p,v,t,e,n,a)}}},"MaxPool",c,l);return u?d.as3D(d.shape[1],d.shape[2],d.shape[3]):d}function Dc(r,t,e,n,a,o){var i=C(r,"x","avgPool","float32");n==null&&(n=[1,1]),E(mt(e,n),function(){return"Error in avgPool: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+n+"'"});var s=i,u=!1;i.rank===3&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),E(s.rank===4,function(){return"Error in avgPool: x must be rank 4 but got rank "+s.rank+"."}),o!=null&&E(ze(a),function(){return"Error in avgPool: pad must be an integer when using, dimRoundingMode "+o+" but got pad "+a+"."});var c=Ar(s.shape,t,e,n,a,o);if(c.filterWidth===1&&c.filterHeight===1&&Qe(c.inShape,c.outShape))return i.clone();var l=T.runKernelFunc(function(d){return d.avgPool(s,c)},{x:s},function(d){return{x:function(){return function(h,f,p,v,m,g){var x=C(h,"dy","avgPoolBackprop"),b=C(f,"input","avgPoolBackprop");E(b.rank===x.rank,function(){return"Rank of input ("+b.rank+") does not match rank of dy ("+x.rank+")"}),m==null&&(m=[1,1]),E(mt(v,m),function(){return"Error in avgPoolBackprop: Either strides or dilations must be 1. Got strides "+v+" and dilations '"+m+"'"});var _=b,y=x,w=!1;b.rank===3&&(w=!0,_=b.as4D(1,b.shape[0],b.shape[1],b.shape[2]),y=x.as4D(1,x.shape[0],x.shape[1],x.shape[2])),E(y.rank===4,function(){return"Error in avgPoolBackprop: dy must be rank 4 but got rank "+y.rank+"."}),E(_.rank===4,function(){return"Error in avgPoolBackprop: input must be rank 4 but got rank "+_.rank+"."});var S=Ar(_.shape,p,v,m,g),I=T.runKernelFunc(function(k){return k.avgPoolBackprop(y,_,S)},{dy4D:y,input4D:_});return w?I.as3D(I.shape[1],I.shape[2],I.shape[3]):I}(d,s,t,e,n,a)}}},"AvgPool",c);return l=l.cast(i.dtype),u?l.as3D(l.shape[1],l.shape[2],l.shape[3]):l}var Je=A({maxPool_:function(r,t,e,n,a){return Ac(r,t,e,1,n,a)}}),Ur=A({avgPool_:function(r,t,e,n,a){return Dc(r,t,e,1,n,a)}}),m_=A({pool_:function(r,t,e,n,a,o){a==null&&(a=[1,1]),o==null&&(o=1),n===0&&(n="valid");var i=C(r,"x","maxPool"),s=i,u=!1;i.rank===3&&(u=!0,s=i.as4D(1,i.shape[0],i.shape[1],i.shape[2])),E(mt(o,a),function(){return"Error in pool: Either strides or dilations must be 1. Got strides "+o+" and dilations '"+a+"'"});var c,l=Ar(s.shape,t,o,a,n),d=[l.dilationHeight,l.dilationWidth];c=n==="same"?function(_,y){var w=_.map(function(k,R){return k+(k-1)*(y[R]-1)}).map(function(k){return k-1}),S=w.map(function(k){return Math.floor(k/2)}),I=w.map(function(k,R){return k-S[R]});return w.map(function(k,R){return[S[R],I[R]]})}([l.filterHeight,l.filterWidth],d):[[0,0],[0,0]];var h=d[0]===1&&d[1]===1,f=function(_,y,w){var S=w.map(function(L){return L[0]}),I=w.map(function(L){return L[1]}),k=_.concat(S,I),R=y.map(function(L,W){return(L-k[W]%L)%L}),N=I.map(function(L,W){return L+R[W]}),D=y.map(function(L,W){return[S[W],N[W]]}),V=y.map(function(L,W){return[0,R[W]]});return[D,V]}([l.inHeight,l.inWidth],d,c),p=f[0],v=f[1],m=h?n:"valid",g=h?s:Ou(s,d,p),x=(e==="avg"?function(){return Dc(g,t,o,1,m)}:function(){return Ac(g,t,o,1,m)})(),b=h?x:Fu(x,d,v);return u?b.as3D(b.shape[1],b.shape[2],b.shape[3]):b}}),g_=A({maxPool3d_:function(r,t,e,n,a,o,i){o===void 0&&(o="NDHWC");var s=C(r,"x","maxPool3d"),u=s,c=!1;s.rank===4&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),i==null&&(i=[1,1,1]),E(u.rank===5,function(){return"Error in maxPool3d: x must be rank 5 but got rank "+u.rank+"."}),E(o==="NDHWC",function(){return"Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of "+o}),E(mt(e,i),function(){return"Error in maxPool3d: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+i+"'"}),a!=null&&E(ze(n),function(){return"Error in maxPool3d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+n+"."});var l=xa(u.shape,t,e,i,n,a,o),d=T.runKernelFunc(function(h,f){var p=h.maxPool3d(u,l);return f([u,p]),p},{x:u},function(h,f){var p=f[0],v=f[1];return{x:function(){return function(m,g,x,b,_,y,w,S){var I=C(m,"dy","maxPool3dBackprop"),k=C(g,"input","maxPool3dBackprop"),R=C(x,"output","maxPool3dBackprop"),N=I,D=k,V=R,L=!1;k.rank===4&&(L=!0,N=I.as5D(1,I.shape[0],I.shape[1],I.shape[2],I.shape[3]),D=k.as5D(1,k.shape[0],k.shape[1],k.shape[2],k.shape[3]),V=R.as5D(1,R.shape[0],R.shape[1],R.shape[2],R.shape[3])),E(N.rank===5,function(){return"Error in maxPool3dBackprop: dy must be rank 5 but got rank "+N.rank+"."}),E(D.rank===5,function(){return"Error in maxPool3dBackprop: input must be rank 5 but got rank "+D.rank+"."}),E(V.rank===5,function(){return"Error in maxPool3dBackprop: output must be rank 5 but got rank "+V.rank+"."}),y==null&&(y=[1,1,1]),E(mt(_,y),function(){return"Error in maxPool3dBackprop: Either strides or dilations must be 1. Got strides "+_+" and dilations '"+y+"'"}),S!=null&&E(ze(w),function(){return"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+S+" but got pad "+w+"."});var W=xa(D.shape,b,_,y,w,S),H=T.runKernelFunc(function(G){return G.maxPool3dBackprop(N,D,V,W)},{dy5D:N,input5D:D});return L?H.as4D(H.shape[1],H.shape[2],H.shape[3],H.shape[4]):H}(h,p,v,t,e,i,n,a)}}});return c?d.as4D(d.shape[1],d.shape[2],d.shape[3],d.shape[4]):d}}),__=A({avgPool3d_:function(r,t,e,n,a,o,i){o===void 0&&(o="NDHWC");var s=C(r,"x","avgPool3d","float32"),u=s,c=!1;s.rank===4&&(c=!0,u=s.as5D(1,s.shape[0],s.shape[1],s.shape[2],s.shape[3])),i==null&&(i=[1,1,1]),E(u.rank===5,function(){return"Error in avgPool3d: x must be rank 5 but got rank "+u.rank+"."}),E(o==="NDHWC",function(){return"Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of "+o}),E(mt(e,i),function(){return"Error in avgPool3d: Either strides or dilations must be 1. Got strides "+e+" and dilations '"+i+"'"}),a!=null&&E(ze(n),function(){return"Error in avgPool3d: pad must be an integer when using, dimRoundingMode "+a+" but got pad "+n+"."});var l=xa(u.shape,t,e,i,n,a,o),d=T.runKernelFunc(function(h){return h.avgPool3d(u,l)},{x:u},function(h){return{x:function(){return function(f,p,v,m,g,x,b){var _=C(f,"dy","avgPool3dBackprop"),y=C(p,"input","avgPool3dBackprop"),w=_,S=y,I=!1;y.rank===4&&(I=!0,w=_.as5D(1,_.shape[0],_.shape[1],_.shape[2],_.shape[3]),S=y.as5D(1,y.shape[0],y.shape[1],y.shape[2],y.shape[3])),E(w.rank===5,function(){return"Error in avgPool3dBackprop: dy must be rank 5 but got rank "+w.rank+"."}),E(S.rank===5,function(){return"Error in avgPool3dBackprop: input must be rank 5 but got rank "+S.rank+"."}),g==null&&(g=[1,1,1]),E(mt(m,g),function(){return"Error in avgPool3dBackprop: Either strides or dilations must be 1. Got strides "+m+" and dilations '"+g+"'"}),b!=null&&E(ze(x),function(){return"Error in maxPool3dBackprop: pad must be an integer when using, dimRoundingMode "+b+" but got pad "+x+"."});var k=xa(S.shape,v,m,g,x,b),R=T.runKernelFunc(function(N){return N.avgPool3dBackprop(w,S,k)},{dy5D:w,input5D:S});return I?R.as4D(R.shape[1],R.shape[2],R.shape[3],R.shape[4]):R}(h,u,t,e,i,n,a)}}});return d=d.cast(u.dtype),c?d.as4D(d.shape[1],d.shape[2],d.shape[3],d.shape[4]):d}}),Xt=A({slice_:function(r,t,e){var n,a,o=C(r,"x","slice");if(o.rank===0)throw new Error("Slicing scalar is not possible");(n=typeof t=="number"?[t].concat(new Array(o.rank-1).fill(0)):t.length<o.rank?t.concat(new Array(o.rank-t.length).fill(0)):t.slice()).forEach(function(u){E(u!==-1,function(){return"slice() does not support negative begin indexing."})}),a=(a=e==null?new Array(o.rank).fill(-1):typeof e=="number"?[e].concat(new Array(o.rank-1).fill(-1)):e.length<o.rank?e.concat(new Array(o.rank-e.length).fill(-1)):e).map(function(u,c){return u>=0?u:(E(u===-1,function(){return"Negative size values should be exactly -1 but got "+u+" for the slice() size at index "+c+"."}),o.shape[c]-n[c])}),jp(o,n,a);var i=o.shape,s={begin:n,size:a};return T.runKernelFunc(function(u){return u.slice(o,n,a)},{x:o},function(u){for(var c=[],l=0;l<u.rank;l++)c.push([n[l],i[l]-n[l]-a[l]]);return{x:function(){return u.pad(c)}}},"Slice",s)}}),x_=A({slice1d_:function(r,t,e){var n=C(r,"x","slice1d");return E(n.rank===1,function(){return"slice1d expects a rank-1 tensor, but got a rank-"+n.rank+" tensor"}),Xt(n,[t],[e])}}),b_=A({slice2d_:function(r,t,e){var n=C(r,"x","slice2d");return E(n.rank===2,function(){return"slice2d expects a rank-2 tensor, but got a rank-"+n.rank+" tensor"}),Xt(n,t,e)}}),Tc=A({slice3d_:function(r,t,e){var n=C(r,"x","slice3d");return E(n.rank===3,function(){return"slice3d expects a rank-3 tensor, but got a rank-"+n.rank+" tensor"}),Xt(n,t,e)}}),y_=A({slice4d_:function(r,t,e){var n=C(r,"x","slice4d");return E(n.rank===4,function(){return"slice4d expects a rank-4 tensor, but got a rank-"+n.rank+" tensor"}),Xt(n,t,e)}});function Nc(r,t,e,n,a){return t.rank<e.rank&&(t=t.reshape(vt(t.shape,n))),r.rank<e.rank&&(r=r.reshape(vt(r.shape,n))),{x:function(){var o=r.mul(e.equal(t).cast(r.dtype));return a==null?o:o.transpose(a)}}}var w_=A({all_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=C(r,"x","all","bool"),a=Ye(t,n.shape),o=a,i=Jt(o,n.rank);i!=null&&(n=n.transpose(i),o=Qt(o.length,n.rank));var s=T.runKernelFunc(function(c){return c.all(n,o)},{$x:n});if(e){var u=vt(s.shape,a);return s.reshape(u)}return s}}),C_=A({any_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=C(r,"x","any","bool"),a=Ye(t,n.shape),o=a,i=Jt(o,n.rank);i!=null&&(n=n.transpose(i),o=Qt(o.length,n.rank));var s=T.runKernelFunc(function(c){return c.any(n,o)},{$x:n});if(e){var u=vt(s.shape,a);return s.reshape(u)}return s}}),E_=A({argMax_:function(r,t){t===void 0&&(t=0);var e=C(r,"x","argMax");t==null&&(t=0);var n=Ye(t,e.shape),a=Jt(n,e.rank);a!=null&&(e=e.transpose(a),n=Qt(n.length,e.rank));var o={axis:n[0]},i=[e];return T.runKernelFunc(function(s,u){var c=s.argMax(e,n[0]);return u([e]),c},{x:e},function(s,u){var c=u[0];return{x:function(){return Ie(c)}}},"ArgMax",o,i)}}),R_=A({argMin_:function(r,t){t===void 0&&(t=0);var e=C(r,"x","argMin");t==null&&(t=0);var n=Ye(t,e.shape),a=Jt(n,e.rank);return a!=null&&(e=e.transpose(a),n=Qt(n.length,e.rank)),T.runKernelFunc(function(o,i){var s=o.argMin(e,n[0]);return i([e]),s},{$x:e},function(o,i){var s=i[0];return{$x:function(){return Ie(s)}}})}}),k_=A({logSumExp_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=C(r,"x","logSumExp"),a=Ye(t,n.shape),o=n.max(a,!0),i=n.sub(o).exp().sum(a).log(),s=o.reshape(i.shape).add(i);if(e){var u=vt(s.shape,a);return s.reshape(u)}return s}}),La=A({max_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=C(r,"x","max"),a=n,o=Ye(t,n.shape),i=o,s=Jt(i,n.rank);s!=null&&(n=n.transpose(s),i=Qt(i.length,n.rank));var u=[n],c=T.runKernelFunc(function(d,h){var f=d.max(n,i);return h([a,f]),f},{x:n},function(d,h){return Nc(d,h[1],h[0],o,s)},"Max",{axes:i},u,[!0]);if(e){var l=vt(c.shape,o);c=c.reshape(l)}return c}}),I_=A({mean_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=C(r,"x","mean"),a=Ye(t,n.shape),o=ae(at(n.shape,a)[1]);return Fa(function(i){var s=J(o);return{value:(s.dtype===i.dtype?i:i.cast(s.dtype)).div(s).sum(t,e),gradFunc:function(u){var c=i.shape.slice();return a.forEach(function(l){c[l]=1}),u.reshape(c).mul(vr(i.shape,"float32")).div(o)}}})(n)}}),S_=A({min_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=C(r,"x","min"),a=n,o=Ye(t,n.shape),i=o,s=Jt(i,n.rank);s!=null&&(n=n.transpose(s),i=Qt(i.length,n.rank));var u=[n],c=T.runKernelFunc(function(d,h){var f=d.min(n,i);return h([a,f]),f},{x:n},function(d,h){return Nc(d,h[1],h[0],o,s)},"Min",{axes:i},u,[!0]);if(e){var l=vt(c.shape,o);c=c.reshape(l)}return c}}),A_=A({moments_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=Ye(t,(r=C(r,"x","moments")).shape),a=r.mean(n,e),o=a.shape;e||(o=vt(a.shape,n));var i=r.toFloat().sub(a.reshape(o)).square();return{mean:a,variance:i.mean(n,e)}}}),Fc=A({sum_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=C(r,"x","sum");n.dtype==="bool"&&(n=n.toInt());var a=Ye(t,n.shape);return Fa(function(o){var i=Jt(a,o.rank),s=a,u=o;i!=null&&(u=o.transpose(i),s=Qt(s.length,o.rank));var c=function(f){var p=o.shape.slice();return a.forEach(function(v){p[v]=1}),f.reshape(p).mul(vr(o.shape,"float32"))},l={axes:s},d=T.runKernelFunc(function(f){return f.sum(u,s)},{x:u},function(f){return{x:function(){return c(f)}}},"Sum",l);if(e){var h=vt(d.shape,a);d=d.reshape(h)}return{value:d,gradFunc:c}})(n)}}),D_=A({prod_:function(r,t,e){t===void 0&&(t=null),e===void 0&&(e=!1);var n=C(r,"x","prod");n.dtype==="bool"&&(n=n.toInt());var a=Ye(t,n.shape),o=Jt(a,n.rank),i=a,s=n;o!=null&&(s=n.transpose(o),i=Qt(i.length,n.rank));var u=T.runKernelFunc(function(l){return l.prod(s,i)},{permutedX:s});if(e){var c=vt(u.shape,a);u=u.reshape(c)}return u}}),Pc=A({elu_:function(r){var t=C(r,"x","elu");return T.runKernelFunc(function(e,n){var a=e.elu(t);return n([a]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){return T.runKernelFunc(function(o){return o.eluDer(e,a)},{dy:e,y:a})}}})}}),T_=A({leakyRelu_:function(r,t){t===void 0&&(t=.2);var e=C(r,"x","leakyRelu");return _i(J(t).mul(e),e)}}),Mc=A({prelu_:function(r,t){var e=C(r,"x","prelu"),n=C(t,"alpha","prelu");return T.runKernelFunc(function(a,o){var i=a.prelu(e,n);return o([e,n]),i},{x:e,alpha:n},function(a,o){var i=o[0],s=o[1],u=i.greater(0);return{x:function(){return Bn(u,a,a.mul(s))},alpha:function(){var c=Bn(u,Ie(a),a.mul(i)),l=Ke(s.shape,a.shape);return l.length>0&&(c=c.sum(l)),c.reshape(s.shape)}}},"Prelu")}}),Be=A({relu_:function(r){var t=C(r,"x","relu");return t.dtype==="bool"?t.toInt():T.runKernelFunc(function(e,n){var a=e.relu(t);return n([t]),a},{x:t},function(e,n){var a=n[0];return{x:function(){return e.mulStrict(a.step().toFloat())}}},"Relu")}}),Oc=A({relu6_:function(r){var t=C(r,"x","relu6");return t.dtype==="bool"?t.toInt():T.runKernelFunc(function(e,n){var a=e.relu6(t);return n([t]),a},{x:t},function(e,n){var a=n[0],o=a.lessEqual(6).mul(a.step());return{x:function(){return e.mulStrict(o.toFloat())}}},"Relu6")}}),N_=A({selu_:function(r){var t=C(r,"x","selu");return T.runKernelFunc(function(e,n){var a=e.selu(t);return n([t]),a},{$x:t},function(e,n){var a=n[0];return{$x:function(){var o=a.greater(J(0)),i=J(vi),s=J(mi),u=e.mul(s),c=e.mul(i).mul(a.toFloat().exp());return Bn(o,u,c)}}})}}),wn=A({transpose_:function(r,t){var e=C(r,"x","transpose");if(t==null&&(t=e.shape.map(function(a,o){return o}).reverse()),E(e.rank===t.length,function(){return"Error in transpose: rank of input "+e.rank+" must match length of perm "+t+"."}),t.forEach(function(a){E(a>=0&&a<e.rank,function(){return"All entries in 'perm' must be between 0 and "+(e.rank-1)+" but got "+t})}),e.rank<=1)return e.clone();var n={perm:t};return T.runKernelFunc(function(a){return a.transpose(e,t)},{x:e},function(a){var o=oi(t);return{x:function(){return a.transpose(o)}}},"Transpose",n)}}),F_=A({localResponseNormalization_:function(r,t,e,n,a){t===void 0&&(t=5),e===void 0&&(e=1),n===void 0&&(n=1),a===void 0&&(a=.5);var o=C(r,"x","localResponseNormalization");E(o.rank===4||o.rank===3,function(){return`Error in localResponseNormalization: x must be rank 3 or 4 but got
               rank `+o.rank+"."}),E(ze(t),function(){return"Error in localResponseNormalization: depthRadius must be an integer but got depthRadius "+t+"."});var i=o,s=!1;o.rank===3&&(s=!0,i=o.as4D(1,o.shape[0],o.shape[1],o.shape[2]));var u=T.runKernelFunc(function(c,l){var d=c.localResponseNormalization4D(i,t,e,n,a);return l([i,d]),d},{x4D:i},function(c,l){var d=l[0],h=l[1];return{x4D:function(){return T.runKernelFunc(function(f){return f.LRNGrad(c,d,h,t,e,n,a)},{})}}});return s?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),Bc=A({norm_:function(r,t,e,n){t===void 0&&(t="euclidean"),e===void 0&&(e=null),n===void 0&&(n=!1);var a=function s(u,c,l){if(l===void 0&&(l=null),u.rank===0)return u.abs();if(u.rank!==1&&l===null)return s(u.reshape([-1]),c,l);if(u.rank===1||typeof l=="number"||Array.isArray(l)&&l.length===1){if(c===1)return u.abs().sum(l);if(c===1/0)return u.abs().max(l);if(c===-1/0)return u.abs().min(l);if(c==="euclidean"||c===2)return u.abs().pow(J(2,"int32")).sum(l).sqrt();throw new Error("Error in norm: invalid ord value: "+c)}if(Array.isArray(l)&&l.length===2){if(c===1)return u.abs().sum(l[0]).max(l[1]-1);if(c===1/0)return u.abs().sum(l[1]).max(l[0]);if(c===-1/0)return u.abs().sum(l[1]).min(l[0]);if(c==="fro"||c==="euclidean")return u.square().sum(l).sqrt();throw new Error("Error in norm: invalid ord value: "+c)}throw new Error("Error in norm: invalid axis: "+l)}(r=C(r,"x","norm"),t,e),o=a.shape;if(n){var i=Ye(e,r.shape);o=vt(a.shape,i)}return a.reshape(o)}}),P_=A({basicLSTMCell_:function(r,t,e,n,a,o){var i=C(r,"forgetBias","basicLSTMCell"),s=C(t,"lstmKernel","basicLSTMCell"),u=C(e,"lstmBias","basicLSTMCell"),c=C(n,"data","basicLSTMCell"),l=C(a,"c","basicLSTMCell"),d=C(o,"h","basicLSTMCell"),h=c.concat(d,1).matMul(s).add(u),f=h.shape[0],p=h.shape[1]/4,v=[f,p],m=h.slice([0,0],v),g=h.slice([0,p],v),x=h.slice([0,2*p],v),b=h.slice([0,3*p],v),_=m.sigmoid().mulStrict(g.tanh()).addStrict(l.mulStrict(i.add(x).sigmoid())),y=_.tanh().mulStrict(b.sigmoid());return[_,y]}}),M_=A({multiRNNCell_:function(r,t,e,n){for(var a=C(t,"data","multiRNNCell"),o=fa(e,"c","multiRNNCell"),i=fa(n,"h","multiRNNCell"),s=a,u=[],c=0;c<r.length;c++){var l=r[c](s,o[c],i[c]);u.push(l[0]),u.push(l[1]),s=l[1]}var d=[],h=[];for(c=0;c<u.length;c+=2)d.push(u[c]),h.push(u[c+1]);return[d,h]}}),O_=A({movingAverage_:function(r,t,e,n,a){a===void 0&&(a=!0);var o=C(r,"v","movingAverage"),i=C(t,"x","movingAverage"),s=C(e,"decay","movingAverage");Ff(o,i),E(Qe(o.shape,i.shape),function(){return"Shape mismatch in v and x"});var u=J(1),c=u.sub(s),l=i.sub(o).mul(c);if(a){E(n!=null,function(){return"When using zeroDebias: true, step is required."});var d=C(n,"step","movingAverage");l=l.div(u.sub(Ca(s,d)))}return o.add(l)}}),B_=A({stridedSlice_:function(r,t,e,n,a,o,i,s,u){if(a===void 0&&(a=0),o===void 0&&(o=0),i===void 0&&(i=0),s===void 0&&(s=0),u===void 0&&(u=0),n==null&&(n=new Array(t.length)),i!==0)throw new Error("ellipsis mask is not yet supported");var c=C(r,"x","stridedSlice"),l=_s(s),d=c.shape.slice();l.forEach(function(m){t[m]=0,e[m]=1,d.splice(m,0,1)}),c=c.reshape(d);for(var h=0;h<c.rank;h++)t[h]=qp(a,t,n,c.shape,h),e[h]=Kp(o,e,n,c.shape,h),n[h]=n[h]||1;var f=_s(u);f.forEach(function(m){e[m]=t[m]+1,n[m]=1});var p=ci(t,e,n),v=p.filter(function(m,g){return f.indexOf(g)===-1});return n.every(function(m){return m===1})?Xt(c,t,p).reshape(v):T.runKernelFunc(function(m){return m.stridedSlice(c,t,e,n)},{$x:c}).reshape(v)}}),L_=A({topk_:function(r,t,e){t===void 0&&(t=1),e===void 0&&(e=!0);var n=C(r,"x","topk");if(n.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");var a=n.shape[n.shape.length-1];if(t>a)throw new Error("'k' passed to topk() must be <= the last dimension ("+a+") but got "+t);var o=T.runKernelFunc(function(i){return i.topk(n,t,e)},{$x:n});return{values:o[0],indices:o[1]}}}),W_=A({scatterND_:function(r,t,e){var n=C(r,"indices","scatterND","int32"),a=C(t,"updates","scatterND");return $p(a,n,e),T.runKernelFunc(function(o){return o.scatterND(n,a,e)},{indices:n,updates:a},null,"ScatterNd",{shape:e})}}),wi=A({fft_:function(r){E(r.dtype==="complex64",function(){return"The dtype for tf.spectral.fft() must be complex64 but got "+r.dtype+"."});var t=r.shape[r.shape.length-1],e=r.size/t,n=r.as2D(e,t);return T.runKernelFunc(function(a){return a.fft(n)},{input:r}).reshape(r.shape)}}),Ea=A({ifft_:function(r){E(r.dtype==="complex64",function(){return"The dtype for tf.spectral.ifft() must be complex64 but got "+r.dtype+"."});var t=r.shape[r.shape.length-1],e=r.size/t,n=r.as2D(e,t);return T.runKernelFunc(function(a){return a.ifft(n)},{input:r}).reshape(r.shape)}}),Ci=A({rfft_:function(r,t){E(r.dtype==="float32",function(){return"The dtype for rfft() must be real value but got "+r.dtype});var e,n=r.shape[r.shape.length-1],a=r.size/n;if(t!=null&&t<n){var o=r.shape.map(function(g){return 0}),i=r.shape.map(function(g){return g});i[r.shape.length-1]=t,e=r.slice(o,i),n=t}else if(t!=null&&t>n){var s=r.shape.map(function(g){return g});s[r.shape.length-1]=t-n,e=r.concat(Me(s),r.shape.length-1),n=t}else e=r;var u=e.zerosLike(),c=tt(e,u).as2D(a,n),l=wi(c),d=Math.floor(n/2)+1,h=Rt(l),f=Ht(l),p=h.split([d,n-d],h.shape.length-1),v=f.split([d,n-d],f.shape.length-1),m=e.shape.slice();return m[e.shape.length-1]=d,tt(p[0],v[0]).reshape(m)}}),Lc=A({irfft_:function(r){var t=r.shape[r.shape.length-1],e=r.size/t;if(t<=2){var n=r.as2D(e,t),a=Ea(n);return Rt(a)}var o=[e,2*(t-1)],i=Rt(r).as2D(e,t),s=Ht(r).as2D(e,t),u=i.slice([0,1],[e,t-2]).reverse(1),c=s.slice([0,1],[e,t-2]).reverse(1).mul(J(-1)),l=i.concat(u,1),d=s.concat(c,1);return n=tt(l,d).as2D(o[0],o[1]),a=Ea(n),Rt(a)}}),V_=Object.freeze({fft:wi,ifft:Ea,rfft:Ci,irfft:Lc}),z_=A({sparseToDense_:function(r,t,e,n){n===void 0&&(n=0);var a=C(r,"sparseIndices","sparseToDense","int32"),o=C(t,"sparseValues","sparseToDense"),i=C(n,"defaultValue","sparseToDense",o.dtype);return function(s,u,c,l){if(s.dtype!=="int32")throw new Error("tf.sparseToDense() expects the indices to be int32 type, but the dtype was "+s.dtype+".");if(s.rank>2)throw new Error("sparseIndices should be a scalar, vector, or matrix, but got shape "+s.shape+".");var d=s.rank>0?s.shape[0]:1,h=s.rank>1?s.shape[1]:1;if(c.length!==h)throw new Error("outputShape has incorrect number of elements:, "+c.length+", should be: "+h+".");var f=u.size;if(u.rank!==0&&(u.rank!==1||f!==d))throw new Error("sparseValues has incorrect shape "+u.shape+", should be [] or ["+d+"]");if(u.dtype!==l.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}(a,o,e,i),T.runKernelFunc(function(s){return s.sparseToDense(a,o,e,i)},{$sparseIndices:a,$sparseValues:o,$defaultValue:i})}}),U_=A({gatherND_:function(r,t){var e=C(t,"indices","gatherND","int32"),n=C(r,"x","gatherND");return T.runKernelFunc(function(a){return a.gatherND(n,e)},{x:n,indices:e},null,"GatherNd")}}),G_=A({diag_:function(r){var t=C(r,"x","diag").flatten(),e=r.shape.concat(r.shape);return T.runKernelFunc(function(n){return n.diag(t)},{$x:t}).reshape(e)}}),H_=A({dropout_:function(r,t,e,n){var a=C(r,"x","dropout");if(E(a.dtype==="float32",function(){return"x has to be a floating point tensor since it's going to be scaled, but got a "+a.dtype+" tensor instead."}),E(t>=0&&t<1,function(){return"rate must be a float in the range [0, 1), but got "+t+"."}),t===0)return r instanceof Oe?a.clone():a;var o=function(u,c){if(c==null)return u.shape.slice();if(Qe(u.shape,c))return c;if(u.shape.length===c.length){for(var l=[],d=0;d<u.shape.length;d++)c[d]==null&&u.shape[d]!=null?l.push(u.shape[d]):l.push(c[d]);return l}return c}(a,e),i=1-t,s=Mu(o,0,1,"float32",n).add(i).floor().div(i);return a.mul(s)}});function Wc(r,t,e){for(var n=1-r%2,a=new Float32Array(r),o=0;o<r;++o){var i=2*Math.PI*o/(r+n-1);a[o]=t-e*Math.cos(i)}return Ge(a,"float32")}var Ei=A({hannWindow_:function(r){return Wc(r,.5,.5)}}),Vc=A({hammingWindow_:function(r){return Wc(r,.54,.46)}}),Ri=A({frame_:function(r,t,e,n,a){n===void 0&&(n=!1),a===void 0&&(a=0);for(var o=0,i=[];o+t<=r.size;)i.push(Xt(r,o,t)),o+=e;if(n)for(;o<r.size;){var s=o+t-r.size,u=je([Xt(r,o,t-s),Kt([s],a)]);i.push(u),o+=e}return i.length===0?xn([],[0,t]):je(i).as2D(i.length,t)}}),zc=A({stft_:function(r,t,e,n,a){var o;a===void 0&&(a=Ei),n==null&&(o=t,n=Math.floor(Math.pow(2,Math.ceil(Math.log(o)/Math.log(2)))));for(var i=Ri(r,t,e),s=ut(i,a(t)),u=[],c=0;c<i.shape[0];c++)u.push(Ci(s.slice([c,0],[1,t]),n));return je(u)}}),$_=Object.freeze({hannWindow:Ei,hammingWindow:Vc,frame:Ri,stft:zc}),st,j_=function(r,t,e){return e===void 0&&(e=1),ne(this,void 0,void 0,function(){var n,a,o,i,s,u,c,l,d,h,f,p,v,m;return re(this,function(g){switch(g.label){case 0:return n=C(r,"predictions","inTopK"),a=C(t,"targets","inTopK"),E(n.rank>1,function(){return"inTopK() expects the predictions to be of rank 2 or higher, but got "+n.rank}),E(n.rank-1===a.rank,function(){return"predictions rank should be 1 larger than targets rank, but got predictions rank "+n.rank+" and targets rank "+a.rank}),Ae(n.shape.slice(0,n.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension."),o=n.shape[n.shape.length-1],E(e>0&&e<=o,function(){return"'k' passed to inTopK() must be > 0 && <= the predictions last dimension ("+o+"), but got "+e}),[4,n.data()];case 1:return i=g.sent(),[4,a.data()];case 2:for(s=g.sent(),u=[i.length/o,o],l=u[1],d=kr("bool",c=u[0]),h=0;h<c;h++){for(f=h*l,p=i.subarray(f,f+l),v=[],m=0;m<p.length;m++)v.push({value:p[m],index:m});for(v.sort(function(x,b){return b.value-x.value}),d[h]=0,m=0;m<e;m++)if(v[m].index===s[h]){d[h]=1;break}}return r!==n&&n.dispose(),t!==a&&a.dispose(),[2,rt(d,a.shape,"bool")]}})})};(function(r){r[r.NONE=0]="NONE",r[r.MEAN=1]="MEAN",r[r.SUM=2]="SUM",r[r.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(st||(st={}));var q_=A({absoluteDifference_:function(r,t,e,n){n===void 0&&(n=st.SUM_BY_NONZERO_WEIGHTS);var a=C(r,"labels","absoluteDifference"),o=C(t,"predictions","absoluteDifference"),i=null;e!=null&&(i=C(e,"weights","absoluteDifference")),Ae(a.shape,o.shape,"Error in absoluteDifference: ");var s=a.sub(o).abs();return ln(s,i,n)}}),ln=A({computeWeightedLoss_:function(r,t,e){e===void 0&&(e=st.SUM_BY_NONZERO_WEIGHTS);var n=C(r,"losses","computeWeightedLoss"),a=null;t!=null&&(a=C(t,"weights","computeWeightedLoss"));var o=a==null?n:n.mul(a);if(e===st.NONE)return o;if(e===st.SUM)return o.sum();if(e===st.MEAN){if(a==null)return o.mean();var i=n.size/a.size,s=o.sum().div(a.sum());return i>1?s.div(J(i)):s}if(e===st.SUM_BY_NONZERO_WEIGHTS){if(a==null)return o.sum().div(J(n.size));var u=a.mul(vr(n.shape)).notEqual(J(0)).sum().toFloat();return o.sum().div(u)}throw Error("Unknown reduction: "+e)}}),K_=A({cosineDistance_:function(r,t,e,n,a){a===void 0&&(a=st.SUM_BY_NONZERO_WEIGHTS);var o=C(r,"labels","cosineDistance"),i=C(t,"predictions","cosineDistance"),s=null;n!=null&&(s=C(n,"weights","cosineDistance")),Ae(o.shape,i.shape,"Error in cosineDistance: ");var u=J(1).sub(o.mul(i).sum(e,!0));return ln(u,s,a)}}),X_=A({hingeLoss_:function(r,t,e,n){n===void 0&&(n=st.SUM_BY_NONZERO_WEIGHTS);var a=C(r,"labels","hingeLoss"),o=C(t,"predictions","hingeLoss"),i=null;e!=null&&(i=C(e,"weights","hingeLoss")),Ae(a.shape,o.shape,"Error in hingeLoss: ");var s=J(1);a=J(2).mul(a).sub(s);var u=s.sub(a.mul(o)).relu();return ln(u,i,n)}}),Y_=A({huberLoss_:function(r,t,e,n,a){n===void 0&&(n=1),a===void 0&&(a=st.SUM_BY_NONZERO_WEIGHTS);var o=C(r,"labels","huberLoss"),i=C(t,"predictions","huberLoss"),s=null;e!=null&&(s=C(e,"weights","huberLoss")),Ae(o.shape,i.shape,"Error in huberLoss: ");var u=J(n),c=i.sub(o).abs(),l=bc(c,u),d=c.sub(l),h=J(.5).mul(l.square()).add(u.mul(d));return ln(h,s,a)}}),J_=A({logLoss_:function(r,t,e,n,a){n===void 0&&(n=1e-7),a===void 0&&(a=st.SUM_BY_NONZERO_WEIGHTS);var o=C(r,"labels","logLoss"),i=C(t,"predictions","logLoss"),s=null;e!=null&&(s=C(e,"weights","logLoss")),Ae(o.shape,i.shape,"Error in logLoss: ");var u=J(1),c=J(n),l=o.mul(i.add(c).log()).neg().sub(u.sub(o).mul(u.sub(i).add(c).log()));return ln(l,s,a)}}),Q_=A({meanSquaredError_:function(r,t,e,n){n===void 0&&(n=st.SUM_BY_NONZERO_WEIGHTS);var a=C(r,"labels","meanSquaredError"),o=C(t,"predictions","meanSquaredError"),i=null;e!=null&&(i=C(e,"weights","meanSquaredError")),Ae(a.shape,o.shape,"Error in meanSquaredError: ");var s=a.squaredDifference(o);return ln(s,i,n)}}),Z_=A({sigmoidCrossEntropy_:function(r,t,e,n,a){n===void 0&&(n=0),a===void 0&&(a=st.SUM_BY_NONZERO_WEIGHTS);var o=C(r,"multiClassLabels","sigmoidCrossEntropy"),i=C(t,"logits","sigmoidCrossEntropy"),s=null;if(e!=null&&(s=C(e,"weights","sigmoidCrossEntropy")),Ae(o.shape,i.shape,"Error in sigmoidCrossEntropy: "),n>0){var u=J(n),c=J(1),l=J(.5);o=o.mul(c.sub(u)).add(l.mul(u))}var d=function(h,f){var p=C(h,"labels","sigmoidCrossEntropyWithLogits"),v=C(f,"logits","sigmoidCrossEntropyWithLogits");Ae(p.shape,v.shape,"Error in sigmoidCrossEntropyWithLogits: ");var m=v.relu(),g=v.mul(p),x=v.abs().neg().exp().log1p();return m.sub(g).add(x)}(o,i);return ln(d,s,a)}}),e0=A({softmaxCrossEntropy_:function(r,t,e,n,a){n===void 0&&(n=0),a===void 0&&(a=st.SUM_BY_NONZERO_WEIGHTS);var o=C(r,"onehotLabels","softmaxCrossEntropy"),i=C(t,"logits","softmaxCrossEntropy"),s=null;if(e!=null&&(s=C(e,"weights","softmaxCrossEntropy")),Ae(o.shape,i.shape,"Error in softmaxCrossEntropy: "),n>0){var u=J(n),c=J(1),l=J(o.shape[1]);o=o.mul(c.sub(u)).add(u.div(l))}var d=function(h,f,p){if(p===void 0&&(p=-1),p===-1&&(p=f.rank-1),p!==f.rank-1)throw Error("Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank "+f.rank+" and dim was "+p);return Fa(function(v,m,g){var x=m.logSumExp([p],!0),b=m.toFloat().sub(x);return g([v,b]),{value:b.mul(v).neg().sum([p]),gradFunc:function(_,y){var w=y[0],S=y[1],I=vt(_.shape,[p]);return[_.reshape(I).mul(w.toFloat().sub(S.exp())),_.reshape(I).mul(S.exp().sub(w.toFloat()))]}}})(h,f)}(o,i);return ln(d,s,a)}}),t0=Object.freeze({get Reduction(){return st},absoluteDifference:q_,computeWeightedLoss:ln,cosineDistance:K_,hingeLoss:X_,huberLoss:Y_,logLoss:J_,meanSquaredError:Q_,sigmoidCrossEntropy:Z_,softmaxCrossEntropy:e0});function Vs(r,t){return t===void 0&&(t=!1),T.tidy(function(){if(r.shape.length!==2)throw new Error("qr2d() requires a 2D Tensor, but got a "+r.shape.length+"D Tensor.");for(var e=r.shape[0],n=r.shape[1],a=Pu(e),o=r.clone(),i=xn([[1]],[1,1]),s=i.clone(),u=e>=n?n:e,c=function(d){var h,f=o,p=s,v=a;h=T.tidy(function(){var m=o.slice([d,d],[e-d,1]),g=m.norm(),x=o.slice([d,d],[1,1]),b=xn([[-1]]).where(x.greater(0),xn([[1]])),_=x.sub(b.mul(g)),y=m.div(_);s=y.shape[0]===1?i.clone():i.concat(y.slice([1,0],[y.shape[0]-1,y.shape[1]]),0);var w=b.matMul(_).div(g).neg(),S=o.slice([d,0],[e-d,n]),I=w.mul(s);if(d===0)o=S.sub(I.matMul(s.transpose().matMul(S)));else{var k=S.sub(I.matMul(s.transpose().matMul(S)));o=o.slice([0,0],[d,n]).concat(k,0)}var R=a.slice([0,d],[e,a.shape[1]-d]);if(d===0)a=R.sub(R.matMul(s).matMul(I.transpose()));else{var N=R.sub(R.matMul(s).matMul(I.transpose()));a=a.slice([0,0],[e,d]).concat(N,1)}return[s,o,a]}),s=h[0],o=h[1],a=h[2],pt([f,p,v])},l=0;l<u;++l)c(l);return!t&&e>n&&(a=a.slice([0,0],[e,n]),o=o.slice([0,0],[n,n])),[a,o]})}var n0=A({bandPart_:function(r,t,e){if(t%1!=0)throw new Error("bandPart(): numLower must be an integer, got "+t+".");if(e%1!=0)throw new Error("bandPart(): numUpper must be an integer, got "+e+".");var n=C(r,"a","bandPart");if(n.rank<2)throw new Error("bandPart(): Rank must be at least 2, got "+n.rank+".");var a=n.shape,o=n.shape.slice(-2),i=o[0],s=o[1];if(!(t<=i))throw new Error("bandPart(): numLower ("+t+") must not be greater than the number of rows ("+i+").");if(!(e<=s))throw new Error("bandPart(): numUpper ("+e+") must not be greater than the number of columns ("+s+").");t<0&&(t=i),e<0&&(e=s);var u=pa(0,i,1,"int32").reshape([-1,1]),c=pa(0,s,1,"int32"),l=Xe(u,c),d=Ma(l.lessEqual(J(+t,"int32")),l.greaterEqual(J(-e,"int32"))),h=Me([i,s],n.dtype);return Ct(qe(n.reshape([-1,i,s])).map(function(f){return Bn(d,f,h)})).reshape(a)}}),r0=A({gramSchmidt_:function(r){var t;if(Array.isArray(r)){t=!1,E(r!=null&&r.length>0,function(){return"Gram-Schmidt process: input must not be null, undefined, or empty"});for(var e=r[0].shape[0],n=function(u){E(r[u].shape[0]===e,function(){return"Gram-Schmidt: Non-unique lengths found in the input vectors: ("+r[u].shape[0]+" vs. "+e+")"})},a=1;a<r.length;++a)n(a)}else t=!0,r=si(r,r.shape[0],0).map(function(u){return Bu(u,[0])});E(r.length<=r[0].shape[0],function(){return"Gram-Schmidt: Number of vectors ("+r.length+") exceeds number of dimensions ("+r[0].shape[0]+")."});var o=[],i=r,s=function(u){o.push(T.tidy(function(){var c=i[u];if(u>0)for(var l=0;l<u;++l){var d=Fc(o[l].mulStrict(c)).mul(o[l]);c=c.sub(d)}return c.div(Bc(c,"euclidean"))}))};for(a=0;a<r.length;++a)s(a);return t?Ct(o,0):o}}),a0=A({qr_:function(r,t){if(t===void 0&&(t=!1),r.rank<2)throw new Error("qr() requires input tensor to have a rank >= 2, but got rank "+r.rank);if(r.rank===2)return Vs(r,t);var e=r.shape.slice(0,r.shape.length-2).reduce(function(i,s){return i*s}),n=qe(r.reshape([e,r.shape[r.shape.length-2],r.shape[r.shape.length-1]]),0),a=[],o=[];return n.forEach(function(i){var s=Vs(i,t),u=s[0],c=s[1];a.push(u),o.push(c)}),[Ct(a,0).reshape(r.shape),Ct(o,0).reshape(r.shape)]}}),o0=Object.freeze({bandPart:n0,gramSchmidt:r0,qr:a0});function Wa(r,t,e,n,a,o){n==null&&(n=.5),a==null&&(a=Number.NEGATIVE_INFINITY),o==null&&(o=0);var i=r.shape[0];return e=Math.min(e,i),E(0<=n&&n<=1,function(){return"iouThreshold must be in [0, 1], but was '"+n+"'"}),E(r.rank===2,function(){return"boxes must be a 2D tensor, but was of rank '"+r.rank+"'"}),E(r.shape[1]===4,function(){return"boxes must have 4 columns, but 2nd dimension was "+r.shape[1]}),E(t.rank===1,function(){return"scores must be a 1D tensor"}),E(t.shape[0]===i,function(){return"scores has incompatible shape with boxes. Expected "+i+", but was "+t.shape[0]}),E(0<=o&&o<=1,function(){return"softNmsSigma must be in [0, 1], but was '"+o+"'"}),{maxOutputSize:e,iouThreshold:n,scoreThreshold:a,softNmsSigma:o}}var i0=A({resizeBilinear_:function(r,t,e){e===void 0&&(e=!1);var n=C(r,"images","resizeBilinear");E(n.rank===3||n.rank===4,function(){return"Error in resizeBilinear: x must be rank 3 or 4, but got rank "+n.rank+"."}),E(t.length===2,function(){return"Error in resizeBilinear: new shape must 2D, but got shape "+t+"."});var a=n,o=!1;n.rank===3&&(o=!0,a=n.as4D(1,n.shape[0],n.shape[1],n.shape[2]));var i=t[0],s=t[1],u=T.runKernelFunc(function(c,l){return l([a]),c.resizeBilinear(a,i,s,e)},{x:a},function(c,l){return{x:function(){return T.runKernelFunc(function(d){return d.resizeBilinearBackprop(c,l[0],e)},{})}}},"ResizeBilinear",{alignCorners:e,newHeight:i,newWidth:s});return o?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),s0=A({resizeNearestNeighbor_:function(r,t,e){e===void 0&&(e=!1);var n=C(r,"images","resizeNearestNeighbor");E(n.rank===3||n.rank===4,function(){return"Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank "+n.rank+"."}),E(t.length===2,function(){return"Error in resizeNearestNeighbor: new shape must 2D, but got shape "+t+"."}),E(n.dtype==="float32"||n.dtype==="int32",function(){return"`images` must have `int32` or `float32` as dtype"});var a=n,o=!1;n.rank===3&&(o=!0,a=n.as4D(1,n.shape[0],n.shape[1],n.shape[2]));var i=t[0],s=t[1],u=T.runKernelFunc(function(c,l){return l([a]),c.resizeNearestNeighbor(a,i,s,e)},{batchImages:a},function(c,l){return{batchImages:function(){return T.runKernelFunc(function(d){return d.resizeNearestNeighborBackprop(c,l[0],e)},{})}}});return o?u.as3D(u.shape[1],u.shape[2],u.shape[3]):u}}),u0=A({nonMaxSuppression_:function(r,t,e,n,a){n===void 0&&(n=.5),a===void 0&&(a=Number.NEGATIVE_INFINITY);var o=C(r,"boxes","nonMaxSuppression"),i=C(t,"scores","nonMaxSuppression"),s=Wa(o,i,e,n,a);e=s.maxOutputSize,n=s.iouThreshold,a=s.scoreThreshold;var u={maxOutputSize:e,iouThreshold:n,scoreThreshold:a};return T.runKernelFunc(function(c){return c.nonMaxSuppression(o,i,e,n,a)},{boxes:o,scores:i},null,"NonMaxSuppressionV3",u)}}),c0=function(r,t,e,n,a){return n===void 0&&(n=.5),a===void 0&&(a=Number.NEGATIVE_INFINITY),ne(this,void 0,void 0,function(){var o,i,s,u,c,l,d;return re(this,function(h){switch(h.label){case 0:return o=C(r,"boxes","nonMaxSuppressionAsync"),i=C(t,"scores","nonMaxSuppressionAsync"),s=Wa(o,i,e,n,a),e=s.maxOutputSize,n=s.iouThreshold,a=s.scoreThreshold,[4,Promise.all([o.data(),i.data()])];case 1:return u=h.sent(),c=u[0],l=u[1],d=di(c,l,e,n,a),o!==r&&o.dispose(),i!==t&&i.dispose(),[2,d]}})})},l0=A({nonMaxSuppressionWithScore_:function(r,t,e,n,a,o){n===void 0&&(n=.5),a===void 0&&(a=Number.NEGATIVE_INFINITY),o===void 0&&(o=0);var i=C(r,"boxes","nonMaxSuppression"),s=C(t,"scores","nonMaxSuppression"),u=Wa(i,s,e,n,a,o),c={maxOutputSize:e=u.maxOutputSize,iouThreshold:n=u.iouThreshold,scoreThreshold:a=u.scoreThreshold,softNmsSigma:o=u.softNmsSigma},l=T.runKernel("NonMaxSuppressionV5",{boxes:i,scores:s},c);return{selectedIndices:l[0],selectedScores:l[1]}}}),d0=function(r,t,e,n,a,o){return n===void 0&&(n=.5),a===void 0&&(a=Number.NEGATIVE_INFINITY),o===void 0&&(o=0),ne(this,void 0,void 0,function(){var i,s,u,c,l,d,h;return re(this,function(f){switch(f.label){case 0:return i=C(r,"boxes","nonMaxSuppressionAsync"),s=C(t,"scores","nonMaxSuppressionAsync"),u=Wa(i,s,e,n,a,o),e=u.maxOutputSize,n=u.iouThreshold,a=u.scoreThreshold,o=u.softNmsSigma,[4,Promise.all([i.data(),s.data()])];case 1:return c=f.sent(),l=c[0],d=c[1],h=hi(l,d,e,n,a,o),i!==r&&i.dispose(),s!==t&&s.dispose(),[2,h]}})})},h0=A({cropAndResize_:function(r,t,e,n,a,o){var i=C(r,"image","cropAndResize"),s=C(t,"boxes","cropAndResize","float32"),u=C(e,"boxInd","cropAndResize","int32");a=a||"bilinear",o=o||0;var c=s.shape[0];return E(i.rank===4,function(){return"Error in cropAndResize: image must be rank 4,but got rank "+i.rank+"."}),E(s.rank===2&&s.shape[1]===4,function(){return"Error in cropAndResize: boxes must be have size ["+c+",4] but had shape "+s.shape+"."}),E(u.rank===1&&u.shape[0]===c,function(){return"Error in cropAndResize: boxInd must be have size ["+c+"] but had shape "+s.shape+"."}),E(n.length===2,function(){return"Error in cropAndResize: cropSize must be of length 2, but got length "+n.length+"."}),E(n[0]>=1&&n[1]>=1,function(){return"cropSize must be atleast [1,1], but was "+n}),E(a==="bilinear"||a==="nearest",function(){return"method must be bilinear or nearest, but was "+a}),T.runKernelFunc(function(l,d){return l.cropAndResize(i,s,u,n,a,o)},{images:i,boxes:s,boxInd:u},null,"CropAndResize",{method:a,extrapolationValue:o,cropSize:n})}}),ki=Object.freeze({resizeBilinear:i0,resizeNearestNeighbor:s0,nonMaxSuppression:u0,nonMaxSuppressionAsync:c0,nonMaxSuppressionWithScore:l0,nonMaxSuppressionWithScoreAsync:d0,cropAndResize:h0}),Ii=function(r,t){return!(r>0)||t==="linear"},Si=function(r,t,e){if(e==null||e==="linear")return r;if(e==="relu")return r.mul(t.step());throw new Error("Gradient for activation "+e+" has not been implemented yet.")},Ai=function(r,t){var e=t,n=Ke(r.shape,t.shape);return n.length>0&&(e=e.sum(n)),e.reshape(r.shape)},Di=function(r,t,e){if(t==="linear")return r;if(t==="relu")return Be(r);if(t==="elu")return Pc(r);if(t==="relu6")return Oc(r);if(t==="prelu")return Mc(r,e);throw new Error("Unknown fused activation "+t+".")},f0=A({fusedMatMul_:function(r){var t,e=r.a,n=r.b,a=r.transposeA,o=a!==void 0&&a,i=r.transposeB,s=i!==void 0&&i,u=r.bias,c=r.activation,l=c===void 0?"linear":c,d=r.preluActivationWeights;if(Ii(T.state.gradientDepth,l)===!1){var h=Ba(e,n,o,s);return u!=null&&(h=Ce(h,u)),Di(h,l,d)}var f=C(e,"a","fused matMul"),p=C(n,"b","fused matMul");t=Le(f,p),f=t[0],p=t[1];var v=o?f.shape[f.rank-2]:f.shape[f.rank-1],m=s?p.shape[p.rank-1]:p.shape[p.rank-2],g=o?f.shape[f.rank-1]:f.shape[f.rank-2],x=s?p.shape[p.rank-2]:p.shape[p.rank-1],b=f.shape.slice(0,-2),_=p.shape.slice(0,-2),y=ae(b),w=ae(_);E(f.rank>=2&&p.rank>=2&&f.rank===p.rank,function(){return"Error in fused matMul: inputs must have the same rank of at least 2, got ranks "+f.rank+" and "+p.rank+"."}),E(Qe(b,_),function(){return"Error in fused matMul: outer dimensions ("+b+") and ("+_+") of Tensors with shapes "+f.shape+" and "+p.shape+" must match."}),E(v===m,function(){return"Error in fused matMul: inner shapes ("+v+") and ("+m+") of Tensors with shapes "+f.shape+" and "+p.shape+" and transposeA="+o+" and transposeB="+s+" must match."});var S,I,k=f.shape.slice(0,-2).concat([g,x]),R=o?f.as3D(y,v,g):f.as3D(y,g,v),N=s?p.as3D(w,x,m):p.as3D(w,m,x);u!=null&&Ee(k,(S=Le(S=C(u,"bias","fused matMul"),f)[0]).shape),d!=null&&(I=C(d,"prelu weights","fused matMul"));var D={a:R,b:N};u!=null&&(D.bias=S),d!=null&&(D.preluActivationWeights=I);var V=[R,N];return T.runKernelFunc(function(L,W){var H=L.fusedBatchMatMul({a:R,b:N,transposeA:o,transposeB:s,bias:S,activation:l,preluActivationWeights:I});return W([R,N,H]),H},D,function(L,W){var H=W[0],G=W[1],U=W[2],$=Si(L,U,l),q={};return u!=null&&(q={bias:function(){return Ai(S,$)}}),Object.assign(o||s?!o&&s?{a:function(){return $.matMul(G,!1,!1)},b:function(){return $.matMul(H,!0,!1)}}:o&&!s?{a:function(){return G.matMul($,!1,!0)},b:function(){return H.matMul($,!1,!1)}}:{a:function(){return G.matMul($,!0,!0)},b:function(){return $.matMul(H,!0,!0)}}:{a:function(){return $.matMul(G,!1,!0)},b:function(){return H.matMul($,!0,!1)}},q)},"_FusedMatMul",{transposeA:o,transposeB:s,activation:l},V,[!0]).reshape(k)}}),p0=A({fusedConv2d_:function(r){var t=r.x,e=r.filter,n=r.strides,a=r.pad,o=r.dataFormat,i=o===void 0?"NHWC":o,s=r.dilations,u=s===void 0?[1,1]:s,c=r.dimRoundingMode,l=r.bias,d=r.activation,h=d===void 0?"linear":d,f=r.preluActivationWeights;if(h=h||"linear",Ii(T.state.gradientDepth,h)===!1){var p=Dt(t,e,n,a,i,u,c);return l!=null&&(p=Ce(p,l)),Di(p,h,f)}var v=C(t,"x","conv2d"),m=C(e,"filter","conv2d"),g=v,x=!1;v.rank===3&&(x=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),E(g.rank===4,function(){return"Error in fused conv2d: input must be rank 4, but got rank "+g.rank+"."}),E(m.rank===4,function(){return"Error in fused conv2d: filter must be rank 4, but got rank "+m.rank+"."}),c!=null&&E(ze(a),function(){return"Error in fused conv2d: pad must be an integer when using, dimRoundingMode "+c+" but got pad "+a+"."}),E(g.shape[3]===m.shape[2],function(){return"Error in conv2d: depth of input ("+g.shape[3]+") must match input depth for filter "+m.shape[2]+"."}),E(mt(n,u),function(){return"Error in conv2D: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+u+"'"}),E(i==="NHWC",function(){return"Error in conv2d: got dataFormat of "+i+" but only NHWC is currently supported."});var b,_,y=zn(g.shape,m.shape,n,u,a,c);l!=null&&(b=Le(b=C(l,"bias","fused conv2d"),v)[0],Ee(y.outShape,b.shape)),f!=null&&(_=C(f,"prelu weights","fused conv2d"));var w={x:g,filter:m};l!=null&&(w.bias=b),f!=null&&(w.preluActivationWeights=_);var S=[m,g],I=T.runKernelFunc(function(k,R){var N=k.fusedConv2d({input:g,filter:m,convInfo:y,bias:b,activation:h,preluActivationWeights:_});return R([m,g,N]),N},w,function(k,R){var N=R,D=N[0],V=N[1],L=N[2],W=Si(k,L,h);E(fr(u),function(){return"Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '"+u+"'"});var H={};return l!=null&&(H={bias:function(){return Ai(b,W)}}),Object.assign({x:function(){return kc(V.shape,W,D,n,a)},filter:function(){return bi(V,W,D.shape,n,a)}},H)},"FusedConv2D",{convInfo:y,activation:h},S,[!0]);return x?I.as3D(I.shape[1],I.shape[2],I.shape[3]):I}}),v0=A({fusedDepthwiseConv2d_:function(r){var t=r.x,e=r.filter,n=r.strides,a=r.pad,o=r.dataFormat,i=o===void 0?"NHWC":o,s=r.dilations,u=s===void 0?[1,1]:s,c=r.dimRoundingMode,l=r.bias,d=r.activation,h=d===void 0?"linear":d,f=r.preluActivationWeights;if(Ii(T.state.gradientDepth,h)===!1){var p=Oa(t,e,n,a,i,u,c);return l!=null&&(p=Ce(p,l)),Di(p,h,f)}var v=C(t,"x","depthwiseConv2d"),m=C(e,"filter","depthwiseConv2d"),g=v,x=!1;v.rank===3&&(x=!0,g=v.as4D(1,v.shape[0],v.shape[1],v.shape[2])),E(g.rank===4,function(){return"Error in fused depthwiseConv2d: input must be rank 4, but got rank "+g.rank+"."}),E(m.rank===4,function(){return"Error in fused depthwiseConv2d: filter must be rank 4, but got rank "+m.rank+"."}),E(g.shape[3]===m.shape[2],function(){return"Error in fused depthwiseConv2d: number of input channels ("+g.shape[3]+") must match the inChannels dimension in filter "+m.shape[2]+"."}),u==null&&(u=[1,1]),E(mt(n,u),function(){return"Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides "+n+" and dilations '"+u+"'"}),c!=null&&E(ze(a),function(){return"Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode "+c+" but got pad "+a+"."});var b,_,y=zn(g.shape,m.shape,n,u,a,c,!0);l!=null&&(b=Le(b=C(l,"bias","fused conv2d"),v)[0],Ee(y.outShape,b.shape)),f!=null&&(_=C(f,"prelu weights","fused depthwiseConv2d"));var w={x:g,filter:m};l!=null&&(w.bias=b),f!=null&&(w.preluActivationWeights=_);var S=[m,g],I=T.runKernelFunc(function(k,R){var N=k.fusedDepthwiseConv2D({input:g,filter:m,convInfo:y,bias:b,activation:h,preluActivationWeights:_});return R([m,g,N]),N},w,function(k,R){E(fr(u),function(){return"Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '"+u+"'"});var N=R[0],D=R[1],V=R[2],L=Si(k,V,h),W={};return l!=null&&(W={bias:function(){return Ai(b,L)}}),Object.assign({x:function(){return Ic(D.shape,L,N,y)},filter:function(){return Sc(D,L,N.shape,y)}},W)},"FusedDepthwiseConv2D",{convInfo:y,activation:h},S,[!0]);return x?I.as3D(I.shape[1],I.shape[2],I.shape[3]):I}}),m0=Object.freeze({matMul:f0,conv2d:p0,depthwiseConv2d:v0}),g0=Object.freeze({image:ki,linalg:o0,losses:t0,spectral:V_,fused:m0,signal:$_,square:Jm,squaredDifference:lc,conv1d:i_,conv2d:Dt,conv3d:s_,depthwiseConv2d:Oa,separableConv2d:yi,conv2dTranspose:u_,conv3dTranspose:c_,op:A,batchNormalization2d:Ig,batchNormalization3d:Sg,batchNormalization4d:Ag,batchNormalization:Dg,batchNorm:mc,batchNorm2d:Tg,batchNorm3d:Ng,batchNorm4d:Fg,booleanMaskAsync:o_,complex:tt,real:Rt,imag:Ht,concat:je,concat1d:mp,concat2d:gp,concat3d:_p,concat4d:xp,split:si,matMul:Ba,dot:l_,outerProduct:d_,reverse:zr,reverse1d:h_,reverse2d:f_,reverse3d:p_,reverse4d:v_,maxPool:Je,avgPool:Ur,pool:m_,maxPool3d:g_,avgPool3d:__,slice:Xt,slice1d:x_,slice2d:b_,slice3d:Tc,slice4d:y_,abs:Qm,acos:Zm,acosh:eg,asin:tg,asinh:ng,atan:rg,atanh:ag,ceil:og,clipByValue:gi,cos:ig,cosh:sg,erf:ug,exp:Ho,expm1:cg,floor:lg,log:dg,log1p:hg,logSigmoid:fg,neg:wa,reciprocal:pg,round:vg,rsqrt:dc,sigmoid:hc,sign:mg,isNaN:gg,isInf:_g,isFinite:xg,sin:bg,sinh:yg,softplus:wg,sqrt:Cg,step:Eg,tan:Rg,tanh:kg,all:w_,any:C_,argMax:E_,argMin:R_,logSumExp:k_,max:La,mean:I_,min:S_,moments:A_,sum:Fc,prod:D_,equal:yc,equalStrict:Xg,greater:Yg,greaterEqual:wc,greaterEqualStrict:Jg,greaterStrict:Qg,less:Zg,lessEqual:e_,lessEqualStrict:t_,lessStrict:n_,notEqual:r_,notEqualStrict:a_,add:Ce,addN:Og,addStrict:Bg,atan2:Lg,div:Nt,divNoNan:Wg,divStrict:Vg,floorDiv:xc,maximum:_i,maximumStrict:zg,minimum:bc,minimumStrict:Ug,mod:Gg,modStrict:Hg,mul:ut,mulStrict:$g,pow:Ca,powStrict:jg,squaredDifferenceStrict:qg,sub:Xe,subStrict:Kg,elu:Pc,leakyRelu:T_,prelu:Mc,relu:Be,relu6:Oc,selu:N_,logicalAnd:Ma,logicalNot:Pg,logicalOr:gc,logicalXor:Mg,where:Bn,whereAsync:_c,buffer:pe,print:Sp,batchToSpaceND:Fu,broadcastTo:Ap,cast:Dp,clone:Tp,cumsum:Np,depthToSpace:Fp,expandDims:Et,eye:Pu,multinomial:Pp,oneHot:Vo,pad:Vn,pad1d:Mp,pad2d:Op,pad3d:Bp,pad4d:Lp,rand:Wp,randomNormal:Vp,randomGamma:zp,randomUniform:Mu,reshape:Ft,spaceToBatchND:Ou,squeeze:Bu,stack:Ct,tile:rr,truncatedNormal:Up,unstack:qe,setdiff1dAsync:Gp,fill:Kt,linspace:vp,ones:vr,range:pa,scalar:J,tensor:rt,tensor1d:Ge,tensor2d:xn,tensor3d:ii,tensor4d:dt,tensor5d:hp,tensor6d:fp,variable:pp,zeros:Me,onesLike:Nu,zerosLike:Ie,transpose:wn,softmax:cn,logSoftmax:Yp,localResponseNormalization:F_,norm:Bc,gather:xi,unsortedSegmentSum:Cc,basicLSTMCell:P_,multiRNNCell:M_,movingAverage:O_,stridedSlice:B_,topk:L_,scatterND:W_,fft:wi,ifft:Ea,rfft:Ci,irfft:Lc,sparseToDense:z_,gatherND:U_,diag:G_,dropout:H_,hannWindow:Ei,hammingWindow:Vc,frame:Ri,stft:zc,inTopKAsync:j_});function j(r,t){Array.isArray(r)||(r=[r]),r.forEach(function(e){e!=null&&E(e.dtype!=="complex64",function(){return t+" does not support complex64 tensors."})})}function xo(r,t,e,n){if(e==="linear")return r.linear(t);if(e==="relu")return r.relu(t);if(e==="elu")return r.elu(t);if(e==="relu6")return r.relu6(t);if(e==="prelu")return r.prelu(t,n);throw new Error("Activation "+e+" has not been implemented for the CPU backend.")}var _0=function(r){function t(){var e=r.call(this)||this;return e.blockSize=48,e.firstUse=!0,e.data=new Hu(e,T),e}return Mt(t,r),t.prototype.write=function(e,n,a){this.firstUse&&(this.firstUse=!1,z().get("IS_NODE")&&ha(`
============================
Hi there 👋. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details.
============================`));var o={};return this.data.set(o,{values:e,dtype:a}),o},t.prototype.move=function(e,n,a,o){this.data.set(e,{values:n,dtype:o})},t.prototype.numDataIds=function(){return this.data.numDataIds()},t.prototype.read=function(e){return ne(this,void 0,void 0,function(){return re(this,function(n){return[2,this.readSync(e)]})})},t.prototype.readSync=function(e){var n=this.data.get(e),a=n.dtype,o=n.complexTensors;return a==="complex64"?Go(this.readSync(o.real.dataId),this.readSync(o.imag.dataId)):this.data.get(e).values},t.prototype.bufferSync=function(e){var n=this.readSync(e.dataId),a=n;if(e.dtype==="string")try{a=n.map(function(o){return ca(o)})}catch{throw new Error("Failed to decode encoded string bytes into utf-8")}return pe(e.shape,e.dtype,a)},t.prototype.makeOutput=function(e,n,a){var o=this.write(e,n,a);return T.makeTensorFromDataId(o,n,a,this)},t.prototype.disposeData=function(e){if(this.data.has(e)){var n=this.data.get(e).complexTensors;n!=null&&(n.real.dispose(),n.imag.dispose()),this.data.delete(e)}},t.prototype.time=function(e){return ne(this,void 0,void 0,function(){var n;return re(this,function(a){return n=Ut(),e(),[2,{kernelMs:Ut()-n}]})})},t.prototype.memory=function(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}},t.prototype.complex=function(e,n){var a=this.makeOutput(null,e.shape,"complex64");return this.data.get(a.dataId).complexTensors={real:T.keep(e.clone()),imag:T.keep(n.clone())},a},t.prototype.real=function(e){return this.data.get(e.dataId).complexTensors.real.clone()},t.prototype.imag=function(e){return this.data.get(e.dataId).complexTensors.imag.clone()},t.prototype.slice=function(e,n,a){if(j(e,"slice"),Uu(e.shape,n,a)){var o=Gu(n,e.strides),i=ae(a);return rt(this.readSync(e.dataId).subarray(o,o+i),a,e.dtype)}for(var s=pe(a,e.dtype),u=this.bufferSync(e),c=0;c<s.size;++c){var l=s.indexToLoc(c).map(function(d,h){return d+n[h]});s.values[c]=u.get.apply(u,l)}return s.toTensor()},t.prototype.stridedSlice=function(e,n,a,o){j(e,"stridedSlice");var i=ci(n,a,o);if(i.some(function(f){return f===0}))return rt([],i);for(var s=pe(i,e.dtype),u=this.bufferSync(e),c=0;c<s.size;c++){for(var l=s.indexToLoc(c),d=new Array(l.length),h=0;h<d.length;h++)d[h]=l[h]*o[h]+n[h];s.set.apply(s,[u.get.apply(u,d)].concat(l))}return s.toTensor()},t.prototype.diag=function(e){for(var n=this.readSync(e.dataId),a=pe([e.size,e.size],e.dtype),o=a.values,i=0;i<n.length;i++)o[i*e.size+i]=n[i];return a.toTensor()},t.prototype.unstack=function(e,n){for(var a=e.shape[n],o=new Array(e.rank-1),i=0,s=0;s<e.rank;s++)s!==n&&(o[i++]=e.shape[s]);var u=new Array(e.rank).fill(0),c=e.shape.slice();c[n]=1;var l=new Array(a);for(s=0;s<l.length;s++)u[n]=s,l[s]=this.slice(e,u,c).reshape(o);return l},t.prototype.reverse=function(e,n){j(e,"reverse");for(var a=pe(e.shape,e.dtype),o=this.bufferSync(e),i=function(u){var c=a.indexToLoc(u),l=c.slice();n.forEach(function(d){return l[d]=e.shape[d]-1-l[d]}),a.set.apply(a,[o.get.apply(o,l)].concat(c))},s=0;s<a.size;s++)i(s);return a.toTensor()},t.prototype.concat=function(e,n){var a=this;if(e[0].dtype==="complex64"){var o=e.map(function(f){return Rt(f)}),i=e.map(function(f){return Ht(f)});return tt(this.concat(o,n),this.concat(i,n))}var s=e.map(function(f){var p=ae(f.shape.slice(n));return f.as2D(-1,p)}),u=hr(s.map(function(f){return f.shape}),1),c=pe(u,e[0].dtype).values;if(s[0].shape[0]===1){var l=0;s.forEach(function(f){c.set(a.readSync(f.dataId),l),l+=f.size})}else{var d=0;s.forEach(function(f){for(var p=a.readSync(f.dataId),v=0,m=0;m<f.shape[0];++m)for(var g=m*u[1]+d,x=0;x<f.shape[1];++x)c[g+x]=p[v++];d+=f.shape[1]})}var h=hr(e.map(function(f){return f.shape}),n);return rt(c,h,e[0].dtype)},t.prototype.neg=function(e){return j(e,"neg"),this.multiply(J(-1),e)},t.prototype.add=function(e,n){return e.dtype==="complex64"||n.dtype==="complex64"?this.broadcastedBinaryComplexOp(e.cast("complex64"),n.cast("complex64"),function(a,o,i,s){return{real:a+i,imag:o+s}}):this.broadcastedBinaryOp(e,n,nt(e.dtype,n.dtype),function(a,o){return a+o})},t.prototype.addN=function(e){var n=this;j(e,"addN");for(var a=e.map(function(l){return n.readSync(l.dataId)}),o=pe(e[0].shape,e[0].dtype),i=o.values,s=0;s<e.length;s++)for(var u=a[s],c=0;c<i.length;c++)i[c]+=u[c];return o.toTensor()},t.prototype.softmax=function(e,n){var a=Ye([n],e.shape),o=this.max(e,a),i=vt(o.shape,a),s=this.subtract(e,o.reshape(i)),u=this.exp(s),c=this.sum(u,a).reshape(i);return this.realDivide(u,c)},t.prototype.subtract=function(e,n){return e.dtype==="complex64"||n.dtype==="complex64"?this.broadcastedBinaryComplexOp(e.cast("complex64"),n.cast("complex64"),function(a,o,i,s){return{real:a-i,imag:o-s}}):this.broadcastedBinaryOp(e,n,nt(e.dtype,n.dtype),function(a,o){return a-o})},t.prototype.pow=function(e,n){return j([e,n],"pow"),this.broadcastedBinaryOp(e,n,e.dtype,function(a,o){return Math.pow(a,o)})},t.prototype.batchMatMul=function(e,n,a,o){j([e,n],"matMul");for(var i=a?e.shape[1]:e.shape[2],s=a?e.shape[2]:e.shape[1],u=o?n.shape[1]:n.shape[2],c=e.shape[0],l=this.readSync(e.dataId),d=this.readSync(n.dataId),h=a?[e.strides[0],1,e.strides[1]]:[e.strides[0],e.strides[1],1],f=h[0],p=h[1],v=h[2],m=o?[1,n.strides[1],n.strides[0]]:[n.strides[1],1,n.strides[0]],g=m[0],x=m[1],b=m[2],_=s*u,y=pe([c,s,u],e.dtype),w=y.values,S=this.blockSize,I=0;I<c;I++)for(var k=0;k<s;k+=S)for(var R=0;R<u;R+=S)for(var N=0;N<i;N+=S)for(var D=Math.min(k+S,s),V=Math.min(R+S,u),L=Math.min(N+S,i),W=k;W<D;W++)for(var H=R;H<V;H++){for(var G=0,U=N;U<L;U++)G+=l[I*f+W*p+U*v]*d[U*g+H*x+I*b];w[I*_+(W*u+H)]+=G}return y.toTensor()},t.prototype.fusedBatchMatMul=function(e){var n=e.a,a=e.b,o=e.transposeA,i=e.transposeB,s=e.bias,u=e.activation,c=e.preluActivationWeights,l=this.batchMatMul(n,a,o,i);return s&&(l=this.add(l,s)),u&&(l=xo(this,l,u,c)),l},t.prototype.multiply=function(e,n){return e.dtype==="complex64"||n.dtype==="complex64"?this.broadcastedBinaryComplexOp(e.cast("complex64"),n.cast("complex64"),function(a,o,i,s){return{real:a*i-o*s,imag:a*s+o*i}}):this.broadcastedBinaryOp(e,n,nt(e.dtype,n.dtype),function(a,o){return a*o})},t.prototype.realDivide=function(e,n){return j([e,n],"realDivide"),this.broadcastedBinaryOp(e,n,"float32",function(a,o){return a/o})},t.prototype.floorDiv=function(e,n){return j([e,n],"floorDiv"),this.broadcastedBinaryOp(e,n,"int32",function(a,o){return Math.floor(a/o)})},t.prototype.sum=function(e,n){j(e,"sum"),_t("sum",n,e.rank);for(var a=at(e.shape,n),o=a[0],i=a[1],s=Me(o,nt(e.dtype,"int32")),u=ae(i),c=this.readSync(s.dataId),l=this.readSync(e.dataId),d=0;d<c.length;++d){for(var h=d*u,f=0,p=0;p<u;++p)f+=l[h+p];c[d]=f}return s},t.prototype.prod=function(e,n){j(e,"sum");for(var a=at(e.shape,n),o=a[0],i=a[1],s=Me(o,nt(e.dtype,"int32")),u=ae(i),c=this.readSync(s.dataId),l=this.readSync(e.dataId),d=0;d<c.length;++d){for(var h=d*u,f=1,p=0;p<u;++p)f*=l[h+p];c[d]=f}return s},t.prototype.unsortedSegmentSum=function(e,n,a){j(e,"unsortedSegmentSum");for(var o=[],i=e.rank-n.rank,s=0;s<i;++s)n=n.expandDims(s+1);for(s=0;s<a;++s){var u=J(s,"int32"),c=yc(u,n).asType("float32").mul(e).sum(0);o.push(c)}return Ct(o)},t.prototype.argMin=function(e,n){j(e,"argMin");var a=[n];_t("argMin",a,e.rank);for(var o=at(e.shape,a),i=o[0],s=o[1],u=Me(i,"int32"),c=ae(s),l=this.readSync(u.dataId),d=this.readSync(e.dataId),h=0;h<l.length;++h){for(var f=h*c,p=d[f],v=0,m=0;m<c;++m){var g=d[f+m];g<p&&(p=g,v=m)}l[h]=v}return u},t.prototype.argMax=function(e,n){j(e,"argMax");var a=[n];_t("argMax",a,e.rank);for(var o=at(e.shape,a),i=o[0],s=o[1],u=Me(i,"int32"),c=ae(s),l=this.readSync(u.dataId),d=this.readSync(e.dataId),h=0;h<l.length;++h){for(var f=h*c,p=d[f],v=0,m=0;m<c;++m){var g=d[f+m];g>p&&(p=g,v=m)}l[h]=v}return u},t.prototype.cumsum=function(e,n,a,o){if(j(e,"cumsum"),n!==e.rank-1)throw new Error("backend.cumsum in CPU expects an inner-most axis="+(e.rank-1)+" but got axis="+n);for(var i=nt(e.dtype,"int32"),s=Me(e.shape,i),u=this.readSync(s.dataId),c=this.readSync(e.dataId),l=e.shape[e.rank-1],d=o?function(m,g){return m+l-g-1}:function(m,g){return m+g},h=0;h<c.length;h+=l)for(var f=0;f<l;f++){var p=d(h,f);if(f===0)u[p]=a?0:c[p];else{var v=d(h,f-1);u[p]=a?c[v]+u[v]:c[p]+u[v]}}return s},t.prototype.equal=function(e,n){return j([e,n],"equal"),this.broadcastedBinaryOp(e,n,"bool",function(a,o){return a===o?1:0})},t.prototype.notEqual=function(e,n){return j([e,n],"notEqual"),this.broadcastedBinaryOp(e,n,"bool",function(a,o){return a!==o?1:0})},t.prototype.less=function(e,n){return j([e,n],"less"),this.broadcastedBinaryOp(e,n,"bool",function(a,o){return a<o?1:0})},t.prototype.lessEqual=function(e,n){return j([e,n],"lessEqual"),this.broadcastedBinaryOp(e,n,"bool",function(a,o){return a<=o?1:0})},t.prototype.greater=function(e,n){return j([e,n],"greater"),this.broadcastedBinaryOp(e,n,"bool",function(a,o){return a>o?1:0})},t.prototype.greaterEqual=function(e,n){return j([e,n],"greaterEqual"),this.broadcastedBinaryOp(e,n,"bool",function(a,o){return a>=o?1:0})},t.prototype.logicalNot=function(e){j(e,"logicalNot");for(var n=this.readSync(e.dataId),a=new Uint8Array(n.length),o=0;o<n.length;++o)a[o]=n[o]?0:1;return this.makeOutput(a,e.shape,"bool")},t.prototype.logicalAnd=function(e,n){return j([e,n],"logicalAnd"),this.broadcastedBinaryOp(e,n,"bool",function(a,o){return a&&o})},t.prototype.logicalOr=function(e,n){return j([e,n],"logicalOr"),this.broadcastedBinaryOp(e,n,"bool",function(a,o){return a||o})},t.prototype.select=function(e,n,a){j([e,n,a],"select");for(var o=this.readSync(e.dataId),i=this.readSync(n.dataId),s=this.readSync(a.dataId),u=Me(n.shape,nt(n.dtype,a.dtype)),c=this.readSync(u.dataId),l=0,d=e.rank===0||e.rank>1||n.rank===1?1:ae(n.shape.slice(1)),h=0;h<o.length;h++)for(var f=0;f<d;f++)o[h]===1?c[l++]=i[h]:c[l++]=s[h];return u},t.prototype.where=function(e){j([e],"where");var n=this.readSync(e.dataId);return fi(e.shape,n)},t.prototype.topk=function(e,n,a){return j(e,"topk"),Qu(this.readSync(e.dataId),e.shape,e.dtype,n)},t.prototype.min=function(e,n){j(e,"min"),_t("min",n,e.rank);for(var a=at(e.shape,n),o=a[0],i=a[1],s=Me(o,e.dtype),u=ae(i),c=this.readSync(s.dataId),l=this.readSync(e.dataId),d=0;d<c.length;++d){for(var h=d*u,f=l[h],p=0;p<u;++p){var v=l[h+p];v<f&&(f=v)}c[d]=f}return s},t.prototype.minimum=function(e,n){return j([e,n],"minimum"),this.broadcastedBinaryOp(e,n,e.dtype,function(a,o){return Math.min(a,o)})},t.prototype.mod=function(e,n){return j([e,n],"mod"),this.broadcastedBinaryOp(e,n,e.dtype,function(a,o){var i=a%o;return a<0&&o<0||a>=0&&o>=0?i:(i+o)%o})},t.prototype.max=function(e,n){j(e,"max"),_t("max",n,e.rank);for(var a=at(e.shape,n),o=a[0],i=a[1],s=Me(o,e.dtype),u=ae(i),c=this.readSync(s.dataId),l=this.readSync(e.dataId),d=0;d<c.length;++d){for(var h=d*u,f=l[h],p=0;p<u;++p){var v=l[h+p];v>f&&(f=v)}c[d]=f}return s},t.prototype.maximum=function(e,n){return j([e,n],"maximum"),this.broadcastedBinaryOp(e,n,e.dtype,function(a,o){return Math.max(a,o)})},t.prototype.all=function(e,n){j(e,"all"),_t("all",n,e.rank);for(var a=at(e.shape,n),o=a[0],i=a[1],s=Me(o,e.dtype),u=ae(i),c=this.readSync(s.dataId),l=this.readSync(e.dataId),d=0;d<c.length;++d){for(var h=d*u,f=l[h],p=0;p<u;++p){var v=l[h+p];f=f&&v}c[d]=f}return s},t.prototype.any=function(e,n){j(e,"any"),_t("any",n,e.rank);for(var a=at(e.shape,n),o=a[0],i=a[1],s=Me(o,e.dtype),u=ae(i),c=this.readSync(s.dataId),l=this.readSync(e.dataId),d=0;d<c.length;++d){for(var h=d*u,f=l[h],p=0;p<u;++p){var v=l[h+p];f=f||v}c[d]=f}return s},t.prototype.squaredDifference=function(e,n){return j([e,n],"squaredDifference"),this.broadcastedBinaryOp(e,n,e.dtype,function(a,o){var i=a-o;return i*i})},t.prototype.ceil=function(e){j(e,"ceil");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o)a[o]=Math.ceil(n[o]);return this.makeOutput(a,e.shape,"float32")},t.prototype.floor=function(e){j(e,"floor");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o)a[o]=Math.floor(n[o]);return this.makeOutput(a,e.shape,"float32")},t.prototype.sign=function(e){j(e,"x");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o)n[o]<0?a[o]=-1:n[o]>0?a[o]=1:a[o]=0;return this.makeOutput(a,e.shape,"float32")},t.prototype.isNaN=function(e){j(e,"x");for(var n=this.readSync(e.dataId),a=new Uint8Array(n.length),o=0;o<n.length;++o)Number.isNaN(n[o])&&(a[o]=1);return this.makeOutput(a,e.shape,"bool")},t.prototype.isInf=function(e){j(e,"x");for(var n=this.readSync(e.dataId),a=new Uint8Array(n.length),o=0;o<n.length;++o)Math.abs(n[o])===1/0&&(a[o]=1);return this.makeOutput(a,e.shape,"bool")},t.prototype.isFinite=function(e){j(e,"x");for(var n=this.readSync(e.dataId),a=new Uint8Array(n.length),o=0;o<n.length;++o)Number.isFinite(n[o])&&(a[o]=1);return this.makeOutput(a,e.shape,"bool")},t.prototype.round=function(e){j(e,"round");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o){var i=Math.floor(n[o]);n[o]-i<.5?a[o]=Math.floor(n[o]):n[o]-i>.5?a[o]=Math.ceil(n[o]):a[o]=i%2==0?i:i+1}return this.makeOutput(a,e.shape,"float32")},t.prototype.exp=function(e){j(e,"exp");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o)a[o]=Math.exp(n[o]);return this.makeOutput(a,e.shape,"float32")},t.prototype.expm1=function(e){j(e,"expm1");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o)a[o]=Math.expm1(n[o]);return this.makeOutput(a,e.shape,"float32")},t.prototype.log=function(e){j(e,"log");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o){var i=n[o];a[o]=Math.log(i)}return this.makeOutput(a,e.shape,"float32")},t.prototype.log1p=function(e){j(e,"log1p");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o){var i=n[o];a[o]=Math.log1p(i)}return this.makeOutput(a,e.shape,"float32")},t.prototype.sqrt=function(e){j(e,"sqrt");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o){var i=n[o];a[o]=Math.sqrt(i)}return this.makeOutput(a,e.shape,"float32")},t.prototype.rsqrt=function(e){j(e,"rsqrt");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o){var i=n[o];a[o]=1/Math.sqrt(i)}return this.makeOutput(a,e.shape,"float32")},t.prototype.reciprocal=function(e){j(e,"reciprocal");for(var n=this.readSync(e.dataId),a=new Float32Array(n.length),o=0;o<n.length;++o)a[o]=1/n[o];return this.makeOutput(a,e.shape,"float32")},t.prototype.linear=function(e){return e},t.prototype.relu=function(e){j(e,"relu");for(var n=Me(e.shape,e.dtype),a=this.readSync(n.dataId),o=this.readSync(e.dataId),i=0;i<o.length;++i)a[i]=Math.max(0,o[i]);return n},t.prototype.relu6=function(e){j(e,"relu");for(var n=Me(e.shape,e.dtype),a=this.readSync(n.dataId),o=this.readSync(e.dataId),i=0;i<o.length;++i)a[i]=Math.min(Math.max(0,o[i]),6);return n},t.prototype.prelu=function(e,n){return j([e,n],"prelu"),this.broadcastedBinaryOp(e,n,e.dtype,function(a,o){return a<0?o*a:a})},t.prototype.elu=function(e){j(e,"elu");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o){var i=a[o];n[o]=i>=0?i:Math.exp(i)-1}return this.makeOutput(n,e.shape,"float32")},t.prototype.eluDer=function(e,n){j([e,n],"eluDer");for(var a=new Float32Array(n.size),o=this.readSync(n.dataId),i=this.readSync(e.dataId),s=0;s<o.length;++s){var u=o[s];a[s]=u>=1?i[s]:i[s]*(u+1)}return this.makeOutput(a,n.shape,"float32")},t.prototype.selu=function(e){j(e,"selu");for(var n=vi,a=mi,o=new Float32Array(e.size),i=this.readSync(e.dataId),s=0;s<i.length;++s){var u=i[s];o[s]=u>=0?a*u:n*(Math.exp(u)-1)}return this.makeOutput(o,e.shape,"float32")},t.prototype.clip=function(e,n,a){j(e,"clip");for(var o=new Float32Array(e.size),i=this.readSync(e.dataId),s=0;s<i.length;++s){var u=i[s];o[s]=u>a?a:u<n?n:u}return this.makeOutput(o,e.shape,"float32")},t.prototype.abs=function(e){for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.abs(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.complexAbs=function(e){for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<e.size;++o){var i=a[2*o],s=a[2*o+1];n[o]=Math.hypot(i,s)}return this.makeOutput(n,e.shape,"float32")},t.prototype.int=function(e){j(e,"int");for(var n=new Int32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=a[o];return this.makeOutput(n,e.shape,"int32")},t.prototype.sigmoid=function(e){j(e,"sigmoid");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=1/(1+Math.exp(-a[o]));return this.makeOutput(n,e.shape,"float32")},t.prototype.softplus=function(e){j(e,"softplus");for(var n=Math.log(11920928955078125e-23)+2,a=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i){var s=o[i]>-n,u=o[i]<n,c=Math.exp(o[i]),l=void 0;l=u?c:s?o[i]:Math.log(1+c),a[i]=l}return this.makeOutput(a,e.shape,"float32")},t.prototype.sin=function(e){j(e,"sin");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.sin(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.cos=function(e){j(e,"cos");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.cos(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.tan=function(e){j(e,"tan");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.tan(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.asin=function(e){j(e,"asin");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.asin(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.acos=function(e){j(e,"acos");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.acos(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.atan=function(e){j(e,"atan");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.atan(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.atan2=function(e,n){return j([e,n],"atan2"),this.broadcastedBinaryOp(e,n,e.dtype,function(a,o){return Math.atan2(a,o)})},t.prototype.sinh=function(e){j(e,"sinh");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.sinh(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.cosh=function(e){j(e,"cosh");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.cosh(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.tanh=function(e){j(e,"tanh");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=xf(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.asinh=function(e){j(e,"asinh");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.asinh(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.acosh=function(e){j(e,"acosh");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.acosh(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.atanh=function(e){j(e,"atanh");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o)n[o]=Math.atanh(a[o]);return this.makeOutput(n,e.shape,"float32")},t.prototype.erf=function(e){j(e,"erf");for(var n=new Float32Array(e.size),a=this.readSync(e.dataId),o=0;o<a.length;++o){var i=Math.sign(a[o]),s=Math.abs(a[o]),u=1/(1+.3275911*s);n[o]=i*(1-((((1.061405429*u-1.453152027)*u+1.421413741)*u-.284496736)*u+.254829592)*u*Math.exp(-s*s))}return this.makeOutput(n,e.shape,"float32")},t.prototype.step=function(e,n){n===void 0&&(n=0),j(e,"step");for(var a=new Float32Array(e.size),o=this.readSync(e.dataId),i=0;i<o.length;++i){var s=o[i];isNaN(s)?a[i]=NaN:a[i]=s>0?1:n}return this.makeOutput(a,e.shape,"float32")},t.prototype.fusedConv2d=function(e){var n=e.input,a=e.filter,o=e.convInfo,i=e.bias,s=e.activation,u=e.preluActivationWeights,c=this.conv2d(n,a,o);return i&&(c=this.add(c,i)),s&&(c=xo(this,c,s,u)),c},t.prototype.conv2d=function(e,n,a){j([e,n],"conv2d");for(var o=a.filterHeight,i=a.filterWidth,s=a.dilationHeight,u=a.dilationWidth,c=a.padInfo.left,l=a.padInfo.top,d=a.dataFormat==="channelsLast",h=pe(a.outShape,e.dtype),f=e.strides[0],p=d?e.strides[1]:e.strides[2],v=d?e.strides[2]:1,m=d?1:e.strides[1],g=h.strides[0],x=d?h.strides[1]:h.strides[2],b=d?h.strides[2]:1,_=d?1:h.strides[1],y=this.readSync(e.dataId),w=this.readSync(n.dataId),S=h.values,I=0;I<a.batchSize;++I)for(var k=I*f,R=I*g,N=0;N<a.outHeight;++N)for(var D=R+N*x,V=N*a.strideHeight-l,L=0;L<o;L++){var W=V+L*s;if(!(W<0||W>=a.inHeight))for(var H=L*n.strides[0],G=k+W*p,U=0;U<a.outWidth;++U)for(var $=D+U*b,q=U*a.strideWidth-c,Q=0;Q<i;Q++){var te=q+Q*u;if(!(te<0||te>=a.inWidth))for(var Y=G+te*v,ue=H+Q*n.strides[1],de=0;de<a.inChannels;++de){for(var ve=y[Y+de*m],xe=0;xe<a.outChannels;++xe)S[$+xe*_]+=ve*w[ue+xe];ue+=a.outChannels}}}return h.toTensor()},t.prototype.conv3d=function(e,n,a){for(var o=a.filterDepth,i=a.filterHeight,s=a.filterWidth,u=a.dilationDepth,c=a.dilationHeight,l=a.dilationWidth,d=a.padInfo.front,h=a.padInfo.left,f=a.padInfo.top,p=pe(a.outShape,e.dtype),v=this.readSync(e.dataId),m=this.readSync(n.dataId),g=p.values,x=0;x<a.batchSize;++x)for(var b=x*e.strides[0],_=x*p.strides[0],y=0;y<a.outDepth;++y)for(var w=_+y*p.strides[1],S=y*a.strideDepth-d,I=0;I<o;I++){var k=S+I*u;if(!(k<0||k>=a.inDepth))for(var R=I*n.strides[0],N=b+k*e.strides[1],D=0;D<a.outHeight;++D)for(var V=w+D*p.strides[2],L=D*a.strideHeight-f,W=0;W<i;W++){var H=L+W*c;if(!(H<0||H>=a.inHeight))for(var G=R+W*n.strides[1],U=N+H*e.strides[2],$=0;$<a.outWidth;++$)for(var q=V+$*a.outChannels,Q=$*a.strideWidth-h,te=0;te<s;te++){var Y=Q+te*l;if(!(Y<0||Y>=a.inWidth))for(var ue=G+te*n.strides[2],de=U+Y*a.inChannels,ve=ue,xe=0;xe<a.inChannels;++xe){for(var ge=v[de+xe],X=0;X<a.outChannels;++X)g[q+X]+=ge*m[ve+X];ve+=a.outChannels}}}}return p.toTensor()},t.prototype.conv2dDerInput=function(e,n,a){j([e,n],"conv2dDerInput");for(var o=pe(a.inShape,"float32"),i=o.values,s=this.readSync(e.dataId),u=this.readSync(n.dataId),c=n.strides,l=c[0],d=c[1],h=c[2],f=a.batchSize,p=a.filterHeight,v=a.filterWidth,m=a.inChannels,g=a.inHeight,x=a.inWidth,b=a.outChannels,_=a.outHeight,y=a.outWidth,w=a.strideHeight,S=a.strideWidth,I=a.dataFormat,k=p-1-a.padInfo.top,R=v-1-a.padInfo.left,N=I==="channelsLast",D=o.strides[0],V=N?o.strides[1]:o.strides[2],L=N?o.strides[2]:1,W=N?1:o.strides[1],H=e.strides[0],G=N?e.strides[1]:e.strides[2],U=N?e.strides[2]:1,$=N?1:e.strides[1],q=0;q<f;++q)for(var Q=0;Q<m;++Q)for(var te=0;te<g;++te)for(var Y=te-k,ue=Math.max(0,Math.ceil(Y/w)),de=Math.min(_,(p+Y)/w),ve=0;ve<x;++ve){for(var xe=ve-R,ge=Math.max(0,Math.ceil(xe/S)),X=Math.min(y,(v+xe)/S),_e=0,he=ue;he<de;++he)for(var be=he*w-Y,ye=ge;ye<X;++ye)for(var ke=H*q+G*he+U*ye,Ne=l*(p-1-be)+d*(v-1-(ye*S-xe))+h*Q,Pe=0;Pe<b;++Pe)_e+=s[ke+$*Pe]*u[Ne+Pe];i[D*q+V*te+L*ve+W*Q]=_e}return o.toTensor()},t.prototype.conv3dDerInput=function(e,n,a){for(var o=pe(a.inShape,"float32"),i=o.values,s=o.strides,u=s[0],c=s[1],l=s[2],d=s[3],h=this.readSync(e.dataId),f=e.strides,p=f[0],v=f[1],m=f[2],g=f[3],x=this.readSync(n.dataId),b=n.strides,_=b[0],y=b[1],w=b[2],S=b[3],I=a.batchSize,k=a.filterDepth,R=a.filterHeight,N=a.filterWidth,D=a.inChannels,V=a.inDepth,L=a.inHeight,W=a.inWidth,H=a.outChannels,G=a.outDepth,U=a.outHeight,$=a.outWidth,q=a.strideDepth,Q=a.strideHeight,te=a.strideWidth,Y=k-1-a.padInfo.front,ue=R-1-a.padInfo.top,de=N-1-a.padInfo.left,ve=0;ve<I;++ve)for(var xe=0;xe<D;++xe)for(var ge=0;ge<V;++ge)for(var X=ge-Y,_e=Math.max(0,Math.ceil(X/q)),he=Math.min(G,(k+X)/q),be=0;be<L;++be)for(var ye=be-ue,ke=Math.max(0,Math.ceil(ye/Q)),Ne=Math.min(U,(R+ye)/Q),Pe=0;Pe<W;++Pe){for(var Tt=Pe-de,Bt=Math.max(0,Math.ceil(Tt/te)),gt=Math.min($,(N+Tt)/te),Hn=0,en=_e;en<he;++en)for(var pn=en*q-X,tn=ke;tn<Ne;++tn)for(var $n=tn*Q-ye,nn=Bt;nn<gt;++nn)for(var Ya=p*ve+v*en+m*tn+g*nn,jn=_*(k-1-pn)+y*(R-1-$n)+w*(N-1-(nn*te-Tt))+S*xe,Lt=0;Lt<H;++Lt)Hn+=h[Ya+Lt]*x[jn+Lt];i[u*ve+c*ge+l*be+d*Pe+xe]=Hn}return o.toTensor()},t.prototype.conv2dDerFilter=function(e,n,a){j([e,n],"conv2dDerFilter");for(var o=a.strideHeight,i=a.strideWidth,s=a.filterHeight,u=a.filterWidth,c=a.dataFormat==="channelsLast",l=pe(a.filterShape,"float32"),d=a.padInfo.left,h=a.padInfo.top,f=this.bufferSync(e),p=this.bufferSync(n),v=0;v<s;++v)for(var m=Math.max(0,Math.ceil((h-v)/o)),g=Math.min(a.outHeight,(a.inHeight+h-v)/o),x=0;x<u;++x)for(var b=Math.max(0,Math.ceil((d-x)/i)),_=Math.min(a.outWidth,(a.inWidth+d-x)/i),y=0;y<a.inChannels;++y)for(var w=0;w<a.outChannels;++w){for(var S=0,I=0;I<a.batchSize;++I)for(var k=m;k<g;++k)for(var R=v+k*o-h,N=b;N<_;++N){var D=x+N*i-d;S+=c?f.get(I,R,D,y)*p.get(I,k,N,w):f.get(I,y,R,D)*p.get(I,w,k,N)}l.set(S,v,x,y,w)}return l.toTensor()},t.prototype.conv3dDerFilter=function(e,n,a){for(var o=a.strideDepth,i=a.strideHeight,s=a.strideWidth,u=a.filterDepth,c=a.filterHeight,l=a.filterWidth,d=pe(a.filterShape,"float32"),h=d.values,f=d.strides,p=f[0],v=f[1],m=f[2],g=f[3],x=this.readSync(n.dataId),b=n.strides,_=b[0],y=b[1],w=b[2],S=b[3],I=this.readSync(e.dataId),k=e.strides,R=k[0],N=k[1],D=k[2],V=k[3],L=a.padInfo.front,W=a.padInfo.left,H=a.padInfo.top,G=0;G<u;++G)for(var U=Math.max(0,Math.ceil((L-G)/o)),$=Math.min(a.outDepth,(a.inDepth+L-G)/o),q=G*p,Q=0;Q<c;++Q)for(var te=Math.max(0,Math.ceil((H-Q)/i)),Y=Math.min(a.outHeight,(a.inHeight+H-Q)/i),ue=Q*v+q,de=0;de<l;++de)for(var ve=Math.max(0,Math.ceil((W-de)/s)),xe=Math.min(a.outWidth,(a.inWidth+W-de)/s),ge=de*m+ue,X=0;X<a.inChannels;++X)for(var _e=X*g+ge,he=0;he<a.outChannels;++he){for(var be=0,ye=0;ye<a.batchSize;++ye)for(var ke=ye*R,Ne=ye*_,Pe=U;Pe<$;++Pe)for(var Tt=(G+Pe*o-L)*N+ke,Bt=Pe*y+Ne,gt=te;gt<Y;++gt)for(var Hn=(Q+gt*i-H)*D+Tt,en=gt*w+Bt,pn=ve;pn<xe;++pn){var tn=pn*S+en;be+=I[(de+pn*s-W)*V+Hn+X]*x[tn+he]}h[_e+he]=be}return d.toTensor()},t.prototype.fusedDepthwiseConv2D=function(e){var n=e.input,a=e.filter,o=e.convInfo,i=e.bias,s=e.activation,u=e.preluActivationWeights,c=this.depthwiseConv2D(n,a,o);return i&&(c=this.add(c,i)),s&&(c=xo(this,c,s,u)),c},t.prototype.depthwiseConv2D=function(e,n,a){j([e,n],"depthwiseConv2D");for(var o=a.filterHeight,i=a.filterWidth,s=a.dilationHeight,u=a.dilationWidth,c=a.padInfo.left,l=a.padInfo.top,d=a.outChannels/a.inChannels,h=pe(a.outShape,e.dtype),f=this.readSync(e.dataId),p=this.readSync(n.dataId),v=h.values,m=0;m<a.batchSize;++m)for(var g=m*e.strides[0],x=m*h.strides[0],b=0;b<a.outHeight;++b)for(var _=x+b*h.strides[1],y=b*a.strideHeight-c,w=0;w<o;++w){var S=y+w*s;if(!(S<0||S>=a.inHeight))for(var I=w*n.strides[0],k=g+S*e.strides[1],R=0;R<a.outWidth;++R)for(var N=_+R*h.strides[2],D=R*a.strideWidth-l,V=0;V<i;++V){var L=D+V*u;if(!(L<0||L>=a.inWidth))for(var W=I+V*n.strides[1],H=k+L*a.inChannels,G=N,U=W,$=0;$<a.inChannels;++$){for(var q=f[H+$],Q=0;Q<d;++Q)v[G+Q]+=q*p[U+Q];G+=d,U+=d}}}return h.toTensor()},t.prototype.depthwiseConv2DDerInput=function(e,n,a){j([e,n],"depthwiseConv2DDerInput");for(var o=pe(a.inShape,"float32"),i=o.values,s=o.strides,u=s[0],c=s[1],l=s[2],d=this.readSync(e.dataId),h=e.strides,f=h[0],p=h[1],v=h[2],m=this.readSync(n.dataId),g=n.strides,x=g[0],b=g[1],_=g[2],y=a.batchSize,w=a.filterHeight,S=a.filterWidth,I=a.inChannels,k=a.inHeight,R=a.inWidth,N=a.outChannels,D=a.outHeight,V=a.outWidth,L=a.strideHeight,W=a.strideWidth,H=w-1-a.padInfo.top,G=S-1-a.padInfo.left,U=N/I,$=0;$<y;++$)for(var q=0;q<I;++q)for(var Q=0;Q<k;++Q)for(var te=Q-H,Y=Math.max(0,Math.ceil(te/L)),ue=Math.min(D,(w+te)/L),de=0;de<R;++de){for(var ve=de-G,xe=Math.max(0,Math.ceil(ve/W)),ge=Math.min(V,(S+ve)/W),X=0,_e=Y;_e<ue;++_e)for(var he=_e*L-te,be=xe;be<ge;++be)for(var ye=f*$+p*_e+v*be,ke=x*(w-1-he)+b*(S-1-(be*W-ve))+_*q,Ne=0;Ne<U;++Ne)X+=d[ye+(q*U+Ne)]*m[ke+Ne];i[u*$+c*Q+l*de+q]=X}return o.toTensor()},t.prototype.depthwiseConv2DDerFilter=function(e,n,a){j([e,n],"depthwiseConv2DDerFilter");for(var o=a.strideHeight,i=a.strideWidth,s=a.filterHeight,u=a.filterWidth,c=pe(a.filterShape,"float32"),l=a.padInfo.left,d=a.padInfo.top,h=a.outChannels/a.inChannels,f=this.bufferSync(e),p=this.bufferSync(n),v=0;v<s;++v)for(var m=Math.max(0,Math.ceil((d-v)/o)),g=Math.min(a.outHeight,(a.inHeight+d-v)/o),x=0;x<u;++x)for(var b=Math.max(0,Math.ceil((l-x)/i)),_=Math.min(a.outWidth,(a.inWidth+l-x)/i),y=0;y<a.outChannels;++y){for(var w=Math.trunc(y/h),S=y%h,I=0,k=0;k<a.batchSize;++k)for(var R=m;R<g;++R)for(var N=v+R*o-d,D=b;D<_;++D){var V=x+D*i-l;I+=f.get(k,N,V,w)*p.get(k,R,D,y)}c.set(I,v,x,w,S)}return c.toTensor()},t.prototype.tile=function(e,n){return j(e,"tile"),Ju(this.bufferSync(e),n)},t.prototype.pad=function(e,n,a){j(e,"pad");var o=n.map(function(h,f){return h[0]+e.shape[f]+h[1]}),i=n.map(function(h){return h[0]}),s=this.bufferSync(e),u=pe(o,e.dtype);a!==0&&u.values.fill(a);for(var c=0;c<e.size;c++){var l=s.indexToLoc(c),d=l.map(function(h,f){return h+i[f]});u.set.apply(u,[s.get.apply(s,l)].concat(d))}return u.toTensor()},t.prototype.transpose=function(e,n){j(e,"transpose");for(var a=new Array(e.rank),o=0;o<a.length;o++)a[o]=e.shape[n[o]];var i=this.readSync(e.dataId),s=pe(a,e.dtype),u=this.bufferSync(e);for(o=0;o<e.size;++o){for(var c=u.indexToLoc(o),l=new Array(c.length),d=0;d<l.length;d++)l[d]=c[n[d]];var h=s.locToIndex(l);s.values[h]=i[o]}return s.toTensor()},t.prototype.gather=function(e,n,a){j([e,n],"gather");var o=e.shape.slice(),i=this.readSync(n.dataId);o[a]=i.length;for(var s=pe(o,e.dtype),u=this.bufferSync(e),c=0;c<s.size;++c){var l=s.indexToLoc(c),d=l.slice();d[a]=i[l[a]];var h=u.locToIndex(d);s.values[c]=u.values[h]}return s.toTensor()},t.prototype.batchToSpaceND=function(e,n,a){j([e],"batchToSpaceND");var o=n.reduce(function(d,h){return d*h}),i=va(e.shape,n,o),s=ma(i.length,n.length),u=ga(e.shape,n,o),c=Lu(a,n.length),l=Wu(u,a,n.length);return e.reshape(i).transpose(s).reshape(u).slice(c,l)},t.prototype.spaceToBatchND=function(e,n,a){j([e],"spaceToBatchND");var o=n.reduce(function(h,f){return h*f}),i=[[0,0]];i.push.apply(i,a);for(var s=1+n.length;s<e.shape.length;++s)i.push([0,0]);var u=e.pad(i),c=va(u.shape,n,o,!1),l=ma(c.length,n.length,!1),d=ga(u.shape,n,o,!1);return u.reshape(c).transpose(l).reshape(d)},t.prototype.pool=function(e,n,a){j(e,"pool");for(var o=n.strideHeight,i=n.strideWidth,s=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,d=n.padInfo.top,h=n.padInfo.left,f=a==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,p=this.readSync(e.dataId),v=pe(n.outShape,e.dtype),m=v.values,g=n.outShape[1]*n.outShape[2]*n.outShape[3],x=n.outShape[2]*n.outShape[3],b=n.outShape[3],_=0;_<n.batchSize;++_)for(var y=_*g,w=_*e.strides[0],S=0;S<n.inChannels;++S)for(var I=0;I<n.outHeight;++I)for(var k=I*o-d,R=Math.max(0,k),N=Math.min(n.inHeight,c+k),D=y+I*x,V=0;V<n.outWidth;++V){for(var L=V*i-h,W=Math.max(0,L),H=Math.min(n.inWidth,l+L),G=f,U=0,$=0,q=R;q<N;q+=s){for(var Q=w+q*e.strides[1],te=W;te<H;te+=u){var Y=p[Q+te*e.strides[2]+S];a==="max"&&Y>G?G=Y:a==="avg"&&(U+=Y,$++)}if(isNaN(G))break}m[D+V*b+S]=a==="avg"?U/$:G}return v.toTensor()},t.prototype.maxPool=function(e,n){return this.pool(e,n,"max")},t.prototype.maxPoolPositions=function(e,n){for(var a=pe(n.outShape,"int32"),o=n.strideHeight,i=n.strideWidth,s=n.dilationHeight,u=n.dilationWidth,c=n.effectiveFilterHeight,l=n.effectiveFilterWidth,d=n.padInfo.top,h=n.padInfo.left,f=this.bufferSync(e),p=0;p<n.batchSize;++p)for(var v=0;v<n.inChannels;++v)for(var m=0;m<n.outHeight;++m){for(var g=m*o-d,x=g;x<0;)x+=s;for(var b=Math.min(n.inHeight,c+g),_=0;_<n.outWidth;++_){for(var y=_*i-h,w=y;w<0;)w+=u;for(var S=Math.min(n.inWidth,l+y),I=Number.NEGATIVE_INFINITY,k=-1,R=x;R<b;R+=s)for(var N=R-g,D=w;D<S;D+=u){var V=D-y,L=f.get(p,R,D,v);L>I&&(I=L,k=N*l+V)}a.set(k,p,m,_,v)}}return a.toTensor()},t.prototype.maxPoolBackprop=function(e,n,a,o){j([n,a],"maxPoolBackprop");for(var i=this.maxPoolPositions(n,o),s=o.strideHeight,u=o.strideWidth,c=o.dilationHeight,l=o.dilationWidth,d=o.effectiveFilterHeight,h=o.effectiveFilterWidth,f=h-1-o.padInfo.left,p=d-1-o.padInfo.top,v=pe(n.shape,"float32"),m=this.bufferSync(i),g=this.bufferSync(e),x=0;x<o.batchSize;++x)for(var b=0;b<o.inChannels;++b)for(var _=0;_<o.inHeight;++_)for(var y=0;y<o.inWidth;++y){for(var w=_-p,S=y-f,I=0,k=0;k<d;k+=c){var R=(w+k)/s;if(!(R<0||R>=o.outHeight||Math.floor(R)!==R))for(var N=0;N<h;N+=l){var D=(S+N)/u;if(!(D<0||D>=o.outWidth||Math.floor(D)!==D)){var V=d*h-1-m.get(x,R,D,b)===k*h+N?1:0;V!==0&&(I+=g.get(x,R,D,b)*V)}}}v.set(I,x,_,y,b)}return v.toTensor()},t.prototype.avgPoolBackprop=function(e,n,a){j([e,n],"avgPoolBackprop");for(var o=a.strideHeight,i=a.strideWidth,s=a.filterHeight,u=a.filterWidth,c=a.dilationHeight,l=a.dilationWidth,d=a.effectiveFilterHeight,h=a.effectiveFilterWidth,f=h-1-a.padInfo.left,p=d-1-a.padInfo.top,v=pe(n.shape,"float32"),m=1/(s*u),g=this.bufferSync(e),x=0;x<a.batchSize;++x)for(var b=0;b<a.inChannels;++b)for(var _=0;_<a.inHeight;++_)for(var y=0;y<a.inWidth;++y){for(var w=_-p,S=y-f,I=0,k=0;k<d;k+=c){var R=(w+k)/o;if(!(R<0||R>=a.outHeight||Math.floor(R)!==R))for(var N=0;N<h;N+=l){var D=(S+N)/i;D<0||D>=a.outWidth||Math.floor(D)!==D||(I+=g.get(x,R,D,b))}}v.set(I*m,x,_,y,b)}return v.toTensor()},t.prototype.pool3d=function(e,n,a){j(e,"pool3d");for(var o=n.strideDepth,i=n.strideHeight,s=n.strideWidth,u=n.dilationDepth,c=n.dilationHeight,l=n.dilationWidth,d=n.effectiveFilterDepth,h=n.effectiveFilterHeight,f=n.effectiveFilterWidth,p=n.padInfo.front,v=n.padInfo.top,m=n.padInfo.left,g=a==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,x=this.readSync(e.dataId),b=pe(n.outShape,e.dtype),_=b.values,y=n.outShape[1]*n.outShape[2]*n.outShape[3]*n.outShape[4],w=n.outShape[2]*n.outShape[3]*n.outShape[4],S=n.outShape[3]*n.outShape[4],I=n.outShape[4],k=0;k<n.batchSize;++k)for(var R=k*y,N=k*e.strides[0],D=0;D<n.inChannels;++D)for(var V=0;V<n.outDepth;++V){for(var L=V*o-p,W=L;W<0;)W+=u;for(var H=Math.min(n.inDepth,d+L),G=R+V*w,U=0;U<n.outHeight;++U){for(var $=U*i-v,q=$;q<0;)q+=c;for(var Q=Math.min(n.inHeight,h+$),te=G+U*S,Y=0;Y<n.outWidth;++Y){for(var ue=Y*s-m,de=ue;de<0;)de+=l;for(var ve=Math.min(n.inWidth,f+ue),xe=te+Y*I,ge=g,X=0,_e=0,he=W;he<H;he+=u){for(var be=N+he*e.strides[1],ye=q;ye<Q;ye+=c){for(var ke=be+ye*e.strides[2],Ne=de;Ne<ve;Ne+=l){var Pe=x[ke+Ne*e.strides[3]+D];if(a==="max"&&Pe>ge?ge=Pe:a==="avg"&&(X+=Pe,_e++),isNaN(ge))break}if(isNaN(ge))break}if(isNaN(ge))break}_[xe+D]=a==="avg"?X/_e:ge}}}return b.toTensor()},t.prototype.avgPool3d=function(e,n){return j(e,"avgPool3d"),this.pool3d(e,n,"avg").toFloat()},t.prototype.avgPool3dBackprop=function(e,n,a){j([e,n],"avgPool3dBackprop");for(var o=a.strideDepth,i=a.strideHeight,s=a.strideWidth,u=a.filterDepth,c=a.filterHeight,l=a.filterWidth,d=a.dilationDepth,h=a.dilationHeight,f=a.dilationWidth,p=a.effectiveFilterDepth,v=a.effectiveFilterHeight,m=a.effectiveFilterWidth,g=p-1-a.padInfo.front,x=m-1-a.padInfo.left,b=v-1-a.padInfo.top,_=pe(n.shape,"float32"),y=1/(u*c*l),w=this.bufferSync(e),S=0;S<a.batchSize;++S)for(var I=0;I<a.inChannels;++I)for(var k=0;k<a.inDepth;++k)for(var R=0;R<a.inHeight;++R)for(var N=0;N<a.inWidth;++N){for(var D=k-g,V=R-b,L=N-x,W=0,H=0;H<p;H+=d){var G=(D+H)/o;if(!(G<0||G>=a.outDepth||Math.floor(G)!==G))for(var U=0;U<v;U+=h){var $=(V+U)/i;if(!($<0||$>=a.outHeight||Math.floor($)!==$))for(var q=0;q<m;q+=f){var Q=(L+q)/s;Q<0||Q>=a.outWidth||Math.floor(Q)!==Q||(W+=w.get(S,G,$,Q,I))}}}_.set(W*y,S,k,R,N,I)}return _.toTensor()},t.prototype.maxPool3d=function(e,n){return j(e,"maxPool3d"),this.pool3d(e,n,"max").toFloat()},t.prototype.maxPool3dPositions=function(e,n){for(var a=pe(n.outShape,"int32"),o=n.strideDepth,i=n.strideHeight,s=n.strideWidth,u=n.dilationDepth,c=n.dilationHeight,l=n.dilationWidth,d=n.effectiveFilterDepth,h=n.effectiveFilterHeight,f=n.effectiveFilterWidth,p=n.padInfo.front,v=n.padInfo.top,m=n.padInfo.left,g=this.bufferSync(e),x=0;x<n.batchSize;++x)for(var b=0;b<n.inChannels;++b)for(var _=0;_<n.outDepth;++_){for(var y=_*o-p,w=y;w<0;)w+=u;for(var S=Math.min(n.inDepth,d+y),I=0;I<n.outHeight;++I){for(var k=I*i-v,R=k;R<0;)R+=c;for(var N=Math.min(n.inHeight,h+k),D=0;D<n.outWidth;++D){for(var V=D*s-m,L=V;L<0;)L+=l;for(var W=Math.min(n.inWidth,f+V),H=Number.NEGATIVE_INFINITY,G=-1,U=w;U<S;U+=u)for(var $=U-y,q=R;q<N;q+=c)for(var Q=q-k,te=L;te<W;te+=l){var Y=te-V,ue=g.get(x,U,q,te,b);ue>=H&&(H=ue,G=$*h*f+Q*h+Y)}a.set(G,x,_,I,D,b)}}}return a.toTensor()},t.prototype.maxPool3dBackprop=function(e,n,a,o){j([n,a],"maxPool3dBackprop");for(var i=this.maxPool3dPositions(n,o),s=o.strideDepth,u=o.strideHeight,c=o.strideWidth,l=o.dilationDepth,d=o.dilationHeight,h=o.dilationWidth,f=o.effectiveFilterDepth,p=o.effectiveFilterHeight,v=o.effectiveFilterWidth,m=f-1-o.padInfo.front,g=v-1-o.padInfo.left,x=p-1-o.padInfo.top,b=pe(n.shape,"float32"),_=this.bufferSync(i),y=this.bufferSync(e),w=0;w<o.batchSize;++w)for(var S=0;S<o.inChannels;++S)for(var I=0;I<o.inDepth;++I)for(var k=0;k<o.inHeight;++k)for(var R=0;R<o.inWidth;++R){for(var N=I-m,D=k-x,V=R-g,L=0,W=0;W<f;W+=l){var H=(N+W)/s;if(!(H<0||H>=o.outDepth||Math.floor(H)!==H))for(var G=0;G<p;G+=d){var U=(D+G)/u;if(!(U<0||U>=o.outHeight||Math.floor(U)!==U))for(var $=0;$<v;$+=h){var q=(V+$)/c;if(!(q<0||q>=o.outWidth||Math.floor(q)!==q)){var Q=f*p*v-1-_.get(w,H,U,q,S)===W*p*v+G*v+$?1:0;Q!==0&&(L+=y.get(w,H,U,q,S)*Q)}}}}b.set(L,w,I,k,R,S)}return b.toTensor()},t.prototype.cast=function(e,n){return qu(e,n,this)},t.prototype.reshape=function(e,n){return Uo(e,n)},t.prototype.avgPool=function(e,n){return j(e,"avgPool"),this.pool(e,n,"avg").toFloat()},t.prototype.resizeBilinear=function(e,n,a,o){j(e,"resizeBilinear");for(var i=e.shape,s=i[0],u=i[1],c=i[2],l=i[3],d=this.readSync(e.dataId),h=new Float32Array(ae([s,n,a,l])),f=[o&&n>1?u-1:u,o&&a>1?c-1:c],p=[o&&n>1?n-1:n,o&&a>1?a-1:a],v=0,m=f[0]/p[0],g=f[1]/p[1],x=0;x<s;x++)for(var b=0;b<n;b++)for(var _=m*b,y=Math.floor(_),w=_-y,S=Math.min(u-1,Math.ceil(_)),I=x*e.strides[0]+y*e.strides[1],k=x*e.strides[0]+S*e.strides[1],R=0;R<a;R++)for(var N=g*R,D=Math.floor(N),V=N-D,L=Math.min(c-1,Math.ceil(N)),W=I+D*e.strides[2],H=k+D*e.strides[2],G=I+L*e.strides[2],U=k+L*e.strides[2],$=0;$<l;$++){var q=d[W+$],Q=d[H+$],te=q+(d[G+$]-q)*V,Y=te+(Q+(d[U+$]-Q)*V-te)*w;h[v++]=Y}return rt(h,[s,n,a,l])},t.prototype.resizeBilinearBackprop=function(e,n,a){j([e,n],"resizeBilinearBackprop");for(var o=n.shape,i=o[0],s=o[1],u=o[2],c=o[3],l=e.shape,d=l[1],h=l[2],f=new Float32Array(i*s*u*c),p=[a&&d>1?s-1:s,a&&h>1?u-1:u],v=[a&&d>1?d-1:d,a&&h>1?h-1:h],m=p[0]/v[0],g=p[1]/v[1],x=this.readSync(e.dataId),b=0,_=0;_<i;_++)for(var y=_*n.strides[0],w=0;w<d;w++)for(var S=w*m,I=Math.floor(S),k=Math.min(Math.ceil(S),s-1),R=y+I*n.strides[1],N=y+k*n.strides[1],D=S-I,V=1-D,L=0;L<h;L++)for(var W=L*g,H=Math.floor(W),G=Math.min(Math.ceil(W),u-1),U=W-H,$=1-U,q=R+H*n.strides[2],Q=R+G*n.strides[2],te=N+H*n.strides[2],Y=N+G*n.strides[2],ue=V*$,de=V*U,ve=D*$,xe=D*U,ge=0;ge<c;ge++){var X=x[b++];f[q+ge]+=X*ue,f[Q+ge]+=X*de,f[te+ge]+=X*ve,f[Y+ge]+=X*xe}return dt(f,[i,u,s,c],n.dtype)},t.prototype.resizeNearestNeighbor=function(e,n,a,o){j(e,"resizeNearestNeighbor");for(var i=e.shape,s=i[0],u=i[1],c=i[2],l=i[3],d=this.readSync(e.dataId),h=new Float32Array(s*n*a*l),f=[o&&n>1?u-1:u,o&&a>1?c-1:c],p=[o&&n>1?n-1:n,o&&a>1?a-1:a],v=f[0]/p[0],m=f[1]/p[1],g=0,x=0;x<s;x++)for(var b=x*e.strides[0],_=0;_<n;_++)for(var y=v*_,w=b+Math.min(u-1,o?Math.round(y):Math.floor(y))*e.strides[1],S=0;S<a;S++)for(var I=m*S,k=w+Math.min(c-1,o?Math.round(I):Math.floor(I))*e.strides[2],R=0;R<l;R++){var N=d[k+R];h[g++]=N}return rt(h,[s,n,a,l],e.dtype)},t.prototype.resizeNearestNeighborBackprop=function(e,n,a){j([e,n],"resizeNearestNeighborBackprop");for(var o=n.shape,i=o[0],s=o[1],u=o[2],c=o[3],l=e.shape,d=l[1],h=l[2],f=new Float32Array(i*s*u*c),p=this.readSync(e.dataId),v=[a&&d>1?s-1:s,a&&h>1?u-1:u],m=[a&&d>1?d-1:d,a&&h>1?h-1:h],g=v[0]/m[0],x=v[1]/m[1],b=1/g,_=1/x,y=2*Math.ceil(b)+2,w=2*Math.ceil(_)+2,S=0;S<i;S++)for(var I=S*n.strides[0],k=0;k<s;k++)for(var R=I+k*n.strides[1],N=Math.floor(k*b),D=Math.floor(N-y/2),V=0;V<u;V++)for(var L=R+V*n.strides[2],W=Math.floor(V*_),H=Math.floor(W-w/2),G=0;G<c;G++){for(var U=0,$=0;$<y;$++){var q=$+D;if(!(q<0||q>=d)){var Q=I+q*e.strides[1],te=q*g;if(k===Math.min(s-1,a?Math.round(te):Math.floor(te)))for(var Y=0;Y<w;Y++){var ue=Y+H;if(!(ue<0||ue>=h)){var de=Q+ue*e.strides[2],ve=ue*x;V===Math.min(u-1,a?Math.round(ve):Math.floor(ve))&&(U+=p[de+G])}}}}f[L+G]=U}return dt(f,n.shape,n.dtype)},t.prototype.batchNormalization=function(e,n,a,o,i,s){j([e,n,a,i,s],"batchNorm");for(var u=this.readSync(e.dataId),c=this.readSync(n.dataId),l=this.readSync(a.dataId),d=i?this.readSync(i.dataId):new Float32Array([1]),h=s?this.readSync(s.dataId):new Float32Array([0]),f=new Float32Array(u.length),p=h.length,v=d.length,m=l.length,g=c.length,x=0,b=0,_=0,y=0,w=0;w<u.length;++w)f[w]=h[x++]+(u[w]-c[b++])*d[_++]/Math.sqrt(l[y++]+o),x>=p&&(x=0),b>=g&&(b=0),_>=v&&(_=0),y>=m&&(y=0);return dt(f,e.shape)},t.prototype.localResponseNormalization4D=function(e,n,a,o,i){j(e,"localResponseNormalization4D");var s=e.shape[3],u=s-1,c=this.readSync(e.dataId),l=e.size,d=new Float32Array(l);function h(m){for(var g=m%s,x=m-g+Math.max(0,g-n),b=m-g+Math.min(g+n,u),_=0;x<=b;x++){var y=c[x];_+=y*y}return _}for(var f=0;f<l;f++){var p=h(f),v=c[f]*Math.pow(a+o*p,-i);d[f]=v}return dt(d,e.shape)},t.prototype.LRNGrad=function(e,n,a,o,i,s,u){j(e,"LRNGrad");for(var c=e.shape[3],l=this.readSync(e.dataId),d=this.readSync(n.dataId),h=this.readSync(a.dataId),f=new Float32Array(e.size),p=e.size,v=0;v<p;v++){for(var m=v%c,g=v-m+Math.max(0,m-o),x=v-m+Math.min(c,m+o+1),b=0,_=g;_<x;_++)b+=Math.pow(d[_],2);for(b=s*b+i,_=g;_<x;_++){var y=-2*s*u*d[_]*h[v]/b;v===_&&(y+=Math.pow(b,-u)),y*=l[v],f[_]+=y}}return dt(f,e.shape)},t.prototype.multinomial=function(e,n,a,o){j(e,"multinomial");for(var i=n?e:cn(e),s=i.shape[0],u=i.shape[1],c=Me([s,a],"int32"),l=this.readSync(c.dataId),d=this.readSync(i.dataId),h=0;h<s;++h){var f=h*u,p=new Float32Array(u-1);p[0]=d[f];for(var v=1;v<p.length;++v)p[v]=p[v-1]+d[f+v];for(var m=Na(o.toString()),g=h*a,x=0;x<a;++x){var b=m();l[g+x]=p.length;for(var _=0;_<p.length;_++)if(b<p[_]){l[g+x]=_;break}}}return c},t.prototype.oneHot=function(e,n,a,o){j(e,"oneHot");var i=new Float32Array(e.size*n);i.fill(o);for(var s=this.readSync(e.dataId),u=0;u<e.size;++u)s[u]>=0&&s[u]<n&&(i[u*n+s[u]]=a);return xn(i,[e.size,n],"int32")},t.prototype.nonMaxSuppression=function(e,n,a,o,i){return j(e,"nonMaxSuppression"),di(this.readSync(e.dataId),this.readSync(n.dataId),a,o,i)},t.prototype.fft=function(e){return this.fftBatch(e,!1)},t.prototype.ifft=function(e){return this.fftBatch(e,!0)},t.prototype.fftBatch=function(e,n){for(var a=e.shape[0],o=e.shape[1],i=pe(e.shape,"float32"),s=pe(e.shape,"float32"),u=Rt(e).as2D(a,o),c=Ht(e).as2D(a,o),l=0;l<a;l++)for(var d=u.slice([l,0],[1,o]),h=c.slice([l,0],[1,o]),f=tt(d,h),p=this.readSync(this.fftImpl(f,n).dataId),v=0;v<o;v++){var m=xs(p,v);i.values[l*o+v]=m.real,s.values[l*o+v]=m.imag}return tt(i.toTensor(),s.toTensor()).as2D(a,o)},t.prototype.fftImpl=function(e,n){var a=e.as1D(),o=a.size;if(this.isExponentOf2(o)){var i=this.fftRadix2(a,o,n).as2D(e.shape[0],e.shape[1]);return n&&(i=tt(Rt(i).div(J(o)),Ht(i).div(J(o)))),i}var s=this.readSync(e.dataId),u=function(c){for(var l=new Float32Array(c.length/2),d=new Float32Array(c.length/2),h=0;h<c.length;h+=2)l[h/2]=c[h],d[h/2]=c[h+1];return{real:l,imag:d}}(this.fourierTransformByMatmul(s,o,n));return tt(u.real,u.imag).as2D(e.shape[0],e.shape[1])},t.prototype.isExponentOf2=function(e){return(e&e-1)==0},t.prototype.fftRadix2=function(e,n,a){if(n===1)return e;var o=this.readSync(e.dataId),i=n/2,s=function(g){for(var x=Math.ceil(g.length/4),b=new Float32Array(x),_=new Float32Array(x),y=0;y<g.length;y+=4)b[Math.floor(y/4)]=g[y],_[Math.floor(y/4)]=g[y+1];return{real:b,imag:_}}(o),u=tt(s.real,s.imag).as1D(),c=function(g){for(var x=Math.floor(g.length/4),b=new Float32Array(x),_=new Float32Array(x),y=2;y<g.length;y+=4)b[Math.floor(y/4)]=g[y],_[Math.floor(y/4)]=g[y+1];return{real:b,imag:_}}(o),l=tt(c.real,c.imag).as1D();u=this.fftRadix2(u,i,a),l=this.fftRadix2(l,i,a);var d=function(g,x){for(var b=new Float32Array(g/2),_=new Float32Array(g/2),y=0;y<Math.ceil(g/2);y++){var w=(x?2:-2)*Math.PI*(y/g);b[y]=Math.cos(w),_[y]=Math.sin(w)}return{real:b,imag:_}}(n,a),h=tt(d.real,d.imag).mul(l),f=u.add(h),p=u.sub(h),v=Rt(f).concat(Rt(p)),m=Ht(f).concat(Ht(p));return tt(v,m).as1D()},t.prototype.fourierTransformByMatmul=function(e,n,a){for(var o=new Float32Array(2*n),i=0;i<n;i++){for(var s=0,u=0,c=0;c<n;c++){var l=Qp(i*c,n,a),d=xs(e,c);s+=d.real*l.real-d.imag*l.imag,u+=d.real*l.imag+d.imag*l.real}a&&(s/=n,u/=n),Jp(o,s,u,i)}return o},t.prototype.depthToSpace=function(e,n,a){E(a==="NHWC",function(){return"Only NHWC dataFormat supported on CPU for depthToSpace. Got "+a}),E(n>1,function(){return"blockSize should be > 1 for depthToSpace, but was: "+n});for(var o=e.shape[0],i=e.shape[1],s=e.shape[2],u=e.shape[3],c=i*n,l=s*n,d=u/(n*n),h=this.readSync(e.dataId),f=new Float32Array(o*c*l*d),p=0,v=0;v<o;++v)for(var m=0;m<c;++m)for(var g=Math.floor(m/n),x=m%n,b=0;b<l;++b)for(var _=Math.floor(b/n),y=(x*n+b%n)*d,w=0;w<d;++w){var S=w+y+u*(_+s*(g+i*v));f[p++]=h[S]}return dt(f,[o,c,l,d])},t.prototype.broadcastedBinaryOp=function(e,n,a,o){var i=Ee(e.shape,n.shape),s=pe(i,a),u=this.readSync(e.dataId),c=this.readSync(n.dataId),l=gn(e.shape,i),d=gn(n.shape,i),h=s.values;if(l.length+d.length===0)for(var f=0;f<h.length;++f)h[f]=o(u[f%u.length],c[f%c.length]);else{var p=this.bufferSync(e),v=this.bufferSync(n),m=function(g){var x=s.indexToLoc(g),b=x.slice(-e.rank);l.forEach(function(S){return b[S]=0});var _=p.locToIndex(b),y=x.slice(-n.rank);d.forEach(function(S){return y[S]=0});var w=v.locToIndex(y);h[g]=o(u[_],c[w])};for(f=0;f<h.length;++f)m(f)}return s.toTensor()},t.prototype.broadcastedBinaryComplexOp=function(e,n,a){var o=Ee(e.shape,n.shape),i=pe(o,"float32"),s=pe(o,"float32"),u=this.readSync(e.dataId),c=this.readSync(n.dataId),l=gn(e.shape,o),d=gn(n.shape,o),h=i.values,f=s.values;if(l.length+d.length===0)for(var p=0;p<h.length;p++){var v=p%u.length,m=p%c.length,g=a(u[2*v],u[2*v+1],c[2*m],c[2*m+1]);h[p]=g.real,f[p]=g.imag}else{var x=this.bufferSync(this.data.get(e.dataId).complexTensors.real),b=this.bufferSync(this.data.get(n.dataId).complexTensors.real),_=function(y){var w=i.indexToLoc(y),S=w.slice(-e.rank);l.forEach(function(D){return S[D]=0});var I=x.locToIndex(S),k=w.slice(-n.rank);d.forEach(function(D){return k[D]=0});var R=b.locToIndex(k),N=a(u[2*I],u[2*I+1],c[2*R],c[2*R+1]);h[y]=N.real,f[y]=N.imag};for(p=0;p<h.length;p++)_(p)}return this.complex(i.toTensor(),s.toTensor())},t.prototype.split=function(e,n,a){return Yu(e,n,a)},t.prototype.dispose=function(){},t.prototype.floatPrecision=function(){return 32},t.prototype.epsilon=function(){return 1e-7},t.prototype.cropAndResize=function(e,n,a,o,i,s){for(var u=e.shape,c=u[0],l=u[1],d=u[2],h=u[3],f=n.shape[0],p=o[0],v=o[1],m=pe([f,p,v,h],"float32"),g=this.readSync(n.dataId),x=this.readSync(a.dataId),b=this.readSync(e.dataId),_=e.strides,y=m.strides,w=0;w<f;w++){var S=4*w,I=g[S],k=g[S+1],R=g[S+2],N=g[S+3],D=x[w];if(!(D>=c))for(var V=p>1?(R-I)*(l-1)/(p-1):0,L=v>1?(N-k)*(d-1)/(v-1):0,W=0;W<p;W++){var H=p>1?I*(l-1)+W*V:.5*(I+R)*(l-1);if(H<0||H>l-1)for(var G=0;G<v;G++)for(var U=0;U<h;U++){var $=U+G*y[2]+W*y[1]+w*y[0];m.values[$]=s}else if(i==="bilinear"){var q=Math.floor(H),Q=Math.ceil(H),te=H-q;for(G=0;G<v;G++)if((he=v>1?k*(d-1)+G*L:.5*(k+N)*(d-1))<0||he>d-1)for(U=0;U<h;U++)$=U+G*y[2]+W*y[1]+w*y[0],m.values[$]=s;else{var Y=Math.floor(he),ue=Math.ceil(he),de=he-Y;for(U=0;U<h;U++){var ve=b[$=U+Y*_[2]+q*_[1]+D*_[0]],xe=b[$=U+ue*_[2]+q*_[1]+D*_[0]],ge=b[$=U+Y*_[2]+Q*_[1]+D*_[0]],X=ve+(xe-ve)*de,_e=ge+(b[$=U+ue*_[2]+Q*_[1]+D*_[0]]-ge)*de;$=U+G*y[2]+W*y[1]+w*y[0],m.values[$]=X+(_e-X)*te}}}else for(G=0;G<v;++G){var he;if((he=v>1?k*(d-1)+G*L:.5*(k+N)*(d-1))<0||he>d-1)for(U=0;U<h;U++)$=U+G*y[2]+W*y[1]+w*y[0],m.values[$]=s;else{var be=Math.round(he),ye=Math.round(H);for(U=0;U<h;U++){var ke=U+be*_[2]+ye*_[1]+D*_[0],Ne=U+G*y[2]+W*y[1]+w*y[0];m.values[Ne]=b[ke]}}}}}return m.toTensor()},t.prototype.sparseToDense=function(e,n,a,o){var i=_a(0,e,a),s=i.sliceRank,u=i.numUpdates,c=i.sliceSize,l=i.strides,d=i.outputSize;return this.scatter(e,n,a,d,c,u,s,l,o,!1)},t.prototype.gatherND=function(e,n){var a=n.shape,o=a[a.length-1],i=Vu(e,n),s=i[0],u=i[1],c=i[2],l=i[3];if(u===0)return rt([],s,e.dtype);for(var d=new Ir([u,c],e.dtype),h=this.readSync(n.dataId),f=this.readSync(e.dataId),p=0;p<u;p++){for(var v=[],m=0,g=0;g<o;g++){var x=h[p*o+g];m+=x*l[g],v.push(x)}if(m<0||m>=e.size/c)throw new Error("Invalid indices: "+v+" does not index into "+e.shape);for(var b=0;b<c;b++)d.values[p*c+b]=f[m*c+b]}return d.toTensor().reshape(s)},t.prototype.scatterND=function(e,n,a){var o=_a(0,e,a),i=o.sliceRank,s=o.numUpdates,u=o.sliceSize,c=o.strides,l=o.outputSize,d=J(0);return this.scatter(e,n,a,l,u,s,i,c,d,!0)},t.prototype.fill=function(e,n,a){var o=ua(a=a||Or(n),ae(e));return o.fill(n),T.makeTensor(o,e,a,this)},t.prototype.onesLike=function(e){if(e.dtype==="string")throw new Error("onesLike is not supported for string tensors");return this.fill(e.shape,1,e.dtype)},t.prototype.zerosLike=function(e){var n=ua(e.dtype,ae(e.shape));return this.makeOutput(n,e.shape,e.dtype)},t.prototype.linspace=function(e,n,a){return Ku(e,n,a)},t.prototype.scatter=function(e,n,a,o,i,s,u,c,l,d){var h=[o/i,i],f=this.readSync(e.dataId),p=this.readSync(n.dataId);if(o===0)return rt([],a,n.dtype);var v=new Ir(h,n.dtype);v.values.fill(this.readSync(l.dataId)[0]);for(var m=0;m<s;m++){for(var g=[],x=0,b=0;b<u;b++){var _=f[m*u+b];g.push(_),x+=_*c[b]}if(x<0||x>=o/i)throw new Error("Invalid indices: "+g+" does not index into "+a);for(var y=0;y<i;y++)d?v.values[x*i+y]+=p[m*i+y]:v.values[x*i+y]=n.rank===0?p[0]:p[m*i+y]}return v.toTensor().reshape(a)},t}($u);T.registerBackend("cpu",function(){return new _0},1);for(var bo=0,zs=[{kernelName:"NonMaxSuppressionV5",backendName:"cpu",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=r.attrs,a=t,o=a.boxes,i=a.scores,s=n,u=s.maxOutputSize,c=s.iouThreshold,l=s.scoreThreshold,d=s.softNmsSigma,h=e;j(o,"NonMaxSuppressionWithScore");var f=hi(h.data.get(o.dataId).values,h.data.get(i.dataId).values,u,c,l,d);return[f.selectedIndices,f.selectedScores]}},{kernelName:"Square",backendName:"cpu",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=t.x,a=e;j(n,"square");for(var o=a.data.get(n.dataId).values,i=new Float32Array(o.length),s=0;s<o.length;++s){var u=o[s];i[s]=u*u}return{dataId:a.write(i,n.shape,n.dtype),shape:n.shape,dtype:n.dtype}}},{kernelName:Dr,backendName:"cpu",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=t,a=n.a,o=n.b,i=e;j([a,o],Dr);var s=i.data.get(a.dataId).values,u=i.data.get(o.dataId).values,c=function(h,f,p,v,m,g){var x=Ee(h,f),b=x.length,_=qt(x),y=kr(m,ae(x)),w=h.length,S=f.length,I=qt(h),k=qt(f),R=gn(h,x),N=gn(f,x);if(R.length+N.length===0)for(var D=0;D<y.length;++D)y[D]=g(p[D%p.length],v[D%v.length]);else{var V=function(L){var W=Sf(L,b,_),H=W.slice(-w);R.forEach(function(q){return H[q]=0});var G=ls(H,w,I),U=W.slice(-S);N.forEach(function(q){return U[q]=0});var $=ls(U,S,k);y[L]=g(p[G],v[$])};for(D=0;D<y.length;++D)V(D)}return[y,x]}(a.shape,o.shape,s,u,a.dtype,function(h,f){var p=h-f;return p*p}),l=c[0],d=c[1];return{dataId:i.write(l,d,a.dtype),shape:d,dtype:a.dtype}}}];bo<zs.length;bo++)xu(zs[bo]);var Kn,x0=function(r){this.variableNames=["A"];var t=it(),e=r[0],n=r[1];this.outputShape=r,this.userCode=`
      void main() {
        ivec3 coords = getOutputCoords();
        int texR = coords[0];
        int texC = coords[1];
        int depth = coords[2];
        vec2 uv = (vec2(texC, texR) + halfCR) / vec2(`+n+".0, "+e+`.0);

        vec4 values = `+t.texture2D+`(A, uv);
        float value;
        if (depth == 0) {
          value = values.r;
        } else if (depth == 1) {
          value = values.g;
        } else if (depth == 2) {
          value = values.b;
        } else if (depth == 3) {
          value = values.a;
        }

        setOutput(floor(value * 255.0 + 0.5));
      }
    `},b0=function(r){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;var t=it(),e=r[0],n=r[1];this.outputShape=r,this.userCode=`
      void main() {
        ivec3 coords = getOutputCoords();
        int texR = coords[0];
        int texC = coords[1];
        int depth = coords[2];

        vec4 result = vec4(0.);

        for(int row=0; row<=1; row++) {
          for(int col=0; col<=1; col++) {
            texC = coords[1] + row;
            depth = coords[2] + col;

            vec2 uv = (vec2(texC, texR) + halfCR) /
                       vec2(`+n+".0, "+e+`.0);
            vec4 values = `+t.texture2D+`(A, uv);
            float value;
            if (depth == 0) {
              value = values.r;
            } else if (depth == 1) {
              value = values.g;
            } else if (depth == 2) {
              value = values.b;
            } else if (depth == 3) {
              value = values.a;
            }

            result[row * 2 + col] = floor(value * 255.0 + 0.5);
          }
        }

        `+t.output+` = result;
      }
    `};for(var yo=0,Us=[{kernelName:"FromPixels",backendName:"webgl",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=r.attrs,a=t.pixels,o=n.numChannels,i=typeof HTMLVideoElement<"u"&&a instanceof HTMLVideoElement,s=typeof HTMLImageElement<"u"&&a instanceof HTMLImageElement,u=i?[a.videoWidth,a.videoHeight]:[a.width,a.height],c=u[0],l=u[1],d=[l,c],h=[l,c,o];(s||i)&&(Kn==null&&(Kn=document.createElement("canvas").getContext("2d")),Kn.canvas.width=c,Kn.canvas.height=l,Kn.drawImage(a,0,0,c,l),a=Kn.canvas);var f=e.makeTensorInfo(d,"int32");e.texData.get(f.dataId).usage=bt.PIXELS,e.gpgpu.uploadPixelDataToTexture(e.getTexture(f.dataId),a);var p=z().getBool("WEBGL_PACK")?new b0(h):new x0(h),v=e.runWebGLProgram(p,[f],"int32");return e.disposeData(f.dataId),v}},{kernelName:"NonMaxSuppressionV5",backendName:"webgl",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=r.attrs;ha("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");var a=t,o=a.boxes,i=a.scores,s=n,u=s.maxOutputSize,c=s.iouThreshold,l=s.scoreThreshold,d=s.softNmsSigma,h=e,f=hi(h.readSync(o.dataId),h.readSync(i.dataId),u,c,l,d);return[f.selectedIndices,f.selectedScores]}},{kernelName:"Square",backendName:"webgl",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=t.x,a=e,o=new me(n.shape,"return x * x;");return a.runWebGLProgram(o,[n],n.dtype)}},{kernelName:Dr,backendName:"webgl",kernelFunc:function(r){var t=r.inputs,e=r.backend,n=t,a=n.a,o=n.b,i=e,s=z().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new an("return (a - b) * (a - b);",a.shape,o.shape):new Ve("return (a - b) * (a - b);",a.shape,o.shape);return i.compileAndRun(s,[a,o])}}];yo<Us.length;yo++)xu(Us[yo]);for(var wo=0,Gs=[{kernelName:"Square",gradFunc:function(r,t){var e=t[0];return{x:function(){return r.mul(e.toFloat().mul(2))}}}},{kernelName:Dr,gradFunc:function(r,t){var e=t[0],n=t[1],a=J(2);return{a:function(){return ut(r,ut(a,Xe(e,n)))},b:function(){return ut(r,ut(a,Xe(n,e)))}}}}];wo<Gs.length;wo++)gf(Gs[wo]);var y0=function(){function r(){}return r.prototype.fetch=function(t,e){return fetch(t,e)},r.prototype.now=function(){return performance.now()},r.prototype.encode=function(t,e){if(e!=="utf-8"&&e!=="utf8")throw new Error("Browser's encoder only supports utf-8, but got "+e);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(t)},r.prototype.decode=function(t,e){return new TextDecoder(e).decode(t)},r}();z().get("IS_BROWSER")&&z().setPlatform("browser",new y0);var Co,w0=function(){return require("node-fetch")},C0=function(){function r(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}return r.prototype.fetch=function(t,e){return z().global.fetch!=null?z().global.fetch(t,e):(Co==null&&(Co=w0()),Co(t,e))},r.prototype.now=function(){var t=process.hrtime();return 1e3*t[0]+t[1]/1e6},r.prototype.encode=function(t,e){if(e!=="utf-8"&&e!=="utf8")throw new Error("Node built-in encoder only supports utf-8, but got "+e);return this.textEncoder.encode(t)},r.prototype.decode=function(t,e){return t.length===0?"":new this.util.TextDecoder(e).decode(t)},r}();z().get("IS_NODE")&&z().setPlatform("node",new C0);var $o={float32:4,int32:4,uint16:2,uint8:1,bool:1},Ra=4;function Uc(r,t){for(var e={},n=0,a=function(s){var u=s.name,c=s.dtype,l=s.shape,d=ae(l),h=void 0;if("quantization"in s){var f=s.quantization;if(f.dtype!=="uint8"&&f.dtype!=="uint16")throw new Error("Weight "+s.name+" has unknown quantization dtype "+f.dtype+". Supported quantization dtypes are: 'uint8' and 'uint16'.");var p=$o[f.dtype],v=r.slice(n,n+d*p),m=f.dtype==="uint8"?new Uint8Array(v):new Uint16Array(v);if(c==="float32")h=Float32Array.from(m,function(w){return w*f.scale+f.min});else{if(c!=="int32")throw new Error("Unsupported dtype in weight '"+u+"': "+c);h=Int32Array.from(m,function(w){return Math.round(w*f.scale+f.min)})}n+=d*p}else if(c==="string"){var g=ae(s.shape);h=[];for(var x=0;x<g;x++){var b=new Uint32Array(r.slice(n,n+Ra))[0];n+=Ra;var _=new Uint8Array(r.slice(n,n+b));h.push(_),n+=b}}else{var y=$o[c];if(v=r.slice(n,n+d*y),c==="float32")h=new Float32Array(v);else if(c==="int32")h=new Int32Array(v);else{if(c!=="bool")throw new Error("Unsupported dtype in weight '"+u+"': "+c);h=new Uint8Array(v)}n+=d*y}e[u]=rt(h,l,c)},o=0,i=t;o<i.length;o++)a(i[o]);return e}function E0(r){if(r===null)throw new Error("Invalid input value: "+JSON.stringify(r));var t=0,e=[];r.forEach(function(o){if(t+=o.byteLength,e.push(o.byteLength===o.buffer.byteLength?o:new o.constructor(o)),!(o instanceof Float32Array||o instanceof Int32Array||o instanceof Uint8Array))throw new Error("Unsupported TypedArray subtype: "+o.constructor.name)});var n=new Uint8Array(t),a=0;return e.forEach(function(o){n.set(new Uint8Array(o.buffer),a),a+=o.byteLength}),n.buffer}var jo=typeof Buffer<"u"&&(typeof Blob>"u"||typeof atob>"u"||typeof btoa>"u");function Hs(r){return jo?Buffer.byteLength(r):new Blob([r]).size}function Ti(r){var t=0;r.forEach(function(a){t+=a.byteLength});var e=new Uint8Array(t),n=0;return r.forEach(function(a){e.set(new Uint8Array(a),n),n+=a.byteLength}),e.buffer}function $s(r){for(r=r.trim();r.endsWith("/");)r=r.slice(0,r.length-1);var t=r.split("/");return t[t.length-1]}function Gr(r){if(r.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:r.modelTopology==null?0:Hs(JSON.stringify(r.modelTopology)),weightSpecsBytes:r.weightSpecs==null?0:Hs(JSON.stringify(r.weightSpecs)),weightDataBytes:r.weightData==null?0:r.weightData.byteLength}}var yt=function(){function r(){this.saveRouters=[],this.loadRouters=[]}return r.getInstance=function(){return r.instance==null&&(r.instance=new r),r.instance},r.registerSaveRouter=function(t){r.getInstance().saveRouters.push(t)},r.registerLoadRouter=function(t){r.getInstance().loadRouters.push(t)},r.getSaveHandlers=function(t){return r.getHandlers(t,"save")},r.getLoadHandlers=function(t,e){return r.getHandlers(t,"load",e)},r.getHandlers=function(t,e,n){var a=[];return(e==="load"?r.getInstance().loadRouters:r.getInstance().saveRouters).forEach(function(o){var i=o(t,n);i!==null&&a.push(i)}),a},r}(),or="://",bn=function(){function r(){this.managers={}}return r.getInstance=function(){return r.instance==null&&(r.instance=new r),r.instance},r.registerManager=function(t,e){E(t!=null,function(){return"scheme must not be undefined or null."}),t.endsWith(or)&&(t=t.slice(0,t.indexOf(or))),E(t.length>0,function(){return"scheme must not be an empty string."});var n=r.getInstance();E(n.managers[t]==null,function(){return"A model store manager is already registered for scheme '"+t+"'."}),n.managers[t]=e},r.getManager=function(t){var e=this.getInstance().managers[t];if(e==null)throw new Error("Cannot find model manager for scheme '"+t+"'");return e},r.getSchemes=function(){return Object.keys(this.getInstance().managers)},r}();function ia(r){if(r.indexOf(or)===-1)throw new Error("The url string provided does not contain a scheme. Supported schemes are: "+bn.getSchemes().join(","));return{scheme:r.split(or)[0],path:r.split(or)[1]}}function js(r,t,e){return e===void 0&&(e=!1),ne(this,void 0,void 0,function(){var n,a,o,i,s,u,c,l,d;return re(this,function(h){switch(h.label){case 0:return E(r!==t,function(){return"Old path and new path are the same: '"+r+"'"}),E((n=yt.getLoadHandlers(r)).length>0,function(){return"Copying failed because no load handler is found for source URL "+r+"."}),E(n.length<2,function(){return"Copying failed because more than one ("+n.length+") load handlers for source URL "+r+"."}),a=n[0],E((o=yt.getSaveHandlers(t)).length>0,function(){return"Copying failed because no save handler is found for destination URL "+t+"."}),E(o.length<2,function(){return"Copying failed because more than one ("+n.length+") save handlers for destination URL "+t+"."}),i=o[0],s=ia(r).scheme,u=ia(r).path,c=s===ia(r).scheme,[4,a.load()];case 1:return l=h.sent(),e&&c?[4,bn.getManager(s).removeModel(u)]:[3,3];case 2:h.sent(),h.label=3;case 3:return[4,i.save(l)];case 4:return d=h.sent(),!e||c?[3,6]:[4,bn.getManager(s).removeModel(u)];case 5:h.sent(),h.label=6;case 6:return[2,d.modelArtifactsInfo]}})})}var Mn="models_store",_n="model_info_store";function Gc(){if(!z().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");var r=window||self,t=r.indexedDB||r.mozIndexedDB||r.webkitIndexedDB||r.msIndexedDB||r.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function qo(r){var t=r.result;t.createObjectStore(Mn,{keyPath:"modelPath"}),t.createObjectStore(_n,{keyPath:"modelPath"})}var ir=function(){function r(t){if(this.indexedDB=Gc(),t==null||!t)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=t}return r.prototype.save=function(t){return ne(this,void 0,void 0,function(){return re(this,function(e){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return[2,this.databaseAction(this.modelPath,t)]})})},r.prototype.load=function(){return ne(this,void 0,void 0,function(){return re(this,function(t){return[2,this.databaseAction(this.modelPath)]})})},r.prototype.databaseAction=function(t,e){var n=this;return new Promise(function(a,o){var i=n.indexedDB.open("tensorflowjs",1);i.onupgradeneeded=function(){return qo(i)},i.onsuccess=function(){var s=i.result;if(e==null){var u=s.transaction(Mn,"readonly"),c=u.objectStore(Mn).get(n.modelPath);c.onsuccess=function(){if(c.result==null)return s.close(),o(new Error("Cannot find model with path '"+n.modelPath+"' in IndexedDB."));a(c.result.modelArtifacts)},c.onerror=function(v){return s.close(),o(c.error)},u.oncomplete=function(){return s.close()}}else{var l,d=Gr(e),h=s.transaction(_n,"readwrite"),f=h.objectStore(_n),p=f.put({modelPath:n.modelPath,modelArtifactsInfo:d});p.onsuccess=function(){var v=(l=s.transaction(Mn,"readwrite")).objectStore(Mn).put({modelPath:n.modelPath,modelArtifacts:e,modelArtifactsInfo:d});v.onsuccess=function(){return a({modelArtifactsInfo:d})},v.onerror=function(m){var g=(f=h.objectStore(_n)).delete(n.modelPath);g.onsuccess=function(){return s.close(),o(v.error)},g.onerror=function(x){return s.close(),o(v.error)}}},p.onerror=function(v){return s.close(),o(p.error)},h.oncomplete=function(){l==null?s.close():l.oncomplete=function(){return s.close()}}}},i.onerror=function(s){return o(i.error)}})},r.URL_SCHEME="indexeddb://",r}(),qs=function(r){return z().getBool("IS_BROWSER")&&!Array.isArray(r)&&r.startsWith(ir.URL_SCHEME)?(t=r.slice(ir.URL_SCHEME.length),new ir(t)):null;var t};yt.registerSaveRouter(qs),yt.registerLoadRouter(qs);var R0=function(){function r(){this.indexedDB=Gc()}return r.prototype.listModels=function(){return ne(this,void 0,void 0,function(){var t=this;return re(this,function(e){return[2,new Promise(function(n,a){var o=t.indexedDB.open("tensorflowjs",1);o.onupgradeneeded=function(){return qo(o)},o.onsuccess=function(){var i=o.result,s=i.transaction(_n,"readonly"),u=s.objectStore(_n).getAll();u.onsuccess=function(){for(var c={},l=0,d=u.result;l<d.length;l++){var h=d[l];c[h.modelPath]=h.modelArtifactsInfo}n(c)},u.onerror=function(c){return i.close(),a(u.error)},s.oncomplete=function(){return i.close()}},o.onerror=function(i){return a(o.error)}})]})})},r.prototype.removeModel=function(t){return ne(this,void 0,void 0,function(){var e=this;return re(this,function(n){var a;return t=(a=t).startsWith(ir.URL_SCHEME)?a.slice(ir.URL_SCHEME.length):a,[2,new Promise(function(o,i){var s=e.indexedDB.open("tensorflowjs",1);s.onupgradeneeded=function(){return qo(s)},s.onsuccess=function(){var u,c=s.result,l=c.transaction(_n,"readwrite"),d=l.objectStore(_n),h=d.get(t);h.onsuccess=function(){if(h.result==null)return c.close(),i(new Error("Cannot find model with path '"+t+"' in IndexedDB."));var f=d.delete(t),p=function(){var v=(u=c.transaction(Mn,"readwrite")).objectStore(Mn).delete(t);v.onsuccess=function(){return o(h.result.modelArtifactsInfo)},v.onerror=function(m){return i(h.error)}};f.onsuccess=p,f.onerror=function(v){return p(),c.close(),i(h.error)}},h.onerror=function(f){return c.close(),i(h.error)},l.oncomplete=function(){u==null?c.close():u.oncomplete=function(){return c.close()}}},s.onerror=function(u){return i(s.error)}})]})})},r}();if(z().getBool("IS_BROWSER"))try{bn.registerManager(ir.URL_SCHEME,new R0)}catch{}var on="/",er="tensorflowjs_models",Hc="info",k0="model_topology",I0="weight_specs",S0="weight_data",A0="model_metadata";function $c(r){return{info:[er,r,Hc].join(on),topology:[er,r,k0].join(on),weightSpecs:[er,r,I0].join(on),weightData:[er,r,S0].join(on),modelMetadata:[er,r,A0].join(on)}}function D0(r){var t=r.split(on);if(t.length<3)throw new Error("Invalid key format: "+r);return t.slice(1,t.length-1).join(on)}var sr=function(){function r(t){if(!z().getBool("IS_BROWSER")||typeof window>"u"||window.localStorage===void 0)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,t==null||!t)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=t,this.keys=$c(this.modelPath)}return r.prototype.save=function(t){return ne(this,void 0,void 0,function(){var e,n,a;return re(this,function(o){if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");e=JSON.stringify(t.modelTopology),n=JSON.stringify(t.weightSpecs),a=Gr(t);try{return this.LS.setItem(this.keys.info,JSON.stringify(a)),this.LS.setItem(this.keys.topology,e),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,function(i){if(jo)return Buffer.from(i).toString("base64");for(var s=new Uint8Array(i),u="",c=0,l=s.length;c<l;c++)u+=String.fromCharCode(s[c]);return btoa(u)}(t.weightData)),this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata})),[2,{modelArtifactsInfo:a}]}catch{throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error("Failed to save model '"+this.modelPath+"' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes="+a.modelTopologyBytes+", weightSpecsBytes="+a.weightSpecsBytes+", weightDataBytes="+a.weightDataBytes+".")}return[2]})})},r.prototype.load=function(){return ne(this,void 0,void 0,function(){var t,e,n,a,o,i,s;return re(this,function(u){if((t=JSON.parse(this.LS.getItem(this.keys.info)))==null)throw new Error("In local storage, there is no model with name '"+this.modelPath+"'");if(t.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");if(e={},(n=JSON.parse(this.LS.getItem(this.keys.topology)))==null)throw new Error("In local storage, the topology of model '"+this.modelPath+"' is missing.");if(e.modelTopology=n,(a=JSON.parse(this.LS.getItem(this.keys.weightSpecs)))==null)throw new Error("In local storage, the weight specs of model '"+this.modelPath+"' are missing.");if(e.weightSpecs=a,(o=this.LS.getItem(this.keys.modelMetadata))!=null&&(i=JSON.parse(o),e.format=i.format,e.generatedBy=i.generatedBy,e.convertedBy=i.convertedBy,e.userDefinedMetadata=i.userDefinedMetadata),(s=this.LS.getItem(this.keys.weightData))==null)throw new Error("In local storage, the binary weight values of model '"+this.modelPath+"' are missing.");return e.weightData=function(c){if(jo){var l=Buffer.from(c,"base64");return l.buffer.slice(l.byteOffset,l.byteOffset+l.byteLength)}for(var d=atob(c),h=new Uint8Array(d.length),f=0;f<d.length;++f)h.set([d.charCodeAt(f)],f);return h.buffer}(s),[2,e]})})},r.URL_SCHEME="localstorage://",r}(),Ks=function(r){return z().getBool("IS_BROWSER")&&!Array.isArray(r)&&r.startsWith(sr.URL_SCHEME)?(t=r.slice(sr.URL_SCHEME.length),new sr(t)):null;var t};yt.registerSaveRouter(Ks),yt.registerLoadRouter(Ks);var T0=function(){function r(){E(z().getBool("IS_BROWSER"),function(){return"Current environment is not a web browser"}),E(typeof window>"u"||window.localStorage!==void 0,function(){return"Current browser does not appear to support localStorage"}),this.LS=window.localStorage}return r.prototype.listModels=function(){return ne(this,void 0,void 0,function(){var t,e,n,a,o,i;return re(this,function(s){for(t={},e=er+on,n=on+Hc,a=0;a<this.LS.length;++a)(o=this.LS.key(a)).startsWith(e)&&o.endsWith(n)&&(i=D0(o),t[i]=JSON.parse(this.LS.getItem(o)));return[2,t]})})},r.prototype.removeModel=function(t){return ne(this,void 0,void 0,function(){var e,n;return re(this,function(a){var o;if(t=(o=t).startsWith(sr.URL_SCHEME)?o.slice(sr.URL_SCHEME.length):o,e=$c(t),this.LS.getItem(e.info)==null)throw new Error("Cannot find model at path '"+t+"'");return n=JSON.parse(this.LS.getItem(e.info)),this.LS.removeItem(e.info),this.LS.removeItem(e.topology),this.LS.removeItem(e.weightSpecs),this.LS.removeItem(e.weightData),[2,n]})})},r}();if(z().getBool("IS_BROWSER"))try{bn.registerManager(sr.URL_SCHEME,new T0)}catch{}var N0="model",F0=".json",P0=".weights.bin";function Xs(r){return new Promise(function(t){return setTimeout(t)}).then(r)}var Eo=function(){function r(t){if(!z().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");t.startsWith(r.URL_SCHEME)&&(t=t.slice(r.URL_SCHEME.length)),t!=null&&t.length!==0||(t=N0),this.modelTopologyFileName=t+F0,this.weightDataFileName=t+P0}return r.prototype.save=function(t){return ne(this,void 0,void 0,function(){var e,n,a,o,i,s;return re(this,function(u){switch(u.label){case 0:if(typeof document>"u")throw new Error("Browser downloads are not supported in this environment since `document` is not present");if(e=window.URL.createObjectURL(new Blob([t.weightData],{type:"application/octet-stream"})),!(t.modelTopology instanceof ArrayBuffer))return[3,1];throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");case 1:return n=[{paths:["./"+this.weightDataFileName],weights:t.weightSpecs}],a={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,weightsManifest:n},o=window.URL.createObjectURL(new Blob([JSON.stringify(a)],{type:"application/json"})),(i=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor).download=this.modelTopologyFileName,i.href=o,[4,Xs(function(){return i.dispatchEvent(new MouseEvent("click"))})];case 2:return u.sent(),t.weightData==null?[3,4]:((s=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor).download=this.weightDataFileName,s.href=e,[4,Xs(function(){return s.dispatchEvent(new MouseEvent("click"))})]);case 3:u.sent(),u.label=4;case 4:return[2,{modelArtifactsInfo:Gr(t)}]}})})},r.URL_SCHEME="downloads://",r}(),M0=function(){function r(t){if(t==null||t.length<1)throw new Error("When calling browserFiles, at least 1 file is required, but received "+t);this.files=t}return r.prototype.load=function(){return ne(this,void 0,void 0,function(){var t,e,n=this;return re(this,function(a){return t=this.files[0],e=this.files.slice(1),[2,new Promise(function(o,i){var s=new FileReader;s.onload=function(u){var c=JSON.parse(u.target.result),l=c.modelTopology;if(l!=null){e.length===0&&o({modelTopology:l});var d=c.weightsManifest;if(d!=null){var h;try{h=n.checkManifestAndWeightFiles(d,e)}catch(m){return void i(m)}var f=[],p=[],v=[];d.forEach(function(m){m.paths.forEach(function(g){p.push(g),v.push(null)}),f.push.apply(f,m.weights)}),d.forEach(function(m){m.paths.forEach(function(g){var x=new FileReader;x.onload=function(b){var _=b.target.result,y=p.indexOf(g);v[y]=_,v.indexOf(null)===-1&&o({modelTopology:l,weightSpecs:f,weightData:Ti(v),format:c.format,generatedBy:c.generatedBy,convertedBy:c.convertedBy,userDefinedMetadata:c.userDefinedMetadata})},x.onerror=function(b){return i("Failed to weights data from file of path '"+g+"'.")},x.readAsArrayBuffer(h[g])})})}else i(new Error("weightManifest field is missing from file "+t.name))}else i(new Error("modelTopology field is missing from file "+t.name))},s.onerror=function(u){return i("Failed to read model topology and weights manifest JSON from file '"+t.name+"'. BrowserFiles supports loading Keras-style tf.Model artifacts only.")},s.readAsText(t)})]})})},r.prototype.checkManifestAndWeightFiles=function(t,e){for(var n=[],a=e.map(function(u){return $s(u.name)}),o={},i=0,s=t;i<s.length;i++)s[i].paths.forEach(function(u){var c=$s(u);if(n.indexOf(c)!==-1)throw new Error("Duplicate file basename found in weights manifest: '"+c+"'");if(n.push(c),a.indexOf(c)===-1)throw new Error("Weight file with basename '"+c+"' is not provided.");o[u]=e[a.indexOf(c)]});if(n.length!==e.length)throw new Error("Mismatch in the number of files in weights manifest ("+n.length+") and the number of weight files provided ("+e.length+").");return o},r}();function Ys(r,t,e,n){(function(o){E(o!=null&&Array.isArray(o)&&o.length>0,function(){return"promises must be a none empty array"})})(r),function(o,i){E(o>=0&&o<=1,function(){return"Progress fraction must be in range [0, 1], but got startFraction "+o}),E(i>=0&&i<=1,function(){return"Progress fraction must be in range [0, 1], but got endFraction "+i}),E(i>=o,function(){return"startFraction must be no more than endFraction, but got startFraction "+o+" and endFraction "+i})}(e=e??0,n=n??1);var a=0;return Promise.all(r.map(function(o){return o.then(function(i){var s=e+ ++a/r.length*(n-e);return t(s),i}),o}))}function jc(r,t){return ne(this,void 0,void 0,function(){var e,n,a,o,i,s,u,c,l;return re(this,function(d){switch(d.label){case 0:return t==null&&(t={}),e=t.fetchFunc==null?z().platform.fetch:t.fetchFunc,n=r.map(function(h){return e(h,t.requestInit,{isBinary:!0})}),a=0,o=.5,t.onProgress!=null?[3,2]:[4,Promise.all(n)];case 1:return i=d.sent(),[3,4];case 2:return[4,Ys(n,t.onProgress,a,o)];case 3:i=d.sent(),d.label=4;case 4:return s=i.map(function(h){return h.arrayBuffer()}),u=.5,c=1,t.onProgress!=null?[3,6]:[4,Promise.all(s)];case 5:return l=d.sent(),[3,8];case 6:return[4,Ys(s,t.onProgress,u,c)];case 7:l=d.sent(),d.label=8;case 8:return[2,l]}})})}function Js(r){var t=this;return function(e,n,a){return n===void 0&&(n=""),ne(t,void 0,void 0,function(){var o,i,s,u,c,l,d,h,f,p;return re(this,function(v){switch(v.label){case 0:if(o=e.map(function(){return!1}),i={},s=a!=null?a.map(function(){return!1}):[],u=[],e.forEach(function(m,g){var x=0;m.weights.forEach(function(b){var _="quantization"in b?b.quantization.dtype:b.dtype,y=$o[_]*ae(b.shape),w=function(){o[g]=!0,i[g]==null&&(i[g]=[]),i[g].push({manifestEntry:b,groupOffset:x,sizeBytes:y})};a!=null?a.forEach(function(S,I){S===b.name&&(w(),s[I]=!0)}):w(),u.push(b.name),x+=y})}),!s.every(function(m){return m}))throw c=a.filter(function(m,g){return!s[g]}),new Error("Could not find weights in manifest with names: "+c.join(", ")+`. 
Manifest JSON has weights with names: `+u.join(", ")+".");return l=o.reduce(function(m,g,x){return g&&m.push(x),m},[]),d=[],l.forEach(function(m){e[m].paths.forEach(function(g){var x=n+(n.endsWith("/")?"":"/")+g;d.push(x)})}),[4,r(d)];case 1:return h=v.sent(),f={},p=0,l.forEach(function(m){for(var g=e[m].paths.length,x=0,b=0;b<g;b++)x+=h[p+b].byteLength;for(var _=new ArrayBuffer(x),y=new Uint8Array(_),w=0,S=0;S<g;S++){var I=new Uint8Array(h[p+S]);y.set(I,w),w+=I.byteLength}i[m].forEach(function(k){var R=Uc(_.slice(k.groupOffset,k.groupOffset+k.sizeBytes),[k.manifestEntry]);for(var N in R)f[N]=R[N]}),p+=g}),[2,f]}})})}}yt.registerSaveRouter(function(r){return z().getBool("IS_BROWSER")&&!Array.isArray(r)&&r.startsWith(Eo.URL_SCHEME)?function(t){return t===void 0&&(t="model"),new Eo(t)}(r.slice(Eo.URL_SCHEME.length)):null});var qc=function(){function r(t,e){if(this.DEFAULT_METHOD="POST",e==null&&(e={}),this.weightPathPrefix=e.weightPathPrefix,this.onProgress=e.onProgress,e.fetchFunc!=null?(E(typeof e.fetchFunc=="function",function(){return"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"}),this.fetch=e.fetchFunc):this.fetch=z().platform.fetch,E(t!=null&&t.length>0,function(){return"URL path for http must not be null, undefined or empty."}),Array.isArray(t)&&E(t.length===2,function(){return"URL paths for http must have a length of 2, (actual length is "+t.length+")."}),this.path=t,e.requestInit!=null&&e.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=e.requestInit||{}}return r.prototype.save=function(t){return ne(this,void 0,void 0,function(){var e,n,a,o;return re(this,function(i){switch(i.label){case 0:if(t.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");return(e=Object.assign({method:this.DEFAULT_METHOD},this.requestInit)).body=new FormData,n=[{paths:["./model.weights.bin"],weights:t.weightSpecs}],a={modelTopology:t.modelTopology,format:t.format,generatedBy:t.generatedBy,convertedBy:t.convertedBy,userDefinedMetadata:t.userDefinedMetadata,weightsManifest:n},e.body.append("model.json",new Blob([JSON.stringify(a)],{type:"application/json"}),"model.json"),t.weightData!=null&&e.body.append("model.weights.bin",new Blob([t.weightData],{type:"application/octet-stream"}),"model.weights.bin"),[4,this.fetch(this.path,e)];case 1:if((o=i.sent()).ok)return[2,{modelArtifactsInfo:Gr(t),responses:[o]}];throw new Error("BrowserHTTPRequest.save() failed due to HTTP response status "+o.status+".")}})})},r.prototype.load=function(){return ne(this,void 0,void 0,function(){var t,e,n,a,o,i,s,u,c,l,d,h;return re(this,function(f){switch(f.label){case 0:return[4,this.fetch(this.path,this.requestInit)];case 1:if(!(t=f.sent()).ok)throw new Error("Request to "+this.path+" failed with status code "+t.status+". Please verify this URL points to the model JSON of the model to load.");f.label=2;case 2:return f.trys.push([2,4,,5]),[4,t.json()];case 3:return e=f.sent(),[3,5];case 4:throw f.sent(),n="Failed to parse model JSON of response from "+this.path+".",this.path.endsWith(".pb")?n+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":n+=" Please make sure the server is serving valid JSON for this request.",new Error(n);case 5:if(a=e.modelTopology,o=e.weightsManifest,i=e.generatedBy,s=e.convertedBy,u=e.format,c=e.userDefinedMetadata,a==null&&o==null)throw new Error("The JSON from HTTP path "+this.path+" contains neither model topology or manifest for weights.");return o==null?[3,7]:[4,this.loadWeights(o)];case 6:h=f.sent(),l=h[0],d=h[1],f.label=7;case 7:return[2,{modelTopology:a,weightSpecs:l,weightData:d,userDefinedMetadata:c,generatedBy:i,convertedBy:s,format:u}]}})})},r.prototype.loadWeights=function(t){return ne(this,void 0,void 0,function(){var e,n,a,o,i,s,u,c,l,d,h;return re(this,function(f){switch(f.label){case 0:for(e=Array.isArray(this.path)?this.path[1]:this.path,n=function(p){var v=p.lastIndexOf("/"),m=p.lastIndexOf("?"),g=p.substring(0,v),x=m>v?p.substring(m):"";return[g+"/",x]}(e),a=n[0],o=n[1],i=this.weightPathPrefix||a,s=[],u=0,c=t;u<c.length;u++)l=c[u],s.push.apply(s,l.weights);return d=[],t.forEach(function(p){p.paths.forEach(function(v){d.push(i+v+o)})}),[4,jc(d,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress})];case 1:return h=f.sent(),[2,[s,Ti(h)]]}})})},r.URL_SCHEME_REGEX=/^https?:\/\//,r}();function Ko(r){return r.match(qc.URL_SCHEME_REGEX)!=null}var Qs=function(r,t){return typeof fetch>"u"?null:(Array.isArray(r)?r.every(function(e){return Ko(e)}):Ko(r))?Xo(r,{onProgress:t}):null};function Xo(r,t){return new qc(r,t)}yt.registerSaveRouter(Qs),yt.registerLoadRouter(Qs);var Ro=function(){function r(t){this.modelArtifacts=t}return r.prototype.load=function(){return ne(this,void 0,void 0,function(){return re(this,function(t){return[2,this.modelArtifacts]})})},r}(),O0=function(){function r(t){this.saveHandler=t}return r.prototype.save=function(t){return ne(this,void 0,void 0,function(){return re(this,function(e){return[2,this.saveHandler(t)]})})},r}(),Kc=Object.freeze({browserFiles:function(r){return new M0(r)},browserHTTPRequest:function(r,t){return Xo(r,t)},concatenateArrayBuffers:Ti,decodeWeights:Uc,encodeWeights:function(r,t){return ne(this,void 0,void 0,function(){var e,n,a,o,i,s=this;return re(this,function(u){switch(u.label){case 0:for(e=[],n=[],a=Array.isArray(r)?r.map(function(c){return c.name}):Object.keys(r),o=function(c){var l=a[c],d=Array.isArray(r)?r[c].tensor:r[l];if(d.dtype!=="float32"&&d.dtype!=="int32"&&d.dtype!=="bool"&&d.dtype!=="string")throw new Error("Unsupported dtype in weight '"+l+"': "+d.dtype);var h={name:l,shape:d.shape,dtype:d.dtype};if(d.dtype==="string"){var f=new Promise(function(p){return ne(s,void 0,void 0,function(){var v,m,g,x,b,_,y;return re(this,function(w){switch(w.label){case 0:return[4,d.bytes()];case 1:for(v=w.sent(),m=v.reduce(function(S,I){return S+I.length},0)+Ra*v.length,g=new Uint8Array(m),x=0,b=0;b<v.length;b++)_=v[b],y=new Uint8Array(new Uint32Array([_.length]).buffer),g.set(y,x),x+=Ra,g.set(_,x),x+=_.length;return p(g),[2]}})})});n.push(f)}else n.push(d.data());t!=null&&(h.group=t),e.push(h)},i=0;i<a.length;++i)o(i);return[4,Promise.all(n)];case 1:return[2,{data:E0(u.sent()),specs:e}]}})})},fromMemory:function(r,t,e,n){return arguments.length===1?r.modelTopology!=null||r.weightSpecs!=null?new Ro(r):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Ro({modelTopology:r})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Ro({modelTopology:r,weightSpecs:t,weightData:e,trainingConfig:n}))},getLoadHandlers:function(r,t){return yt.getLoadHandlers(r,t)},getModelArtifactsInfoForJSON:Gr,getSaveHandlers:function(r){return yt.getSaveHandlers(r)},http:Xo,isHTTPScheme:Ko,loadWeights:function(r,t,e,n){return t===void 0&&(t=""),ne(this,void 0,void 0,function(){return re(this,function(a){return[2,Js(function(o){return jc(o,{requestInit:n})})(r,t,e)]})})},registerLoadRouter:function(r){return yt.registerLoadRouter(r)},registerSaveRouter:function(r){return yt.registerSaveRouter(r)},weightsLoaderFactory:Js,withSaveHandler:function(r){return new O0(r)},copyModel:function(r,t){return ne(this,void 0,void 0,function(){return re(this,function(e){return[2,js(r,t,!1)]})})},listModels:function(){return ne(this,void 0,void 0,function(){var r,t,e,n,a,o,i;return re(this,function(s){switch(s.label){case 0:r=bn.getSchemes(),t={},e=0,n=r,s.label=1;case 1:return e<n.length?(a=n[e],[4,bn.getManager(a).listModels()]):[3,4];case 2:for(i in o=s.sent())t[a+or+i]=o[i];s.label=3;case 3:return e++,[3,1];case 4:return[2,t]}})})},moveModel:function(r,t){return ne(this,void 0,void 0,function(){return re(this,function(e){return[2,js(r,t,!0)]})})},removeModel:function(r){return ne(this,void 0,void 0,function(){var t;return re(this,function(e){return t=ia(r),[2,bn.getManager(t.scheme).removeModel(t.path)]})})}}),Xn;A({confusionMatrix_:function(r,t,e){var n=C(r,"labels","confusionMatrix"),a=C(t,"predictions","confusionMatrix");E(e==null||e>0&&Number.isInteger(e),function(){return"If provided, numClasses must be a positive integer, but got "+e}),E(n.rank===1,function(){return"Expected the rank of labels to be 1, but got "+n.rank}),E(a.rank===1,function(){return"Expected the rank of predictions to be 1, but got "+a.rank}),E(n.shape[0]===a.shape[0],function(){return"Mismatch in the number of examples: "+n.shape[0]+" vs. "+a.shape[0]+". Labels and predictions should have the same number of elements."}),E(e>0&&Number.isInteger(e),function(){return"numClasses is required to be a positive integer, but got "+e});var o=Vo(n.asType("int32"),e),i=Vo(a.asType("int32"),e);return o.transpose().matMul(i).asType("int32")}});var B0=A({fromPixels_:function(r,t){if(t===void 0&&(t=3),t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(r==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");var e=!1,n=!1,a=!1,o=!1,i=!1;if(r.data instanceof Uint8Array)e=!0;else if(typeof ImageData<"u"&&r instanceof ImageData)n=!0;else if(typeof HTMLVideoElement<"u"&&r instanceof HTMLVideoElement)a=!0;else if(typeof HTMLImageElement<"u"&&r instanceof HTMLImageElement)o=!0;else{if(r.getContext==null)throw new Error("pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was "+r.constructor.name);i=!0}if(a&&a&&r.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the <video> element.");if(_u("FromPixels",T.backendName)!=null)return T.runKernel("FromPixels",{pixels:r},{numChannels:t});var s,u,c=a?[r.videoWidth,r.videoHeight]:[r.width,r.height],l=c[0],d=c[1];if(i?s=r.getContext("2d").getImageData(0,0,l,d).data:n||e?s=r.data:(o||a)&&(Xn==null&&(Xn=document.createElement("canvas").getContext("2d")),Xn.canvas.width=l,Xn.canvas.height=d,Xn.drawImage(r,0,0,l,d),s=Xn.getImageData(0,0,l,d).data),t===4)u=new Int32Array(s);else{var h=l*d;u=new Int32Array(h*t);for(var f=0;f<h;f++)for(var p=0;p<t;++p)u[f*t+p]=s[4*f+p]}return ii(u,[d,l,t],"int32")}}),Ni=Object.freeze({toPixels:function(r,t){return ne(this,void 0,void 0,function(){var e,n,a,o,i,s,u,c,l,d,h,f,p,v,m,g,x,b,_,y,w,S,I;return re(this,function(k){switch(k.label){case 0:if(e=C(r,"img","toPixels"),r instanceof Oe||(e=e.toInt()),e.rank!==2&&e.rank!==3)throw new Error("toPixels only supports rank 2 or 3 tensors, got rank "+e.rank+".");if(n=e.shape.slice(0,2),a=n[0],o=n[1],(i=e.rank===2?1:e.shape[2])>4||i===2)throw new Error("toPixels only supports depth of size 1, 3 or 4 but got "+i);return[4,e.data()];case 1:return s=k.sent(),u=e.min(),c=e.max(),[4,Promise.all([u.data(),c.data()])];case 2:if(l=k.sent(),d=l[0],h=l[1],f=d[0],p=h[0],u.dispose(),c.dispose(),e.dtype==="float32"){if(f<0||p>1)throw new Error("Tensor values for a float32 Tensor must be in the range [0 - 1] but got range ["+f+" - "+p+"].")}else{if(e.dtype!=="int32")throw new Error("Unsupported type for toPixels: "+e.dtype+". Please use float32 or int32 tensors.");if(f<0||p>255)throw new Error("Tensor values for a int32 Tensor must be in the range [0 - 255] but got range ["+f+" - "+p+"].")}for(v=e.dtype==="float32"?255:1,m=new Uint8ClampedArray(o*a*4),g=0;g<a*o;++g)x=void 0,b=void 0,_=void 0,y=void 0,i===1?(x=s[g]*v,b=s[g]*v,_=s[g]*v,y=255):i===3?(x=s[3*g]*v,b=s[3*g+1]*v,_=s[3*g+2]*v,y=255):i===4&&(x=s[4*g]*v,b=s[4*g+1]*v,_=s[4*g+2]*v,y=s[4*g+3]*v),m[(w=4*g)+0]=Math.round(x),m[w+1]=Math.round(b),m[w+2]=Math.round(_),m[w+3]=Math.round(y);return t!=null&&(t.width=o,t.height=a,S=t.getContext("2d"),I=new ImageData(m,o,a),S.putImageData(I,0,0)),e!==r&&e.dispose(),[2,m]}})})},fromPixels:B0}),L0=function(){function r(){}return r.prototype.getClassName=function(){return this.constructor.className},r.fromConfig=function(t,e){return new t(e)},r}(),W0=function(){function r(){this.classNameMap={}}return r.getMap=function(){return r.instance==null&&(r.instance=new r),r.instance},r.register=function(t){r.getMap().classNameMap[t.className]=[t,t.fromConfig]},r}();function Un(r){E(r.className!=null,function(){return"Class being registered does not have the static className property defined."}),E(typeof r.className=="string",function(){return"className is required to be a string, but got type "+typeof r.className}),E(r.className.length>0,function(){return"Class being registered has an empty-string as its className, which is disallowed."}),W0.register(r)}var Gn=function(r){function t(){return r!==null&&r.apply(this,arguments)||this}return Mt(t,r),t.prototype.minimize=function(e,n,a){n===void 0&&(n=!1);var o=this.computeGradients(e,a),i=o.value,s=o.grads;if(a!=null){var u=a.map(function(c){return{name:c.name,tensor:s[c.name]}});this.applyGradients(u)}else this.applyGradients(s);return pt(s),n?i:(i.dispose(),null)},Object.defineProperty(t.prototype,"iterations",{get:function(){return this.iterations_==null&&(this.iterations_=0),this.iterations_},enumerable:!0,configurable:!0}),t.prototype.incrementIterations=function(){this.iterations_=this.iterations+1},t.prototype.computeGradients=function(e,n){return Xp(e,n)},t.prototype.dispose=function(){this.iterations_!=null&&pt(this.iterations_)},t.prototype.saveIterations=function(){return ne(this,void 0,void 0,function(){return re(this,function(e){return this.iterations_==null&&(this.iterations_=0),[2,{name:"iter",tensor:J(this.iterations_,"int32")}]})})},t.prototype.getWeights=function(){return ne(this,void 0,void 0,function(){return re(this,function(e){throw new Error("getWeights() is not implemented for this optimizer yet.")})})},t.prototype.setWeights=function(e){return ne(this,void 0,void 0,function(){return re(this,function(n){throw new Error("setWeights() is not implemented for this optimizer class "+this.getClassName())})})},t.prototype.extractIterations=function(e){return ne(this,void 0,void 0,function(){var n;return re(this,function(a){switch(a.label){case 0:return n=this,[4,e[0].tensor.data()];case 1:return n.iterations_=a.sent()[0],[2,e.slice(1)]}})})},t}(L0);Object.defineProperty(Gn,Symbol.hasInstance,{value:function(r){return r.minimize!=null&&r.computeGradients!=null&&r.applyGradients!=null}});var V0=function(r){function t(e,n,a){a===void 0&&(a=null);var o=r.call(this)||this;return o.learningRate=e,o.rho=n,o.epsilon=a,o.accumulatedGrads=[],o.accumulatedUpdates=[],a==null&&(o.epsilon=T.backend.epsilon()),o}return Mt(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e)).forEach(function(a,o){var i=T.registeredVariables[a];n.accumulatedGrads[o]==null&&(n.accumulatedGrads[o]={originalName:a+"/accum_grad",variable:ee(function(){return Ie(i).variable(!1)})}),n.accumulatedUpdates[o]==null&&(n.accumulatedUpdates[o]={originalName:a+"/accum_var",variable:ee(function(){return Ie(i).variable(!1)})});var s=Array.isArray(e)?e[o].tensor:e[a];if(s!=null){var u=n.accumulatedGrads[o].variable,c=n.accumulatedUpdates[o].variable;ee(function(){var l=u.mul(n.rho).add(s.square().mul(1-n.rho)),d=c.add(n.epsilon).sqrt().div(u.add(n.epsilon).sqrt()).mul(s),h=c.mul(n.rho).add(d.square().mul(1-n.rho));u.assign(l),c.assign(h);var f=d.mul(-n.learningRate).add(i);i.assign(f)})}}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedUpdates!=null&&(pt(this.accumulatedGrads.map(function(e){return e.variable})),pt(this.accumulatedUpdates.map(function(e){return e.variable})))},t.prototype.getWeights=function(){return ne(this,void 0,void 0,function(){var e;return re(this,function(n){switch(n.label){case 0:return e=this.accumulatedGrads.concat(this.accumulatedUpdates),[4,this.saveIterations()];case 1:return[2,[n.sent()].concat(e.map(function(a){return{name:a.originalName,tensor:a.variable}}))]}})})},t.prototype.setWeights=function(e){return ne(this,void 0,void 0,function(){var n;return re(this,function(a){switch(a.label){case 0:return[4,this.extractIterations(e)];case 1:return e=a.sent(),n=e.length/2,this.accumulatedGrads=e.slice(0,n).map(function(o){return{originalName:o.name,variable:o.tensor.variable(!1)}}),this.accumulatedUpdates=e.slice(n,2*n).map(function(o){return{originalName:o.name,variable:o.tensor.variable(!1)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}},t.fromConfig=function(e,n){return new e(n.learningRate,n.rho,n.epsilon)},t.className="Adadelta",t}(Gn);Un(V0);var z0=function(r){function t(e,n){n===void 0&&(n=.1);var a=r.call(this)||this;return a.learningRate=e,a.initialAccumulatorValue=n,a.accumulatedGrads=[],a}return Mt(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e)).forEach(function(a,o){var i=T.registeredVariables[a];n.accumulatedGrads[o]==null&&(n.accumulatedGrads[o]={originalName:a+"/accumulator",variable:ee(function(){return Kt(i.shape,n.initialAccumulatorValue).variable(!1)})});var s=Array.isArray(e)?e[o].tensor:e[a];if(s!=null){var u=n.accumulatedGrads[o].variable;ee(function(){var c=u.add(s.square());u.assign(c);var l=s.div(c.add(T.backend.epsilon()).sqrt()).mul(-n.learningRate).add(i);i.assign(l)})}}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedGrads!=null&&pt(this.accumulatedGrads.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return ne(this,void 0,void 0,function(){return re(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulatedGrads.map(function(n){return{name:n.originalName,tensor:n.variable}}))]}})})},t.prototype.setWeights=function(e){return ne(this,void 0,void 0,function(){return re(this,function(n){switch(n.label){case 0:return[4,this.extractIterations(e)];case 1:return e=n.sent(),this.accumulatedGrads=e.map(function(a){return{originalName:a.name,variable:a.tensor.variable(!1)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}},t.fromConfig=function(e,n){return new e(n.learningRate,n.initialAccumulatorValue)},t.className="Adagrad",t}(Gn);Un(z0);var U0=function(r){function t(e,n,a,o){o===void 0&&(o=null);var i=r.call(this)||this;return i.learningRate=e,i.beta1=n,i.beta2=a,i.epsilon=o,i.accumulatedFirstMoment=[],i.accumulatedSecondMoment=[],ee(function(){i.accBeta1=J(n).variable(),i.accBeta2=J(a).variable()}),o==null&&(i.epsilon=T.backend.epsilon()),i}return Mt(t,r),t.prototype.applyGradients=function(e){var n=this,a=Array.isArray(e)?e.map(function(o){return o.name}):Object.keys(e);ee(function(){var o=Xe(1,n.accBeta1),i=Xe(1,n.accBeta2);a.forEach(function(s,u){var c=T.registeredVariables[s];n.accumulatedFirstMoment[u]==null&&(n.accumulatedFirstMoment[u]={originalName:s+"/m",variable:ee(function(){return Ie(c).variable(!1)})}),n.accumulatedSecondMoment[u]==null&&(n.accumulatedSecondMoment[u]={originalName:s+"/v",variable:ee(function(){return Ie(c).variable(!1)})});var l=Array.isArray(e)?e[u].tensor:e[s];if(l!=null){var d=n.accumulatedFirstMoment[u].variable,h=n.accumulatedSecondMoment[u].variable,f=d.mul(n.beta1).add(l.mul(1-n.beta1)),p=h.mul(n.beta2).add(l.square().mul(1-n.beta2)),v=f.div(o),m=p.div(i);d.assign(f),h.assign(p);var g=v.div(m.sqrt().add(n.epsilon)).mul(-n.learningRate).add(c);c.assign(g)}}),n.accBeta1.assign(n.accBeta1.mul(n.beta1)),n.accBeta2.assign(n.accBeta2.mul(n.beta2))}),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&pt(this.accumulatedFirstMoment.map(function(e){return e.variable})),this.accumulatedSecondMoment!=null&&pt(this.accumulatedSecondMoment.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return ne(this,void 0,void 0,function(){var e;return re(this,function(n){switch(n.label){case 0:return e=this.accumulatedFirstMoment.concat(this.accumulatedSecondMoment),[4,this.saveIterations()];case 1:return[2,[n.sent()].concat(e.map(function(a){return{name:a.originalName,tensor:a.variable}}))]}})})},t.prototype.setWeights=function(e){return ne(this,void 0,void 0,function(){var n,a=this;return re(this,function(o){switch(o.label){case 0:return[4,this.extractIterations(e)];case 1:return e=o.sent(),ee(function(){a.accBeta1.assign(Ca(a.beta1,a.iterations_+1)),a.accBeta2.assign(Ca(a.beta2,a.iterations_+1))}),n=e.length/2,this.accumulatedFirstMoment=e.slice(0,n).map(function(i){return{originalName:i.name,variable:i.tensor.variable(!1)}}),this.accumulatedSecondMoment=e.slice(n,2*n).map(function(i){return{originalName:i.name,variable:i.tensor.variable(!1)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}},t.fromConfig=function(e,n){return new e(n.learningRate,n.beta1,n.beta2,n.epsilon)},t.className="Adam",t}(Gn);Un(U0);var G0=function(r){function t(e,n,a,o,i){o===void 0&&(o=null),i===void 0&&(i=0);var s=r.call(this)||this;return s.learningRate=e,s.beta1=n,s.beta2=a,s.epsilon=o,s.decay=i,s.accumulatedFirstMoment=[],s.accumulatedWeightedInfNorm=[],ee(function(){s.iteration=J(0).variable(),s.accBeta1=J(n).variable()}),o==null&&(s.epsilon=T.backend.epsilon()),s}return Mt(t,r),t.prototype.applyGradients=function(e){var n=this,a=Array.isArray(e)?e.map(function(o){return o.name}):Object.keys(e);ee(function(){var o=Xe(1,n.accBeta1),i=Nt(-n.learningRate,n.iteration.mul(n.decay).add(1));a.forEach(function(s,u){var c=T.registeredVariables[s];n.accumulatedFirstMoment[u]==null&&(n.accumulatedFirstMoment[u]={originalName:s+"/m",variable:Ie(c).variable(!1)}),n.accumulatedWeightedInfNorm[u]==null&&(n.accumulatedWeightedInfNorm[u]={originalName:s+"/v",variable:Ie(c).variable(!1)});var l=Array.isArray(e)?e[u].tensor:e[s];if(l!=null){var d=n.accumulatedFirstMoment[u].variable,h=n.accumulatedWeightedInfNorm[u].variable,f=d.mul(n.beta1).add(l.mul(1-n.beta1)),p=h.mul(n.beta2),v=l.abs(),m=p.maximum(v);d.assign(f),h.assign(m);var g=i.div(o).mul(f.div(m.add(n.epsilon))).add(c);c.assign(g)}}),n.iteration.assign(n.iteration.add(1)),n.accBeta1.assign(n.accBeta1.mul(n.beta1))}),this.incrementIterations()},t.prototype.dispose=function(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&pt(this.accumulatedFirstMoment.map(function(e){return e.variable})),this.accumulatedWeightedInfNorm!=null&&pt(this.accumulatedWeightedInfNorm.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return ne(this,void 0,void 0,function(){return re(this,function(e){throw new Error("getWeights() is not implemented for Adamax yet.")})})},t.prototype.setWeights=function(e){return ne(this,void 0,void 0,function(){return re(this,function(n){throw new Error("setWeights() is not implemented for Adamax yet.")})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}},t.fromConfig=function(e,n){return new e(n.learningRate,n.beta1,n.beta2,n.epsilon,n.decay)},t.className="Adamax",t}(Gn);Un(G0);var Xc=function(r){function t(e){var n=r.call(this)||this;return n.learningRate=e,n.setLearningRate(e),n}return Mt(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e)).forEach(function(a,o){var i=Array.isArray(e)?e[o].tensor:e[a];if(i!=null){var s=T.registeredVariables[a];ee(function(){var u=n.c.mul(i).add(s);s.assign(u)})}}),this.incrementIterations()},t.prototype.setLearningRate=function(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=cp(J(-e))},t.prototype.dispose=function(){this.c.dispose()},t.prototype.getWeights=function(){return ne(this,void 0,void 0,function(){return re(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()]]}})})},t.prototype.setWeights=function(e){return ne(this,void 0,void 0,function(){return re(this,function(n){switch(n.label){case 0:return[4,this.extractIterations(e)];case 1:if((e=n.sent()).length!==0)throw new Error("SGD optimizer does not have settable weights.");return[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate}},t.fromConfig=function(e,n){return new e(n.learningRate)},t.className="SGD",t}(Gn);Un(Xc);var H0=function(r){function t(e,n,a){a===void 0&&(a=!1);var o=r.call(this,e)||this;return o.learningRate=e,o.momentum=n,o.useNesterov=a,o.accumulations=[],o.m=J(o.momentum),o}return Mt(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e)).forEach(function(a,o){var i=T.registeredVariables[a];n.accumulations[o]==null&&(n.accumulations[o]={originalName:a+"/momentum",variable:ee(function(){return Ie(i).variable(!1)})});var s=n.accumulations[o].variable,u=Array.isArray(e)?e[o].tensor:e[a];u!=null&&ee(function(){var c,l=n.m.mul(s).add(u);c=n.useNesterov?n.c.mul(u.add(l.mul(n.m))).add(i):n.c.mul(l).add(i),s.assign(l),i.assign(c)})}),this.incrementIterations()},t.prototype.dispose=function(){this.m.dispose(),this.accumulations!=null&&pt(this.accumulations.map(function(e){return e.variable}))},t.prototype.setMomentum=function(e){this.momentum=e},t.prototype.getWeights=function(){return ne(this,void 0,void 0,function(){return re(this,function(e){switch(e.label){case 0:return[4,this.saveIterations()];case 1:return[2,[e.sent()].concat(this.accumulations.map(function(n){return{name:n.originalName,tensor:n.variable}}))]}})})},t.prototype.setWeights=function(e){return ne(this,void 0,void 0,function(){return re(this,function(n){switch(n.label){case 0:return[4,this.extractIterations(e)];case 1:return e=n.sent(),this.accumulations=e.map(function(a){return{originalName:a.name,variable:a.tensor.variable(!1)}}),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}},t.fromConfig=function(e,n){return new e(n.learningRate,n.momentum,n.useNesterov)},t.className="Momentum",t}(Xc);Un(H0);var $0=function(r){function t(e,n,a,o,i){n===void 0&&(n=.9),a===void 0&&(a=0),o===void 0&&(o=null),i===void 0&&(i=!1);var s=r.call(this)||this;if(s.learningRate=e,s.decay=n,s.momentum=a,s.epsilon=o,s.accumulatedMeanSquares=[],s.accumulatedMoments=[],s.accumulatedMeanGrads=[],s.centered=i,o==null&&(s.epsilon=T.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.");return s}return Mt(t,r),t.prototype.applyGradients=function(e){var n=this;(Array.isArray(e)?e.map(function(a){return a.name}):Object.keys(e)).forEach(function(a,o){var i=T.registeredVariables[a];n.accumulatedMeanSquares[o]==null&&(n.accumulatedMeanSquares[o]={originalName:a+"/rms",variable:ee(function(){return Ie(i).variable(!1)})}),n.accumulatedMoments[o]==null&&(n.accumulatedMoments[o]={originalName:a+"/momentum",variable:ee(function(){return Ie(i).variable(!1)})}),n.accumulatedMeanGrads[o]==null&&n.centered&&(n.accumulatedMeanGrads[o]={originalName:a+"/mg",variable:ee(function(){return Ie(i).variable(!1)})});var s=Array.isArray(e)?e[o].tensor:e[a];if(s!=null){var u=n.accumulatedMeanSquares[o].variable,c=n.accumulatedMoments[o].variable;ee(function(){var l=u.mul(n.decay).add(s.square().mul(1-n.decay));if(n.centered){var d=n.accumulatedMeanGrads[o].variable,h=d.mul(n.decay).add(s.mul(1-n.decay)),f=c.mul(n.momentum).add(s.mul(n.learningRate).div(l.sub(h.square().add(n.epsilon)).sqrt()));u.assign(l),d.assign(h),c.assign(f);var p=i.sub(f);i.assign(p)}else{var v=u.mul(n.decay).add(s.square().mul(1-n.decay));f=c.mul(n.momentum).add(s.mul(n.learningRate).div(v.add(n.epsilon).sqrt())),u.assign(v),c.assign(f),p=i.sub(f),i.assign(p)}})}}),this.incrementIterations()},t.prototype.dispose=function(){this.accumulatedMeanSquares!=null&&pt(this.accumulatedMeanSquares.map(function(e){return e.variable})),this.accumulatedMeanGrads!=null&&this.centered&&pt(this.accumulatedMeanGrads.map(function(e){return e.variable})),this.accumulatedMoments!=null&&pt(this.accumulatedMoments.map(function(e){return e.variable}))},t.prototype.getWeights=function(){return ne(this,void 0,void 0,function(){var e;return re(this,function(n){switch(n.label){case 0:return e=this.accumulatedMeanSquares.concat(this.accumulatedMoments),this.centered&&e.push.apply(e,this.accumulatedMeanGrads),[4,this.saveIterations()];case 1:return[2,[n.sent()].concat(e.map(function(a){return{name:a.originalName,tensor:a.variable}}))]}})})},t.prototype.setWeights=function(e){return ne(this,void 0,void 0,function(){var n;return re(this,function(a){switch(a.label){case 0:return[4,this.extractIterations(e)];case 1:return e=a.sent(),n=this.centered?e.length/3:e.length/2,this.accumulatedMeanSquares=e.slice(0,n).map(function(o){return{originalName:o.name,variable:o.tensor.variable(!1)}}),this.accumulatedMoments=e.slice(n,2*n).map(function(o){return{originalName:o.name,variable:o.tensor.variable(!1)}}),this.centered&&(this.accumulatedMeanGrads=e.slice(2*n,3*n).map(function(o){return{originalName:o.name,variable:o.tensor.variable(!1)}})),[2]}})})},t.prototype.getConfig=function(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}},t.fromConfig=function(e,n){return new e(n.learningRate,n.decay,n.momentum,n.epsilon,n.centered)},t.className="RMSProp",t}(Gn);Un($0);Oe.prototype.squaredDifference=function(r){return lc(this,r)},B=g0;/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */var Yo=function(r,t){return Yo=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,n){e.__proto__=n}||function(e,n){for(var a in n)n.hasOwnProperty(a)&&(e[a]=n[a])},Yo(r,t)};function fe(r,t){Yo(r,t);function e(){this.constructor=r}r.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}var ot=function(){return ot=Object.assign||function(t){for(var e,n=1,a=arguments.length;n<a;n++){e=arguments[n];for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(t[o]=e[o])}return t},ot.apply(this,arguments)};function ie(r,t,e,n){function a(o){return o instanceof e?o:new e(function(i){i(o)})}return new(e||(e=Promise))(function(o,i){function s(l){try{c(n.next(l))}catch(d){i(d)}}function u(l){try{c(n.throw(l))}catch(d){i(d)}}function c(l){l.done?o(l.value):a(l.value).then(s,u)}c((n=n.apply(r,t||[])).next())})}function se(r,t){var e={label:0,sent:function(){if(o[0]&1)throw o[1];return o[1]},trys:[],ops:[]},n,a,o,i;return i={next:s(0),throw:s(1),return:s(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function s(c){return function(l){return u([c,l])}}function u(c){if(n)throw new TypeError("Generator is already executing.");for(;e;)try{if(n=1,a&&(o=c[0]&2?a.return:c[0]?a.throw||((o=a.return)&&o.call(a),0):a.next)&&!(o=o.call(a,c[1])).done)return o;switch(a=0,o&&(c=[c[0]&2,o.value]),c[0]){case 0:case 1:o=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++,a=c[1],c=[0];continue;case 7:c=e.ops.pop(),e.trys.pop();continue;default:if(o=e.trys,!(o=o.length>0&&o[o.length-1])&&(c[0]===6||c[0]===2)){e=0;continue}if(c[0]===3&&(!o||c[1]>o[0]&&c[1]<o[3])){e.label=c[1];break}if(c[0]===6&&e.label<o[1]){e.label=o[1],o=c;break}if(o&&e.label<o[2]){e.label=o[2],e.ops.push(c);break}o[2]&&e.ops.pop(),e.trys.pop();continue}c=t.call(r,e)}catch(l){c=[6,l],a=0}finally{n=o=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function Rr(){for(var r=0,t=0,e=arguments.length;t<e;t++)r+=arguments[t].length;for(var n=Array(r),a=0,t=0;t<e;t++)for(var o=arguments[t],i=0,s=o.length;i<s;i++,a++)n[a]=o[i];return n}var ur=function(){function r(t,e){if(!On(t)||!On(e))throw new Error("Dimensions.constructor - expected width and height to be valid numbers, instead have "+JSON.stringify({width:t,height:e}));this._width=t,this._height=e}return Object.defineProperty(r.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),r.prototype.reverse=function(){return new r(1/this.width,1/this.height)},r}();function Va(r,t){return r instanceof Oe&&r.shape.length===t}function j0(r){return Va(r,2)}function za(r){return Va(r,3)}function yn(r){return Va(r,4)}function q0(r){return r%1!==0}function Zs(r){return r%2===0}function K0(r,t){t===void 0&&(t=2);var e=Math.pow(10,t);return Math.floor(r*e)/e}function eu(r){return r&&r.width&&r.height}function X0(r,t){var e=r.width,n=r.height,a=t/Math.max(n,e);return new ur(Math.round(e*a),Math.round(n*a))}function Fi(r){return r.reduce(function(t,e){return t.add(e)},new Se(0,0)).div(new Se(r.length,r.length))}function Tr(r,t,e){return Array(r).fill(0).map(function(n,a){return t+a*e})}function On(r){return!!r&&r!==1/0&&r!==-1/0&&!isNaN(r)||r===0}function tu(r){return On(r)&&0<=r&&r<=1}var Se=function(){function r(t,e){this._x=t,this._y=e}return Object.defineProperty(r.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),r.prototype.add=function(t){return new r(this.x+t.x,this.y+t.y)},r.prototype.sub=function(t){return new r(this.x-t.x,this.y-t.y)},r.prototype.mul=function(t){return new r(this.x*t.x,this.y*t.y)},r.prototype.div=function(t){return new r(this.x/t.x,this.y/t.y)},r.prototype.abs=function(){return new r(Math.abs(this.x),Math.abs(this.y))},r.prototype.magnitude=function(){return Math.sqrt(Math.pow(this.x,2)+Math.pow(this.y,2))},r.prototype.floor=function(){return new r(Math.floor(this.x),Math.floor(this.y))},r}(),Cn=function(){function r(t,e){e===void 0&&(e=!0);var n=t||{},a=[n.left,n.top,n.right,n.bottom].every(On),o=[n.x,n.y,n.width,n.height].every(On);if(!o&&!a)throw new Error("Box.constructor - expected box to be IBoundingBox | IRect, instead have "+JSON.stringify(n));var i=o?[n.x,n.y,n.width,n.height]:[n.left,n.top,n.right-n.left,n.bottom-n.top],s=i[0],u=i[1],c=i[2],l=i[3];r.assertIsValidBox({x:s,y:u,width:c,height:l},"Box.constructor",e),this._x=s,this._y=u,this._width=c,this._height=l}return r.isRect=function(t){return!!t&&[t.x,t.y,t.width,t.height].every(On)},r.assertIsValidBox=function(t,e,n){if(n===void 0&&(n=!1),!r.isRect(t))throw new Error(e+" - invalid box: "+JSON.stringify(t)+", expected object with properties x, y, width, height");if(!n&&(t.width<0||t.height<0))throw new Error(e+" - width ("+t.width+") and height ("+t.height+") must be positive numbers")},Object.defineProperty(r.prototype,"x",{get:function(){return this._x},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"y",{get:function(){return this._y},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"width",{get:function(){return this._width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"height",{get:function(){return this._height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"left",{get:function(){return this.x},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"top",{get:function(){return this.y},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"right",{get:function(){return this.x+this.width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"bottom",{get:function(){return this.y+this.height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"area",{get:function(){return this.width*this.height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"topLeft",{get:function(){return new Se(this.left,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"topRight",{get:function(){return new Se(this.right,this.top)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"bottomLeft",{get:function(){return new Se(this.left,this.bottom)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"bottomRight",{get:function(){return new Se(this.right,this.bottom)},enumerable:!0,configurable:!0}),r.prototype.round=function(){var t=[this.x,this.y,this.width,this.height].map(function(i){return Math.round(i)}),e=t[0],n=t[1],a=t[2],o=t[3];return new r({x:e,y:n,width:a,height:o})},r.prototype.floor=function(){var t=[this.x,this.y,this.width,this.height].map(function(i){return Math.floor(i)}),e=t[0],n=t[1],a=t[2],o=t[3];return new r({x:e,y:n,width:a,height:o})},r.prototype.toSquare=function(){var t=this,e=t.x,n=t.y,a=t.width,o=t.height,i=Math.abs(a-o);return a<o&&(e-=i/2,a+=i),o<a&&(n-=i/2,o+=i),new r({x:e,y:n,width:a,height:o})},r.prototype.rescale=function(t){var e=eu(t)?t.width:t,n=eu(t)?t.height:t;return new r({x:this.x*e,y:this.y*n,width:this.width*e,height:this.height*n})},r.prototype.pad=function(t,e){var n=[this.x-t/2,this.y-e/2,this.width+t,this.height+e],a=n[0],o=n[1],i=n[2],s=n[3];return new r({x:a,y:o,width:i,height:s})},r.prototype.clipAtImageBorders=function(t,e){var n=this,a=n.x,o=n.y,i=n.right,s=n.bottom,u=Math.max(a,0),c=Math.max(o,0),l=i-u,d=s-c,h=Math.min(l,t-u),f=Math.min(d,e-c);return new r({x:u,y:c,width:h,height:f}).floor()},r.prototype.shift=function(t,e){var n=this,a=n.width,o=n.height,i=this.x+t,s=this.y+e;return new r({x:i,y:s,width:a,height:o})},r.prototype.padAtBorders=function(t,e){var n=this.width+1,a=this.height+1,o=1,i=1,s=n,u=a,c=this.left,l=this.top,d=this.right,h=this.bottom;return d>e&&(s=-d+e+n,d=e),h>t&&(u=-h+t+a,h=t),c<1&&(u=2-c,c=1),l<1&&(u=2-l,l=1),{dy:i,edy:u,dx:o,edx:s,y:l,ey:h,x:c,ex:d,w:n,h:a}},r.prototype.calibrate=function(t){return new r({left:this.left+t.left*this.width,top:this.top+t.top*this.height,right:this.right+t.right*this.width,bottom:this.bottom+t.bottom*this.height}).toSquare().round()},r}(),Ua=function(r){fe(t,r);function t(e,n,a,o,i){return i===void 0&&(i=!1),r.call(this,{left:e,top:n,right:a,bottom:o},i)||this}return t}(Cn),Yc=function(){function r(t,e,n,a,o){this._imageDims=new ur(o.width,o.height),this._score=t,this._classScore=e,this._className=n,this._box=new Cn(a).rescale(this._imageDims)}return Object.defineProperty(r.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"className",{get:function(){return this._className},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"box",{get:function(){return this._box},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageDims",{get:function(){return this._imageDims},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageWidth",{get:function(){return this.imageDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageHeight",{get:function(){return this.imageDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"relativeBox",{get:function(){return new Cn(this._box).rescale(this.imageDims.reverse())},enumerable:!0,configurable:!0}),r.prototype.forSize=function(t,e){return new r(this.score,this.classScore,this.className,this.relativeBox,{width:t,height:e})},r}(),Zt=function(r){fe(t,r);function t(e,n,a){return r.call(this,e,e,"",n,a)||this}return t.prototype.forSize=function(e,n){var a=r.prototype.forSize.call(this,e,n),o=a.score,i=a.relativeBox,s=a.imageDims;return new t(o,i,s)},t}(Yc);function Y0(r,t,e){e===void 0&&(e=!0);var n=Math.max(0,Math.min(r.right,t.right)-Math.max(r.left,t.left)),a=Math.max(0,Math.min(r.bottom,t.bottom)-Math.max(r.top,t.top)),o=n*a;return e?o/(r.area+t.area-o):o/Math.min(r.area,t.area)}function J0(r){var t=r.map(function(s){return s.x}),e=r.map(function(s){return s.y}),n=t.reduce(function(s,u){return u<s?u:s},1/0),a=e.reduce(function(s,u){return u<s?u:s},1/0),o=t.reduce(function(s,u){return s<u?u:s},0),i=e.reduce(function(s,u){return s<u?u:s},0);return new Ua(n,a,o,i)}function Nr(r,t,e,n){n===void 0&&(n=!0);for(var a=t.map(function(s,u){return{score:s,boxIndex:u}}).sort(function(s,u){return s.score-u.score}).map(function(s){return s.boxIndex}),o=[],i=function(){var s=a.pop();o.push(s);for(var u=a,c=[],l=0;l<u.length;l++){var d=u[l],h=r[s],f=r[d];c.push(Y0(h,f,n))}a=a.filter(function(p,v){return c[v]<=e})};a.length>0;)i();return o}function Hr(r,t){return ee(function(){var e=t[0],n=t[1],a=t[2],o=Kt(Rr(r.shape.slice(0,3),[1]),e),i=Kt(Rr(r.shape.slice(0,3),[1]),n),s=Kt(Rr(r.shape.slice(0,3),[1]),a),u=je([o,i,s],3);return Xe(r,u)})}function Q0(r,t){return t===void 0&&(t=!1),ee(function(){var e=r.shape.slice(1),n=e[0],a=e[1];if(n===a)return r;var o=Math.abs(n-a),i=Math.round(o*(t?.5:1)),s=n>a?2:1,u=function(f){var p=r.shape.slice();return p[s]=f,Kt(p,0)},c=u(i),l=o-c.shape[s],d=t&&l?u(l):null,h=[d,r,c].filter(function(f){return!!f}).map(function(f){return f.toFloat()});return je(h,s)})}function ko(r){return 1/(1+Math.exp(-r))}var Pi=function(r){fe(t,r);function t(e,n,a,o,i){return i===void 0&&(i=!1),r.call(this,{x:e,y:n,width:a,height:o},i)||this}return t}(Cn),Z0=.5,ex=.43,tx=.45,ka=function(){function r(t,e,n){n===void 0&&(n=new Se(0,0));var a=e.width,o=e.height;this._imgDims=new ur(a,o),this._shift=n,this._positions=t.map(function(i){return i.mul(new Se(a,o)).add(n)})}return Object.defineProperty(r.prototype,"shift",{get:function(){return new Se(this._shift.x,this._shift.y)},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageWidth",{get:function(){return this._imgDims.width},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"imageHeight",{get:function(){return this._imgDims.height},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"positions",{get:function(){return this._positions},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"relativePositions",{get:function(){var t=this;return this._positions.map(function(e){return e.sub(t._shift).div(new Se(t.imageWidth,t.imageHeight))})},enumerable:!0,configurable:!0}),r.prototype.forSize=function(t,e){return new this.constructor(this.relativePositions,{width:t,height:e})},r.prototype.shiftBy=function(t,e){return new this.constructor(this.relativePositions,this._imgDims,new Se(t,e))},r.prototype.shiftByPoint=function(t){return this.shiftBy(t.x,t.y)},r.prototype.align=function(t,e){if(e===void 0&&(e={}),t){var n=t instanceof Zt?t.box.floor():new Cn(t);return this.shiftBy(n.x,n.y).align(null,e)}var a=Object.assign({},{useDlibAlignment:!1,minBoxPadding:.2},e),o=a.useDlibAlignment,i=a.minBoxPadding;return o?this.alignDlib():this.alignMinBbox(i)},r.prototype.alignDlib=function(){var t=this.getRefPointsForAlignment(),e=t[0],n=t[1],a=t[2],o=function(d){return a.sub(d).magnitude()},i=(o(e)+o(n))/2,s=Math.floor(i/tx),u=Fi(t),c=Math.floor(Math.max(0,u.x-Z0*s)),l=Math.floor(Math.max(0,u.y-ex*s));return new Pi(c,l,Math.min(s,this.imageWidth+c),Math.min(s,this.imageHeight+l))},r.prototype.alignMinBbox=function(t){var e=J0(this.positions);return e.pad(e.width*t,e.height*t)},r.prototype.getRefPointsForAlignment=function(){throw new Error("getRefPointsForAlignment not implemented by base class")},r}(),nx=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.getRefPointsForAlignment=function(){var e=this.positions;return[e[0],e[1],Fi([e[3],e[4]])]},t}(ka),rx=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.getJawOutline=function(){return this.positions.slice(0,17)},t.prototype.getLeftEyeBrow=function(){return this.positions.slice(17,22)},t.prototype.getRightEyeBrow=function(){return this.positions.slice(22,27)},t.prototype.getNose=function(){return this.positions.slice(27,36)},t.prototype.getLeftEye=function(){return this.positions.slice(36,42)},t.prototype.getRightEye=function(){return this.positions.slice(42,48)},t.prototype.getMouth=function(){return this.positions.slice(48,68)},t.prototype.getRefPointsForAlignment=function(){return[this.getLeftEye(),this.getRightEye(),this.getMouth()].map(Fi)},t}(ka),nu=function(){function r(t,e){this._label=t,this._distance=e}return Object.defineProperty(r.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"distance",{get:function(){return this._distance},enumerable:!0,configurable:!0}),r.prototype.toString=function(t){return t===void 0&&(t=!0),""+this.label+(t?" ("+K0(this.distance)+")":"")},r}(),ru=function(r){fe(t,r);function t(e,n){var a=r.call(this,e)||this;return a._label=n,a}return t.assertIsValidLabeledBox=function(e,n){if(Cn.assertIsValidBox(e,n),!On(e.label))throw new Error(n+" - expected property label ("+e.label+") to be a number")},Object.defineProperty(t.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),t}(Cn),ta=function(){function r(t,e){if(typeof t!="string")throw new Error("LabeledFaceDescriptors - constructor expected label to be a string");if(!Array.isArray(e)||e.some(function(n){return!(n instanceof Float32Array)}))throw new Error("LabeledFaceDescriptors - constructor expected descriptors to be an array of Float32Array");this._label=t,this._descriptors=e}return Object.defineProperty(r.prototype,"label",{get:function(){return this._label},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"descriptors",{get:function(){return this._descriptors},enumerable:!0,configurable:!0}),r.prototype.toJSON=function(){return{label:this.label,descriptors:this.descriptors.map(function(t){return Array.from(t)})}},r.fromJSON=function(t){var e=t.descriptors.map(function(n){return new Float32Array(n)});return new r(t.label,e)},r}();(function(r){fe(t,r);function t(e,n,a,o){var i=r.call(this,e,n)||this;return i._score=a,i._classScore=o,i}return t.assertIsValidPredictedBox=function(e,n){if(ru.assertIsValidLabeledBox(e,n),!tu(e.score)||!tu(e.classScore))throw new Error(n+" - expected properties score ("+e.score+") and ("+e.classScore+") to be a number between [0, 1]")},Object.defineProperty(t.prototype,"score",{get:function(){return this._score},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"classScore",{get:function(){return this._classScore},enumerable:!0,configurable:!0}),t})(ru);function ax(r){return r.detection instanceof Zt}function Mi(r,t){var e={detection:t};return Object.assign({},r,e)}function Jc(){var r=window.fetch||function(){throw new Error("fetch - missing fetch implementation for browser environment")},t=function(){throw new Error("readFile - filesystem not available for browser environment")};return{Canvas:HTMLCanvasElement,CanvasRenderingContext2D,Image:HTMLImageElement,ImageData,Video:HTMLVideoElement,createCanvasElement:function(){return document.createElement("canvas")},createImageElement:function(){return document.createElement("img")},fetch:r,readFile:t}}function Qc(r){var t="";if(!r)try{r=require("fs")}catch(n){t=n.toString()}var e=r?function(n){return new Promise(function(a,o){r.readFile(n,function(i,s){return i?o(i):a(s)})})}:function(){throw new Error("readFile - failed to require fs in nodejs environment with error: "+t)};return{readFile:e}}function Zc(){var r=global.Canvas||global.HTMLCanvasElement,t=global.Image||global.HTMLImageElement,e=function(){if(r)return new r;throw new Error("createCanvasElement - missing Canvas implementation for nodejs environment")},n=function(){if(t)return new t;throw new Error("createImageElement - missing Image implementation for nodejs environment")},a=global.fetch||function(){throw new Error("fetch - missing fetch implementation for nodejs environment")},o=Qc();return ot({Canvas:r||function(){function i(){}return i}(),CanvasRenderingContext2D:global.CanvasRenderingContext2D||function(){function i(){}return i}(),Image:t||function(){function i(){}return i}(),ImageData:global.ImageData||function(){function i(){}return i}(),Video:global.HTMLVideoElement||function(){function i(){}return i}(),createCanvasElement:e,createImageElement:n,fetch:a},o)}function el(){return typeof window=="object"&&typeof document<"u"&&typeof HTMLImageElement<"u"&&typeof HTMLCanvasElement<"u"&&typeof HTMLVideoElement<"u"&&typeof ImageData<"u"&&typeof CanvasRenderingContext2D<"u"}function tl(){return typeof global=="object"&&typeof require=="function"&&typeof module<"u"&&typeof process<"u"&&!!process.version}var $e;function ox(){if(!$e)throw new Error("getEnv - environment is not defined, check isNodejs() and isBrowser()");return $e}function Jo(r){$e=r}function Oi(){el()&&Jo(Jc()),tl()&&Jo(Zc())}function ix(r){if($e||Oi(),!$e)throw new Error("monkeyPatch - environment is not defined, check isNodejs() and isBrowser()");var t=r.Canvas,e=t===void 0?$e.Canvas:t,n=r.Image,a=n===void 0?$e.Image:n;$e.Canvas=e,$e.Image=a,$e.createCanvasElement=r.createCanvasElement||function(){return new e},$e.createImageElement=r.createImageElement||function(){return new a},$e.ImageData=r.ImageData||$e.ImageData,$e.Video=r.Video||$e.Video,$e.fetch=r.fetch||$e.fetch,$e.readFile=r.readFile||$e.readFile}var ct={getEnv:ox,setEnv:Jo,initialize:Oi,createBrowserEnv:Jc,createFileSystem:Qc,createNodejsEnv:Zc,monkeyPatch:ix,isBrowser:el,isNodejs:tl};Oi();function nl(r){return!ct.isNodejs()&&typeof r=="string"?document.getElementById(r):r}function Ln(r){var t=ct.getEnv(),e=t.Canvas,n=t.CanvasRenderingContext2D;if(r instanceof n)return r;var a=nl(r);if(!(a instanceof e))throw new Error("resolveContext2d - expected canvas to be of instance of Canvas");var o=a.getContext("2d");if(!o)throw new Error("resolveContext2d - canvas 2d context is null");return o}var au;(function(r){r.TOP_LEFT="TOP_LEFT",r.TOP_RIGHT="TOP_RIGHT",r.BOTTOM_LEFT="BOTTOM_LEFT",r.BOTTOM_RIGHT="BOTTOM_RIGHT"})(au||(au={}));function rl(r){var t=ct.getEnv(),e=t.Image,n=t.Video;return r instanceof e&&r.complete||r instanceof n&&r.readyState>=3}function sx(r){return new Promise(function(t,e){if(r instanceof ct.getEnv().Canvas||rl(r))return t();function n(o){o.currentTarget&&(o.currentTarget.removeEventListener("load",n),o.currentTarget.removeEventListener("error",a),t(o))}function a(o){o.currentTarget&&(o.currentTarget.removeEventListener("load",n),o.currentTarget.removeEventListener("error",a),e(o))}r.addEventListener("load",n),r.addEventListener("error",a)})}function al(r){var t=ct.getEnv(),e=t.Image,n=t.Video;return r instanceof e?new ur(r.naturalWidth,r.naturalHeight):r instanceof n?new ur(r.videoWidth,r.videoHeight):new ur(r.width,r.height)}function Ga(r){var t=r.width,e=r.height,n=ct.getEnv().createCanvasElement,a=n();return a.width=t,a.height=e,a}function Bi(r,t){var e=ct.getEnv().ImageData;if(!(r instanceof e)&&!rl(r))throw new Error("createCanvasFromMedia - media has not finished loading yet");var n=t||al(r),a=n.width,o=n.height,i=Ga({width:a,height:o});return r instanceof e?Ln(i).putImageData(r,0,0):Ln(i).drawImage(r,0,0,a,o),i}function ux(r,t){return ie(this,void 0,void 0,function(){var e,n,a,o,i,s;return se(this,function(u){switch(u.label){case 0:return e=t||ct.getEnv().createCanvasElement(),n=r.shape.slice(yn(r)?1:0),a=n[0],o=n[1],i=n[2],s=ee(function(){return r.as3D(a,o,i).toInt()}),[4,Ni.toPixels(s,e)];case 1:return u.sent(),s.dispose(),[2,e]}})})}function ou(r){var t=ct.getEnv(),e=t.Image,n=t.Canvas,a=t.Video;return r instanceof e||r instanceof n||r instanceof a}function cx(r,t,e){e===void 0&&(e=!1);var n=ct.getEnv(),a=n.Image,o=n.Canvas;if(!(r instanceof a||r instanceof o))throw new Error("imageToSquare - expected arg0 to be HTMLImageElement | HTMLCanvasElement");var i=al(r),s=t/Math.max(i.height,i.width),u=s*i.width,c=s*i.height,l=Ga({width:t,height:t}),d=r instanceof o?r:Bi(r),h=Math.abs(u-c)/2,f=e&&u<c?h:0,p=e&&c<u?h:0;return Ln(l).drawImage(d,f,p,u,c),l}var Ia=function(){function r(t,e){var n=this;if(e===void 0&&(e=!1),this._imageTensors=[],this._canvases=[],this._treatAsBatchInput=!1,this._inputDimensions=[],!Array.isArray(t))throw new Error("NetInput.constructor - expected inputs to be an Array of TResolvedNetInput or to be instanceof tf.Tensor4D, instead have "+t);this._treatAsBatchInput=e,this._batchSize=t.length,t.forEach(function(a,o){if(za(a)){n._imageTensors[o]=a,n._inputDimensions[o]=a.shape;return}if(yn(a)){var i=a.shape[0];if(i!==1)throw new Error("NetInput - tf.Tensor4D with batchSize "+i+" passed, but not supported in input array");n._imageTensors[o]=a,n._inputDimensions[o]=a.shape.slice(1);return}var s=a instanceof ct.getEnv().Canvas?a:Bi(a);n._canvases[o]=s,n._inputDimensions[o]=[s.height,s.width,3]})}return Object.defineProperty(r.prototype,"imageTensors",{get:function(){return this._imageTensors},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"canvases",{get:function(){return this._canvases},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"isBatchInput",{get:function(){return this.batchSize>1||this._treatAsBatchInput},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"batchSize",{get:function(){return this._batchSize},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"inputDimensions",{get:function(){return this._inputDimensions},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"reshapedInputDimensions",{get:function(){var t=this;return Tr(this.batchSize,0,1).map(function(e,n){return t.getReshapedInputDimensions(n)})},enumerable:!0,configurable:!0}),r.prototype.getInput=function(t){return this.canvases[t]||this.imageTensors[t]},r.prototype.getInputDimensions=function(t){return this._inputDimensions[t]},r.prototype.getInputHeight=function(t){return this._inputDimensions[t][0]},r.prototype.getInputWidth=function(t){return this._inputDimensions[t][1]},r.prototype.getReshapedInputDimensions=function(t){if(typeof this.inputSize!="number")throw new Error("getReshapedInputDimensions - inputSize not set, toBatchTensor has not been called yet");var e=this.getInputWidth(t),n=this.getInputHeight(t);return X0({width:e,height:n},this.inputSize)},r.prototype.toBatchTensor=function(t,e){var n=this;return e===void 0&&(e=!0),this._inputSize=t,ee(function(){var a=Tr(n.batchSize,0,1).map(function(i){var s=n.getInput(i);if(s instanceof Oe){var u=yn(s)?s:s.expandDims();return u=Q0(u,e),(u.shape[1]!==t||u.shape[2]!==t)&&(u=ki.resizeBilinear(u,[t,t])),u.as3D(t,t,3)}if(s instanceof ct.getEnv().Canvas)return Ni.fromPixels(cx(s,t,e));throw new Error("toBatchTensor - at batchIdx "+i+", expected input to be instanceof tf.Tensor or instanceof HTMLCanvasElement, instead have "+s)}),o=Ct(a.map(function(i){return i.toFloat()})).as4D(n.batchSize,t,t,3);return o})},r}();function et(r){return ie(this,void 0,void 0,function(){var t,e,n;return se(this,function(a){switch(a.label){case 0:if(r instanceof Ia)return[2,r];if(t=Array.isArray(r)?r:[r],!t.length)throw new Error("toNetInput - empty array passed as input");return e=function(o){return Array.isArray(r)?" at input index "+o+":":""},n=t.map(nl),n.forEach(function(o,i){if(!ou(o)&&!za(o)&&!yn(o))throw typeof t[i]=="string"?new Error("toNetInput -"+e(i)+" string passed, but could not resolve HTMLElement for element id "+t[i]):new Error("toNetInput -"+e(i)+" expected media to be of type HTMLImageElement | HTMLVideoElement | HTMLCanvasElement | tf.Tensor3D, or to be an element id");if(yn(o)){var s=o.shape[0];if(s!==1)throw new Error("toNetInput -"+e(i)+" tf.Tensor4D with batchSize "+s+" passed, but not supported in input array")}}),[4,Promise.all(n.map(function(o){return ou(o)&&sx(o)}))];case 1:return a.sent(),[2,new Ia(n,Array.isArray(r))]}})})}function Li(r,t){return ie(this,void 0,void 0,function(){var e,n,a,o,i,s,u;return se(this,function(c){switch(c.label){case 0:return e=ct.getEnv().Canvas,n=r,r instanceof e?[3,5]:[4,et(r)];case 1:if(a=c.sent(),a.batchSize>1)throw new Error("extractFaces - batchSize > 1 not supported");return o=a.getInput(0),o instanceof e?(i=o,[3,4]):[3,2];case 2:return[4,ux(o)];case 3:i=c.sent(),c.label=4;case 4:n=i,c.label=5;case 5:return s=Ln(n),u=t.map(function(l){return l instanceof Zt?l.forSize(n.width,n.height).box.floor():l}).map(function(l){return l.clipAtImageBorders(n.width,n.height)}),[2,u.map(function(l){var d=l.x,h=l.y,f=l.width,p=l.height,v=Ga({width:f,height:p});return Ln(v).putImageData(s.getImageData(d,h,f,p),0,0),v})]}})})}function Wi(r,t){return ie(this,void 0,void 0,function(){return se(this,function(e){if(!za(r)&&!yn(r))throw new Error("extractFaceTensors - expected image tensor to be 3D or 4D");if(yn(r)&&r.shape[0]>1)throw new Error("extractFaceTensors - batchSize > 1 not supported");return[2,ee(function(){var n=r.shape.slice(yn(r)?1:0),a=n[0],o=n[1],i=n[2],s=t.map(function(c){return c instanceof Zt?c.forSize(o,a).box:c}).map(function(c){return c.clipAtImageBorders(o,a)}),u=s.map(function(c){var l=c.x,d=c.y,h=c.width,f=c.height;return Tc(r.as3D(a,o,i),[d,l,0],[f,h,i])});return u})]})})}function lx(r,t){return ie(this,void 0,void 0,function(){var e,n;return se(this,function(a){switch(a.label){case 0:return e=ct.getEnv().fetch,[4,e(r,t)];case 1:if(n=a.sent(),!(n.status<400))throw new Error("failed to fetch: ("+n.status+") "+n.statusText+", from url: "+n.url);return[2,n]}})})}function dx(r){return ie(this,void 0,void 0,function(){return se(this,function(t){switch(t.label){case 0:return[4,lx(r)];case 1:return[2,t.sent().json()]}})})}function ol(r,t){var e=t+"-weights_manifest.json";if(!r)return{modelBaseUri:"",manifestUri:e};if(r==="/")return{modelBaseUri:"/",manifestUri:"/"+e};var n=r.startsWith("http://")?"http://":r.startsWith("https://")?"https://":"";r=r.replace(n,"");var a=r.split("/").filter(function(s){return s}),o=r.endsWith(".json")?a[a.length-1]:e,i=n+(r.endsWith(".json")?a.slice(0,a.length-1):a).join("/");return i=r.startsWith("/")?"/"+i:i,{modelBaseUri:i,manifestUri:i==="/"?"/"+o:i+"/"+o}}function hx(r,t){return ie(this,void 0,void 0,function(){var e,n,a,o;return se(this,function(i){switch(i.label){case 0:return e=ol(r,t),n=e.manifestUri,a=e.modelBaseUri,[4,dx(n)];case 1:return o=i.sent(),[2,Kc.loadWeights(o,a)]}})})}var dn=function(){function r(t){this._name=t,this._params=void 0,this._paramMappings=[]}return Object.defineProperty(r.prototype,"params",{get:function(){return this._params},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"paramMappings",{get:function(){return this._paramMappings},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"isLoaded",{get:function(){return!!this.params},enumerable:!0,configurable:!0}),r.prototype.getParamFromPath=function(t){var e=this.traversePropertyPath(t),n=e.obj,a=e.objProp;return n[a]},r.prototype.reassignParamFromPath=function(t,e){var n=this.traversePropertyPath(t),a=n.obj,o=n.objProp;a[o].dispose(),a[o]=e},r.prototype.getParamList=function(){var t=this;return this._paramMappings.map(function(e){var n=e.paramPath;return{path:n,tensor:t.getParamFromPath(n)}})},r.prototype.getTrainableParams=function(){return this.getParamList().filter(function(t){return t.tensor instanceof dr})},r.prototype.getFrozenParams=function(){return this.getParamList().filter(function(t){return!(t.tensor instanceof dr)})},r.prototype.variable=function(){var t=this;this.getFrozenParams().forEach(function(e){var n=e.path,a=e.tensor;t.reassignParamFromPath(n,a.variable())})},r.prototype.freeze=function(){var t=this;this.getTrainableParams().forEach(function(e){var n=e.path,a=e.tensor,o=rt(a.dataSync());a.dispose(),t.reassignParamFromPath(n,o)})},r.prototype.dispose=function(t){t===void 0&&(t=!0),this.getParamList().forEach(function(e){if(t&&e.tensor.isDisposed)throw new Error("param tensor has already been disposed for path "+e.path);e.tensor.dispose()}),this._params=void 0},r.prototype.serializeParams=function(){return new Float32Array(this.getParamList().map(function(t){var e=t.tensor;return Array.from(e.dataSync())}).reduce(function(t,e){return t.concat(e)}))},r.prototype.load=function(t){return ie(this,void 0,void 0,function(){return se(this,function(e){switch(e.label){case 0:return t instanceof Float32Array?(this.extractWeights(t),[2]):[4,this.loadFromUri(t)];case 1:return e.sent(),[2]}})})},r.prototype.loadFromUri=function(t){return ie(this,void 0,void 0,function(){var e;return se(this,function(n){switch(n.label){case 0:if(t&&typeof t!="string")throw new Error(this._name+".loadFromUri - expected model uri");return[4,hx(t,this.getDefaultModelName())];case 1:return e=n.sent(),this.loadFromWeightMap(e),[2]}})})},r.prototype.loadFromDisk=function(t){return ie(this,void 0,void 0,function(){var e,n,a,o,i,s,u,c,l,d;return se(this,function(h){switch(h.label){case 0:if(t&&typeof t!="string")throw new Error(this._name+".loadFromDisk - expected model file path");return e=ct.getEnv().readFile,n=ol(t,this.getDefaultModelName()),a=n.manifestUri,o=n.modelBaseUri,i=function(f){return Promise.all(f.map(function(p){return e(p).then(function(v){return v.buffer})}))},s=Kc.weightsLoaderFactory(i),l=(c=JSON).parse,[4,e(a)];case 1:return u=l.apply(c,[h.sent().toString()]),[4,s(u,o)];case 2:return d=h.sent(),this.loadFromWeightMap(d),[2]}})})},r.prototype.loadFromWeightMap=function(t){var e=this.extractParamsFromWeigthMap(t),n=e.paramMappings,a=e.params;this._paramMappings=n,this._params=a},r.prototype.extractWeights=function(t){var e=this.extractParams(t),n=e.paramMappings,a=e.params;this._paramMappings=n,this._params=a},r.prototype.traversePropertyPath=function(t){if(!this.params)throw new Error("traversePropertyPath - model has no loaded params");var e=t.split("/").reduce(function(o,i){if(!o.nextObj.hasOwnProperty(i))throw new Error("traversePropertyPath - object does not have property "+i+", for path "+t);return{obj:o.nextObj,objProp:i,nextObj:o.nextObj[i]}},{nextObj:this.params}),n=e.obj,a=e.objProp;if(!n||!a||!(n[a]instanceof Oe))throw new Error("traversePropertyPath - parameter is not a tensor, for path "+t);return{obj:n,objProp:a}},r}();function wt(r,t,e){return ee(function(){var n=yi(r,t.depthwise_filter,t.pointwise_filter,e,"same");return n=Ce(n,t.bias),n})}function Io(r,t,e){return e===void 0&&(e=!1),ee(function(){var n=Be(e?Ce(Dt(r,t.conv0.filters,[2,2],"same"),t.conv0.bias):wt(r,t.conv0,[2,2])),a=wt(n,t.conv1,[1,1]),o=Be(Ce(n,a)),i=wt(o,t.conv2,[1,1]);return Be(Ce(n,Ce(a,i)))})}function na(r,t,e,n){return e===void 0&&(e=!1),n===void 0&&(n=!0),ee(function(){var a=Be(e?Ce(Dt(r,t.conv0.filters,n?[2,2]:[1,1],"same"),t.conv0.bias):wt(r,t.conv0,n?[2,2]:[1,1])),o=wt(a,t.conv1,[1,1]),i=Be(Ce(a,o)),s=wt(i,t.conv2,[1,1]),u=Be(Ce(a,Ce(o,s))),c=wt(u,t.conv3,[1,1]);return Be(Ce(a,Ce(o,Ce(s,c))))})}function Pt(r,t,e,n){return e===void 0&&(e="same"),n===void 0&&(n=!1),ee(function(){var a=Ce(Dt(r,t.filters,[1,1],e),t.bias);return n?Be(a):a})}function hn(r,t){Object.keys(r).forEach(function(e){t.some(function(n){return n.originalPath===e})||r[e].dispose()})}function Ha(r,t){return function(e,n,a,o){var i=dt(r(e*n*a*a),[a,a,e,n]),s=Ge(r(n));return t.push({paramPath:o+"/filters"},{paramPath:o+"/bias"}),{filters:i,bias:s}}}function Vi(r,t){return function(e,n,a){var o=xn(r(e*n),[e,n]),i=Ge(r(n));return t.push({paramPath:a+"/weights"},{paramPath:a+"/bias"}),{weights:o,bias:i}}}var il=function(){function r(t,e,n){this.depthwise_filter=t,this.pointwise_filter=e,this.bias=n}return r}();function zi(r,t){return function(e,n,a){var o=dt(r(9*e),[3,3,e,1]),i=dt(r(e*n),[1,1,e,n]),s=Ge(r(n));return t.push({paramPath:a+"/depthwise_filter"},{paramPath:a+"/pointwise_filter"},{paramPath:a+"/bias"}),new il(o,i,s)}}function Ui(r){return function(t){var e=r(t+"/depthwise_filter",4),n=r(t+"/pointwise_filter",4),a=r(t+"/bias",1);return new il(e,n,a)}}function kn(r,t){return function(e,n,a){var o=r[e];if(!Va(o,n))throw new Error("expected weightMap["+e+"] to be a Tensor"+n+"D, instead have "+o);return t.push({originalPath:e,paramPath:a||e}),o}}function fn(r){var t=r;function e(a){var o=t.slice(0,a);return t=t.slice(a),o}function n(){return t}return{extractWeights:e,getRemainingWeights:n}}function sl(r,t){var e=Ha(r,t),n=zi(r,t);function a(i,s,u,c){c===void 0&&(c=!1);var l=c?e(i,s,3,u+"/conv0"):n(i,s,u+"/conv0"),d=n(s,s,u+"/conv1"),h=n(s,s,u+"/conv2");return{conv0:l,conv1:d,conv2:h}}function o(i,s,u,c){c===void 0&&(c=!1);var l=a(i,s,u,c),d=l.conv0,h=l.conv1,f=l.conv2,p=n(s,s,u+"/conv3");return{conv0:d,conv1:h,conv2:f,conv3:p}}return{extractDenseBlock3Params:a,extractDenseBlock4Params:o}}function fx(r){var t=[],e=fn(r),n=e.extractWeights,a=e.getRemainingWeights,o=sl(n,t).extractDenseBlock4Params,i=o(3,32,"dense0",!0),s=o(32,64,"dense1"),u=o(64,128,"dense2"),c=o(128,256,"dense3");if(a().length!==0)throw new Error("weights remaing after extract: "+a().length);return{paramMappings:t,params:{dense0:i,dense1:s,dense2:u,dense3:c}}}function ul(r){return function(t){var e=r(t+"/filters",4),n=r(t+"/bias",1);return{filters:e,bias:n}}}function cl(r,t){var e=kn(r,t),n=ul(e),a=Ui(e);function o(s,u){u===void 0&&(u=!1);var c=u?n(s+"/conv0"):a(s+"/conv0"),l=a(s+"/conv1"),d=a(s+"/conv2");return{conv0:c,conv1:l,conv2:d}}function i(s,u){u===void 0&&(u=!1);var c=u?n(s+"/conv0"):a(s+"/conv0"),l=a(s+"/conv1"),d=a(s+"/conv2"),h=a(s+"/conv3");return{conv0:c,conv1:l,conv2:d,conv3:h}}return{extractDenseBlock3Params:o,extractDenseBlock4Params:i}}function px(r){var t=[],e=cl(r,t).extractDenseBlock4Params,n={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2"),dense3:e("dense3")};return hn(r,t),{params:n,paramMappings:t}}var ll=function(r){fe(t,r);function t(){return r.call(this,"FaceFeatureExtractor")||this}return t.prototype.forwardInput=function(e){var n=this.params;if(!n)throw new Error("FaceFeatureExtractor - load model before inference");return ee(function(){var a=e.toBatchTensor(112,!0),o=[122.782,117.001,104.298],i=Hr(a,o).div(J(255)),s=na(i,n.dense0,!0);return s=na(s,n.dense1),s=na(s,n.dense2),s=na(s,n.dense3),s=Ur(s,[7,7],[2,2],"valid"),s})},t.prototype.forward=function(e){return ie(this,void 0,void 0,function(){var n;return se(this,function(a){switch(a.label){case 0:return n=this.forwardInput,[4,et(e)];case 1:return[2,n.apply(this,[a.sent()])]}})})},t.prototype.getDefaultModelName=function(){return"face_feature_extractor_model"},t.prototype.extractParamsFromWeigthMap=function(e){return px(e)},t.prototype.extractParams=function(e){return fx(e)},t}(dn);function $t(r,t){return ee(function(){return Ce(Ba(r,t.weights),t.bias)})}function vx(r,t,e){var n=[],a=fn(r),o=a.extractWeights,i=a.getRemainingWeights,s=Vi(o,n),u=s(t,e,"fc");if(i().length!==0)throw new Error("weights remaing after extract: "+i().length);return{paramMappings:n,params:{fc:u}}}function mx(r){var t=[],e=kn(r,t);function n(o){var i=e(o+"/weights",2),s=e(o+"/bias",1);return{weights:i,bias:s}}var a={fc:n("fc")};return hn(r,t),{params:a,paramMappings:t}}function dl(r){var t={},e={};return Object.keys(r).forEach(function(n){var a=n.startsWith("fc")?e:t;a[n]=r[n]}),{featureExtractorMap:t,classifierMap:e}}var hl=function(r){fe(t,r);function t(e,n){var a=r.call(this,e)||this;return a._faceFeatureExtractor=n,a}return Object.defineProperty(t.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),t.prototype.runNet=function(e){var n=this,a=this.params;if(!a)throw new Error(this._name+" - load model before inference");return ee(function(){var o=e instanceof Ia?n.faceFeatureExtractor.forwardInput(e):e;return $t(o.as2D(o.shape[0],-1),a.fc)})},t.prototype.dispose=function(e){e===void 0&&(e=!0),this.faceFeatureExtractor.dispose(e),r.prototype.dispose.call(this,e)},t.prototype.loadClassifierParams=function(e){var n=this.extractClassifierParams(e),a=n.params,o=n.paramMappings;this._params=a,this._paramMappings=o},t.prototype.extractClassifierParams=function(e){return vx(e,this.getClassifierChannelsIn(),this.getClassifierChannelsOut())},t.prototype.extractParamsFromWeigthMap=function(e){var n=dl(e),a=n.featureExtractorMap,o=n.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(a),mx(o)},t.prototype.extractParams=function(e){var n=this.getClassifierChannelsIn(),a=this.getClassifierChannelsOut(),o=a*n+a,i=e.slice(0,e.length-o),s=e.slice(e.length-o);return this.faceFeatureExtractor.extractWeights(i),this.extractClassifierParams(s)},t}(dn),iu=["neutral","happy","sad","angry","fearful","disgusted","surprised"],gx=function(){function r(t){var e=this;if(t.length!==7)throw new Error("FaceExpressions.constructor - expected probabilities.length to be 7, have: "+t.length);iu.forEach(function(n,a){e[n]=t[a]})}return r.prototype.asSortedArray=function(){var t=this;return iu.map(function(e){return{expression:e,probability:t[e]}}).sort(function(e,n){return n.probability-e.probability})},r}(),_x=function(r){fe(t,r);function t(e){return e===void 0&&(e=new ll),r.call(this,"FaceExpressionNet",e)||this}return t.prototype.forwardInput=function(e){var n=this;return ee(function(){return cn(n.runNet(e))})},t.prototype.forward=function(e){return ie(this,void 0,void 0,function(){var n;return se(this,function(a){switch(a.label){case 0:return n=this.forwardInput,[4,et(e)];case 1:return[2,n.apply(this,[a.sent()])]}})})},t.prototype.predictExpressions=function(e){return ie(this,void 0,void 0,function(){var n,a,o,i,s=this;return se(this,function(u){switch(u.label){case 0:return[4,et(e)];case 1:return n=u.sent(),[4,this.forwardInput(n)];case 2:return a=u.sent(),[4,Promise.all(qe(a).map(function(c){return ie(s,void 0,void 0,function(){var l;return se(this,function(d){switch(d.label){case 0:return[4,c.data()];case 1:return l=d.sent(),c.dispose(),[2,l]}})})}))];case 3:return o=u.sent(),a.dispose(),i=o.map(function(c){return new gx(c)}),[2,n.isBatchInput?i:i[0]]}})})},t.prototype.getDefaultModelName=function(){return"face_expression_model"},t.prototype.getClassifierChannelsIn=function(){return 256},t.prototype.getClassifierChannelsOut=function(){return 7},t}(hl);function fl(r,t){var e={expressions:t};return Object.assign({},r,e)}function xx(r){return ax(r)&&r.landmarks instanceof ka&&r.unshiftedLandmarks instanceof ka&&r.alignedRect instanceof Zt}function Gi(r,t){var e=r.detection.box,n=t.shiftBy(e.x,e.y),a=n.align(),o=r.detection.imageDims,i=new Zt(r.detection.score,a.rescale(o.reverse()),o),s={landmarks:n,unshiftedLandmarks:t,alignedRect:i};return Object.assign({},r,s)}function bx(r,t){var e=Ha(r,t),n=zi(r,t);function a(i,s,u){var c=n(i,s,u+"/separable_conv0"),l=n(s,s,u+"/separable_conv1"),d=e(i,s,1,u+"/expansion_conv");return{separable_conv0:c,separable_conv1:l,expansion_conv:d}}function o(i,s){var u=n(i,i,s+"/separable_conv0"),c=n(i,i,s+"/separable_conv1"),l=n(i,i,s+"/separable_conv2");return{separable_conv0:u,separable_conv1:c,separable_conv2:l}}return{extractConvParams:e,extractSeparableConvParams:n,extractReductionBlockParams:a,extractMainBlockParams:o}}function yx(r,t){var e=[],n=fn(r),a=n.extractWeights,o=n.getRemainingWeights,i=bx(a,e),s=i.extractConvParams,u=i.extractSeparableConvParams,c=i.extractReductionBlockParams,l=i.extractMainBlockParams,d=s(3,32,3,"entry_flow/conv_in"),h=c(32,64,"entry_flow/reduction_block_0"),f=c(64,128,"entry_flow/reduction_block_1"),p={conv_in:d,reduction_block_0:h,reduction_block_1:f},v={};Tr(t,0,1).forEach(function(b){v["main_block_"+b]=l(128,"middle_flow/main_block_"+b)});var m=c(128,256,"exit_flow/reduction_block"),g=u(256,512,"exit_flow/separable_conv"),x={reduction_block:m,separable_conv:g};if(o().length!==0)throw new Error("weights remaing after extract: "+o().length);return{paramMappings:e,params:{entry_flow:p,middle_flow:v,exit_flow:x}}}function wx(r,t){var e=kn(r,t),n=ul(e),a=Ui(e);function o(s){var u=a(s+"/separable_conv0"),c=a(s+"/separable_conv1"),l=n(s+"/expansion_conv");return{separable_conv0:u,separable_conv1:c,expansion_conv:l}}function i(s){var u=a(s+"/separable_conv0"),c=a(s+"/separable_conv1"),l=a(s+"/separable_conv2");return{separable_conv0:u,separable_conv1:c,separable_conv2:l}}return{extractConvParams:n,extractSeparableConvParams:a,extractReductionBlockParams:o,extractMainBlockParams:i}}function Cx(r,t){var e=[],n=wx(r,e),a=n.extractConvParams,o=n.extractSeparableConvParams,i=n.extractReductionBlockParams,s=n.extractMainBlockParams,u=a("entry_flow/conv_in"),c=i("entry_flow/reduction_block_0"),l=i("entry_flow/reduction_block_1"),d={conv_in:u,reduction_block_0:c,reduction_block_1:l},h={};Tr(t,0,1).forEach(function(m){h["main_block_"+m]=s("middle_flow/main_block_"+m)});var f=i("exit_flow/reduction_block"),p=o("exit_flow/separable_conv"),v={reduction_block:f,separable_conv:p};return hn(r,e),{params:{entry_flow:d,middle_flow:h,exit_flow:v},paramMappings:e}}function pl(r,t,e){return Ce(Dt(r,t.filters,e,"same"),t.bias)}function So(r,t,e){e===void 0&&(e=!0);var n=e?Be(r):r;return n=wt(n,t.separable_conv0,[1,1]),n=wt(Be(n),t.separable_conv1,[1,1]),n=Je(n,[3,3],[2,2],"same"),n=Ce(n,pl(r,t.expansion_conv,[2,2])),n}function Ex(r,t){var e=wt(Be(r),t.separable_conv0,[1,1]);return e=wt(Be(e),t.separable_conv1,[1,1]),e=wt(Be(e),t.separable_conv2,[1,1]),e=Ce(e,r),e}var Rx=function(r){fe(t,r);function t(e){var n=r.call(this,"TinyXception")||this;return n._numMainBlocks=e,n}return t.prototype.forwardInput=function(e){var n=this,a=this.params;if(!a)throw new Error("TinyXception - load model before inference");return ee(function(){var o=e.toBatchTensor(112,!0),i=[122.782,117.001,104.298],s=Hr(o,i).div(J(256)),u=Be(pl(s,a.entry_flow.conv_in,[2,2]));return u=So(u,a.entry_flow.reduction_block_0,!1),u=So(u,a.entry_flow.reduction_block_1),Tr(n._numMainBlocks,0,1).forEach(function(c){u=Ex(u,a.middle_flow["main_block_"+c])}),u=So(u,a.exit_flow.reduction_block),u=Be(wt(u,a.exit_flow.separable_conv,[1,1])),u})},t.prototype.forward=function(e){return ie(this,void 0,void 0,function(){var n;return se(this,function(a){switch(a.label){case 0:return n=this.forwardInput,[4,et(e)];case 1:return[2,n.apply(this,[a.sent()])]}})})},t.prototype.getDefaultModelName=function(){return"tiny_xception_model"},t.prototype.extractParamsFromWeigthMap=function(e){return Cx(e,this._numMainBlocks)},t.prototype.extractParams=function(e){return yx(e,this._numMainBlocks)},t}(dn);function kx(r){var t=[],e=fn(r),n=e.extractWeights,a=e.getRemainingWeights,o=Vi(n,t),i=o(512,1,"fc/age"),s=o(512,2,"fc/gender");if(a().length!==0)throw new Error("weights remaing after extract: "+a().length);return{paramMappings:t,params:{fc:{age:i,gender:s}}}}function Ix(r){var t=[],e=kn(r,t);function n(o){var i=e(o+"/weights",2),s=e(o+"/bias",1);return{weights:i,bias:s}}var a={fc:{age:n("fc/age"),gender:n("fc/gender")}};return hn(r,t),{params:a,paramMappings:t}}var Sa;(function(r){r.FEMALE="female",r.MALE="male"})(Sa||(Sa={}));var Sx=function(r){fe(t,r);function t(e){e===void 0&&(e=new Rx(2));var n=r.call(this,"AgeGenderNet")||this;return n._faceFeatureExtractor=e,n}return Object.defineProperty(t.prototype,"faceFeatureExtractor",{get:function(){return this._faceFeatureExtractor},enumerable:!0,configurable:!0}),t.prototype.runNet=function(e){var n=this,a=this.params;if(!a)throw new Error(this._name+" - load model before inference");return ee(function(){var o=e instanceof Ia?n.faceFeatureExtractor.forwardInput(e):e,i=Ur(o,[7,7],[2,2],"valid").as2D(o.shape[0],-1),s=$t(i,a.fc.age).as1D(),u=$t(i,a.fc.gender);return{age:s,gender:u}})},t.prototype.forwardInput=function(e){var n=this;return ee(function(){var a=n.runNet(e),o=a.age,i=a.gender;return{age:o,gender:cn(i)}})},t.prototype.forward=function(e){return ie(this,void 0,void 0,function(){var n;return se(this,function(a){switch(a.label){case 0:return n=this.forwardInput,[4,et(e)];case 1:return[2,n.apply(this,[a.sent()])]}})})},t.prototype.predictAgeAndGender=function(e){return ie(this,void 0,void 0,function(){var n,a,o,i,s,u,c=this;return se(this,function(l){switch(l.label){case 0:return[4,et(e)];case 1:return n=l.sent(),[4,this.forwardInput(n)];case 2:return a=l.sent(),o=qe(a.age),i=qe(a.gender),s=o.map(function(d,h){return{ageTensor:d,genderTensor:i[h]}}),[4,Promise.all(s.map(function(d){var h=d.ageTensor,f=d.genderTensor;return ie(c,void 0,void 0,function(){var p,v,m,g,x;return se(this,function(b){switch(b.label){case 0:return[4,h.data()];case 1:return p=b.sent()[0],[4,f.data()];case 2:return v=b.sent()[0],m=v>.5,g=m?Sa.MALE:Sa.FEMALE,x=m?v:1-v,h.dispose(),f.dispose(),[2,{age:p,gender:g,genderProbability:x}]}})})}))];case 3:return u=l.sent(),a.age.dispose(),a.gender.dispose(),[2,n.isBatchInput?u:u[0]]}})})},t.prototype.getDefaultModelName=function(){return"age_gender_model"},t.prototype.dispose=function(e){e===void 0&&(e=!0),this.faceFeatureExtractor.dispose(e),r.prototype.dispose.call(this,e)},t.prototype.loadClassifierParams=function(e){var n=this.extractClassifierParams(e),a=n.params,o=n.paramMappings;this._params=a,this._paramMappings=o},t.prototype.extractClassifierParams=function(e){return kx(e)},t.prototype.extractParamsFromWeigthMap=function(e){var n=dl(e),a=n.featureExtractorMap,o=n.classifierMap;return this.faceFeatureExtractor.loadFromWeightMap(a),Ix(o)},t.prototype.extractParams=function(e){var n=1539,a=e.slice(0,e.length-n),o=e.slice(e.length-n);return this.faceFeatureExtractor.extractWeights(a),this.extractClassifierParams(o)},t}(dn),vl=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.postProcess=function(e,n,a){var o=a.map(function(s){var u=s.width,c=s.height,l=n/Math.max(c,u);return{width:u*l,height:c*l}}),i=o.length;return ee(function(){var s=function(h,f){return Ct([Kt([68],h),Kt([68],f)],1).as2D(1,136).as1D()},u=function(h,f){var p=o[h],v=p.width,m=p.height;return f(v,m)?Math.abs(v-m)/2:0},c=function(h){return u(h,function(f,p){return f<p})},l=function(h){return u(h,function(f,p){return p<f})},d=e.mul(Kt([i,136],n)).sub(Ct(Array.from(Array(i),function(h,f){return s(c(f),l(f))}))).div(Ct(Array.from(Array(i),function(h,f){return s(o[f].width,o[f].height)})));return d})},t.prototype.forwardInput=function(e){var n=this;return ee(function(){var a=n.runNet(e);return n.postProcess(a,e.inputSize,e.inputDimensions.map(function(o){var i=o[0],s=o[1];return{height:i,width:s}}))})},t.prototype.forward=function(e){return ie(this,void 0,void 0,function(){var n;return se(this,function(a){switch(a.label){case 0:return n=this.forwardInput,[4,et(e)];case 1:return[2,n.apply(this,[a.sent()])]}})})},t.prototype.detectLandmarks=function(e){return ie(this,void 0,void 0,function(){var n,a,o,i=this;return se(this,function(s){switch(s.label){case 0:return[4,et(e)];case 1:return n=s.sent(),a=ee(function(){return qe(i.forwardInput(n))}),[4,Promise.all(a.map(function(u,c){return ie(i,void 0,void 0,function(){var l,d,h,f,p;return se(this,function(v){switch(v.label){case 0:return h=(d=Array).from,[4,u.data()];case 1:return l=h.apply(d,[v.sent()]),f=l.filter(function(m,g){return Zs(g)}),p=l.filter(function(m,g){return!Zs(g)}),[2,new rx(Array(68).fill(0).map(function(m,g){return new Se(f[g],p[g])}),{height:n.getInputHeight(c),width:n.getInputWidth(c)})]}})})}))];case 2:return o=s.sent(),a.forEach(function(u){return u.dispose()}),[2,n.isBatchInput?o:o[0]]}})})},t.prototype.getClassifierChannelsOut=function(){return 136},t}(hl),ml=function(r){fe(t,r);function t(e){return e===void 0&&(e=new ll),r.call(this,"FaceLandmark68Net",e)||this}return t.prototype.getDefaultModelName=function(){return"face_landmark_68_model"},t.prototype.getClassifierChannelsIn=function(){return 256},t}(vl);function Ax(r){var t=[],e=cl(r,t).extractDenseBlock3Params,n={dense0:e("dense0",!0),dense1:e("dense1"),dense2:e("dense2")};return hn(r,t),{params:n,paramMappings:t}}function Dx(r){var t=[],e=fn(r),n=e.extractWeights,a=e.getRemainingWeights,o=sl(n,t).extractDenseBlock3Params,i=o(3,32,"dense0",!0),s=o(32,64,"dense1"),u=o(64,128,"dense2");if(a().length!==0)throw new Error("weights remaing after extract: "+a().length);return{paramMappings:t,params:{dense0:i,dense1:s,dense2:u}}}var Tx=function(r){fe(t,r);function t(){return r.call(this,"TinyFaceFeatureExtractor")||this}return t.prototype.forwardInput=function(e){var n=this.params;if(!n)throw new Error("TinyFaceFeatureExtractor - load model before inference");return ee(function(){var a=e.toBatchTensor(112,!0),o=[122.782,117.001,104.298],i=Hr(a,o).div(J(255)),s=Io(i,n.dense0,!0);return s=Io(s,n.dense1),s=Io(s,n.dense2),s=Ur(s,[14,14],[2,2],"valid"),s})},t.prototype.forward=function(e){return ie(this,void 0,void 0,function(){var n;return se(this,function(a){switch(a.label){case 0:return n=this.forwardInput,[4,et(e)];case 1:return[2,n.apply(this,[a.sent()])]}})})},t.prototype.getDefaultModelName=function(){return"face_feature_extractor_tiny_model"},t.prototype.extractParamsFromWeigthMap=function(e){return Ax(e)},t.prototype.extractParams=function(e){return Dx(e)},t}(dn),Nx=function(r){fe(t,r);function t(e){return e===void 0&&(e=new Tx),r.call(this,"FaceLandmark68TinyNet",e)||this}return t.prototype.getDefaultModelName=function(){return"face_landmark_68_tiny_model"},t.prototype.getClassifierChannelsIn=function(){return 128},t}(vl);(function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t})(ml);function Fx(r,t){return Ce(ut(r,t.weights),t.biases)}function Hi(r,t,e,n,a){a===void 0&&(a="same");var o=t.conv,i=o.filters,s=o.bias,u=Dt(r,i,e,a);return u=Ce(u,s),u=Fx(u,t.scale),n?Be(u):u}function Px(r,t){return Hi(r,t,[1,1],!0)}function gl(r,t){return Hi(r,t,[1,1],!1)}function _l(r,t){return Hi(r,t,[2,2],!0,"valid")}function Mx(r,t){function e(s,u,c){var l=r(s),d=l.length/(u*c*c);if(q0(d))throw new Error("depth has to be an integer: "+d+", weights.length: "+l.length+", numFilters: "+u+", filterSize: "+c);return ee(function(){return wn(dt(l,[u,d,c,c]),[2,3,1,0])})}function n(s,u,c,l){var d=e(s,u,c),h=Ge(r(u));return t.push({paramPath:l+"/filters"},{paramPath:l+"/bias"}),{filters:d,bias:h}}function a(s,u){var c=Ge(r(s)),l=Ge(r(s));return t.push({paramPath:u+"/weights"},{paramPath:u+"/biases"}),{weights:c,biases:l}}function o(s,u,c,l){var d=n(s,u,c,l+"/conv"),h=a(u,l+"/scale");return{conv:d,scale:h}}function i(s,u,c,l,d){d===void 0&&(d=!1);var h=o((d?.5:1)*s,u,c,l+"/conv1"),f=o(s,u,c,l+"/conv2");return{conv1:h,conv2:f}}return{extractConvLayerParams:o,extractResidualLayerParams:i}}function Ox(r){var t=fn(r),e=t.extractWeights,n=t.getRemainingWeights,a=[],o=Mx(e,a),i=o.extractConvLayerParams,s=o.extractResidualLayerParams,u=i(4704,32,7,"conv32_down"),c=s(9216,32,3,"conv32_1"),l=s(9216,32,3,"conv32_2"),d=s(9216,32,3,"conv32_3"),h=s(36864,64,3,"conv64_down",!0),f=s(36864,64,3,"conv64_1"),p=s(36864,64,3,"conv64_2"),v=s(36864,64,3,"conv64_3"),m=s(147456,128,3,"conv128_down",!0),g=s(147456,128,3,"conv128_1"),x=s(147456,128,3,"conv128_2"),b=s(589824,256,3,"conv256_down",!0),_=s(589824,256,3,"conv256_1"),y=s(589824,256,3,"conv256_2"),w=s(589824,256,3,"conv256_down_out"),S=ee(function(){return wn(xn(e(256*128),[128,256]),[1,0])});if(a.push({paramPath:"fc"}),n().length!==0)throw new Error("weights remaing after extract: "+n().length);var I={conv32_down:u,conv32_1:c,conv32_2:l,conv32_3:d,conv64_down:h,conv64_1:f,conv64_2:p,conv64_3:v,conv128_down:m,conv128_1:g,conv128_2:x,conv256_down:b,conv256_1:_,conv256_2:y,conv256_down_out:w,fc:S};return{params:I,paramMappings:a}}function Bx(r,t){var e=kn(r,t);function n(i){var s=e(i+"/scale/weights",1),u=e(i+"/scale/biases",1);return{weights:s,biases:u}}function a(i){var s=e(i+"/conv/filters",4),u=e(i+"/conv/bias",1),c=n(i);return{conv:{filters:s,bias:u},scale:c}}function o(i){return{conv1:a(i+"/conv1"),conv2:a(i+"/conv2")}}return{extractConvLayerParams:a,extractResidualLayerParams:o}}function Lx(r){var t=[],e=Bx(r,t),n=e.extractConvLayerParams,a=e.extractResidualLayerParams,o=n("conv32_down"),i=a("conv32_1"),s=a("conv32_2"),u=a("conv32_3"),c=a("conv64_down"),l=a("conv64_1"),d=a("conv64_2"),h=a("conv64_3"),f=a("conv128_down"),p=a("conv128_1"),v=a("conv128_2"),m=a("conv256_down"),g=a("conv256_1"),x=a("conv256_2"),b=a("conv256_down_out"),_=r.fc;if(t.push({originalPath:"fc",paramPath:"fc"}),!j0(_))throw new Error("expected weightMap[fc] to be a Tensor2D, instead have "+_);var y={conv32_down:o,conv32_1:i,conv32_2:s,conv32_3:u,conv64_down:c,conv64_1:l,conv64_2:d,conv64_3:h,conv128_down:f,conv128_1:p,conv128_2:v,conv256_down:m,conv256_1:g,conv256_2:x,conv256_down_out:b,fc:_};return hn(r,t),{params:y,paramMappings:t}}function Wt(r,t){var e=Px(r,t.conv1);return e=gl(e,t.conv2),e=Ce(e,r),e=Be(e),e}function ra(r,t){var e=_l(r,t.conv1);e=gl(e,t.conv2);var n=Ur(r,2,2,"valid"),a=Me(n.shape),o=n.shape[3]!==e.shape[3],i=n.shape[1]!==e.shape[1]||n.shape[2]!==e.shape[2];if(i){var s=Rr(e.shape);s[1]=1;var u=Me(s);e=je([e,u],1);var c=Rr(e.shape);c[2]=1;var l=Me(c);e=je([e,l],2)}return n=o?je([n,a],3):n,e=Ce(n,e),e=Be(e),e}var Wx=function(r){fe(t,r);function t(){return r.call(this,"FaceRecognitionNet")||this}return t.prototype.forwardInput=function(e){var n=this.params;if(!n)throw new Error("FaceRecognitionNet - load model before inference");return ee(function(){var a=e.toBatchTensor(150,!0).toFloat(),o=[122.782,117.001,104.298],i=Hr(a,o).div(J(256)),s=_l(i,n.conv32_down);s=Je(s,3,2,"valid"),s=Wt(s,n.conv32_1),s=Wt(s,n.conv32_2),s=Wt(s,n.conv32_3),s=ra(s,n.conv64_down),s=Wt(s,n.conv64_1),s=Wt(s,n.conv64_2),s=Wt(s,n.conv64_3),s=ra(s,n.conv128_down),s=Wt(s,n.conv128_1),s=Wt(s,n.conv128_2),s=ra(s,n.conv256_down),s=Wt(s,n.conv256_1),s=Wt(s,n.conv256_2),s=ra(s,n.conv256_down_out);var u=s.mean([1,2]),c=Ba(u,n.fc);return c})},t.prototype.forward=function(e){return ie(this,void 0,void 0,function(){var n;return se(this,function(a){switch(a.label){case 0:return n=this.forwardInput,[4,et(e)];case 1:return[2,n.apply(this,[a.sent()])]}})})},t.prototype.computeFaceDescriptor=function(e){return ie(this,void 0,void 0,function(){var n,a,o,i=this;return se(this,function(s){switch(s.label){case 0:return[4,et(e)];case 1:return n=s.sent(),a=ee(function(){return qe(i.forwardInput(n))}),[4,Promise.all(a.map(function(u){return u.data()}))];case 2:return o=s.sent(),a.forEach(function(u){return u.dispose()}),[2,n.isBatchInput?o:o[0]]}})})},t.prototype.getDefaultModelName=function(){return"face_recognition_model"},t.prototype.extractParamsFromWeigthMap=function(e){return Lx(e)},t.prototype.extractParams=function(e){return Ox(e)},t}(dn);function xl(r,t){var e={descriptor:t};return Object.assign({},r,e)}function bl(r,t){var e={age:t};return Object.assign({},r,e)}function yl(r,t,e){var n={gender:t,genderProbability:e};return Object.assign({},r,n)}var wl=function(){function r(t){var e=t===void 0?{}:t,n=e.minFaceSize,a=e.scaleFactor,o=e.maxNumScales,i=e.scoreThresholds,s=e.scaleSteps;if(this._name="MtcnnOptions",this._minFaceSize=n||20,this._scaleFactor=a||.709,this._maxNumScales=o||10,this._scoreThresholds=i||[.6,.7,.7],this._scaleSteps=s,typeof this._minFaceSize!="number"||this._minFaceSize<0)throw new Error(this._name+" - expected minFaceSize to be a number > 0");if(typeof this._scaleFactor!="number"||this._scaleFactor<=0||this._scaleFactor>=1)throw new Error(this._name+" - expected scaleFactor to be a number between 0 and 1");if(typeof this._maxNumScales!="number"||this._maxNumScales<0)throw new Error(this._name+" - expected maxNumScales to be a number > 0");if(!Array.isArray(this._scoreThresholds)||this._scoreThresholds.length!==3||this._scoreThresholds.some(function(u){return typeof u!="number"}))throw new Error(this._name+" - expected scoreThresholds to be an array of numbers of length 3");if(this._scaleSteps&&(!Array.isArray(this._scaleSteps)||this._scaleSteps.some(function(u){return typeof u!="number"})))throw new Error(this._name+" - expected scaleSteps to be an array of numbers")}return Object.defineProperty(r.prototype,"minFaceSize",{get:function(){return this._minFaceSize},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scaleFactor",{get:function(){return this._scaleFactor},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"maxNumScales",{get:function(){return this._maxNumScales},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scoreThresholds",{get:function(){return this._scoreThresholds},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scaleSteps",{get:function(){return this._scaleSteps},enumerable:!0,configurable:!0}),r}();function Vx(r,t){function e(u,c){var l=dt(r(9*u),[3,3,u,1]),d=Ge(r(u)),h=Ge(r(u)),f=Ge(r(u)),p=Ge(r(u));return t.push({paramPath:c+"/filters"},{paramPath:c+"/batch_norm_scale"},{paramPath:c+"/batch_norm_offset"},{paramPath:c+"/batch_norm_mean"},{paramPath:c+"/batch_norm_variance"}),{filters:l,batch_norm_scale:d,batch_norm_offset:h,batch_norm_mean:f,batch_norm_variance:p}}function n(u,c,l,d,h){var f=dt(r(u*c*l*l),[l,l,u,c]),p=Ge(r(c));return t.push({paramPath:d+"/filters"},{paramPath:d+"/"+(h?"batch_norm_offset":"bias")}),{filters:f,bias:p}}function a(u,c,l,d){var h=n(u,c,l,d,!0),f=h.filters,p=h.bias;return{filters:f,batch_norm_offset:p}}function o(u,c,l){var d=e(u,l+"/depthwise_conv"),h=a(u,c,1,l+"/pointwise_conv");return{depthwise_conv:d,pointwise_conv:h}}function i(){var u=a(3,32,3,"mobilenetv1/conv_0"),c=o(32,64,"mobilenetv1/conv_1"),l=o(64,128,"mobilenetv1/conv_2"),d=o(128,128,"mobilenetv1/conv_3"),h=o(128,256,"mobilenetv1/conv_4"),f=o(256,256,"mobilenetv1/conv_5"),p=o(256,512,"mobilenetv1/conv_6"),v=o(512,512,"mobilenetv1/conv_7"),m=o(512,512,"mobilenetv1/conv_8"),g=o(512,512,"mobilenetv1/conv_9"),x=o(512,512,"mobilenetv1/conv_10"),b=o(512,512,"mobilenetv1/conv_11"),_=o(512,1024,"mobilenetv1/conv_12"),y=o(1024,1024,"mobilenetv1/conv_13");return{conv_0:u,conv_1:c,conv_2:l,conv_3:d,conv_4:h,conv_5:f,conv_6:p,conv_7:v,conv_8:m,conv_9:g,conv_10:x,conv_11:b,conv_12:_,conv_13:y}}function s(){var u=a(1024,256,1,"prediction_layer/conv_0"),c=a(256,512,3,"prediction_layer/conv_1"),l=a(512,128,1,"prediction_layer/conv_2"),d=a(128,256,3,"prediction_layer/conv_3"),h=a(256,128,1,"prediction_layer/conv_4"),f=a(128,256,3,"prediction_layer/conv_5"),p=a(256,64,1,"prediction_layer/conv_6"),v=a(64,128,3,"prediction_layer/conv_7"),m=n(512,12,1,"prediction_layer/box_predictor_0/box_encoding_predictor"),g=n(512,9,1,"prediction_layer/box_predictor_0/class_predictor"),x=n(1024,24,1,"prediction_layer/box_predictor_1/box_encoding_predictor"),b=n(1024,18,1,"prediction_layer/box_predictor_1/class_predictor"),_=n(512,24,1,"prediction_layer/box_predictor_2/box_encoding_predictor"),y=n(512,18,1,"prediction_layer/box_predictor_2/class_predictor"),w=n(256,24,1,"prediction_layer/box_predictor_3/box_encoding_predictor"),S=n(256,18,1,"prediction_layer/box_predictor_3/class_predictor"),I=n(256,24,1,"prediction_layer/box_predictor_4/box_encoding_predictor"),k=n(256,18,1,"prediction_layer/box_predictor_4/class_predictor"),R=n(128,24,1,"prediction_layer/box_predictor_5/box_encoding_predictor"),N=n(128,18,1,"prediction_layer/box_predictor_5/class_predictor"),D={box_encoding_predictor:m,class_predictor:g},V={box_encoding_predictor:x,class_predictor:b},L={box_encoding_predictor:_,class_predictor:y},W={box_encoding_predictor:w,class_predictor:S},H={box_encoding_predictor:I,class_predictor:k},G={box_encoding_predictor:R,class_predictor:N};return{conv_0:u,conv_1:c,conv_2:l,conv_3:d,conv_4:h,conv_5:f,conv_6:p,conv_7:v,box_predictor_0:D,box_predictor_1:V,box_predictor_2:L,box_predictor_3:W,box_predictor_4:H,box_predictor_5:G}}return{extractMobilenetV1Params:i,extractPredictionLayerParams:s}}function zx(r){var t=[],e=fn(r),n=e.extractWeights,a=e.getRemainingWeights,o=Vx(n,t),i=o.extractMobilenetV1Params,s=o.extractPredictionLayerParams,u=i(),c=s(),l=ii(n(5118*4),[1,5118,4]),d={extra_dim:l};if(t.push({paramPath:"output_layer/extra_dim"}),a().length!==0)throw new Error("weights remaing after extract: "+a().length);return{params:{mobilenetv1:u,prediction_layer:c,output_layer:d},paramMappings:t}}function Ux(r,t){var e=kn(r,t);function n(c,l,d){var h=e(c+"/Conv2d_"+l+"_pointwise/weights",4,d+"/filters"),f=e(c+"/Conv2d_"+l+"_pointwise/convolution_bn_offset",1,d+"/batch_norm_offset");return{filters:h,batch_norm_offset:f}}function a(c){var l="mobilenetv1/conv_"+c,d="MobilenetV1/Conv2d_"+c+"_depthwise",h=l+"/depthwise_conv",f=l+"/pointwise_conv",p=e(d+"/depthwise_weights",4,h+"/filters"),v=e(d+"/BatchNorm/gamma",1,h+"/batch_norm_scale"),m=e(d+"/BatchNorm/beta",1,h+"/batch_norm_offset"),g=e(d+"/BatchNorm/moving_mean",1,h+"/batch_norm_mean"),x=e(d+"/BatchNorm/moving_variance",1,h+"/batch_norm_variance");return{depthwise_conv:{filters:p,batch_norm_scale:v,batch_norm_offset:m,batch_norm_mean:g,batch_norm_variance:x},pointwise_conv:n("MobilenetV1",c,f)}}function o(){return{conv_0:n("MobilenetV1",0,"mobilenetv1/conv_0"),conv_1:a(1),conv_2:a(2),conv_3:a(3),conv_4:a(4),conv_5:a(5),conv_6:a(6),conv_7:a(7),conv_8:a(8),conv_9:a(9),conv_10:a(10),conv_11:a(11),conv_12:a(12),conv_13:a(13)}}function i(c,l){var d=e(c+"/weights",4,l+"/filters"),h=e(c+"/biases",1,l+"/bias");return{filters:d,bias:h}}function s(c){var l=i("Prediction/BoxPredictor_"+c+"/BoxEncodingPredictor","prediction_layer/box_predictor_"+c+"/box_encoding_predictor"),d=i("Prediction/BoxPredictor_"+c+"/ClassPredictor","prediction_layer/box_predictor_"+c+"/class_predictor");return{box_encoding_predictor:l,class_predictor:d}}function u(){return{conv_0:n("Prediction",0,"prediction_layer/conv_0"),conv_1:n("Prediction",1,"prediction_layer/conv_1"),conv_2:n("Prediction",2,"prediction_layer/conv_2"),conv_3:n("Prediction",3,"prediction_layer/conv_3"),conv_4:n("Prediction",4,"prediction_layer/conv_4"),conv_5:n("Prediction",5,"prediction_layer/conv_5"),conv_6:n("Prediction",6,"prediction_layer/conv_6"),conv_7:n("Prediction",7,"prediction_layer/conv_7"),box_predictor_0:s(0),box_predictor_1:s(1),box_predictor_2:s(2),box_predictor_3:s(3),box_predictor_4:s(4),box_predictor_5:s(5)}}return{extractMobilenetV1Params:o,extractPredictionLayerParams:u}}function Gx(r){var t=[],e=Ux(r,t),n=e.extractMobilenetV1Params,a=e.extractPredictionLayerParams,o=r["Output/extra_dim"];if(t.push({originalPath:"Output/extra_dim",paramPath:"output_layer/extra_dim"}),!za(o))throw new Error("expected weightMap['Output/extra_dim'] to be a Tensor3D, instead have "+o);var i={mobilenetv1:n(),prediction_layer:a(),output_layer:{extra_dim:o}};return hn(r,t),{params:i,paramMappings:t}}function zt(r,t,e){return ee(function(){var n=Dt(r,t.filters,e,"same");return n=Ce(n,t.batch_norm_offset),gi(n,0,6)})}var Hx=.0010000000474974513;function $x(r,t,e){return ee(function(){var n=Oa(r,t.filters,e,"same");return n=mc(n,t.batch_norm_mean,t.batch_norm_variance,t.batch_norm_offset,t.batch_norm_scale,Hx),gi(n,0,6)})}function jx(r){return[2,4,6,12].some(function(t){return t===r})?[2,2]:[1,1]}function qx(r,t){return ee(function(){var e=null,n=zt(r,t.conv_0,[2,2]),a=[t.conv_1,t.conv_2,t.conv_3,t.conv_4,t.conv_5,t.conv_6,t.conv_7,t.conv_8,t.conv_9,t.conv_10,t.conv_11,t.conv_12,t.conv_13];if(a.forEach(function(o,i){var s=i+1,u=jx(s);n=$x(n,o.depthwise_conv,u),n=zt(n,o.pointwise_conv,[1,1]),s===11&&(e=n)}),e===null)throw new Error("mobileNetV1 - output of conv layer 11 is null");return{out:n,conv11:e}})}function Kx(r,t,e,n,a){var o=r.shape[0],i=Math.min(e,o),s=t.map(function(l,d){return{score:l,boxIndex:d}}).filter(function(l){return l.score>a}).sort(function(l,d){return d.score-l.score}),u=function(l){return l<=n?1:0},c=[];return s.forEach(function(l){if(!(c.length>=i)){for(var d=l.score,h=c.length-1;h>=0;--h){var f=Xx(r,l.boxIndex,c[h]);if(f!==0&&(l.score*=u(f),l.score<=a))break}d===l.score&&c.push(l.boxIndex)}}),c}function Xx(r,t,e){var n=r.arraySync(),a=Math.min(n[t][0],n[t][2]),o=Math.min(n[t][1],n[t][3]),i=Math.max(n[t][0],n[t][2]),s=Math.max(n[t][1],n[t][3]),u=Math.min(n[e][0],n[e][2]),c=Math.min(n[e][1],n[e][3]),l=Math.max(n[e][0],n[e][2]),d=Math.max(n[e][1],n[e][3]),h=(i-a)*(s-o),f=(l-u)*(d-c);if(h<=0||f<=0)return 0;var p=Math.max(a,u),v=Math.max(o,c),m=Math.min(i,l),g=Math.min(s,d),x=Math.max(m-p,0)*Math.max(g-v,0);return x/(h+f-x)}function Yx(r){var t=qe(wn(r,[1,0])),e=[Xe(t[2],t[0]),Xe(t[3],t[1])],n=[Ce(t[0],Nt(e[0],J(2))),Ce(t[1],Nt(e[1],J(2)))];return{sizes:e,centers:n}}function Jx(r,t){var e=Yx(r),n=e.sizes,a=e.centers,o=qe(wn(t,[1,0])),i=Nt(ut(Ho(Nt(o[2],J(5))),n[0]),J(2)),s=Ce(ut(Nt(o[0],J(10)),n[0]),a[0]),u=Nt(ut(Ho(Nt(o[3],J(5))),n[1]),J(2)),c=Ce(ut(Nt(o[1],J(10)),n[1]),a[1]);return wn(Ct([Xe(s,i),Xe(c,u),Ce(s,i),Ce(c,u)]),[1,0])}function Qx(r,t,e){return ee(function(){var n=r.shape[0],a=Jx(Ft(rr(e.extra_dim,[n,1,1]),[-1,4]),Ft(r,[-1,4]));a=Ft(a,[n,a.shape[0]/n,4]);var o=hc(Xt(t,[0,0,1],[-1,-1,-1])),i=Xt(o,[0,0,0],[-1,-1,1]);i=Ft(i,[n,i.shape[1]]);var s=qe(a),u=qe(i);return{boxes:s,scores:u}})}function Yn(r,t){return ee(function(){var e=r.shape[0],n=Ft(Pt(r,t.box_encoding_predictor),[e,-1,1,4]),a=Ft(Pt(r,t.class_predictor),[e,-1,3]);return{boxPredictionEncoding:n,classPrediction:a}})}function Zx(r,t,e){return ee(function(){var n=zt(r,e.conv_0,[1,1]),a=zt(n,e.conv_1,[2,2]),o=zt(a,e.conv_2,[1,1]),i=zt(o,e.conv_3,[2,2]),s=zt(i,e.conv_4,[1,1]),u=zt(s,e.conv_5,[2,2]),c=zt(u,e.conv_6,[1,1]),l=zt(c,e.conv_7,[2,2]),d=Yn(t,e.box_predictor_0),h=Yn(r,e.box_predictor_1),f=Yn(a,e.box_predictor_2),p=Yn(i,e.box_predictor_3),v=Yn(u,e.box_predictor_4),m=Yn(l,e.box_predictor_5),g=je([d.boxPredictionEncoding,h.boxPredictionEncoding,f.boxPredictionEncoding,p.boxPredictionEncoding,v.boxPredictionEncoding,m.boxPredictionEncoding],1),x=je([d.classPrediction,h.classPrediction,f.classPrediction,p.classPrediction,v.classPrediction,m.classPrediction],1);return{boxPredictions:g,classPredictions:x}})}var $i=function(){function r(t){var e=t===void 0?{}:t,n=e.minConfidence,a=e.maxResults;if(this._name="SsdMobilenetv1Options",this._minConfidence=n||.5,this._maxResults=a||100,typeof this._minConfidence!="number"||this._minConfidence<=0||this._minConfidence>=1)throw new Error(this._name+" - expected minConfidence to be a number between 0 and 1");if(typeof this._maxResults!="number")throw new Error(this._name+" - expected maxResults to be a number")}return Object.defineProperty(r.prototype,"minConfidence",{get:function(){return this._minConfidence},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"maxResults",{get:function(){return this._maxResults},enumerable:!0,configurable:!0}),r}(),Cl=function(r){fe(t,r);function t(){return r.call(this,"SsdMobilenetv1")||this}return t.prototype.forwardInput=function(e){var n=this.params;if(!n)throw new Error("SsdMobilenetv1 - load model before inference");return ee(function(){var a=e.toBatchTensor(512,!1).toFloat(),o=Xe(ut(a,J(.007843137718737125)),J(1)),i=qx(o,n.mobilenetv1),s=Zx(i.out,i.conv11,n.prediction_layer),u=s.boxPredictions,c=s.classPredictions;return Qx(u,c,n.output_layer)})},t.prototype.forward=function(e){return ie(this,void 0,void 0,function(){var n;return se(this,function(a){switch(a.label){case 0:return n=this.forwardInput,[4,et(e)];case 1:return[2,n.apply(this,[a.sent()])]}})})},t.prototype.locateFaces=function(e,n){return n===void 0&&(n={}),ie(this,void 0,void 0,function(){var a,o,i,s,u,c,l,d,h,f,p,v,m,g,x,b,_,y,w,S,I;return se(this,function(k){switch(k.label){case 0:return a=new $i(n),o=a.maxResults,i=a.minConfidence,[4,et(e)];case 1:for(s=k.sent(),u=this.forwardInput(s),c=u.boxes,l=u.scores,d=c[0],h=l[0],f=1;f<c.length;f++)c[f].dispose(),l[f].dispose();return m=(v=Array).from,[4,h.data()];case 2:return p=m.apply(v,[k.sent()]),g=.5,x=Kx(d,p,o,g,i),b=s.getReshapedInputDimensions(0),_=s.inputSize,y=_/b.width,w=_/b.height,S=d.arraySync(),I=x.map(function(R){var N=[Math.max(0,S[R][0]),Math.min(1,S[R][2])].map(function(G){return G*w}),D=N[0],V=N[1],L=[Math.max(0,S[R][1]),Math.min(1,S[R][3])].map(function(G){return G*y}),W=L[0],H=L[1];return new Zt(p[R],new Pi(W,D,H-W,V-D),{height:s.getInputHeight(0),width:s.getInputWidth(0)})}),d.dispose(),h.dispose(),[2,I]}})})},t.prototype.getDefaultModelName=function(){return"ssd_mobilenetv1_model"},t.prototype.extractParamsFromWeigthMap=function(e){return Gx(e)},t.prototype.extractParams=function(e){return zx(e)},t}(dn);(function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t})(Cl);var eb=.4,tb=[new Se(.738768,.874946),new Se(2.42204,2.65704),new Se(4.30971,7.04493),new Se(10.246,4.59428),new Se(12.6868,11.8741)],nb=[new Se(1.603231,2.094468),new Se(6.041143,7.080126),new Se(2.882459,3.518061),new Se(4.266906,5.178857),new Se(9.041765,10.66308)],rb=[117.001,114.697,97.404],ab="tiny_yolov2_model",ob="tiny_yolov2_separable_conv_model",aa=function(r){return typeof r=="number"};function ib(r){if(!r)throw new Error("invalid config: "+r);if(typeof r.withSeparableConvs!="boolean")throw new Error("config.withSeparableConvs has to be a boolean, have: "+r.withSeparableConvs);if(!aa(r.iouThreshold)||r.iouThreshold<0||r.iouThreshold>1)throw new Error("config.iouThreshold has to be a number between [0, 1], have: "+r.iouThreshold);if(!Array.isArray(r.classes)||!r.classes.length||!r.classes.every(function(t){return typeof t=="string"}))throw new Error("config.classes has to be an array class names: string[], have: "+JSON.stringify(r.classes));if(!Array.isArray(r.anchors)||!r.anchors.length||!r.anchors.map(function(t){return t||{}}).every(function(t){return aa(t.x)&&aa(t.y)}))throw new Error("config.anchors has to be an array of { x: number, y: number }, have: "+JSON.stringify(r.anchors));if(r.meanRgb&&(!Array.isArray(r.meanRgb)||r.meanRgb.length!==3||!r.meanRgb.every(aa)))throw new Error("config.meanRgb has to be an array of shape [number, number, number], have: "+JSON.stringify(r.meanRgb))}function ji(r){return ee(function(){var t=ut(r,J(.10000000149011612));return Ce(Be(Xe(r,t)),t)})}function vn(r,t){return ee(function(){var e=Vn(r,[[0,0],[1,1],[1,1],[0,0]]);return e=Dt(e,t.conv.filters,[1,1],"valid"),e=Xe(e,t.bn.sub),e=ut(e,t.bn.truediv),e=Ce(e,t.conv.bias),ji(e)})}function mn(r,t){return ee(function(){var e=Vn(r,[[0,0],[1,1],[1,1],[0,0]]);return e=yi(e,t.depthwise_filter,t.pointwise_filter,[1,1],"valid"),e=Ce(e,t.bias),ji(e)})}function sb(r,t){var e=Ha(r,t);function n(i,s){var u=Ge(r(i)),c=Ge(r(i));return t.push({paramPath:s+"/sub"},{paramPath:s+"/truediv"}),{sub:u,truediv:c}}function a(i,s,u){var c=e(i,s,3,u+"/conv"),l=n(s,u+"/bn");return{conv:c,bn:l}}var o=zi(r,t);return{extractConvParams:e,extractConvWithBatchNormParams:a,extractSeparableConvParams:o}}function ub(r,t,e,n){var a=fn(r),o=a.extractWeights,i=a.getRemainingWeights,s=[],u=sb(o,s),c=u.extractConvParams,l=u.extractConvWithBatchNormParams,d=u.extractSeparableConvParams,h;if(t.withSeparableConvs){var f=n[0],p=n[1],v=n[2],m=n[3],g=n[4],x=n[5],b=n[6],_=n[7],y=n[8],w=t.isFirstLayerConv2d?c(f,p,3,"conv0"):d(f,p,"conv0"),S=d(p,v,"conv1"),I=d(v,m,"conv2"),k=d(m,g,"conv3"),R=d(g,x,"conv4"),N=d(x,b,"conv5"),D=_?d(b,_,"conv6"):void 0,V=y?d(_,y,"conv7"):void 0,L=c(y||_||b,5*e,1,"conv8");h={conv0:w,conv1:S,conv2:I,conv3:k,conv4:R,conv5:N,conv6:D,conv7:V,conv8:L}}else{var f=n[0],p=n[1],v=n[2],m=n[3],g=n[4],x=n[5],b=n[6],_=n[7],y=n[8],w=l(f,p,"conv0"),S=l(p,v,"conv1"),I=l(v,m,"conv2"),k=l(m,g,"conv3"),R=l(g,x,"conv4"),N=l(x,b,"conv5"),D=l(b,_,"conv6"),V=l(_,y,"conv7"),L=c(y,5*e,1,"conv8");h={conv0:w,conv1:S,conv2:I,conv3:k,conv4:R,conv5:N,conv6:D,conv7:V,conv8:L}}if(i().length!==0)throw new Error("weights remaing after extract: "+i().length);return{params:h,paramMappings:s}}function cb(r,t){var e=kn(r,t);function n(s){var u=e(s+"/sub",1),c=e(s+"/truediv",1);return{sub:u,truediv:c}}function a(s){var u=e(s+"/filters",4),c=e(s+"/bias",1);return{filters:u,bias:c}}function o(s){var u=a(s+"/conv"),c=n(s+"/bn");return{conv:u,bn:c}}var i=Ui(e);return{extractConvParams:a,extractConvWithBatchNormParams:o,extractSeparableConvParams:i}}function lb(r,t){var e=[],n=cb(r,e),a=n.extractConvParams,o=n.extractConvWithBatchNormParams,i=n.extractSeparableConvParams,s;if(t.withSeparableConvs){var u=t.filterSizes&&t.filterSizes.length||9;s={conv0:t.isFirstLayerConv2d?a("conv0"):i("conv0"),conv1:i("conv1"),conv2:i("conv2"),conv3:i("conv3"),conv4:i("conv4"),conv5:i("conv5"),conv6:u>7?i("conv6"):void 0,conv7:u>8?i("conv7"):void 0,conv8:a("conv8")}}else s={conv0:o("conv0"),conv1:o("conv1"),conv2:o("conv2"),conv3:o("conv3"),conv4:o("conv4"),conv5:o("conv5"),conv6:o("conv6"),conv7:o("conv7"),conv8:a("conv8")};return hn(r,e),{params:s,paramMappings:e}}var su;(function(r){r[r.XS=224]="XS",r[r.SM=320]="SM",r[r.MD=416]="MD",r[r.LG=608]="LG"})(su||(su={}));var qi=function(){function r(t){var e=t===void 0?{}:t,n=e.inputSize,a=e.scoreThreshold;if(this._name="TinyYolov2Options",this._inputSize=n||416,this._scoreThreshold=a||.5,typeof this._inputSize!="number"||this._inputSize%32!==0)throw new Error(this._name+" - expected inputSize to be a number divisible by 32");if(typeof this._scoreThreshold!="number"||this._scoreThreshold<=0||this._scoreThreshold>=1)throw new Error(this._name+" - expected scoreThreshold to be a number between 0 and 1")}return Object.defineProperty(r.prototype,"inputSize",{get:function(){return this._inputSize},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"scoreThreshold",{get:function(){return this._scoreThreshold},enumerable:!0,configurable:!0}),r}(),El=function(r){fe(t,r);function t(e){var n=r.call(this,"TinyYolov2")||this;return ib(e),n._config=e,n}return Object.defineProperty(t.prototype,"config",{get:function(){return this._config},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"withClassScores",{get:function(){return this.config.withClassScores||this.config.classes.length>1},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"boxEncodingSize",{get:function(){return 5+(this.withClassScores?this.config.classes.length:0)},enumerable:!0,configurable:!0}),t.prototype.runTinyYolov2=function(e,n){var a=vn(e,n.conv0);return a=Je(a,[2,2],[2,2],"same"),a=vn(a,n.conv1),a=Je(a,[2,2],[2,2],"same"),a=vn(a,n.conv2),a=Je(a,[2,2],[2,2],"same"),a=vn(a,n.conv3),a=Je(a,[2,2],[2,2],"same"),a=vn(a,n.conv4),a=Je(a,[2,2],[2,2],"same"),a=vn(a,n.conv5),a=Je(a,[2,2],[1,1],"same"),a=vn(a,n.conv6),a=vn(a,n.conv7),Pt(a,n.conv8,"valid",!1)},t.prototype.runMobilenet=function(e,n){var a=this.config.isFirstLayerConv2d?ji(Pt(e,n.conv0,"valid",!1)):mn(e,n.conv0);return a=Je(a,[2,2],[2,2],"same"),a=mn(a,n.conv1),a=Je(a,[2,2],[2,2],"same"),a=mn(a,n.conv2),a=Je(a,[2,2],[2,2],"same"),a=mn(a,n.conv3),a=Je(a,[2,2],[2,2],"same"),a=mn(a,n.conv4),a=Je(a,[2,2],[2,2],"same"),a=mn(a,n.conv5),a=Je(a,[2,2],[1,1],"same"),a=n.conv6?mn(a,n.conv6):a,a=n.conv7?mn(a,n.conv7):a,Pt(a,n.conv8,"valid",!1)},t.prototype.forwardInput=function(e,n){var a=this,o=this.params;if(!o)throw new Error("TinyYolov2 - load model before inference");return ee(function(){var i=e.toBatchTensor(n,!1).toFloat();return i=a.config.meanRgb?Hr(i,a.config.meanRgb):i,i=i.div(J(256)),a.config.withSeparableConvs?a.runMobilenet(i,o):a.runTinyYolov2(i,o)})},t.prototype.forward=function(e,n){return ie(this,void 0,void 0,function(){var a;return se(this,function(o){switch(o.label){case 0:return a=this.forwardInput,[4,et(e)];case 1:return[4,a.apply(this,[o.sent(),n])];case 2:return[2,o.sent()]}})})},t.prototype.detect=function(e,n){return n===void 0&&(n={}),ie(this,void 0,void 0,function(){var a,o,i,s,u,c,l,d,h,f,p,v,m,g,x=this;return se(this,function(b){switch(b.label){case 0:return a=new qi(n),o=a.inputSize,i=a.scoreThreshold,[4,et(e)];case 1:return s=b.sent(),[4,this.forwardInput(s,o)];case 2:return u=b.sent(),c=ee(function(){return qe(u)[0].expandDims()}),l={width:s.getInputWidth(0),height:s.getInputHeight(0)},[4,this.extractBoxes(c,s.getReshapedInputDimensions(0),i)];case 3:return d=b.sent(),u.dispose(),c.dispose(),h=d.map(function(_){return _.box}),f=d.map(function(_){return _.score}),p=d.map(function(_){return _.classScore}),v=d.map(function(_){return x.config.classes[_.label]}),m=Nr(h.map(function(_){return _.rescale(o)}),f,this.config.iouThreshold,!0),g=m.map(function(_){return new Yc(f[_],p[_],v[_],h[_],l)}),[2,g]}})})},t.prototype.getDefaultModelName=function(){return""},t.prototype.extractParamsFromWeigthMap=function(e){return lb(e,this.config)},t.prototype.extractParams=function(e){var n=this.config.filterSizes||t.DEFAULT_FILTER_SIZES,a=n?n.length:void 0;if(a!==7&&a!==8&&a!==9)throw new Error("TinyYolov2 - expected 7 | 8 | 9 convolutional filters, but found "+a+" filterSizes in config");return ub(e,this.config,this.boxEncodingSize,n)},t.prototype.extractBoxes=function(e,n,a){return ie(this,void 0,void 0,function(){var o,i,s,u,c,l,d,h,f,p,v,m,g,x,b,_,y,w,S,I,k,R,N,D,V,L,W,H,G,U=this;return se(this,function($){switch($.label){case 0:return o=n.width,i=n.height,s=Math.max(o,i),u=s/o,c=s/i,l=e.shape[1],d=this.config.anchors.length,h=ee(function(){var q=e.reshape([l,l,d,U.boxEncodingSize]),Q=q.slice([0,0,0,0],[l,l,d,4]),te=q.slice([0,0,0,4],[l,l,d,1]),Y=U.withClassScores?cn(q.slice([0,0,0,5],[l,l,d,U.config.classes.length]),3):J(0);return[Q,te,Y]}),f=h[0],p=h[1],v=h[2],m=[],[4,p.array()];case 1:return g=$.sent(),[4,f.array()];case 2:x=$.sent(),b=0,$.label=3;case 3:if(!(b<l))return[3,12];_=0,$.label=4;case 4:if(!(_<l))return[3,11];y=0,$.label=5;case 5:return y<d?(w=ko(g[b][_][y][0]),!a||w>a?(S=(_+ko(x[b][_][y][0]))/l*u,I=(b+ko(x[b][_][y][1]))/l*c,k=Math.exp(x[b][_][y][2])*this.config.anchors[y].x/l*u,R=Math.exp(x[b][_][y][3])*this.config.anchors[y].y/l*c,N=S-k/2,D=I-R/2,V={row:b,col:_,anchor:y},this.withClassScores?[4,this.extractPredictedClass(v,V)]:[3,7]):[3,9]):[3,10];case 6:return G=$.sent(),[3,8];case 7:G={classScore:1,label:0},$.label=8;case 8:L=G,W=L.classScore,H=L.label,m.push(ot({box:new Ua(N,D,N+k,D+R),score:w,classScore:w*W,label:H},V)),$.label=9;case 9:return y++,[3,5];case 10:return _++,[3,4];case 11:return b++,[3,3];case 12:return f.dispose(),p.dispose(),v.dispose(),[2,m]}})})},t.prototype.extractPredictedClass=function(e,n){return ie(this,void 0,void 0,function(){var a,o,i,s;return se(this,function(u){switch(u.label){case 0:return a=n.row,o=n.col,i=n.anchor,[4,e.array()];case 1:return s=u.sent(),[2,Array(this.config.classes.length).fill(0).map(function(c,l){return s[a][o][i][l]}).map(function(c,l){return{classScore:c,label:l}}).reduce(function(c,l){return c.classScore>l.classScore?c:l})]}})})},t.DEFAULT_FILTER_SIZES=[3,16,32,64,128,256,512,1024,1024],t}(dn),db=function(r){fe(t,r);function t(e){e===void 0&&(e=!0);var n=this,a=Object.assign({},{withSeparableConvs:e,iouThreshold:eb,classes:["face"]},e?{anchors:nb,meanRgb:rb}:{anchors:tb,withClassScores:!0});return n=r.call(this,a)||this,n}return Object.defineProperty(t.prototype,"withSeparableConvs",{get:function(){return this.config.withSeparableConvs},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),t.prototype.locateFaces=function(e,n){return ie(this,void 0,void 0,function(){var a;return se(this,function(o){switch(o.label){case 0:return[4,this.detect(e,n)];case 1:return a=o.sent(),[2,a.map(function(i){return new Zt(i.score,i.relativeBox,{width:i.imageWidth,height:i.imageHeight})})]}})})},t.prototype.getDefaultModelName=function(){return this.withSeparableConvs?ob:ab},t.prototype.extractParamsFromWeigthMap=function(e){return r.prototype.extractParamsFromWeigthMap.call(this,e)},t}(El),hb=function(r){fe(t,r);function t(){var e=r!==null&&r.apply(this,arguments)||this;return e._name="TinyFaceDetectorOptions",e}return t}(qi),$r=function(){function r(){}return r.prototype.then=function(t){return ie(this,void 0,void 0,function(){var e;return se(this,function(n){switch(n.label){case 0:return e=t,[4,this.run()];case 1:return[2,e.apply(void 0,[n.sent()])]}})})},r.prototype.run=function(){return ie(this,void 0,void 0,function(){return se(this,function(t){throw new Error("ComposableTask - run is not implemented")})})},r}();function $a(r,t,e,n,a){return a===void 0&&(a=function(o){var i=o.alignedRect;return i}),ie(this,void 0,void 0,function(){var o,i,s,u,c;return se(this,function(l){switch(l.label){case 0:return o=r.map(function(d){return xx(d)?a(d):d.detection}),s=n,s?[3,5]:t instanceof Oe?[4,Wi(t,o)]:[3,2];case 1:return u=l.sent(),[3,4];case 2:return[4,Li(t,o)];case 3:u=l.sent(),l.label=4;case 4:s=u,l.label=5;case 5:return i=s,[4,e(i)];case 6:return c=l.sent(),i.forEach(function(d){return d instanceof Oe&&d.dispose()}),[2,c]}})})}function Ki(r,t,e,n,a){return ie(this,void 0,void 0,function(){var o=this;return se(this,function(i){return[2,$a([r],t,function(s){return ie(o,void 0,void 0,function(){return se(this,function(u){return[2,e(s[0])]})})},n,a)]})})}function fb(r){return ee(function(){return Ct(qe(r,3).reverse(),3)})}var oa=2,Aa=12;function pb(r,t){var e=Ha(r,t),n=Vi(r,t);function a(c,l){var d=Ge(r(c));return t.push({paramPath:l}),d}function o(c,l,d){d===void 0&&(d=!1);var h=e(c[0],c[1],3,l+"/conv1"),f=a(c[1],l+"/prelu1_alpha"),p=e(c[1],c[2],3,l+"/conv2"),v=a(c[2],l+"/prelu2_alpha"),m=e(c[2],c[3],d?2:3,l+"/conv3"),g=a(c[3],l+"/prelu3_alpha");return{conv1:h,prelu1_alpha:f,conv2:p,prelu2_alpha:v,conv3:m,prelu3_alpha:g}}function i(){var c=o([3,10,16,32],"pnet"),l=e(32,2,1,"pnet/conv4_1"),d=e(32,4,1,"pnet/conv4_2");return ot(ot({},c),{conv4_1:l,conv4_2:d})}function s(){var c=o([3,28,48,64],"rnet",!0),l=n(576,128,"rnet/fc1"),d=a(128,"rnet/prelu4_alpha"),h=n(128,2,"rnet/fc2_1"),f=n(128,4,"rnet/fc2_2");return ot(ot({},c),{fc1:l,prelu4_alpha:d,fc2_1:h,fc2_2:f})}function u(){var c=o([3,32,64,64],"onet"),l=e(64,128,2,"onet/conv4"),d=a(128,"onet/prelu4_alpha"),h=n(1152,256,"onet/fc1"),f=a(256,"onet/prelu5_alpha"),p=n(256,2,"onet/fc2_1"),v=n(256,4,"onet/fc2_2"),m=n(256,10,"onet/fc2_3");return ot(ot({},c),{conv4:l,prelu4_alpha:d,fc1:h,prelu5_alpha:f,fc2_1:p,fc2_2:v,fc2_3:m})}return{extractPNetParams:i,extractRNetParams:s,extractONetParams:u}}function vb(r){var t=fn(r),e=t.extractWeights,n=t.getRemainingWeights,a=[],o=pb(e,a),i=o.extractPNetParams,s=o.extractRNetParams,u=o.extractONetParams,c=i(),l=s(),d=u();if(n().length!==0)throw new Error("weights remaing after extract: "+n().length);return{params:{pnet:c,rnet:l,onet:d},paramMappings:a}}function mb(r,t){var e=kn(r,t);function n(l){var d=e(l+"/weights",4,l+"/filters"),h=e(l+"/bias",1);return{filters:d,bias:h}}function a(l){var d=e(l+"/weights",2),h=e(l+"/bias",1);return{weights:d,bias:h}}function o(l){return e(l,1)}function i(l){var d=n(l+"/conv1"),h=o(l+"/prelu1_alpha"),f=n(l+"/conv2"),p=o(l+"/prelu2_alpha"),v=n(l+"/conv3"),m=o(l+"/prelu3_alpha");return{conv1:d,prelu1_alpha:h,conv2:f,prelu2_alpha:p,conv3:v,prelu3_alpha:m}}function s(){var l=i("pnet"),d=n("pnet/conv4_1"),h=n("pnet/conv4_2");return ot(ot({},l),{conv4_1:d,conv4_2:h})}function u(){var l=i("rnet"),d=a("rnet/fc1"),h=o("rnet/prelu4_alpha"),f=a("rnet/fc2_1"),p=a("rnet/fc2_2");return ot(ot({},l),{fc1:d,prelu4_alpha:h,fc2_1:f,fc2_2:p})}function c(){var l=i("onet"),d=n("onet/conv4"),h=o("onet/prelu4_alpha"),f=a("onet/fc1"),p=o("onet/prelu5_alpha"),v=a("onet/fc2_1"),m=a("onet/fc2_2"),g=a("onet/fc2_3");return ot(ot({},l),{conv4:d,prelu4_alpha:h,fc1:f,prelu5_alpha:p,fc2_1:v,fc2_2:m,fc2_3:g})}return{extractPNetParams:s,extractRNetParams:u,extractONetParams:c}}function gb(r){var t=[],e=mb(r,t),n=e.extractPNetParams,a=e.extractRNetParams,o=e.extractONetParams,i=n(),s=a(),u=o();return hn(r,t),{params:{pnet:i,rnet:s,onet:u},paramMappings:t}}function Qo(r,t){var e=t[0],n=t[1];return{height:Math.floor(e*r),width:Math.floor(n*r)}}function _b(r,t,e){for(var n=e[0],a=e[1],o=Aa/r,i=[],s=Math.min(n,a)*o,u=0;s>=12;)i.push(o*Math.pow(t,u)),s=s*t,u+=1;return i}var Xi=function(r){fe(t,r);function t(e,n,a,o){return r.call(this,{left:e,top:n,right:a,bottom:o},!0)||this}return t}(Cn);function Rl(r){return ee(function(){return ut(Xe(r,J(127.5)),J(.0078125))})}function cr(r,t){return ee(function(){return Ce(Be(r),ut(t,wa(Be(wa(r)))))})}function Yi(r,t,e){return e===void 0&&(e=!1),ee(function(){var n=Pt(r,t.conv1,"valid");return n=cr(n,t.prelu1_alpha),n=Je(n,e?[2,2]:[3,3],[2,2],"same"),n=Pt(n,t.conv2,"valid"),n=cr(n,t.prelu2_alpha),n=e?n:Je(n,[3,3],[2,2],"valid"),n=Pt(n,t.conv3,"valid"),n=cr(n,t.prelu3_alpha),n})}function xb(r,t){return ee(function(){var e=Yi(r,t,!0),n=Pt(e,t.conv4_1,"valid"),a=Et(La(n,3),3),o=cn(Xe(n,a),3),i=Pt(e,t.conv4_2,"valid");return{prob:o,regions:i}})}function bb(r,t){return ee(function(){var e=Qo(t,r.shape.slice(1)),n=e.height,a=e.width,o=ki.resizeBilinear(r,[n,a]),i=Rl(o);return wn(i,[0,2,1,3])})}function yb(r,t,e,n){for(var a=[],o=r.arraySync(),i=0;i<r.shape[0];i++)for(var s=0;s<r.shape[1];s++)o[i][s]>=n&&a.push(new Se(s,i));var u=a.map(function(c){var l=new Ua(Math.round((c.y*oa+1)/e),Math.round((c.x*oa+1)/e),Math.round((c.y*oa+Aa)/e),Math.round((c.x*oa+Aa)/e)),d=o[c.y][c.x],h=t.arraySync(),f=new Xi(h[c.y][c.x][0],h[c.y][c.x][1],h[c.y][c.x][2],h[c.y][c.x][3]);return{cell:l,score:d,region:f}});return u}function wb(r,t,e,n,a){a.stage1=[];var o=t.map(function(h){return ee(function(){var f={scale:h},p=bb(r,h),v=Date.now(),m=xb(p,n),g=m.prob,x=m.regions;f.pnet=Date.now()-v;var b=qe(qe(g,3)[1])[0],_=qe(x)[0];return{scoresTensor:b,regionsTensor:_,scale:h,statsForScale:f}})}),i=o.map(function(h){var f=h.scoresTensor,p=h.regionsTensor,v=h.scale,m=h.statsForScale,g=yb(f,p,v,e);if(f.dispose(),p.dispose(),!g.length)return a.stage1.push(m),[];var x=Date.now(),b=Nr(g.map(function(_){return _.cell}),g.map(function(_){return _.score}),.5);return m.nms=Date.now()-x,m.numBoxes=b.length,a.stage1.push(m),b.map(function(_){return g[_]})}),s=i.reduce(function(h,f){return h.concat(f)},[]),u=[],c=[];if(s.length>0){var l=Date.now(),d=Nr(s.map(function(h){return h.cell}),s.map(function(h){return h.score}),.7);a.stage1_nms=Date.now()-l,c=d.map(function(h){return s[h].score}),u=d.map(function(h){return s[h]}).map(function(h){var f=h.cell,p=h.region;return new Ua(f.left+p.left*f.width,f.top+p.top*f.height,f.right+p.right*f.width,f.bottom+p.bottom*f.height).toSquare().round()})}return{boxes:u,scores:c}}function kl(r,t,e){var n=e.width,a=e.height;return ie(this,void 0,void 0,function(){var o,i,s,u=this;return se(this,function(c){switch(c.label){case 0:return o=Ln(r),[4,Promise.all(t.map(function(l){return ie(u,void 0,void 0,function(){var d,h,f,p,v,m,g,x;return se(this,function(b){return d=l.padAtBorders(r.height,r.width),h=d.y,f=d.ey,p=d.x,v=d.ex,m=p-1,g=h-1,x=o.getImageData(m,g,v-m,f-g),[2,ct.isNodejs()?Bi(x):createImageBitmap(x)]})})}))];case 1:return i=c.sent(),s=[],i.forEach(function(l){var d=Ga({width:n,height:a}),h=Ln(d);h.drawImage(l,0,0,n,a);for(var f=h.getImageData(0,0,n,a).data,p=[],v=0;v<f.length;v+=4)p.push(f[v+2]),p.push(f[v+1]),p.push(f[v]);s.push(p)}),[2,s.map(function(l){var d=ee(function(){var h=wn(dt(l,[1,n,a,3]),[0,2,1,3]).toFloat();return Rl(h)});return d})]}})})}function Cb(r,t){return ee(function(){var e=Yi(r,t),n=Ft(e,[e.shape[0],t.fc1.weights.shape[0]]),a=$t(n,t.fc1),o=cr(a,t.prelu4_alpha),i=$t(o,t.fc2_1),s=Et(La(i,1),1),u=cn(Xe(i,s),1),c=$t(o,t.fc2_2),l=qe(u,1)[1];return{scores:l,regions:c}})}function Eb(r,t,e,n,a){return ie(this,void 0,void 0,function(){var o,i,s,u,c,l,d,h,f,p,v,m,g,x;return se(this,function(b){switch(b.label){case 0:return o=Date.now(),[4,kl(r,t,{width:24,height:24})];case 1:return i=b.sent(),a.stage2_extractImagePatches=Date.now()-o,o=Date.now(),s=i.map(function(_){var y=Cb(_,n);return _.dispose(),y}),a.stage2_rnet=Date.now()-o,u=s.length>1?je(s.map(function(_){return _.scores})):s[0].scores,d=(l=Array).from,[4,u.data()];case 2:return c=d.apply(l,[b.sent()]),u.dispose(),h=c.map(function(_,y){return{score:_,idx:y}}).filter(function(_){return _.score>e}).map(function(_){var y=_.idx;return y}),f=h.map(function(_){return t[_]}),p=h.map(function(_){return c[_]}),v=[],m=[],f.length>0&&(o=Date.now(),g=Nr(f,p,.7),a.stage2_nms=Date.now()-o,x=g.map(function(_){var y=s[h[_]].regions.arraySync();return new Xi(y[0][0],y[0][1],y[0][2],y[0][3])}),m=g.map(function(_){return p[_]}),v=g.map(function(_,y){return f[_].calibrate(x[y])})),s.forEach(function(_){_.regions.dispose(),_.scores.dispose()}),[2,{boxes:v,scores:m}]}})})}function Rb(r,t){return ee(function(){var e=Yi(r,t);e=Je(e,[2,2],[2,2],"same"),e=Pt(e,t.conv4,"valid"),e=cr(e,t.prelu4_alpha);var n=Ft(e,[e.shape[0],t.fc1.weights.shape[0]]),a=$t(n,t.fc1),o=cr(a,t.prelu5_alpha),i=$t(o,t.fc2_1),s=Et(La(i,1),1),u=cn(Xe(i,s),1),c=$t(o,t.fc2_2),l=$t(o,t.fc2_3),d=qe(u,1)[1];return{scores:d,regions:c,points:l}})}function kb(r,t,e,n,a){return ie(this,void 0,void 0,function(){var o,i,s,u,c,l,d,h,f,p,v,m,g,x,b;return se(this,function(_){switch(_.label){case 0:return o=Date.now(),[4,kl(r,t,{width:48,height:48})];case 1:return i=_.sent(),a.stage3_extractImagePatches=Date.now()-o,o=Date.now(),s=i.map(function(y){var w=Rb(y,n);return y.dispose(),w}),a.stage3_onet=Date.now()-o,u=s.length>1?je(s.map(function(y){return y.scores})):s[0].scores,d=(l=Array).from,[4,u.data()];case 2:return c=d.apply(l,[_.sent()]),u.dispose(),h=c.map(function(y,w){return{score:y,idx:w}}).filter(function(y){return y.score>e}).map(function(y){var w=y.idx;return w}),f=h.map(function(y){var w=s[y].regions.arraySync();return new Xi(w[0][0],w[0][1],w[0][2],w[0][3])}),p=h.map(function(y,w){return t[y].calibrate(f[w])}),v=h.map(function(y){return c[y]}),m=[],g=[],x=[],p.length>0&&(o=Date.now(),b=Nr(p,v,.7,!1),a.stage3_nms=Date.now()-o,m=b.map(function(y){return p[y]}),g=b.map(function(y){return v[y]}),x=b.map(function(y,w){return Array(5).fill(0).map(function(S,I){var k=s[y].points.arraySync();return new Se(k[0][I]*(m[w].width+1)+m[w].left,k[0][I+5]*(m[w].height+1)+m[w].top)})})),s.forEach(function(y){y.regions.dispose(),y.scores.dispose(),y.points.dispose()}),[2,{boxes:m,scores:g,points:x}]}})})}var Ib=function(r){fe(t,r);function t(){return r.call(this,"Mtcnn")||this}return t.prototype.load=function(e){return ie(this,void 0,void 0,function(){return se(this,function(n){return console.warn("mtcnn is deprecated and will be removed soon"),[2,r.prototype.load.call(this,e)]})})},t.prototype.loadFromDisk=function(e){return ie(this,void 0,void 0,function(){return se(this,function(n){return console.warn("mtcnn is deprecated and will be removed soon"),[2,r.prototype.loadFromDisk.call(this,e)]})})},t.prototype.forwardInput=function(e,n){return n===void 0&&(n={}),ie(this,void 0,void 0,function(){var a,o,i,s,u,c,l,d,h,f,p,v,m,g,x,b,_,y,w,S,I;return se(this,function(k){switch(k.label){case 0:if(a=this.params,!a)throw new Error("Mtcnn - load model before inference");if(o=e.canvases[0],!o)throw new Error("Mtcnn - inputCanvas is not defined, note that passing tensors into Mtcnn.forwardInput is not supported yet.");return i={},s=Date.now(),u=ee(function(){return fb(Et(Ni.fromPixels(o)).toFloat())}),c=function(R){return u.dispose(),i.total=Date.now()-s,R},l=u.shape.slice(1),d=l[0],h=l[1],f=new wl(n),p=f.minFaceSize,v=f.scaleFactor,m=f.maxNumScales,g=f.scoreThresholds,x=f.scaleSteps,b=(x||_b(p,v,[d,h])).filter(function(R){var N=Qo(R,[d,h]);return Math.min(N.width,N.height)>Aa}).slice(0,m),i.scales=b,i.pyramid=b.map(function(R){return Qo(R,[d,h])}),_=Date.now(),[4,wb(u,b,g[0],a.pnet,i)];case 1:return y=k.sent(),i.total_stage1=Date.now()-_,y.boxes.length?(i.stage2_numInputBoxes=y.boxes.length,_=Date.now(),[4,Eb(o,y.boxes,g[1],a.rnet,i)]):[2,c({results:[],stats:i})];case 2:return w=k.sent(),i.total_stage2=Date.now()-_,w.boxes.length?(i.stage3_numInputBoxes=w.boxes.length,_=Date.now(),[4,kb(o,w.boxes,g[2],a.onet,i)]):[2,c({results:[],stats:i})];case 3:return S=k.sent(),i.total_stage3=Date.now()-_,I=S.boxes.map(function(R,N){return Gi(Mi({},new Zt(S.scores[N],new Pi(R.left/h,R.top/d,R.width/h,R.height/d),{height:d,width:h})),new nx(S.points[N].map(function(D){return D.sub(new Se(R.left,R.top)).div(new Se(R.width,R.height))}),{width:R.width,height:R.height}))}),[2,c({results:I,stats:i})]}})})},t.prototype.forward=function(e,n){return n===void 0&&(n={}),ie(this,void 0,void 0,function(){var a;return se(this,function(o){switch(o.label){case 0:return a=this.forwardInput,[4,et(e)];case 1:return[4,a.apply(this,[o.sent(),n])];case 2:return[2,o.sent().results]}})})},t.prototype.forwardWithStats=function(e,n){return n===void 0&&(n={}),ie(this,void 0,void 0,function(){var a;return se(this,function(o){switch(o.label){case 0:return a=this.forwardInput,[4,et(e)];case 1:return[2,a.apply(this,[o.sent(),n])]}})})},t.prototype.getDefaultModelName=function(){return"mtcnn_model"},t.prototype.extractParamsFromWeigthMap=function(e){return gb(e)},t.prototype.extractParams=function(e){return vb(e)},t}(dn),Sb=.4,Ab=[new Se(1.603231,2.094468),new Se(6.041143,7.080126),new Se(2.882459,3.518061),new Se(4.266906,5.178857),new Se(9.041765,10.66308)],Db=[117.001,114.697,97.404],Tb=function(r){fe(t,r);function t(){var e=this,n={withSeparableConvs:!0,iouThreshold:Sb,classes:["face"],anchors:Ab,meanRgb:Db,isFirstLayerConv2d:!0,filterSizes:[3,16,32,64,128,256,512]};return e=r.call(this,n)||this,e}return Object.defineProperty(t.prototype,"anchors",{get:function(){return this.config.anchors},enumerable:!0,configurable:!0}),t.prototype.locateFaces=function(e,n){return ie(this,void 0,void 0,function(){var a;return se(this,function(o){switch(o.label){case 0:return[4,this.detect(e,n)];case 1:return a=o.sent(),[2,a.map(function(i){return new Zt(i.score,i.relativeBox,{width:i.imageWidth,height:i.imageHeight})})]}})})},t.prototype.getDefaultModelName=function(){return"tiny_face_detector_model"},t.prototype.extractParamsFromWeigthMap=function(e){return r.prototype.extractParamsFromWeigthMap.call(this,e)},t}(El),It={ssdMobilenetv1:new Cl,tinyFaceDetector:new Tb,tinyYolov2:new db,mtcnn:new Ib,faceLandmark68Net:new ml,faceLandmark68TinyNet:new Nx,faceRecognitionNet:new Wx,faceExpressionNet:new _x,ageGenderNet:new Sx},Il=function(r){fe(t,r);function t(e,n,a){var o=r.call(this)||this;return o.parentTask=e,o.input=n,o.extractedFaces=a,o}return t}($r),Ji=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n,a=this;return se(this,function(o){switch(o.label){case 0:return[4,this.parentTask];case 1:return e=o.sent(),[4,$a(e,this.input,function(i){return ie(a,void 0,void 0,function(){return se(this,function(s){switch(s.label){case 0:return[4,Promise.all(i.map(function(u){return It.faceExpressionNet.predictExpressions(u)}))];case 1:return[2,s.sent()]}})})},this.extractedFaces)];case 2:return n=o.sent(),[2,e.map(function(i,s){return fl(i,n[s])})]}})})},t.prototype.withAgeAndGender=function(){return new ts(this,this.input)},t}(Il),Qi=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n;return se(this,function(a){switch(a.label){case 0:return[4,this.parentTask];case 1:return e=a.sent(),e?[4,Ki(e,this.input,function(o){return It.faceExpressionNet.predictExpressions(o)},this.extractedFaces)]:[2];case 2:return n=a.sent(),[2,fl(e,n)]}})})},t.prototype.withAgeAndGender=function(){return new ns(this,this.input)},t}(Il),Zi=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.withAgeAndGender=function(){return new rs(this,this.input)},t.prototype.withFaceDescriptors=function(){return new os(this,this.input)},t}(Ji),es=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.withAgeAndGender=function(){return new as(this,this.input)},t.prototype.withFaceDescriptor=function(){return new is(this,this.input)},t}(Qi),Sl=function(r){fe(t,r);function t(e,n,a){var o=r.call(this)||this;return o.parentTask=e,o.input=n,o.extractedFaces=a,o}return t}($r),ts=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n,a=this;return se(this,function(o){switch(o.label){case 0:return[4,this.parentTask];case 1:return e=o.sent(),[4,$a(e,this.input,function(i){return ie(a,void 0,void 0,function(){return se(this,function(s){switch(s.label){case 0:return[4,Promise.all(i.map(function(u){return It.ageGenderNet.predictAgeAndGender(u)}))];case 1:return[2,s.sent()]}})})},this.extractedFaces)];case 2:return n=o.sent(),[2,e.map(function(i,s){var u=n[s],c=u.age,l=u.gender,d=u.genderProbability;return bl(yl(i,l,d),c)})]}})})},t.prototype.withFaceExpressions=function(){return new Ji(this,this.input)},t}(Sl),ns=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n,a,o,i;return se(this,function(s){switch(s.label){case 0:return[4,this.parentTask];case 1:return e=s.sent(),e?[4,Ki(e,this.input,function(u){return It.ageGenderNet.predictAgeAndGender(u)},this.extractedFaces)]:[2];case 2:return n=s.sent(),a=n.age,o=n.gender,i=n.genderProbability,[2,bl(yl(e,o,i),a)]}})})},t.prototype.withFaceExpressions=function(){return new Qi(this,this.input)},t}(Sl),rs=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.withFaceExpressions=function(){return new Zi(this,this.input)},t.prototype.withFaceDescriptors=function(){return new os(this,this.input)},t}(ts),as=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.withFaceExpressions=function(){return new es(this,this.input)},t.prototype.withFaceDescriptor=function(){return new is(this,this.input)},t}(ns),Al=function(r){fe(t,r);function t(e,n){var a=r.call(this)||this;return a.parentTask=e,a.input=n,a}return t}($r),os=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n;return se(this,function(a){switch(a.label){case 0:return[4,this.parentTask];case 1:return e=a.sent(),[4,$a(e,this.input,function(o){return Promise.all(o.map(function(i){return It.faceRecognitionNet.computeFaceDescriptor(i)}))},null,function(o){return o.landmarks.align(null,{useDlibAlignment:!0})})];case 2:return n=a.sent(),[2,n.map(function(o,i){return xl(e[i],o)})]}})})},t.prototype.withFaceExpressions=function(){return new Zi(this,this.input)},t.prototype.withAgeAndGender=function(){return new rs(this,this.input)},t}(Al),is=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n;return se(this,function(a){switch(a.label){case 0:return[4,this.parentTask];case 1:return e=a.sent(),e?[4,Ki(e,this.input,function(o){return It.faceRecognitionNet.computeFaceDescriptor(o)},null,function(o){return o.landmarks.align(null,{useDlibAlignment:!0})})]:[2];case 2:return n=a.sent(),[2,xl(e,n)]}})})},t.prototype.withFaceExpressions=function(){return new es(this,this.input)},t.prototype.withAgeAndGender=function(){return new as(this,this.input)},t}(Al),Dl=function(r){fe(t,r);function t(e,n,a){var o=r.call(this)||this;return o.parentTask=e,o.input=n,o.useTinyLandmarkNet=a,o}return Object.defineProperty(t.prototype,"landmarkNet",{get:function(){return this.useTinyLandmarkNet?It.faceLandmark68TinyNet:It.faceLandmark68Net},enumerable:!0,configurable:!0}),t}($r),Nb=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n,a,o,i,s=this;return se(this,function(u){switch(u.label){case 0:return[4,this.parentTask];case 1:return e=u.sent(),n=e.map(function(c){return c.detection}),this.input instanceof Oe?[4,Wi(this.input,n)]:[3,3];case 2:return o=u.sent(),[3,5];case 3:return[4,Li(this.input,n)];case 4:o=u.sent(),u.label=5;case 5:return a=o,[4,Promise.all(a.map(function(c){return s.landmarkNet.detectLandmarks(c)}))];case 6:return i=u.sent(),a.forEach(function(c){return c instanceof Oe&&c.dispose()}),[2,e.map(function(c,l){return Gi(c,i[l])})]}})})},t.prototype.withFaceExpressions=function(){return new Zi(this,this.input)},t.prototype.withAgeAndGender=function(){return new rs(this,this.input)},t.prototype.withFaceDescriptors=function(){return new os(this,this.input)},t}(Dl),Fb=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n,a,o,i;return se(this,function(s){switch(s.label){case 0:return[4,this.parentTask];case 1:return e=s.sent(),e?(n=e.detection,this.input instanceof Oe?[4,Wi(this.input,[n])]:[3,3]):[2];case 2:return o=s.sent(),[3,5];case 3:return[4,Li(this.input,[n])];case 4:o=s.sent(),s.label=5;case 5:return a=o,[4,this.landmarkNet.detectLandmarks(a[0])];case 6:return i=s.sent(),a.forEach(function(u){return u instanceof Oe&&u.dispose()}),[2,Gi(e,i)]}})})},t.prototype.withFaceExpressions=function(){return new es(this,this.input)},t.prototype.withAgeAndGender=function(){return new as(this,this.input)},t.prototype.withFaceDescriptor=function(){return new is(this,this.input)},t}(Dl),Tl=function(r){fe(t,r);function t(e,n){n===void 0&&(n=new $i);var a=r.call(this)||this;return a.input=e,a.options=n,a}return t}($r),Pb=function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n,a,o;return se(this,function(i){switch(i.label){case 0:return e=this,n=e.input,a=e.options,a instanceof wl?[4,It.mtcnn.forward(n,a)]:[3,2];case 1:return[2,i.sent().map(function(s){return s.detection})];case 2:if(o=a instanceof hb?function(s){return It.tinyFaceDetector.locateFaces(s,a)}:a instanceof $i?function(s){return It.ssdMobilenetv1.locateFaces(s,a)}:a instanceof qi?function(s){return It.tinyYolov2.locateFaces(s,a)}:null,!o)throw new Error("detectFaces - expected options to be instance of TinyFaceDetectorOptions | SsdMobilenetv1Options | MtcnnOptions | TinyYolov2Options");return[2,o(n)]}})})},t.prototype.runAndExtendWithFaceDetections=function(){var e=this;return new Promise(function(n){return ie(e,void 0,void 0,function(){var a;return se(this,function(o){switch(o.label){case 0:return[4,this.run()];case 1:return a=o.sent(),[2,n(a.map(function(i){return Mi({},i)}))]}})})})},t.prototype.withFaceLandmarks=function(e){return e===void 0&&(e=!1),new Nb(this.runAndExtendWithFaceDetections(),this.input,e)},t.prototype.withFaceExpressions=function(){return new Ji(this.runAndExtendWithFaceDetections(),this.input)},t.prototype.withAgeAndGender=function(){return new ts(this.runAndExtendWithFaceDetections(),this.input)},t}(Tl);(function(r){fe(t,r);function t(){return r!==null&&r.apply(this,arguments)||this}return t.prototype.run=function(){return ie(this,void 0,void 0,function(){var e,n;return se(this,function(a){switch(a.label){case 0:return[4,new Pb(this.input,this.options)];case 1:return e=a.sent(),n=e[0],e.forEach(function(o){o.score>n.score&&(n=o)}),[2,n]}})})},t.prototype.runAndExtendWithFaceDetection=function(){var e=this;return new Promise(function(n){return ie(e,void 0,void 0,function(){var a;return se(this,function(o){switch(o.label){case 0:return[4,this.run()];case 1:return a=o.sent(),[2,n(a?Mi({},a):void 0)]}})})})},t.prototype.withFaceLandmarks=function(e){return e===void 0&&(e=!1),new Fb(this.runAndExtendWithFaceDetection(),this.input,e)},t.prototype.withFaceExpressions=function(){return new Qi(this.runAndExtendWithFaceDetection(),this.input)},t.prototype.withAgeAndGender=function(){return new ns(this.runAndExtendWithFaceDetection(),this.input)},t})(Tl);function Mb(r,t){if(r.length!==t.length)throw new Error("euclideanDistance: arr1.length !== arr2.length");var e=Array.from(r),n=Array.from(t);return Math.sqrt(e.map(function(a,o){return a-n[o]}).reduce(function(a,o){return a+Math.pow(o,2)},0))}(function(){function r(t,e){e===void 0&&(e=.6),this._distanceThreshold=e;var n=Array.isArray(t)?t:[t];if(!n.length)throw new Error("FaceRecognizer.constructor - expected atleast one input");var a=1,o=function(){return"person "+a++};this._labeledDescriptors=n.map(function(i){if(i instanceof ta)return i;if(i instanceof Float32Array)return new ta(o(),[i]);if(i.descriptor&&i.descriptor instanceof Float32Array)return new ta(o(),[i.descriptor]);throw new Error("FaceRecognizer.constructor - expected inputs to be of type LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array | Array<LabeledFaceDescriptors | WithFaceDescriptor<any> | Float32Array>")})}return Object.defineProperty(r.prototype,"labeledDescriptors",{get:function(){return this._labeledDescriptors},enumerable:!0,configurable:!0}),Object.defineProperty(r.prototype,"distanceThreshold",{get:function(){return this._distanceThreshold},enumerable:!0,configurable:!0}),r.prototype.computeMeanDistance=function(t,e){return e.map(function(n){return Mb(n,t)}).reduce(function(n,a){return n+a},0)/(e.length||1)},r.prototype.matchDescriptor=function(t){var e=this;return this.labeledDescriptors.map(function(n){var a=n.descriptors,o=n.label;return new nu(o,e.computeMeanDistance(t,a))}).reduce(function(n,a){return n.distance<a.distance?n:a})},r.prototype.findBestMatch=function(t){var e=this.matchDescriptor(t);return e.distance<this.distanceThreshold?e:new nu("unknown",e.distance)},r.prototype.toJSON=function(){return{distanceThreshold:this.distanceThreshold,labeledDescriptors:this.labeledDescriptors.map(function(t){return t.toJSON()})}},r.fromJSON=function(t){var e=t.labeledDescriptors.map(function(n){return ta.fromJSON(n)});return new r(e,t.distanceThreshold)},r})();const He="/screen/images/element-04.png";const ja=r=>(At("data-v-c919badf"),r=r(),St(),r),Ob={class:"water_top_box"},Bb=ja(()=>F("div",{class:"half_title"},[F("div",{class:"half_title_text"},[F("div",{class:"half_title_text_center"},"工作人员")])],-1)),Lb={class:"water_top_box_main flex flex-align-center padding"},Wb=ja(()=>F("div",{class:"imgBox flex flex-justify-center flex-align-center"},[F("img",{src:vu,alt:""})],-1)),Vb={class:"rightBox margin-left"},zb=ja(()=>F("div",{class:"titleBox"},[F("div",{class:"title flex flex-align-center"},[Da(" 腾亿互联"),F("span",null,"在线")]),F("div",{class:"phone"},"联系电话:131 1234 1234")],-1)),Ub={class:"full-width flex flex-wrap"},Gb={class:"left flex flex-align-center"},Hb=ja(()=>F("span",null,null,-1)),$b=[Hb],jb={class:"right"},qb={__name:"groupQuery",setup(r){const t=we([{type:1,name:"总人数",value:"98人"},{type:2,name:"巡检员",value:"藤亿互联"},{type:1,name:"负责人",value:"藤亿互联"},{type:2,name:"维修",value:"藤亿互联"},{type:1,name:"巡检员",value:"藤亿互联"},{type:2,name:"保洁",value:"藤亿互联"}]);return(e,n)=>(P(),O("div",Ob,[Bb,F("div",Lb,[Wb,F("div",Vb,[zb,F("div",Ub,[(P(!0),O(De,null,Ue(t.value,(a,o)=>(P(),O("div",{key:o,class:"itemBox padding flex flex-justify-between flex-align-center"},[F("div",Gb,[F("span",{class:Ze([a.type===1?"orange":"blue","flex flex-justify-center flex-align-center mr-5"])},$b,2),Da(K(a.name),1)]),F("div",jb,K(a.value),1)]))),128))])])])]))}},Kb=Re(qb,[["__scopeId","data-v-c919badf"]]);const mr=r=>(At("data-v-2a0df873"),r=r(),St(),r),Xb={class:"water_top_box"},Yb=mr(()=>F("div",{class:"half_title"},[F("div",{class:"half_title_text"},[F("div",{class:"half_title_text_center"},"巡检信息")])],-1)),Jb={class:"water_top_box_main padding flex-col"},Qb=We('<div class="status_item padding relative full-width margin-bottom" data-v-2a0df873><div class="flex status_item_box" data-v-2a0df873><div class="imgBox flex flex-justify-center flex-align-center" data-v-2a0df873><img src="'+vu+'" alt="" data-v-2a0df873></div><div class="contentBox margin-left" data-v-2a0df873><div class="contentItem" data-v-2a0df873> 姓名内容 <span class="online" data-v-2a0df873>在线</span></div><div class="contentItem" data-v-2a0df873> 联系电话 <span data-v-2a0df873>131 1234 1234</span></div><div class="contentItem" data-v-2a0df873> 巡检次数 <span data-v-2a0df873>124次</span></div><div class="contentItem" data-v-2a0df873> 注册事件 <span data-v-2a0df873>2021-02-02</span></div></div></div><img src="'+Zo+'" style="position:absolute;left:0;top:0;width:6px;height:6px;" alt="" data-v-2a0df873><img src="'+ei+'" style="position:absolute;left:0;bottom:0;width:6px;height:6px;" alt="" data-v-2a0df873><img src="'+ti+'" style="position:absolute;right:0;top:0;width:6px;height:6px;" alt="" data-v-2a0df873><img src="'+ni+'" style="position:absolute;right:0;bottom:0;width:6px;height:6px;" alt="" data-v-2a0df873></div>',1),Zb={class:"xj_box"},e1=mr(()=>F("div",{class:"xj_title"},"巡检记录",-1)),t1={class:"xj-list full-width flex flex-wrap padding flex-justify-between"},n1={class:"imgBox full-width flex flex-justify-center flex-align-center"},r1=["src"],a1={class:"dateBox full-width flex flex-justify-between flex-align-center"},o1={class:"date"},i1={class:"time"},s1={class:"contentBox"},u1=mr(()=>F("img",{src:Zo,style:{position:"absolute",left:"0",top:"0",width:"6px",height:"6px"},alt:""},null,-1)),c1=mr(()=>F("img",{src:ei,style:{position:"absolute",left:"0",bottom:"0",width:"6px",height:"6px"},alt:""},null,-1)),l1=mr(()=>F("img",{src:ti,style:{position:"absolute",right:"0",top:"0",width:"6px",height:"6px"},alt:""},null,-1)),d1=mr(()=>F("img",{src:ni,style:{position:"absolute",right:"0",bottom:"0",width:"6px",height:"6px"},alt:""},null,-1)),h1={__name:"operations",setup(r){const t=we([{url:_r+"images/Cover.png",date:"2023-12-12",time:"3",content:"编号UK203视频设备异常,已上报信息"},{url:_r+"images/Cover.png",date:"2023-12-12",time:"3",content:"编号UK203视频设备异常,已上报信息"},{url:_r+"images/Cover.png",date:"2023-12-12",time:"3",content:"编号UK203视频设备异常,已上报信息"},{url:_r+"images/Cover.png",date:"2023-12-12",time:"3",content:"编号UK203视频设备异常,已上报信息"},{url:_r+"images/Cover.png",date:"2023-12-12",time:"3",content:"编号UK203视频设备异常,已上报信息"}]);return(e,n)=>(P(),O("div",Xb,[Yb,F("div",Jb,[Qb,F("div",Zb,[e1,F("div",t1,[(P(!0),O(De,null,Ue(t.value,(a,o)=>(P(),O("div",{class:"relative xj-list-item padding",key:o},[F("div",n1,[F("img",{src:a.url,alt:""},null,8,r1)]),F("div",a1,[F("div",o1,K(a.date),1),F("div",i1,"耗时"+K(a.time)+"小时",1)]),F("div",s1,[Da(" 巡检结果: "),F("p",null,K(a.content),1)]),u1,c1,l1,d1]))),128))])])])]))}},f1=Re(h1,[["__scopeId","data-v-2a0df873"]]);const p1={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O("div",{class:Ze(["main_cabin_right",[Z(t).GisShowArr[0]===1?"start_animation1":"",Z(t).GisShowArr[0]===2?"end_animation1":""]])},[ce(Kb),ce(f1)],2))}},v1=Re(p1,[["__scopeId","data-v-182da7d0"]]),m1={__name:"index",setup(r){return(t,e)=>(P(),ht(v1))}};const g1={class:"water_top_box"},_1=We('<div class="half_title" data-v-3bf231e6><img src="'+He+'" class="half_title_drop" data-v-3bf231e6><div class="half_title_text" data-v-3bf231e6><div class="half_title_text_center" data-v-3bf231e6>抢修任务信息</div></div></div><div class="water_top_box_main" data-v-3bf231e6><div class="over_box" data-v-3bf231e6><div class="over_box_view over_box_view_img1" data-v-3bf231e6><div class="over_box_view_text" data-v-3bf231e6><div class="over_box_view_text_title" data-v-3bf231e6>待处理任务</div><div class="over_box_view_text_blue" data-v-3bf231e6><text data-v-3bf231e6>15,123</text>个</div></div></div><div class="over_box_view over_box_view_img2" data-v-3bf231e6><div class="over_box_view_text" data-v-3bf231e6><div class="over_box_view_text_title" data-v-3bf231e6>已处理任务</div><div class="over_box_view_text_blue" data-v-3bf231e6><text data-v-3bf231e6>15,123</text>个</div></div></div><div class="over_box_view over_box_view_img3" data-v-3bf231e6><div class="over_box_view_text" data-v-3bf231e6><div class="over_box_view_text_title" data-v-3bf231e6>任务完成率</div><div class="over_box_view_text_blue" data-v-3bf231e6><text data-v-3bf231e6>15,123</text>%</div></div></div><div class="over_box_view over_box_view_img4" data-v-3bf231e6><div class="over_box_view_text" data-v-3bf231e6><div class="over_box_view_text_title" data-v-3bf231e6>出勤总人数</div><div class="over_box_view_text_green" data-v-3bf231e6><text data-v-3bf231e6>15,123</text>人</div></div></div><div class="over_box_view over_box_view_img5" data-v-3bf231e6><div class="over_box_view_text" data-v-3bf231e6><div class="over_box_view_text_title" data-v-3bf231e6>平均响应时间</div><div class="over_box_view_text_green" data-v-3bf231e6><text data-v-3bf231e6>15,123</text>小时</div></div></div><div class="over_box_view over_box_view_img6" data-v-3bf231e6><div class="over_box_view_text" data-v-3bf231e6><div class="over_box_view_text_title" data-v-3bf231e6>平均耗时</div><div class="over_box_view_text_green" data-v-3bf231e6><text data-v-3bf231e6>15,123</text>小时</div></div></div></div></div>',2),x1=[_1],b1={__name:"rushRepair-top",setup(r){return(t,e)=>(P(),O("div",g1,x1))}},y1=Re(b1,[["__scopeId","data-v-3bf231e6"]]);const w1={class:"charge_center_box"},C1=We('<div class="half_title" data-v-59fab1e2><img src="'+He+'" class="half_title_drop" data-v-59fab1e2><div class="half_title_text" data-v-59fab1e2><div class="half_title_text_center" data-v-59fab1e2>抢修任务统计</div></div></div><div class="charge_center_box_main" data-v-59fab1e2><div class="maintain_box maintain_box_img1" data-v-59fab1e2><div class="maintain_box_view" data-v-59fab1e2><div class="maintain_box_view_title" data-v-59fab1e2>处理总里程</div><div class="maintain_box_view_num" data-v-59fab1e2><text data-v-59fab1e2>15,123</text>公里</div></div></div><div class="maintain_box maintain_box_img2" data-v-59fab1e2><div class="maintain_box_view" data-v-59fab1e2><div class="maintain_box_view_title" data-v-59fab1e2>处理任务总数</div><div class="maintain_box_view_num" data-v-59fab1e2><text data-v-59fab1e2>15,123</text>个</div></div></div><div class="maintain_box maintain_box_img3" data-v-59fab1e2><div class="maintain_box_view" data-v-59fab1e2><div class="maintain_box_view_title" data-v-59fab1e2>任务平均人数</div><div class="maintain_box_view_num" data-v-59fab1e2><text data-v-59fab1e2>15,123</text>次/人</div></div></div></div>',2),E1=[C1],R1={__name:"rushRepair-center",setup(r){return(t,e)=>(P(),O("div",w1,E1))}},k1=Re(R1,[["__scopeId","data-v-59fab1e2"]]);function I1(r,t,e,n){var a,o=!1,i=0;function s(){a&&clearTimeout(a)}function u(){s(),o=!0}typeof t!="boolean"&&(n=e,e=t,t=void 0);function c(){for(var l=arguments.length,d=new Array(l),h=0;h<l;h++)d[h]=arguments[h];var f=this,p=Date.now()-i;if(o)return;function v(){i=Date.now(),e.apply(f,d)}function m(){a=void 0}n&&!a&&v(),s(),n===void 0&&p>r?v():t!==!0&&(a=setTimeout(n?m:v,n===void 0?r-p:r))}return c.cancel=u,c}function S1(r){const t=lu();t&&Object.assign(t.proxy,r)}const A1={modelValue:{type:Boolean,default:!0},list:{type:Array,required:!0,default:[]},step:{type:Number,default:1},limitScrollNum:{type:Number,default:3},hover:{type:Boolean,default:!1},direction:{type:String,default:"up"},singleHeight:{type:Number,default:0},singleWidth:{type:Number,default:0},singleWaitTime:{type:Number,default:1e3},isRemUnit:{type:Boolean,default:!1},isWatch:{type:Boolean,default:!0},delay:{type:Number,default:0},ease:{type:[String,Object],default:"ease-in"},count:{type:Number,default:-1},copyNum:{type:Number,default:1},wheel:{type:Boolean,default:!1},singleLine:{type:Boolean,default:!1}};globalThis.window.cancelAnimationFrame=function(){return globalThis.window.cancelAnimationFrame||globalThis.window.webkitCancelAnimationFrame||globalThis.window.mozCancelAnimationFrame||globalThis.window.oCancelAnimationFrame||globalThis.window.msCancelAnimationFrame||function(r){return globalThis.window.clearTimeout(r)}}();globalThis.window.requestAnimationFrame=function(){return globalThis.window.requestAnimationFrame||globalThis.window.webkitRequestAnimationFrame||globalThis.window.mozRequestAnimationFrame||globalThis.window.oRequestAnimationFrame||globalThis.window.msRequestAnimationFrame||function(r){return globalThis.window.setTimeout(r,1e3/60)}}();function D1(r){r&&typeof r!="boolean"&&r.length>100&&console.warn(`数据达到了${r.length}条有点多哦~,可能会造成部分老旧浏览器卡顿。`)}const In=cu({name:"vue3-seamless-scroll",inheritAttrs:!1,props:A1,emits:["stop","count","move"],setup(r,{slots:t,emit:e,attrs:n}){const a=r,o=we(null),i=we(null),s=we(null),u=we(null),c=we(null),l=we(0),d=we(0),h=we(0),f=we(0),p=we(!1),v=we(0),m=Vt(()=>a.list?a.list.length>=a.limitScrollNum:!1),g=Vt(()=>({width:l.value?`${l.value}px`:"auto",transform:`translate(${h.value}px,${f.value}px)`,transition:`all ${typeof a.ease=="string"?a.ease:"cubic-bezier("+a.ease.x1+","+a.ease.y1+","+a.ease.x2+","+a.ease.y2+")"} ${a.delay}ms`,overflow:"hidden",display:a.singleLine?"flex":"block"})),x=Vt(()=>a.direction=="left"||a.direction=="right"),b=Vt(()=>x.value?{float:"left",overflow:"hidden",display:a.singleLine?"flex":"block",flexShrink:a.singleLine?0:1}:{overflow:"hidden"}),_=Vt(()=>a.isRemUnit?parseInt(globalThis.window.getComputedStyle(globalThis.document.documentElement,null).fontSize):1),y=Vt(()=>a.singleWidth*_.value),w=Vt(()=>a.singleHeight*_.value),S=Vt(()=>{let Y,ue=a.step;return x.value?Y=y.value:Y=w.value,Y>0&&Y%ue>0&&console.error("如果设置了单步滚动,step 需是单步大小的约数,否则无法保证单步滚动结束的位置是否准确。~~~~~"),ue}),I=()=>{cancelAnimationFrame(u.value),u.value=null},k=(Y,ue,de)=>{u.value=requestAnimationFrame(function(){const ve=d.value/2,xe=l.value/2;if(Y==="up"?(Math.abs(f.value)>=ve&&(f.value=0,v.value+=1,e("count",v.value)),f.value-=ue):Y==="down"?(f.value>=0&&(f.value=ve*-1,v.value+=1,e("count",v.value)),f.value+=ue):Y==="left"?(Math.abs(h.value)>=xe&&(h.value=0,v.value+=1,e("count",v.value)),h.value-=ue):Y==="right"&&(h.value>=0&&(h.value=xe*-1,v.value+=1,e("count",v.value)),h.value+=ue),de)return;let{singleWaitTime:ge}=a;c.value&&clearTimeout(c.value),w.value?Math.abs(f.value)%w.value<ue?c.value=setTimeout(()=>{R()},ge):R():y.value&&Math.abs(h.value)%y.value<ue?c.value=setTimeout(()=>{R()},ge):R()})},R=()=>{if(I(),p.value||!m.value||v.value===a.count){e("stop",v.value),v.value=0;return}k(a.direction,S.value,!1)},N=()=>{if(D1(a.list),x.value){let Y=i.value.offsetWidth;Y=Y*2+1,l.value=Y}m.value?(d.value=s.value.offsetHeight,a.modelValue&&R()):(I(),f.value=h.value=0)},D=()=>{p.value=!1,R()},V=()=>{p.value=!0,c.value&&clearTimeout(c.value),I()},L=Vt(()=>a.hover&&a.modelValue&&m.value),W=I1(30,Y=>{I();const ue=w.value?w.value:15;Y.deltaY<0&&k("down",ue,!0),Y.deltaY>0&&k("up",ue,!0)}),H=Y=>{W(Y)},G=()=>{I(),p.value=!1,N()};S1({Reset:()=>{G()}}),tr(()=>a.list,()=>{a.isWatch&&du(()=>{G()})},{deep:!0}),tr(()=>a.modelValue,Y=>{Y?D():V()}),tr(()=>a.count,Y=>{Y!==0&&D()}),hu(()=>{I(),clearTimeout(c.value)}),Fr(()=>{m.value&&N()});const{default:$,html:q}=t,Q=new Array(a.copyNum).fill(null),te=()=>ce(De,null,[ce("div",{ref:i,style:b.value},[$&&$()]),m.value?Q.map(()=>q&&typeof q=="function"?ce("div",{style:b.value},[q()]):ce("div",{style:b.value},[$&&$()])):null]);return()=>ce("div",{ref:o,class:n.class},[a.wheel&&a.hover?ce("div",{ref:s,style:g.value,onMouseenter:()=>{L.value&&V()},onMouseleave:()=>{L.value&&D()},onWheel:Y=>{L.value&&H(Y)}},[te()]):ce("div",{ref:s,style:g.value,onMouseenter:()=>{L.value&&V()},onMouseleave:()=>{L.value&&D()}},[te()])])}});const T1=r=>(At("data-v-3167e00e"),r=r(),St(),r),N1={class:"bottom_box"},F1=T1(()=>F("div",{class:"half_title"},[F("img",{src:He,class:"half_title_drop"}),F("div",{class:"half_title_text"},[F("div",{class:"half_title_text_center"},"抢修处理班组信息")])],-1)),P1={class:"charge_bottom_box_bottom"},M1=We('<div class="rushRepair_box_title" data-v-3167e00e><div class="rushRepair_box_title_task rushRepair_box_title_div" data-v-3167e00e>抢修任务</div><div class="rushRepair_box_title_state rushRepair_box_title_div" data-v-3167e00e>状态</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-3167e00e>班组名称</div><div class="rushRepair_box_title_state rushRepair_box_title_div" data-v-3167e00e>人数</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-3167e00e>负责人</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-3167e00e>里程数(公里)</div></div>',1),O1={class:"scroll_box"},B1={class:"rushRepair_box_title_task"},L1={key:0,class:"rushRepair_box_title_state green_text"},W1={key:1,class:"rushRepair_box_title_state orange_text"},V1={key:2,class:"rushRepair_box_title_state blue_text"},z1={key:3,class:"rushRepair_box_title_state"},U1={class:"rushRepair_box_title_name"},G1={class:"rushRepair_box_title_state"},H1={class:"rushRepair_box_title_name"},$1={class:"rushRepair_box_title_name"},j1={__name:"rushRepair-bottom",setup(r){let t=we([{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"待处理",count:2,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"已完成",count:3,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"}]);return(e,n)=>(P(),O("div",N1,[F1,F("div",P1,[M1,F("div",O1,[ce(Z(In),{list:Z(t),class:"scroll",hover:!0,wheel:!0,step:.5},{default:sn(()=>[(P(!0),O(De,null,Ue(Z(t),(a,o)=>(P(),O("div",{class:Ze((o+1)%2==0?"table_tb_two":"table_tb_one"),key:o},[F("div",B1,K(a.task),1),a.count==1?(P(),O("div",L1,K(a.state),1)):a.count==2?(P(),O("div",W1,K(a.state),1)):a.count==3?(P(),O("div",V1,K(a.state),1)):(P(),O("div",z1,K(a.state),1)),F("div",U1,K(a.name),1),F("div",G1,K(a.num),1),F("div",H1,K(a.principal),1),F("div",$1,K(a.mileage),1)],2))),128))]),_:1},8,["list"])])])]))}},q1=Re(j1,[["__scopeId","data-v-3167e00e"]]);const K1={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O("div",{class:Ze(["mian_left",[Z(t).GisShowArr[1]===1?"start_animation":"",Z(t).GisShowArr[1]===2?"end_animation":""]])},[ce(y1),ce(k1),ce(q1)],2))}},X1=Re(K1,[["__scopeId","data-v-a9b080a6"]]),qa="/screen/images/search-normal.png",Sn="/screen/images/folder-open.png",Ka="/screen/images/folder-minus.png",Xa="/screen/images/folder-add.png";const Nl=r=>(At("data-v-6376282d"),r=r(),St(),r),Y1={class:"bottom_box"},J1=We('<div class="water_top_box_view" data-v-6376282d><div class="water_top_box_view_left" data-v-6376282d><img src="'+He+'" class="water_top_box_view_drop" data-v-6376282d><div class="water_top_box_view_text" data-v-6376282d><div class="water_top_box_view_center" data-v-6376282d>分区/分组查询</div></div></div></div>',1),Q1={class:"charge_bottom_box_bottom"},Z1={class:"search_box"},ey=Nl(()=>F("img",{src:qa},null,-1)),ty={class:"list_box"},ny={class:"one_box"},ry={key:0,class:"one_box_img",src:Sn},ay=["onClick"],oy=["onClick"],iy={class:"one_box_title"},sy={class:"one_box_name"},uy=Nl(()=>F("img",{class:"one_box_img",src:Sn},null,-1)),cy={class:"one_box_title"},ly={class:"one_box_name"},dy={__name:"rushRepairRight-top",setup(r){let t=we([{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!0,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]}]);const e=a=>{t.value[a].flag=!0},n=a=>{t.value[a].flag=!1};return(a,o)=>(P(),O("div",Y1,[J1,F("div",Q1,[F("div",Z1,[ey,Mr(F("input",{class:"search_box_input",type:"text",placeholder:"请输入内容","onUpdate:modelValue":o[0]||(o[0]=i=>a.values=i)},null,512),[[Pr,a.values]])]),F("div",ty,[(P(!0),O(De,null,Ue(Z(t),(i,s)=>(P(),O("div",{class:"list_box_view",key:s},[F("div",ny,[i.child.length==0?(P(),O("img",ry)):i.child.length>0&&i.flag?(P(),O("img",{key:1,class:"one_box_img",src:Ka,onClick:u=>n(s)},null,8,ay)):!i.flag&&i.child.length>0?(P(),O("img",{key:2,class:"one_box_img",src:Xa,onClick:u=>e(s)},null,8,oy)):Te("",!0),F("div",iy,K(i.title),1),F("div",sy,K(i.text),1)]),i.child.length>0&&i.flag?(P(!0),O(De,{key:0},Ue(i.child,(u,c)=>(P(),O("div",{class:"two_box",key:c},[uy,F("div",cy,K(u.title),1),F("div",ly,K(u.text),1)]))),128)):Te("",!0)]))),128))])])]))}},hy=Re(dy,[["__scopeId","data-v-6376282d"]]);const fy={class:"bottom_box"},py=We('<div class="water_top_box_view" data-v-97fcf5e5><div class="water_top_box_view_left" data-v-97fcf5e5><img src="'+He+'" class="water_top_box_view_drop" data-v-97fcf5e5><div class="water_top_box_view_text" data-v-97fcf5e5><div class="water_top_box_view_center" data-v-97fcf5e5>实时动态</div></div></div></div>',1),vy={class:"charge_bottom_box_bottom"},my={class:"scroll_box"},gy={class:"table_title_time"},_y={key:0,class:"table_tb_two_text_red"},xy={key:1,class:"table_tb_two_text_blue"},by={key:2,class:"table_tb_two_text_green"},yy={key:3,class:"table_tb_two_text_orange"},wy={key:4,class:"table_tb_two_text_blue"},Cy={class:"table_title_view"},Ey={__name:"rushRepairRigth-bottom",setup(r){let t=we([{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:1},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:4},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:1},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3}]);return(e,n)=>(P(),O("div",fy,[py,F("div",vy,[F("div",my,[ce(Z(In),{list:Z(t),class:"scroll",hover:!0,wheel:!0,step:.5},{default:sn(()=>[(P(!0),O(De,null,Ue(Z(t),(a,o)=>(P(),O("div",{class:"table_title",key:o},[F("div",gy,K(a.title),1),a.value==1?(P(),O("div",_y,K(a.bennum),1)):a.value==2?(P(),O("div",xy,K(a.bennum),1)):a.value==3?(P(),O("div",by,K(a.bennum),1)):a.value==4?(P(),O("div",yy,K(a.bennum),1)):(P(),O("div",wy,K(a.bennum),1)),F("div",Cy,K(a.shangnum),1)]))),128))]),_:1},8,["list"])])])]))}},Ry=Re(Ey,[["__scopeId","data-v-97fcf5e5"]]);const ky={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O("div",{class:Ze(["main_cabin_right",[Z(t).GisShowArr[1]===1?"start_animation1":"",Z(t).GisShowArr[1]===2?"end_animation1":""]])},[ce(hy),ce(Ry)],2))}},Iy=Re(ky,[["__scopeId","data-v-6251679b"]]),Sy={__name:"index",setup(r){return(t,e)=>(P(),O(De,null,[ce(X1),ce(Iy)],64))}};const Ay={class:"water_top_box"},Dy=We('<div class="half_title" data-v-65f98b0a><img src="'+He+'" class="half_title_drop" data-v-65f98b0a><div class="half_title_text" data-v-65f98b0a><div class="half_title_text_center" data-v-65f98b0a>当日巡查信息</div></div></div><div class="water_top_box_main" data-v-65f98b0a><div class="over_box" data-v-65f98b0a><div class="over_box_view over_box_view_img1" data-v-65f98b0a><div class="over_box_view_text" data-v-65f98b0a><div class="over_box_view_text_title" data-v-65f98b0a>待巡查里程</div><div class="over_box_view_text_blue" data-v-65f98b0a><text data-v-65f98b0a>15,123</text>公里</div></div></div><div class="over_box_view over_box_view_img2" data-v-65f98b0a><div class="over_box_view_text" data-v-65f98b0a><div class="over_box_view_text_title" data-v-65f98b0a>已巡查里程</div><div class="over_box_view_text_blue" data-v-65f98b0a><text data-v-65f98b0a>15,123</text>公里</div></div></div><div class="over_box_view over_box_view_img3" data-v-65f98b0a><div class="over_box_view_text" data-v-65f98b0a><div class="over_box_view_text_title" data-v-65f98b0a>巡查完成度</div><div class="over_box_view_text_blue" data-v-65f98b0a><text data-v-65f98b0a>15,123</text>%</div></div></div><div class="over_box_view over_box_view_img4" data-v-65f98b0a><div class="over_box_view_text" data-v-65f98b0a><div class="over_box_view_text_title" data-v-65f98b0a>出巡总人数</div><div class="over_box_view_text_green" data-v-65f98b0a><text data-v-65f98b0a>15,123</text>人</div></div></div><div class="over_box_view over_box_view_img5" data-v-65f98b0a><div class="over_box_view_text" data-v-65f98b0a><div class="over_box_view_text_title" data-v-65f98b0a>巡查任务数</div><div class="over_box_view_text_green" data-v-65f98b0a><text data-v-65f98b0a>15,123</text>个</div></div></div><div class="over_box_view over_box_view_img6" data-v-65f98b0a><div class="over_box_view_text" data-v-65f98b0a><div class="over_box_view_text_title" data-v-65f98b0a>任务平均人数</div><div class="over_box_view_text_green" data-v-65f98b0a><text data-v-65f98b0a>15,123</text>次/人</div></div></div></div></div>',2),Ty=[Dy],Ny={__name:"patrol-top",setup(r){return(t,e)=>(P(),O("div",Ay,Ty))}},Fy=Re(Ny,[["__scopeId","data-v-65f98b0a"]]);const Py={class:"charge_center_box"},My=We('<div class="half_title" data-v-23a81e04><img src="'+He+'" class="half_title_drop" data-v-23a81e04><div class="half_title_text" data-v-23a81e04><div class="half_title_text_center" data-v-23a81e04>巡查信息总览</div></div></div><div class="charge_center_box_main" data-v-23a81e04><div class="maintain_box maintain_box_img1" data-v-23a81e04><div class="maintain_box_view" data-v-23a81e04><div class="maintain_box_view_title" data-v-23a81e04>巡查总里程</div><div class="maintain_box_view_num" data-v-23a81e04><text data-v-23a81e04>15,123</text>公里</div></div></div><div class="maintain_box maintain_box_img2" data-v-23a81e04><div class="maintain_box_view" data-v-23a81e04><div class="maintain_box_view_title" data-v-23a81e04>完成巡查任务总数</div><div class="maintain_box_view_num" data-v-23a81e04><text data-v-23a81e04>15,123</text>个</div></div></div><div class="maintain_box maintain_box_img3" data-v-23a81e04><div class="maintain_box_view" data-v-23a81e04><div class="maintain_box_view_title" data-v-23a81e04>任务平均人数</div><div class="maintain_box_view_num" data-v-23a81e04><text data-v-23a81e04>15,123</text>次/人</div></div></div></div>',2),Oy=[My],By={__name:"patrol-center",setup(r){return(t,e)=>(P(),O("div",Py,Oy))}},Ly=Re(By,[["__scopeId","data-v-23a81e04"]]);const Wy=r=>(At("data-v-8b5728f5"),r=r(),St(),r),Vy={class:"bottom_box"},zy=Wy(()=>F("div",{class:"half_title"},[F("img",{src:He,class:"half_title_drop"}),F("div",{class:"half_title_text"},[F("div",{class:"half_title_text_center"},"当日巡查班组信息")])],-1)),Uy={class:"charge_bottom_box_bottom"},Gy=We('<div class="rushRepair_box_title" data-v-8b5728f5><div class="rushRepair_box_title_task rushRepair_box_title_div" data-v-8b5728f5>巡查路线</div><div class="rushRepair_box_title_state rushRepair_box_title_div" data-v-8b5728f5>状态</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-8b5728f5>班组名称</div><div class="rushRepair_box_title_state rushRepair_box_title_div" data-v-8b5728f5>人数</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-8b5728f5>负责人</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-8b5728f5>里程数(公里)</div></div>',1),Hy={class:"scroll_box"},$y={class:"rushRepair_box_title_task"},jy={key:0,class:"rushRepair_box_title_state green_text"},qy={key:1,class:"rushRepair_box_title_state orange_text"},Ky={key:2,class:"rushRepair_box_title_state blue_text"},Xy={key:3,class:"rushRepair_box_title_state"},Yy={class:"rushRepair_box_title_name"},Jy={class:"rushRepair_box_title_state"},Qy={class:"rushRepair_box_title_name"},Zy={class:"rushRepair_box_title_name"},ew={__name:"patrol-bottom",setup(r){let t=we([{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"待处理",count:2,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"已完成",count:3,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"}]);return(e,n)=>(P(),O("div",Vy,[zy,F("div",Uy,[Gy,F("div",Hy,[ce(Z(In),{list:Z(t),class:"scroll",hover:!0,wheel:!0,step:.5},{default:sn(()=>[(P(!0),O(De,null,Ue(Z(t),(a,o)=>(P(),O("div",{class:Ze((o+1)%2==0?"table_tb_two":"table_tb_one"),key:o},[F("div",$y,K(a.task),1),a.count==1?(P(),O("div",jy,K(a.state),1)):a.count==2?(P(),O("div",qy,K(a.state),1)):a.count==3?(P(),O("div",Ky,K(a.state),1)):(P(),O("div",Xy,K(a.state),1)),F("div",Yy,K(a.name),1),F("div",Jy,K(a.num),1),F("div",Qy,K(a.principal),1),F("div",Zy,K(a.mileage),1)],2))),128))]),_:1},8,["list"])])])]))}},tw=Re(ew,[["__scopeId","data-v-8b5728f5"]]);const nw={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O("div",{class:Ze(["mian_left",[Z(t).GisShowArr[2]===1?"start_animation":"",Z(t).GisShowArr[2]===2?"end_animation":""]])},[ce(Fy),ce(Ly),ce(tw)],2))}},rw=Re(nw,[["__scopeId","data-v-5aa67a21"]]);const Fl=r=>(At("data-v-b4f307d3"),r=r(),St(),r),aw={class:"bottom_box"},ow=We('<div class="water_top_box_view" data-v-b4f307d3><div class="water_top_box_view_left" data-v-b4f307d3><img src="'+He+'" class="water_top_box_view_drop" data-v-b4f307d3><div class="water_top_box_view_text" data-v-b4f307d3><div class="water_top_box_view_center" data-v-b4f307d3>分区/分组查询</div></div></div></div>',1),iw={class:"charge_bottom_box_bottom"},sw={class:"search_box"},uw=Fl(()=>F("img",{src:qa},null,-1)),cw={class:"list_box"},lw={class:"one_box"},dw={key:0,class:"one_box_img",src:Sn},hw=["onClick"],fw=["onClick"],pw={class:"one_box_title"},vw={class:"one_box_name"},mw=Fl(()=>F("img",{class:"one_box_img",src:Sn},null,-1)),gw={class:"one_box_title"},_w={class:"one_box_name"},xw={__name:"patrolRight-top",setup(r){let t=we([{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!0,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]}]);const e=a=>{t.value[a].flag=!0},n=a=>{t.value[a].flag=!1};return(a,o)=>(P(),O("div",aw,[ow,F("div",iw,[F("div",sw,[uw,Mr(F("input",{class:"search_box_input",type:"text",placeholder:"请输入内容","onUpdate:modelValue":o[0]||(o[0]=i=>a.values=i)},null,512),[[Pr,a.values]])]),F("div",cw,[(P(!0),O(De,null,Ue(Z(t),(i,s)=>(P(),O("div",{class:"list_box_view",key:s},[F("div",lw,[i.child.length==0?(P(),O("img",dw)):i.child.length>0&&i.flag?(P(),O("img",{key:1,class:"one_box_img",src:Ka,onClick:u=>n(s)},null,8,hw)):!i.flag&&i.child.length>0?(P(),O("img",{key:2,class:"one_box_img",src:Xa,onClick:u=>e(s)},null,8,fw)):Te("",!0),F("div",pw,K(i.title),1),F("div",vw,K(i.text),1)]),i.child.length>0&&i.flag?(P(!0),O(De,{key:0},Ue(i.child,(u,c)=>(P(),O("div",{class:"two_box",key:c},[mw,F("div",gw,K(u.title),1),F("div",_w,K(u.text),1)]))),128)):Te("",!0)]))),128))])])]))}},bw=Re(xw,[["__scopeId","data-v-b4f307d3"]]);const yw={class:"bottom_box"},ww=We('<div class="water_top_box_view" data-v-62b55fb9><div class="water_top_box_view_left" data-v-62b55fb9><img src="'+He+'" class="water_top_box_view_drop" data-v-62b55fb9><div class="water_top_box_view_text" data-v-62b55fb9><div class="water_top_box_view_center" data-v-62b55fb9>实时动态</div></div></div></div>',1),Cw={class:"charge_bottom_box_bottom"},Ew={class:"scroll_box"},Rw={class:"table_title_time"},kw={key:0,class:"table_tb_two_text_red"},Iw={key:1,class:"table_tb_two_text_blue"},Sw={key:2,class:"table_tb_two_text_green"},Aw={key:3,class:"table_tb_two_text_orange"},Dw={key:4,class:"table_tb_two_text_blue"},Tw={class:"table_title_view"},Nw={__name:"patrolRight-bottom",setup(r){let t=we([{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:1},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:4},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:1},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3}]);return(e,n)=>(P(),O("div",yw,[ww,F("div",Cw,[F("div",Ew,[ce(Z(In),{list:Z(t),class:"scroll",hover:!0,wheel:!0,step:.5},{default:sn(()=>[(P(!0),O(De,null,Ue(Z(t),(a,o)=>(P(),O("div",{class:"table_title",key:o},[F("div",Rw,K(a.title),1),a.value==1?(P(),O("div",kw,K(a.bennum),1)):a.value==2?(P(),O("div",Iw,K(a.bennum),1)):a.value==3?(P(),O("div",Sw,K(a.bennum),1)):a.value==4?(P(),O("div",Aw,K(a.bennum),1)):(P(),O("div",Dw,K(a.bennum),1)),F("div",Tw,K(a.shangnum),1)]))),128))]),_:1},8,["list"])])])]))}},Fw=Re(Nw,[["__scopeId","data-v-62b55fb9"]]);const Pw={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O("div",{class:Ze(["main_cabin_right",[Z(t).GisShowArr[2]===1?"start_animation1":"",Z(t).GisShowArr[2]===2?"end_animation1":""]])},[ce(bw),ce(Fw)],2))}},Mw=Re(Pw,[["__scopeId","data-v-0b50882d"]]),Ow={__name:"index",setup(r){return(t,e)=>(P(),O(De,null,[ce(rw),ce(Mw)],64))}};const Bw={class:"water_top_box"},Lw=We('<div class="half_title" data-v-1bf41949><img src="'+He+'" class="half_title_drop" data-v-1bf41949><div class="half_title_text" data-v-1bf41949><div class="half_title_text_center" data-v-1bf41949>维护信息</div></div></div><div class="water_top_box_main" data-v-1bf41949><div class="over_box" data-v-1bf41949><div class="over_box_view over_box_view_img1" data-v-1bf41949><div class="over_box_view_text" data-v-1bf41949><div class="over_box_view_text_title" data-v-1bf41949>待维护里程</div><div class="over_box_view_text_blue" data-v-1bf41949><text data-v-1bf41949>15,123</text>公里</div></div></div><div class="over_box_view over_box_view_img2" data-v-1bf41949><div class="over_box_view_text" data-v-1bf41949><div class="over_box_view_text_title" data-v-1bf41949>已维护里程</div><div class="over_box_view_text_blue" data-v-1bf41949><text data-v-1bf41949>15,123</text>公里</div></div></div><div class="over_box_view over_box_view_img3" data-v-1bf41949><div class="over_box_view_text" data-v-1bf41949><div class="over_box_view_text_title" data-v-1bf41949>维护完成度</div><div class="over_box_view_text_blue" data-v-1bf41949><text data-v-1bf41949>15,123</text>%</div></div></div><div class="over_box_view over_box_view_img4" data-v-1bf41949><div class="over_box_view_text" data-v-1bf41949><div class="over_box_view_text_title" data-v-1bf41949>出勤人数</div><div class="over_box_view_text_green" data-v-1bf41949><text data-v-1bf41949>15,123</text>人</div></div></div><div class="over_box_view over_box_view_img5" data-v-1bf41949><div class="over_box_view_text" data-v-1bf41949><div class="over_box_view_text_title" data-v-1bf41949>待维护任务数</div><div class="over_box_view_text_green" data-v-1bf41949><text data-v-1bf41949>15,123</text>个</div></div></div><div class="over_box_view over_box_view_img6" data-v-1bf41949><div class="over_box_view_text" data-v-1bf41949><div class="over_box_view_text_title" data-v-1bf41949>任务平均人数</div><div class="over_box_view_text_green" data-v-1bf41949><text data-v-1bf41949>15,123</text>次/人</div></div></div></div></div>',2),Ww=[Lw],Vw={__name:"maintain-top",setup(r){return(t,e)=>(P(),O("div",Bw,Ww))}},zw=Re(Vw,[["__scopeId","data-v-1bf41949"]]);const Uw={class:"charge_center_box"},Gw=We('<div class="half_title" data-v-29717a26><img src="'+He+'" class="half_title_drop" data-v-29717a26><div class="half_title_text" data-v-29717a26><div class="half_title_text_center" data-v-29717a26>维护信息总览</div></div></div><div class="charge_center_box_main" data-v-29717a26><div class="maintain_box maintain_box_img1" data-v-29717a26><div class="maintain_box_view" data-v-29717a26><div class="maintain_box_view_title" data-v-29717a26>维护总里程</div><div class="maintain_box_view_num" data-v-29717a26><text data-v-29717a26>15,123</text>公里</div></div></div><div class="maintain_box maintain_box_img2" data-v-29717a26><div class="maintain_box_view" data-v-29717a26><div class="maintain_box_view_title" data-v-29717a26>完成维护任务总数</div><div class="maintain_box_view_num" data-v-29717a26><text data-v-29717a26>15,123</text>个</div></div></div><div class="maintain_box maintain_box_img3" data-v-29717a26><div class="maintain_box_view" data-v-29717a26><div class="maintain_box_view_title" data-v-29717a26>任务平均人数</div><div class="maintain_box_view_num" data-v-29717a26><text data-v-29717a26>15,123</text>次/人</div></div></div></div>',2),Hw=[Gw],$w={__name:"maintain-center",setup(r){return(t,e)=>(P(),O("div",Uw,Hw))}},jw=Re($w,[["__scopeId","data-v-29717a26"]]);const qw=r=>(At("data-v-1ecb24fa"),r=r(),St(),r),Kw={class:"bottom_box"},Xw=qw(()=>F("div",{class:"half_title"},[F("img",{src:He,class:"half_title_drop"}),F("div",{class:"half_title_text"},[F("div",{class:"half_title_text_center"},"维护任务班组实时信息")])],-1)),Yw={class:"charge_bottom_box_bottom"},Jw=We('<div class="rushRepair_box_title" data-v-1ecb24fa><div class="rushRepair_box_title_task rushRepair_box_title_div" data-v-1ecb24fa>维护路线</div><div class="rushRepair_box_title_state rushRepair_box_title_div" data-v-1ecb24fa>状态</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-1ecb24fa>班组名称</div><div class="rushRepair_box_title_state rushRepair_box_title_div" data-v-1ecb24fa>人数</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-1ecb24fa>负责人</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-1ecb24fa>里程数(公里)</div></div>',1),Qw={class:"scroll_box"},Zw={class:"rushRepair_box_title_task"},e2={key:0,class:"rushRepair_box_title_state green_text"},t2={key:1,class:"rushRepair_box_title_state orange_text"},n2={key:2,class:"rushRepair_box_title_state blue_text"},r2={key:3,class:"rushRepair_box_title_state"},a2={class:"rushRepair_box_title_name"},o2={class:"rushRepair_box_title_state"},i2={class:"rushRepair_box_title_name"},s2={class:"rushRepair_box_title_name"},u2={__name:"maintain-bottom",setup(r){let t=we([{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"待处理",count:2,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"已完成",count:3,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"}]);return(e,n)=>(P(),O("div",Kw,[Xw,F("div",Yw,[Jw,F("div",Qw,[ce(Z(In),{list:Z(t),class:"scroll",hover:!0,wheel:!0,step:.5},{default:sn(()=>[(P(!0),O(De,null,Ue(Z(t),(a,o)=>(P(),O("div",{class:Ze((o+1)%2==0?"table_tb_two":"table_tb_one"),key:o},[F("div",Zw,K(a.task),1),a.count==1?(P(),O("div",e2,K(a.state),1)):a.count==2?(P(),O("div",t2,K(a.state),1)):a.count==3?(P(),O("div",n2,K(a.state),1)):(P(),O("div",r2,K(a.state),1)),F("div",a2,K(a.name),1),F("div",o2,K(a.num),1),F("div",i2,K(a.principal),1),F("div",s2,K(a.mileage),1)],2))),128))]),_:1},8,["list"])])])]))}},c2=Re(u2,[["__scopeId","data-v-1ecb24fa"]]);const l2={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O("div",{class:Ze(["mian_left",[Z(t).GisShowArr[3]===1?"start_animation":"",Z(t).GisShowArr[3]===2?"end_animation":""]])},[ce(zw),ce(jw),ce(c2)],2))}},d2=Re(l2,[["__scopeId","data-v-26cb4ff0"]]);const Pl=r=>(At("data-v-51ac5cf9"),r=r(),St(),r),h2={class:"bottom_box"},f2=We('<div class="water_top_box_view" data-v-51ac5cf9><div class="water_top_box_view_left" data-v-51ac5cf9><img src="'+He+'" class="water_top_box_view_drop" data-v-51ac5cf9><div class="water_top_box_view_text" data-v-51ac5cf9><div class="water_top_box_view_center" data-v-51ac5cf9>分区/分组查询</div></div></div></div>',1),p2={class:"charge_bottom_box_bottom"},v2={class:"search_box"},m2=Pl(()=>F("img",{src:qa},null,-1)),g2={class:"list_box"},_2={class:"one_box"},x2={key:0,class:"one_box_img",src:Sn},b2=["onClick"],y2=["onClick"],w2={class:"one_box_title"},C2={class:"one_box_name"},E2=Pl(()=>F("img",{class:"one_box_img",src:Sn},null,-1)),R2={class:"one_box_title"},k2={class:"one_box_name"},I2={__name:"maintainRight-top",setup(r){let t=we([{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!0,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]}]);const e=a=>{t.value[a].flag=!0},n=a=>{t.value[a].flag=!1};return(a,o)=>(P(),O("div",h2,[f2,F("div",p2,[F("div",v2,[m2,Mr(F("input",{class:"search_box_input",type:"text",placeholder:"请输入内容","onUpdate:modelValue":o[0]||(o[0]=i=>a.values=i)},null,512),[[Pr,a.values]])]),F("div",g2,[(P(!0),O(De,null,Ue(Z(t),(i,s)=>(P(),O("div",{class:"list_box_view",key:s},[F("div",_2,[i.child.length==0?(P(),O("img",x2)):i.child.length>0&&i.flag?(P(),O("img",{key:1,class:"one_box_img",src:Ka,onClick:u=>n(s)},null,8,b2)):!i.flag&&i.child.length>0?(P(),O("img",{key:2,class:"one_box_img",src:Xa,onClick:u=>e(s)},null,8,y2)):Te("",!0),F("div",w2,K(i.title),1),F("div",C2,K(i.text),1)]),i.child.length>0&&i.flag?(P(!0),O(De,{key:0},Ue(i.child,(u,c)=>(P(),O("div",{class:"two_box",key:c},[E2,F("div",R2,K(u.title),1),F("div",k2,K(u.text),1)]))),128)):Te("",!0)]))),128))])])]))}},S2=Re(I2,[["__scopeId","data-v-51ac5cf9"]]);const A2={class:"bottom_box"},D2=We('<div class="water_top_box_view" data-v-29e19d3e><div class="water_top_box_view_left" data-v-29e19d3e><img src="'+He+'" class="water_top_box_view_drop" data-v-29e19d3e><div class="water_top_box_view_text" data-v-29e19d3e><div class="water_top_box_view_center" data-v-29e19d3e>实时动态</div></div></div></div>',1),T2={class:"charge_bottom_box_bottom"},N2={class:"scroll_box"},F2={class:"table_title_time"},P2={key:0,class:"table_tb_two_text_red"},M2={key:1,class:"table_tb_two_text_blue"},O2={key:2,class:"table_tb_two_text_green"},B2={key:3,class:"table_tb_two_text_orange"},L2={key:4,class:"table_tb_two_text_blue"},W2={class:"table_title_view"},V2={__name:"maintainRight-bottom",setup(r){let t=we([{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:1},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:4},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:1},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3}]);return(e,n)=>(P(),O("div",A2,[D2,F("div",T2,[F("div",N2,[ce(Z(In),{list:Z(t),class:"scroll",hover:!0,wheel:!0,step:.5},{default:sn(()=>[(P(!0),O(De,null,Ue(Z(t),(a,o)=>(P(),O("div",{class:"table_title",key:o},[F("div",F2,K(a.title),1),a.value==1?(P(),O("div",P2,K(a.bennum),1)):a.value==2?(P(),O("div",M2,K(a.bennum),1)):a.value==3?(P(),O("div",O2,K(a.bennum),1)):a.value==4?(P(),O("div",B2,K(a.bennum),1)):(P(),O("div",L2,K(a.bennum),1)),F("div",W2,K(a.shangnum),1)]))),128))]),_:1},8,["list"])])])]))}},z2=Re(V2,[["__scopeId","data-v-29e19d3e"]]);const U2={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O("div",{class:Ze(["main_cabin_right",[Z(t).GisShowArr[3]===1?"start_animation1":"",Z(t).GisShowArr[3]===2?"end_animation1":""]])},[ce(S2),ce(z2)],2))}},G2=Re(U2,[["__scopeId","data-v-d7db512d"]]),H2={__name:"index",setup(r){return(t,e)=>(P(),O(De,null,[ce(d2),ce(G2)],64))}};const $2={class:"water_top_box"},j2=We('<div class="half_title" data-v-e07fdb44><img src="'+He+'" class="half_title_drop" data-v-e07fdb44><div class="half_title_text" data-v-e07fdb44><div class="half_title_text_center" data-v-e07fdb44>管网信息总览</div></div></div><div class="water_top_box_main" data-v-e07fdb44><div class="over_box" data-v-e07fdb44><div class="over_box_view over_box_view_img1" data-v-e07fdb44><div class="over_box_view_text" data-v-e07fdb44><div class="over_box_view_text_title" data-v-e07fdb44>管线总里程</div><div class="over_box_view_text_blue" data-v-e07fdb44><text data-v-e07fdb44>15,123</text>公里</div></div></div><div class="over_box_view over_box_view_img2" data-v-e07fdb44><div class="over_box_view_text" data-v-e07fdb44><div class="over_box_view_text_title" data-v-e07fdb44>管点总数</div><div class="over_box_view_text_blue" data-v-e07fdb44><text data-v-e07fdb44>14,165</text>个</div></div></div><div class="over_box_view over_box_view_img3" data-v-e07fdb44><div class="over_box_view_text" data-v-e07fdb44><div class="over_box_view_text_title" data-v-e07fdb44>管段总数</div><div class="over_box_view_text_blue" data-v-e07fdb44><text data-v-e07fdb44>18,771</text>段</div></div></div><div class="over_box_view over_box_view_img4" data-v-e07fdb44><div class="over_box_view_text" data-v-e07fdb44><div class="over_box_view_text_title" data-v-e07fdb44>管网总长</div><div class="over_box_view_text_green" data-v-e07fdb44><text data-v-e07fdb44>170,273</text>公里</div></div></div><div class="over_box_view over_box_view_img5" data-v-e07fdb44><div class="over_box_view_text" data-v-e07fdb44><div class="over_box_view_text_title" data-v-e07fdb44>巡查轨迹总里程</div><div class="over_box_view_text_green" data-v-e07fdb44><text data-v-e07fdb44>158,985</text>公里</div></div></div><div class="over_box_view over_box_view_img6" data-v-e07fdb44><div class="over_box_view_text" data-v-e07fdb44><div class="over_box_view_text_title" data-v-e07fdb44>处置任务总数</div><div class="over_box_view_text_green" data-v-e07fdb44><text data-v-e07fdb44>10,110</text>个</div></div></div></div></div>',2),q2=[j2],K2={__name:"report-top",setup(r){return(t,e)=>(P(),O("div",$2,q2))}},X2=Re(K2,[["__scopeId","data-v-e07fdb44"]]);const Y2={class:"charge_center_box"},J2=We('<div class="half_title" data-v-c56e7a6c><img src="'+He+'" class="half_title_drop" data-v-c56e7a6c><div class="half_title_text" data-v-c56e7a6c><div class="half_title_text_center" data-v-c56e7a6c>上报统计</div></div></div><div class="charge_center_box_main" data-v-c56e7a6c><div class="maintain_box maintain_box_img1" data-v-c56e7a6c><div class="maintain_box_view" data-v-c56e7a6c><div class="maintain_box_view_title" data-v-c56e7a6c>处理上报总数</div><div class="maintain_box_view_num" data-v-c56e7a6c><text data-v-c56e7a6c>15,123</text>公里</div></div></div><div class="maintain_box maintain_box_img2" data-v-c56e7a6c><div class="maintain_box_view" data-v-c56e7a6c><div class="maintain_box_view_title" data-v-c56e7a6c>发现上报数</div><div class="maintain_box_view_num" data-v-c56e7a6c><text data-v-c56e7a6c>15,123</text>个</div></div></div><div class="maintain_box maintain_box_img3" data-v-c56e7a6c><div class="maintain_box_view" data-v-c56e7a6c><div class="maintain_box_view_title" data-v-c56e7a6c>上报人均数</div><div class="maintain_box_view_num" data-v-c56e7a6c><text data-v-c56e7a6c>15,123</text>次/人</div></div></div></div>',2),Q2=[J2],Z2={__name:"report-center",setup(r){return(t,e)=>(P(),O("div",Y2,Q2))}},eC=Re(Z2,[["__scopeId","data-v-c56e7a6c"]]);const tC=r=>(At("data-v-2d1eccaf"),r=r(),St(),r),nC={class:"bottom_box"},rC=tC(()=>F("div",{class:"half_title"},[F("img",{src:He,class:"half_title_drop"}),F("div",{class:"half_title_text"},[F("div",{class:"half_title_text_center"},"上报信息")])],-1)),aC={class:"charge_bottom_box_bottom"},oC=We('<div class="rushRepair_box_title" data-v-2d1eccaf><div class="rushRepair_box_title_task rushRepair_box_title_div" data-v-2d1eccaf>设备编号</div><div class="rushRepair_box_title_state rushRepair_box_title_div" data-v-2d1eccaf>状态</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-2d1eccaf>班组名称</div><div class="rushRepair_box_title_state rushRepair_box_title_div" data-v-2d1eccaf>人数</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-2d1eccaf>负责人</div><div class="rushRepair_box_title_name rushRepair_box_title_div" data-v-2d1eccaf>里程数(公里)</div></div>',1),iC={class:"scroll_box"},sC={class:"rushRepair_box_title_task"},uC={key:0,class:"rushRepair_box_title_state green_text"},cC={key:1,class:"rushRepair_box_title_state orange_text"},lC={key:2,class:"rushRepair_box_title_state blue_text"},dC={key:3,class:"rushRepair_box_title_state"},hC={class:"rushRepair_box_title_name"},fC={class:"rushRepair_box_title_state"},pC={class:"rushRepair_box_title_name"},vC={class:"rushRepair_box_title_name"},mC={__name:"report-bottom",setup(r){let t=we([{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"待处理",count:2,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"已完成",count:3,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"},{task:"DH001 爆管处理",state:"处理中",count:1,name:"A组",num:"1",principal:"腾亿互联",mileage:"30.12"}]);return(e,n)=>(P(),O("div",nC,[rC,F("div",aC,[oC,F("div",iC,[ce(Z(In),{list:Z(t),class:"scroll",hover:!0,wheel:!0,step:.5},{default:sn(()=>[(P(!0),O(De,null,Ue(Z(t),(a,o)=>(P(),O("div",{class:Ze((o+1)%2==0?"table_tb_two":"table_tb_one"),key:o},[F("div",sC,K(a.task),1),a.count==1?(P(),O("div",uC,K(a.state),1)):a.count==2?(P(),O("div",cC,K(a.state),1)):a.count==3?(P(),O("div",lC,K(a.state),1)):(P(),O("div",dC,K(a.state),1)),F("div",hC,K(a.name),1),F("div",fC,K(a.num),1),F("div",pC,K(a.principal),1),F("div",vC,K(a.mileage),1)],2))),128))]),_:1},8,["list"])])])]))}},gC=Re(mC,[["__scopeId","data-v-2d1eccaf"]]);const _C={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O("div",{class:Ze(["mian_left",[Z(t).GisShowArr[4]===1?"start_animation":"",Z(t).GisShowArr[4]===2?"end_animation":""]])},[ce(X2),ce(eC),ce(gC)],2))}},xC=Re(_C,[["__scopeId","data-v-7a465121"]]);const Ml=r=>(At("data-v-3ba3d590"),r=r(),St(),r),bC={class:"bottom_box"},yC=We('<div class="water_top_box_view" data-v-3ba3d590><div class="water_top_box_view_left" data-v-3ba3d590><img src="'+He+'" class="water_top_box_view_drop" data-v-3ba3d590><div class="water_top_box_view_text" data-v-3ba3d590><div class="water_top_box_view_center" data-v-3ba3d590>分区/分组查询</div></div></div></div>',1),wC={class:"charge_bottom_box_bottom"},CC={class:"search_box"},EC=Ml(()=>F("img",{src:qa},null,-1)),RC={class:"list_box"},kC={class:"one_box"},IC={key:0,class:"one_box_img",src:Sn},SC=["onClick"],AC=["onClick"],DC={class:"one_box_title"},TC={class:"one_box_name"},NC=Ml(()=>F("img",{class:"one_box_img",src:Sn},null,-1)),FC={class:"one_box_title"},PC={class:"one_box_name"},MC={__name:"reportRight-top",setup(r){let t=we([{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!0,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]},{title:"xxx乡片区",text:"(里程:35公里,管段数:268,管点数:134)",flag:!1,child:[{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"},{title:"xxx村片区",text:"(里程:35公里,管段数:268,管点数:134)"}]}]);const e=a=>{t.value[a].flag=!0},n=a=>{t.value[a].flag=!1};return(a,o)=>(P(),O("div",bC,[yC,F("div",wC,[F("div",CC,[EC,Mr(F("input",{class:"search_box_input",type:"text",placeholder:"请输入内容","onUpdate:modelValue":o[0]||(o[0]=i=>a.values=i)},null,512),[[Pr,a.values]])]),F("div",RC,[(P(!0),O(De,null,Ue(Z(t),(i,s)=>(P(),O("div",{class:"list_box_view",key:s},[F("div",kC,[i.child.length==0?(P(),O("img",IC)):i.child.length>0&&i.flag?(P(),O("img",{key:1,class:"one_box_img",src:Ka,onClick:u=>n(s)},null,8,SC)):!i.flag&&i.child.length>0?(P(),O("img",{key:2,class:"one_box_img",src:Xa,onClick:u=>e(s)},null,8,AC)):Te("",!0),F("div",DC,K(i.title),1),F("div",TC,K(i.text),1)]),i.child.length>0&&i.flag?(P(!0),O(De,{key:0},Ue(i.child,(u,c)=>(P(),O("div",{class:"two_box",key:c},[NC,F("div",FC,K(u.title),1),F("div",PC,K(u.text),1)]))),128)):Te("",!0)]))),128))])])]))}},OC=Re(MC,[["__scopeId","data-v-3ba3d590"]]);const BC={class:"bottom_box"},LC=We('<div class="water_top_box_view" data-v-075fb222><div class="water_top_box_view_left" data-v-075fb222><img src="'+He+'" class="water_top_box_view_drop" data-v-075fb222><div class="water_top_box_view_text" data-v-075fb222><div class="water_top_box_view_center" data-v-075fb222>实时动态</div></div></div></div>',1),WC={class:"charge_bottom_box_bottom"},VC={class:"scroll_box"},zC={class:"table_title_time"},UC={key:0,class:"table_tb_two_text_red"},GC={key:1,class:"table_tb_two_text_blue"},HC={key:2,class:"table_tb_two_text_green"},$C={key:3,class:"table_tb_two_text_orange"},jC={key:4,class:"table_tb_two_text_blue"},qC={class:"table_title_view"},KC={__name:"reportRight-bottom",setup(r){let t=we([{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:1},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:4},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"故障报错",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:2},{title:"16:00",bennum:"红色预警",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:1},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3},{title:"16:00",bennum:"维修任务",shangnum:"灵台方寸山斜月三星洞路口左转发生交通事故",value:3}]);return(e,n)=>(P(),O("div",BC,[LC,F("div",WC,[F("div",VC,[ce(Z(In),{list:Z(t),class:"scroll",hover:!0,wheel:!0,step:.5},{default:sn(()=>[(P(!0),O(De,null,Ue(Z(t),(a,o)=>(P(),O("div",{class:"table_title",key:o},[F("div",zC,K(a.title),1),a.value==1?(P(),O("div",UC,K(a.bennum),1)):a.value==2?(P(),O("div",GC,K(a.bennum),1)):a.value==3?(P(),O("div",HC,K(a.bennum),1)):a.value==4?(P(),O("div",$C,K(a.bennum),1)):(P(),O("div",jC,K(a.bennum),1)),F("div",qC,K(a.shangnum),1)]))),128))]),_:1},8,["list"])])])]))}},XC=Re(KC,[["__scopeId","data-v-075fb222"]]);const YC={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O("div",{class:Ze(["main_cabin_right",[Z(t).GisShowArr[4]===1?"start_animation1":"",Z(t).GisShowArr[4]===2?"end_animation1":""]])},[ce(OC),ce(XC)],2))}},JC=Re(YC,[["__scopeId","data-v-02dcdb31"]]),QC={__name:"index",setup(r){return(t,e)=>(P(),O(De,null,[ce(xC),ce(JC)],64))}};const ZC={__name:"index",setup(r){const t=lt();return(e,n)=>(P(),O(De,null,[Z(t).GisShowIndex===0?(P(),ht(m1,{key:0})):Te("",!0),Z(t).GisShowIndex===1?(P(),ht(Sy,{key:1})):Te("",!0),Z(t).GisShowIndex===2?(P(),ht(Ow,{key:2})):Te("",!0),Z(t).GisShowIndex===3?(P(),ht(H2,{key:3})):Te("",!0),Z(t).GisShowIndex===4?(P(),ht(QC,{key:4})):Te("",!0)],64))}};const eE={class:"directory_box_view"},tE=["onClick"],nE={__name:"index",setup(r){const t=lt();let e=we(["水库信息","库区巡检","视频监控"]),n=we(0),a=null;const o=i=>{if(a!==null){console.log("点击太快了");return}n.value=i,t.setActiveTab(i+1),a=setTimeout(()=>{a=null},1600)};return(i,s)=>(P(),O("div",{class:Ze(["directory_box",[Z(t).directoryShow===1?"start_animation":"",Z(t).directoryShow===2?"end_animation":""]])},[F("div",eE,[(P(!0),O(De,null,Ue(Z(e),(u,c)=>(P(),O("div",{class:Ze(Z(n)==c?"main_cabin_highlight":"main_cabin"),onClick:l=>o(c),key:c},[F("span",null,K(u),1)],10,tE))),128))])],2))}},rE=Re(nE,[["__scopeId","data-v-8a67962d"]]);const aE={class:"water_top_box"},oE=We('<div class="half_title" data-v-00bbd6c2><div class="half_title_text" data-v-00bbd6c2><div class="half_title_text_center" data-v-00bbd6c2>设备信息</div></div></div><div class="water_top_box_main flex flex-align-center padding" data-v-00bbd6c2><div class="chart_box" data-v-00bbd6c2><div class="water_echarts" id="equipmentChart" data-v-00bbd6c2></div></div><div data-v-00bbd6c2><div class="eqBox online" data-v-00bbd6c2><div data-v-00bbd6c2><span data-v-00bbd6c2>15</span>台</div> 在线设备 </div><div class="eqBox offline" data-v-00bbd6c2><div data-v-00bbd6c2><span data-v-00bbd6c2>3</span>台</div> 离线设备 </div></div></div>',2),iE=[oE],sE={__name:"costStatistics-top",setup(r){let t=Ao(null),e=Ao({grid:{x:40,y:40,x2:20,y2:40},series:[{name:"设备情况",type:"pie",radius:["50%","10%"],avoidLabelOverlap:!1,color:["#08C29D","#F85D51"],label:{show:!0,position:"outside",color:"#fff",borderWidth:0,formatter:function(a){return`${a.name}
${a.percent}%`}},labelLine:{show:!0,length:50,length2:30,smooth:!1,lineStyle:{color:"white",width:2}},data:[{value:15,name:"在线设备"},{value:3,name:"离线设备"}]}]});Fr(()=>{setTimeout(()=>n(),1e3)}),fu(()=>{t.dispose()});const n=()=>{t=af(document.getElementById("equipmentChart")),t.setOption(e)};return(a,o)=>(P(),O("div",aE,iE))}},uE=Re(sE,[["__scopeId","data-v-00bbd6c2"]]),cE="/screen/images/ydhsk/screenFull.png",lE="/screen/images/ydhsk/maximize-4.png";const gr=r=>(At("data-v-48886015"),r=r(),St(),r),dE={class:"water_top_box"},hE=gr(()=>F("div",{class:"half_title"},[F("div",{class:"half_title_text"},[F("div",{class:"half_title_text_center"},"视频监控")])],-1)),fE={class:"water_top_box_main flex flex-align-center padding"},pE={class:"xj_box"},vE={class:"xj-list full-width flex flex-wrap padding flex-justify-between flex-content-start"},mE={class:"ctrlBox"},gE=["onClick"],_E={class:"imgBox full-width flex flex-justify-center flex-align-center"},xE=["id"],bE={class:"dateBox full-width flex flex-justify-between flex-align-center"},yE={class:"date"},wE={class:"time"},CE=gr(()=>F("img",{src:Zo,style:{position:"absolute",left:"0",top:"0",width:"6px",height:"6px"},alt:""},null,-1)),EE=gr(()=>F("img",{src:ei,style:{position:"absolute",left:"0",bottom:"0",width:"6px",height:"6px"},alt:""},null,-1)),RE=gr(()=>F("img",{src:ti,style:{position:"absolute",right:"0",top:"0",width:"6px",height:"6px"},alt:""},null,-1)),kE=gr(()=>F("img",{src:ni,style:{position:"absolute",right:"0",bottom:"0",width:"6px",height:"6px"},alt:""},null,-1)),IE={key:0,class:"popups flex flex-align-center flex-justify-center"},SE={class:"popup_box"},AE={class:"titltBox flex flex-justify-between flex-align-center"},DE={class:"name"},TE=gr(()=>F("div",{id:"players",style:{height:"100%"}},null,-1)),NE={__name:"district-center",setup(r){const t=lt(),e=we([{url:"ezopen://open.ys7.com/AC2761379/1.live",date:"2023-12-12",name:"水库东南区"},{url:"ezopen://open.ys7.com/AC2761367/1.live",date:"2023-12-12",name:"水库东南区"},{url:"ezopen://open.ys7.com/AC2761380/1.live",date:"2023-12-12",name:"水库东南区"},{url:"ezopen://open.ys7.com/AC2761381/1.live",date:"2023-12-12",name:"水库东南区"}]);we([{name:"1号监控",type:1,typeText:"预警",url:"ezopen://open.ys7.com/AC2761379/1.live"},{name:"2号监控",type:1,typeText:"预警",url:"ezopen://open.ys7.com/AC2761367/1.live"},{name:"3号监控",type:1,typeText:"预警",url:"ezopen://open.ys7.com/AC2761380/1.live"},{name:"4号监控",type:1,typeText:"预警",url:"ezopen://open.ys7.com/AC2761381/1.live"}]);let n=we([]),a=we([]),o=we([]),i=we(!1),s=we({}),u=we(null);we(!0),Fr(()=>{l()}),tr(()=>t.activeTab,h=>{h!=2&&(n.value.length!=0&&n.value.map(f=>{f.player.stop()}),a.value.length!=0&&a.value.map(f=>{f.player.stop()}),o.value.length!=0&&o.value.map(f=>{f.player.stop()}))});const c=(h,f)=>{console.log(h),s.value=h,i.value=!0,setTimeout(()=>{u.value==null?u.value=new EZUIKit.EZUIKitPlayer({id:"players",accessToken:"at.9sko59g72dlr24pdac2mfb9bav1ztgds-73ti85wlby-0mi26g2-ng26otiwf",url:h.url,audio:1}):u.value.play(h.url)},1e3)},l=()=>{e.value.map((h,f)=>{let p=new EZUIKit.EZUIKitPlayer({id:"play"+f,accessToken:"at.9sko59g72dlr24pdac2mfb9bav1ztgds-73ti85wlby-0mi26g2-ng26otiwf",url:h.url,audio:0});n.value=[...n.value,{player:p}]})},d=()=>{i.value=!1,u.value.stop(),u.value=null,t.setVideoUrl("")};return tr(()=>t.videoUrl,h=>{console.log(h),h&&c({url:h})}),(h,f)=>(P(),O(De,null,[F("div",dE,[hE,F("div",fE,[F("div",pE,[F("div",vE,[(P(!0),O(De,null,Ue(e.value,(p,v)=>(P(),O("div",{class:"relative xj-list-item padding",key:v},[F("div",mE,[F("img",{src:cE,class:"monitoring_view_top_img",onClick:m=>c(p)},null,8,gE)]),F("div",_E,[F("div",{class:"videoBox",id:"play"+v},null,8,xE)]),F("div",bE,[F("div",yE,K(p.name),1),F("div",wE,K(p.date),1)]),CE,EE,RE,kE]))),128))])])])]),Z(i)?(P(),O("div",IE,[F("div",SE,[F("div",AE,[F("div",DE,K(Z(s).name),1),F("div",{class:"img"},[F("img",{src:lE,alt:"",onClick:d})])]),TE])])):Te("",!0)],64))}},FE=Re(NE,[["__scopeId","data-v-48886015"]]);const PE={__name:"index",emits:["select2"],setup(r,{emit:t}){const e=lt();return(n,a)=>(P(),O("div",{class:Ze(["main_cabin_right",[Z(e).CostCabin===1?"start_animation":"",Z(e).CostCabin===2?"end_animation":""]])},[ce(uE),ce(FE)],2))}},ME=Re(PE,[["__scopeId","data-v-95968c7a"]]),OE={__name:"index",emits:["select2"],setup(r,{emit:t}){function e(n){t("select2",n)}return(n,a)=>(P(),ht(ME,{onSelect2:e}))}};const BE=["onClick"],LE=["onClick"],WE=["onClick"],VE=["onClick"],zE={__name:"index",setup(r){const t=we(),e=lt(),n=we(!1);Fr(async()=>{setTimeout(()=>{s()},1500)});function a(f){f=="3D"||f=="Lx"?t.value.changePipeLine():f=="reset"?t.value.flyToSzReset():t.value.flyToSz(f)}function o(f){f.status=="ll"?t.value.addFy(f.isAction.value):t.value.addFy2(f.isAction.value)}const i=async()=>{await e.setIsLogin(!1),setTimeout(async()=>{await e.setLoginShow(1)},500)},s=async()=>{await e.setIsLogin(!0),await e.setLoginShow(2),await e.setActiveTab(1),await e.setBottomTabShow(1)},u=async()=>{await e.setFlyFunc()},c=async()=>{await e.setFlyPauseFunc()},l=async()=>{await e.setFlyResumeFunc()},d=async()=>{await e.setFlyStopFunc()},h=async f=>{await e.setFlyCameraFunc(f)};return(f,p)=>{const v=pu("Prompt");return P(),O(De,null,[(P(),ht(uu,null,[ce(of,{ref_key:"earthInstance",ref:t},null,512)],1024)),n.value?(P(),O("button",{key:0,onClick:i,class:"test"},"退出测试")):Te("",!0),n.value?(P(),O("button",{key:1,onClick:s,class:"test test2"},"登入测试")):Te("",!0),n.value&&Z(e).flyStatus==="1"?(P(),O("button",{key:2,onClick:Dn(u,["stop"]),class:"test test3"},"飞行模拟",8,BE)):Te("",!0),n.value&&Z(e).flyStatus==="2"?(P(),O("button",{key:3,onClick:Dn(c,["stop"]),class:"test test3"},"暂停飞行",8,LE)):Te("",!0),n.value&&Z(e).flyStatus==="3"?(P(),O("button",{key:4,onClick:Dn(l,["stop"]),class:"test test3"},"开启飞行",8,WE)):Te("",!0),n.value&&Z(e).flyStatus!=="1"?(P(),O("button",{key:5,onClick:Dn(d,["stop"]),class:"test test4"},"停止飞行",8,VE)):Te("",!0),n.value&&Z(e).flyStatus!=="1"&&Z(e).flyCamera===0?(P(),O("button",{key:6,onClick:p[0]||(p[0]=Dn(m=>h(1),["stop"])),class:"test test5"},"跟随无人机")):Te("",!0),n.value&&Z(e).flyStatus!=="1"&&Z(e).flyCamera===1?(P(),O("button",{key:7,onClick:p[1]||(p[1]=Dn(m=>h(0),["stop"])),class:"test test5"},"离开无人机")):Te("",!0),ce(cf,{onSelect:a}),Z(e).bottomTabShowCondition?(P(),ht(rE,{key:8})):Te("",!0),Z(e).mainCabinShowCondition?(P(),ht(df,{key:9})):Te("",!0),Z(e).GisCabinShowCondition?(P(),ht(ZC,{key:10})):Te("",!0),Z(e).CostCabinShowCondition?(P(),ht(OE,{key:11,onSelect2:o})):Te("",!0),ce(v)],64)}}},HE=Re(zE,[["__scopeId","data-v-218a75da"]]);export{HE as default};