diff --git a/assets/prefab/alert.meta b/assets/prefab/alert.meta deleted file mode 100644 index 1e34c90..0000000 --- a/assets/prefab/alert.meta +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ver": "1.1.3", - "uuid": "84dfdbbd-ae68-4dec-b5e2-aa1e4d28c38f", - "importer": "folder", - "isBundle": false, - "bundleName": "", - "priority": 1, - "compressionType": {}, - "optimizeHotUpdate": {}, - "inlineSpriteFrames": {}, - "isRemoteBundle": {}, - "subMetas": {} -} \ No newline at end of file diff --git a/assets/res/music.meta b/assets/res/music.meta deleted file mode 100644 index 9c80bc5..0000000 --- a/assets/res/music.meta +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ver": "1.1.3", - "uuid": "99be851f-9f4f-4fdd-bd43-3e3f86dd78d2", - "importer": "folder", - "isBundle": false, - "bundleName": "", - "priority": 1, - "compressionType": {}, - "optimizeHotUpdate": {}, - "inlineSpriteFrames": {}, - "isRemoteBundle": {}, - "subMetas": {} -} \ No newline at end of file diff --git a/assets/resources/prefab/prop.meta b/assets/resources/prefab/prop.meta deleted file mode 100644 index 6c5b1f7..0000000 --- a/assets/resources/prefab/prop.meta +++ /dev/null @@ -1,13 +0,0 @@ -{ - "ver": "1.1.3", - "uuid": "c8878cfa-dda2-45ac-9204-7b3c4da0d5c4", - "importer": "folder", - "isBundle": false, - "bundleName": "", - "priority": 1, - "compressionType": {}, - "optimizeHotUpdate": {}, - "inlineSpriteFrames": {}, - "isRemoteBundle": {}, - "subMetas": {} -} \ No newline at end of file diff --git a/assets/shop/prefab/shop.prefab b/assets/shop/prefab/shop.prefab index 8f08ff7..fec1040 100644 --- a/assets/shop/prefab/shop.prefab +++ b/assets/shop/prefab/shop.prefab @@ -21,28 +21,13 @@ "__id__": 2 }, { - "__id__": 6 + "__id__": 7 }, { - "__id__": 10 + "__id__": 11 }, { - "__id__": 14 - }, - { - "__id__": 20 - }, - { - "__id__": 27 - }, - { - "__id__": 48 - }, - { - "__id__": 62 - }, - { - "__id__": 208 + "__id__": 66 }, { "__id__": 212 @@ -54,11 +39,11 @@ "_active": true, "_components": [ { - "__id__": 219 + "__id__": 220 } ], "_prefab": { - "__id__": 220 + "__id__": 221 }, "_opacity": 255, "_color": { @@ -122,10 +107,13 @@ }, { "__id__": 4 + }, + { + "__id__": 5 } ], "_prefab": { - "__id__": 5 + "__id__": 6 }, "_opacity": 150, "_color": { @@ -216,6 +204,33 @@ "_enabled": true, "_id": "" }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 45, + "_left": 0, + "_right": 0, + "_top": -210, + "_bottom": -210, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 1080, + "_originalHeight": 2340, + "_id": "" + }, { "__type__": "cc.PrefabInfo", "root": { @@ -238,14 +253,14 @@ "_active": true, "_components": [ { - "__id__": 7 + "__id__": 8 }, { - "__id__": 8 + "__id__": 9 } ], "_prefab": { - "__id__": 9 + "__id__": 10 }, "_opacity": 255, "_color": { @@ -299,7 +314,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 6 + "__id__": 7 }, "_enabled": true, "_materials": [ @@ -331,7 +346,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 6 + "__id__": 7 }, "_enabled": true, "alignMode": 1, @@ -368,23 +383,103 @@ }, { "__type__": "cc.Node", - "_name": "shop_1", + "_name": "Top", "_objFlags": 0, "_parent": { "__id__": 1 }, + "_children": [ + { + "__id__": 12 + }, + { + "__id__": 16 + }, + { + "__id__": 22 + }, + { + "__id__": 29 + }, + { + "__id__": 50 + } + ], + "_active": true, + "_components": [ + { + "__id__": 64 + } + ], + "_prefab": { + "__id__": 65 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 600, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "shop_1", + "_objFlags": 0, + "_parent": { + "__id__": 11 + }, "_children": [], "_active": true, "_components": [ { - "__id__": 11 + "__id__": 13 }, { - "__id__": 12 + "__id__": 14 } ], "_prefab": { - "__id__": 13 + "__id__": 15 }, "_opacity": 255, "_color": { @@ -409,7 +504,7 @@ "ctor": "Float64Array", "array": [ 0, - 949.9650000000001, + 349.965, 0, 0, 0, @@ -438,7 +533,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 10 + "__id__": 12 }, "_enabled": true, "_materials": [ @@ -470,17 +565,17 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 10 + "__id__": 12 }, - "_enabled": true, + "_enabled": false, "alignMode": 1, "_target": { "__id__": 1 }, - "_alignFlags": 41, + "_alignFlags": 0, "_left": 0, "_right": 0, - "_top": -207.96500000000003, + "_top": -207.96499999999992, "_bottom": 0, "_verticalCenter": 0, "_horizontalCenter": 0, @@ -502,7 +597,7 @@ "asset": { "__id__": 0 }, - "fileId": "90DrGs6xtHo4tHMIZiqLcb", + "fileId": "91FPh7kZtC+51mI5KXRts7", "sync": false }, { @@ -510,23 +605,23 @@ "_name": "btn1", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [], "_active": true, "_components": [ - { - "__id__": 15 - }, - { - "__id__": 16 - }, { "__id__": 17 + }, + { + "__id__": 18 + }, + { + "__id__": 19 } ], "_prefab": { - "__id__": 19 + "__id__": 21 }, "_opacity": 255, "_color": { @@ -550,8 +645,8 @@ "__type__": "TypedArray", "ctor": "Float64Array", "array": [ - 466.1360000000001, - 909.3890000000001, + 466.136, + 309.389, 0, 0, 0, @@ -580,7 +675,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 14 + "__id__": 16 }, "_enabled": true, "_materials": [ @@ -614,17 +709,17 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 14 + "__id__": 16 }, - "_enabled": true, + "_enabled": false, "alignMode": 1, "_target": { "__id__": 1 }, - "_alignFlags": 33, + "_alignFlags": 0, "_left": 0, - "_right": 24.36399999999992, - "_top": -214.889, + "_right": 24.363999999999976, + "_top": -214.8889999999999, "_bottom": 0, "_verticalCenter": 0, "_horizontalCenter": 0, @@ -643,7 +738,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 14 + "__id__": 16 }, "_enabled": true, "_normalMaterial": null, @@ -652,7 +747,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 18 + "__id__": 20 } ], "_N$interactable": true, @@ -708,7 +803,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 14 + "__id__": 16 }, "_id": "" }, @@ -730,7 +825,7 @@ "asset": { "__id__": 0 }, - "fileId": "a2ox7Ov9ZOB6iBpRQMSCCo", + "fileId": "e9IXR3YMZH/LK0pWT6/fFs", "sync": false }, { @@ -738,24 +833,24 @@ "_name": "tx", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [ { - "__id__": 21 + "__id__": 23 } ], "_active": true, "_components": [ { - "__id__": 24 + "__id__": 26 }, { - "__id__": 25 + "__id__": 27 } ], "_prefab": { - "__id__": 26 + "__id__": 28 }, "_opacity": 255, "_color": { @@ -780,7 +875,7 @@ "ctor": "Float64Array", "array": [ -396.283, - 792.312, + 192.312, 0, 0, 0, @@ -809,17 +904,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 20 + "__id__": 22 }, "_children": [], "_active": true, "_components": [ { - "__id__": 22 + "__id__": 24 } ], "_prefab": { - "__id__": 23 + "__id__": 25 }, "_opacity": 255, "_color": { @@ -873,7 +968,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 21 + "__id__": 23 }, "_enabled": true, "_materials": [ @@ -908,7 +1003,7 @@ "asset": { "__id__": 0 }, - "fileId": "d0cu9Nk4dKAZm9+TEr1h++", + "fileId": "6duTmfvPZI15Tyxu/nDGaQ", "sync": false }, { @@ -916,7 +1011,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 20 + "__id__": 22 }, "_enabled": true, "_materials": [ @@ -950,14 +1045,14 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 20 + "__id__": 22 }, - "_enabled": true, + "_enabled": false, "alignMode": 1, "_target": { "__id__": 1 }, - "_alignFlags": 9, + "_alignFlags": 0, "_left": 49.716999999999985, "_right": 327.573, "_top": 64.18799999999999, @@ -982,7 +1077,7 @@ "asset": { "__id__": 0 }, - "fileId": "3ckQl/Tq5GbrsTP7UO38K3", + "fileId": "a5A/o3AFBDzKqB/S9rvtZ/", "sync": false }, { @@ -990,36 +1085,36 @@ "_name": "Stamina", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [ { - "__id__": 28 + "__id__": 30 }, { - "__id__": 31 + "__id__": 33 }, { - "__id__": 34 + "__id__": 36 }, { - "__id__": 37 - }, - { - "__id__": 40 + "__id__": 39 }, { "__id__": 42 + }, + { + "__id__": 44 } ], "_active": true, "_components": [ { - "__id__": 45 + "__id__": 47 } ], "_prefab": { - "__id__": 47 + "__id__": 49 }, "_opacity": 255, "_color": { @@ -1044,7 +1139,7 @@ "ctor": "Float64Array", "array": [ -81.953, - 843.354, + 243.354, 0, 0, 0, @@ -1073,17 +1168,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": true, "_components": [ { - "__id__": 29 + "__id__": 31 } ], "_prefab": { - "__id__": 30 + "__id__": 32 }, "_opacity": 255, "_color": { @@ -1137,7 +1232,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 28 + "__id__": 30 }, "_enabled": true, "_materials": [ @@ -1174,7 +1269,7 @@ "asset": { "__id__": 0 }, - "fileId": "6aVfqR99lM8b6s1IfFRYgi", + "fileId": "19Vagxn5RESbaZv3yl2LEb", "sync": false }, { @@ -1182,17 +1277,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": true, "_components": [ { - "__id__": 32 + "__id__": 34 } ], "_prefab": { - "__id__": 33 + "__id__": 35 }, "_opacity": 255, "_color": { @@ -1246,7 +1341,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 31 + "__id__": 33 }, "_enabled": true, "_materials": [ @@ -1283,7 +1378,7 @@ "asset": { "__id__": 0 }, - "fileId": "acxWLwLgNPM5VDtDzhPjtp", + "fileId": "b2lfcyQ49EB7t79ZeIBCne", "sync": false }, { @@ -1291,17 +1386,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": false, "_components": [ { - "__id__": 35 + "__id__": 37 } ], "_prefab": { - "__id__": 36 + "__id__": 38 }, "_opacity": 255, "_color": { @@ -1355,7 +1450,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 34 + "__id__": 36 }, "_enabled": true, "_materials": [ @@ -1392,7 +1487,7 @@ "asset": { "__id__": 0 }, - "fileId": "d0UvPpwplBxaQVyjLRxNG1", + "fileId": "c5jBvL+phOkJwx6KQi0Oho", "sync": false }, { @@ -1400,17 +1495,17 @@ "_name": "man", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": true, "_components": [ { - "__id__": 38 + "__id__": 40 } ], "_prefab": { - "__id__": 39 + "__id__": 41 }, "_opacity": 255, "_color": { @@ -1464,7 +1559,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 37 + "__id__": 39 }, "_enabled": true, "_materials": [ @@ -1501,7 +1596,7 @@ "asset": { "__id__": 0 }, - "fileId": "2dvYFmzLRBJaIsm94hfDMQ", + "fileId": "d3g30jWINCaJkprI0sP21F", "sync": false }, { @@ -1509,13 +1604,13 @@ "_name": "health", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": false, "_components": [], "_prefab": { - "__id__": 41 + "__id__": 43 }, "_opacity": 255, "_color": { @@ -1572,7 +1667,7 @@ "asset": { "__id__": 0 }, - "fileId": "88IgQBjH1Jo6ZZInXvN0ae", + "fileId": "ad9H+uSf9EXYyx1W0pDOC2", "sync": false }, { @@ -1580,17 +1675,17 @@ "_name": "time", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": false, "_components": [ { - "__id__": 43 + "__id__": 45 } ], "_prefab": { - "__id__": 44 + "__id__": 46 }, "_opacity": 255, "_color": { @@ -1644,7 +1739,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 42 + "__id__": 44 }, "_enabled": true, "_materials": [ @@ -1680,7 +1775,7 @@ "asset": { "__id__": 0 }, - "fileId": "5eVwMMS0VEuK9KkGYaVfU8", + "fileId": "d5cavi+kVIiZHGn7Ckkr5o", "sync": false }, { @@ -1688,7 +1783,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 27 + "__id__": 29 }, "_enabled": true, "_normalMaterial": null, @@ -1697,7 +1792,7 @@ "zoomScale": 1.1, "clickEvents": [ { - "__id__": 46 + "__id__": 48 } ], "_N$interactable": true, @@ -1753,7 +1848,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 27 + "__id__": 29 }, "_id": "" }, @@ -1773,7 +1868,7 @@ "asset": { "__id__": 0 }, - "fileId": "cfwKYUzqBBtYvOE6xeCswl", + "fileId": "85ac4ottRF5ZtnPpf+rdij", "sync": false }, { @@ -1781,30 +1876,30 @@ "_name": "Coin", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [ { - "__id__": 49 + "__id__": 51 }, { - "__id__": 52 + "__id__": 54 }, { - "__id__": 55 + "__id__": 57 }, { - "__id__": 58 + "__id__": 60 } ], "_active": true, "_components": [ { - "__id__": 60 + "__id__": 62 } ], "_prefab": { - "__id__": 61 + "__id__": 63 }, "_opacity": 255, "_color": { @@ -1829,7 +1924,7 @@ "ctor": "Float64Array", "array": [ 335.588, - 843.354, + 243.354, 0, 0, 0, @@ -1858,17 +1953,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": true, "_components": [ { - "__id__": 50 + "__id__": 52 } ], "_prefab": { - "__id__": 51 + "__id__": 53 }, "_opacity": 255, "_color": { @@ -1922,7 +2017,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 49 + "__id__": 51 }, "_enabled": true, "_materials": [ @@ -1959,7 +2054,7 @@ "asset": { "__id__": 0 }, - "fileId": "ecYhqIPwNJX5efs88/AoQx", + "fileId": "46VBB8DqVOCYvDI0hpWnhL", "sync": false }, { @@ -1967,17 +2062,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": true, "_components": [ { - "__id__": 53 + "__id__": 55 } ], "_prefab": { - "__id__": 54 + "__id__": 56 }, "_opacity": 255, "_color": { @@ -2031,7 +2126,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 52 + "__id__": 54 }, "_enabled": true, "_materials": [ @@ -2068,7 +2163,7 @@ "asset": { "__id__": 0 }, - "fileId": "57LSY16pBJD6eBAcvkUnBv", + "fileId": "f3Mq/ajaNOT7gWBBs0mQFE", "sync": false }, { @@ -2076,17 +2171,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": false, "_components": [ { - "__id__": 56 + "__id__": 58 } ], "_prefab": { - "__id__": 57 + "__id__": 59 }, "_opacity": 255, "_color": { @@ -2140,7 +2235,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 55 + "__id__": 57 }, "_enabled": true, "_materials": [ @@ -2177,7 +2272,7 @@ "asset": { "__id__": 0 }, - "fileId": "efsl7ltxZA56KA2MUqzwPk", + "fileId": "12vK+mfsRIUZNjZ0bz1Wmx", "sync": false }, { @@ -2185,13 +2280,13 @@ "_name": "Coin", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": true, "_components": [], "_prefab": { - "__id__": 59 + "__id__": 61 }, "_opacity": 255, "_color": { @@ -2248,7 +2343,7 @@ "asset": { "__id__": 0 }, - "fileId": "6bzgOXQXtJzr+SvxqA0HSq", + "fileId": "abaidugJ1M1Jyqc7VJZvnF", "sync": false }, { @@ -2256,7 +2351,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 48 + "__id__": 50 }, "_enabled": false, "_normalMaterial": null, @@ -2319,7 +2414,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 48 + "__id__": 50 }, "_id": "" }, @@ -2331,7 +2426,45 @@ "asset": { "__id__": 0 }, - "fileId": "dbTBrfJ3pF26e9bPbIoOkH", + "fileId": "ad6SLGWm5IHKfZs3S5aS6p", + "sync": false + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 11 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 1, + "_left": 0, + "_right": 0, + "_top": 360, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e5881p4DhA2o2G5SieRWXh", "sync": false }, { @@ -2343,20 +2476,20 @@ }, "_children": [ { - "__id__": 63 + "__id__": 67 }, { - "__id__": 70 + "__id__": 74 } ], "_active": true, "_components": [ { - "__id__": 68 + "__id__": 72 } ], "_prefab": { - "__id__": 207 + "__id__": 211 }, "_opacity": 255, "_color": { @@ -2410,24 +2543,24 @@ "_name": "scrollBar", "_objFlags": 0, "_parent": { - "__id__": 62 + "__id__": 66 }, "_children": [ { - "__id__": 64 + "__id__": 68 } ], "_active": false, "_components": [ { - "__id__": 67 + "__id__": 71 }, { - "__id__": 205 + "__id__": 209 } ], "_prefab": { - "__id__": 206 + "__id__": 210 }, "_opacity": 255, "_color": { @@ -2481,17 +2614,17 @@ "_name": "bar", "_objFlags": 0, "_parent": { - "__id__": 63 + "__id__": 67 }, "_children": [], "_active": true, "_components": [ { - "__id__": 65 + "__id__": 69 } ], "_prefab": { - "__id__": 66 + "__id__": 70 }, "_opacity": 255, "_color": { @@ -2545,7 +2678,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 64 + "__id__": 68 }, "_enabled": true, "_materials": [ @@ -2588,18 +2721,18 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 63 + "__id__": 67 }, "_enabled": true, "_scrollView": { - "__id__": 68 + "__id__": 72 }, "_touching": false, "_opacity": 255, "enableAutoHide": true, "autoHideTime": 1, "_N$handle": { - "__id__": 65 + "__id__": 69 }, "_N$direction": 1, "_id": "" @@ -2609,7 +2742,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 62 + "__id__": 66 }, "_enabled": true, "horizontal": false, @@ -2621,14 +2754,14 @@ "scrollEvents": [], "cancelInnerEvents": true, "_N$content": { - "__id__": 69 + "__id__": 73 }, "content": { - "__id__": 69 + "__id__": 73 }, "_N$horizontalScrollBar": null, "_N$verticalScrollBar": { - "__id__": 67 + "__id__": 71 }, "_id": "" }, @@ -2637,41 +2770,41 @@ "_name": "content", "_objFlags": 0, "_parent": { - "__id__": 70 + "__id__": 74 }, "_children": [ { - "__id__": 73 + "__id__": 77 }, { - "__id__": 76 + "__id__": 80 }, { - "__id__": 92 + "__id__": 96 }, { - "__id__": 108 + "__id__": 112 }, { - "__id__": 124 + "__id__": 128 }, { - "__id__": 140 + "__id__": 144 }, { - "__id__": 156 + "__id__": 160 }, { - "__id__": 172 + "__id__": 176 }, { - "__id__": 188 + "__id__": 192 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 204 + "__id__": 208 }, "_opacity": 255, "_color": { @@ -2725,21 +2858,21 @@ "_name": "view", "_objFlags": 0, "_parent": { - "__id__": 62 + "__id__": 66 }, "_children": [ { - "__id__": 69 + "__id__": 73 } ], "_active": true, "_components": [ { - "__id__": 71 + "__id__": 75 } ], "_prefab": { - "__id__": 72 + "__id__": 76 }, "_opacity": 255, "_color": { @@ -2793,7 +2926,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 70 + "__id__": 74 }, "_enabled": true, "_materials": [ @@ -2824,17 +2957,17 @@ "_name": "txt1", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [], "_active": true, "_components": [ { - "__id__": 74 + "__id__": 78 } ], "_prefab": { - "__id__": 75 + "__id__": 79 }, "_opacity": 255, "_color": { @@ -2888,7 +3021,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 73 + "__id__": 77 }, "_enabled": true, "_materials": [ @@ -2933,33 +3066,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 77 + "__id__": 81 }, { - "__id__": 80 + "__id__": 84 }, { - "__id__": 83 + "__id__": 87 } ], "_active": true, "_components": [ { - "__id__": 87 + "__id__": 91 }, { - "__id__": 88 + "__id__": 92 }, { - "__id__": 90 + "__id__": 94 } ], "_prefab": { - "__id__": 91 + "__id__": 95 }, "_opacity": 255, "_color": { @@ -3013,17 +3146,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 76 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 78 + "__id__": 82 } ], "_prefab": { - "__id__": 79 + "__id__": 83 }, "_opacity": 255, "_color": { @@ -3077,7 +3210,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 77 + "__id__": 81 }, "_enabled": true, "_materials": [ @@ -3109,7 +3242,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3122,17 +3255,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 76 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 81 + "__id__": 85 } ], "_prefab": { - "__id__": 82 + "__id__": 86 }, "_opacity": 255, "_color": { @@ -3186,7 +3319,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 80 + "__id__": 84 }, "_enabled": true, "_materials": [ @@ -3217,7 +3350,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3230,20 +3363,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 76 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 84 + "__id__": 88 }, { - "__id__": 85 + "__id__": 89 } ], "_prefab": { - "__id__": 86 + "__id__": 90 }, "_opacity": 255, "_color": { @@ -3297,7 +3430,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 83 + "__id__": 87 }, "_enabled": true, "_materials": [ @@ -3330,7 +3463,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 83 + "__id__": 87 }, "_enabled": true, "_color": { @@ -3346,7 +3479,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3359,7 +3492,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 76 + "__id__": 80 }, "_enabled": true, "_materials": [ @@ -3393,7 +3526,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 76 + "__id__": 80 }, "_enabled": true, "_normalMaterial": null, @@ -3402,7 +3535,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 89 + "__id__": 93 } ], "_N$interactable": true, @@ -3458,7 +3591,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 76 + "__id__": 80 }, "_id": "" }, @@ -3475,7 +3608,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 76 + "__id__": 80 }, "_enabled": true, "label": null, @@ -3485,7 +3618,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3498,33 +3631,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 93 + "__id__": 97 }, { - "__id__": 96 + "__id__": 100 }, { - "__id__": 99 + "__id__": 103 } ], "_active": true, "_components": [ { - "__id__": 103 + "__id__": 107 }, { - "__id__": 104 + "__id__": 108 }, { - "__id__": 106 + "__id__": 110 } ], "_prefab": { - "__id__": 107 + "__id__": 111 }, "_opacity": 255, "_color": { @@ -3578,17 +3711,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 92 + "__id__": 96 }, "_children": [], "_active": true, "_components": [ { - "__id__": 94 + "__id__": 98 } ], "_prefab": { - "__id__": 95 + "__id__": 99 }, "_opacity": 255, "_color": { @@ -3642,7 +3775,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 93 + "__id__": 97 }, "_enabled": true, "_materials": [ @@ -3674,7 +3807,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3687,17 +3820,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 92 + "__id__": 96 }, "_children": [], "_active": true, "_components": [ { - "__id__": 97 + "__id__": 101 } ], "_prefab": { - "__id__": 98 + "__id__": 102 }, "_opacity": 255, "_color": { @@ -3751,7 +3884,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 96 + "__id__": 100 }, "_enabled": true, "_materials": [ @@ -3782,7 +3915,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3795,20 +3928,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 92 + "__id__": 96 }, "_children": [], "_active": true, "_components": [ { - "__id__": 100 + "__id__": 104 }, { - "__id__": 101 + "__id__": 105 } ], "_prefab": { - "__id__": 102 + "__id__": 106 }, "_opacity": 255, "_color": { @@ -3862,7 +3995,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 99 + "__id__": 103 }, "_enabled": true, "_materials": [ @@ -3895,7 +4028,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 99 + "__id__": 103 }, "_enabled": true, "_color": { @@ -3911,7 +4044,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3924,7 +4057,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 92 + "__id__": 96 }, "_enabled": true, "_materials": [ @@ -3958,7 +4091,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 92 + "__id__": 96 }, "_enabled": true, "_normalMaterial": null, @@ -3967,7 +4100,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 105 + "__id__": 109 } ], "_N$interactable": true, @@ -4023,7 +4156,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 92 + "__id__": 96 }, "_id": "" }, @@ -4040,7 +4173,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 92 + "__id__": 96 }, "_enabled": true, "label": null, @@ -4050,7 +4183,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4063,33 +4196,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 109 + "__id__": 113 }, { - "__id__": 112 + "__id__": 116 }, { - "__id__": 115 + "__id__": 119 } ], "_active": true, "_components": [ { - "__id__": 119 + "__id__": 123 }, { - "__id__": 120 + "__id__": 124 }, { - "__id__": 122 + "__id__": 126 } ], "_prefab": { - "__id__": 123 + "__id__": 127 }, "_opacity": 255, "_color": { @@ -4143,17 +4276,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 108 + "__id__": 112 }, "_children": [], "_active": true, "_components": [ { - "__id__": 110 + "__id__": 114 } ], "_prefab": { - "__id__": 111 + "__id__": 115 }, "_opacity": 255, "_color": { @@ -4207,7 +4340,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 109 + "__id__": 113 }, "_enabled": true, "_materials": [ @@ -4239,7 +4372,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4252,17 +4385,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 108 + "__id__": 112 }, "_children": [], "_active": true, "_components": [ { - "__id__": 113 + "__id__": 117 } ], "_prefab": { - "__id__": 114 + "__id__": 118 }, "_opacity": 255, "_color": { @@ -4316,7 +4449,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 112 + "__id__": 116 }, "_enabled": true, "_materials": [ @@ -4347,7 +4480,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4360,20 +4493,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 108 + "__id__": 112 }, "_children": [], "_active": true, "_components": [ { - "__id__": 116 + "__id__": 120 }, { - "__id__": 117 + "__id__": 121 } ], "_prefab": { - "__id__": 118 + "__id__": 122 }, "_opacity": 255, "_color": { @@ -4427,7 +4560,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 115 + "__id__": 119 }, "_enabled": true, "_materials": [ @@ -4460,7 +4593,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 115 + "__id__": 119 }, "_enabled": true, "_color": { @@ -4476,7 +4609,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4489,7 +4622,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 108 + "__id__": 112 }, "_enabled": true, "_materials": [ @@ -4523,7 +4656,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 108 + "__id__": 112 }, "_enabled": true, "_normalMaterial": null, @@ -4532,7 +4665,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 121 + "__id__": 125 } ], "_N$interactable": true, @@ -4588,7 +4721,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 108 + "__id__": 112 }, "_id": "" }, @@ -4605,7 +4738,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 108 + "__id__": 112 }, "_enabled": true, "label": null, @@ -4615,7 +4748,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4628,33 +4761,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 125 + "__id__": 129 }, { - "__id__": 128 + "__id__": 132 }, { - "__id__": 131 + "__id__": 135 } ], "_active": true, "_components": [ { - "__id__": 135 + "__id__": 139 }, { - "__id__": 136 + "__id__": 140 }, { - "__id__": 138 + "__id__": 142 } ], "_prefab": { - "__id__": 139 + "__id__": 143 }, "_opacity": 255, "_color": { @@ -4708,17 +4841,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 124 + "__id__": 128 }, "_children": [], "_active": true, "_components": [ { - "__id__": 126 + "__id__": 130 } ], "_prefab": { - "__id__": 127 + "__id__": 131 }, "_opacity": 255, "_color": { @@ -4772,7 +4905,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 125 + "__id__": 129 }, "_enabled": true, "_materials": [ @@ -4804,7 +4937,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4817,17 +4950,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 124 + "__id__": 128 }, "_children": [], "_active": true, "_components": [ { - "__id__": 129 + "__id__": 133 } ], "_prefab": { - "__id__": 130 + "__id__": 134 }, "_opacity": 255, "_color": { @@ -4881,7 +5014,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 128 + "__id__": 132 }, "_enabled": true, "_materials": [ @@ -4912,7 +5045,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4925,20 +5058,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 124 + "__id__": 128 }, "_children": [], "_active": true, "_components": [ { - "__id__": 132 + "__id__": 136 }, { - "__id__": 133 + "__id__": 137 } ], "_prefab": { - "__id__": 134 + "__id__": 138 }, "_opacity": 255, "_color": { @@ -4992,7 +5125,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 131 + "__id__": 135 }, "_enabled": true, "_materials": [ @@ -5025,7 +5158,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 131 + "__id__": 135 }, "_enabled": true, "_color": { @@ -5041,7 +5174,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5054,7 +5187,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 128 }, "_enabled": true, "_materials": [ @@ -5088,7 +5221,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 128 }, "_enabled": true, "_normalMaterial": null, @@ -5097,7 +5230,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 137 + "__id__": 141 } ], "_N$interactable": true, @@ -5153,7 +5286,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 124 + "__id__": 128 }, "_id": "" }, @@ -5170,7 +5303,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 128 }, "_enabled": true, "label": null, @@ -5180,7 +5313,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5193,33 +5326,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 141 + "__id__": 145 }, { - "__id__": 144 + "__id__": 148 }, { - "__id__": 147 + "__id__": 151 } ], "_active": true, "_components": [ { - "__id__": 151 + "__id__": 155 }, { - "__id__": 152 + "__id__": 156 }, { - "__id__": 154 + "__id__": 158 } ], "_prefab": { - "__id__": 155 + "__id__": 159 }, "_opacity": 255, "_color": { @@ -5273,17 +5406,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 144 }, "_children": [], "_active": true, "_components": [ { - "__id__": 142 + "__id__": 146 } ], "_prefab": { - "__id__": 143 + "__id__": 147 }, "_opacity": 255, "_color": { @@ -5337,7 +5470,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 141 + "__id__": 145 }, "_enabled": true, "_materials": [ @@ -5369,7 +5502,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5382,17 +5515,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 144 }, "_children": [], "_active": true, "_components": [ { - "__id__": 145 + "__id__": 149 } ], "_prefab": { - "__id__": 146 + "__id__": 150 }, "_opacity": 255, "_color": { @@ -5446,7 +5579,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 144 + "__id__": 148 }, "_enabled": true, "_materials": [ @@ -5477,7 +5610,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5490,20 +5623,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 144 }, "_children": [], "_active": true, "_components": [ { - "__id__": 148 + "__id__": 152 }, { - "__id__": 149 + "__id__": 153 } ], "_prefab": { - "__id__": 150 + "__id__": 154 }, "_opacity": 255, "_color": { @@ -5557,7 +5690,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 147 + "__id__": 151 }, "_enabled": true, "_materials": [ @@ -5590,7 +5723,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 147 + "__id__": 151 }, "_enabled": true, "_color": { @@ -5606,7 +5739,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5619,7 +5752,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 140 + "__id__": 144 }, "_enabled": true, "_materials": [ @@ -5653,7 +5786,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 140 + "__id__": 144 }, "_enabled": true, "_normalMaterial": null, @@ -5662,7 +5795,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 153 + "__id__": 157 } ], "_N$interactable": true, @@ -5718,7 +5851,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 140 + "__id__": 144 }, "_id": "" }, @@ -5735,7 +5868,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 140 + "__id__": 144 }, "_enabled": true, "label": null, @@ -5745,7 +5878,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5758,33 +5891,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 157 + "__id__": 161 }, { - "__id__": 160 + "__id__": 164 }, { - "__id__": 163 + "__id__": 167 } ], "_active": true, "_components": [ { - "__id__": 167 + "__id__": 171 }, { - "__id__": 168 + "__id__": 172 }, { - "__id__": 170 + "__id__": 174 } ], "_prefab": { - "__id__": 171 + "__id__": 175 }, "_opacity": 255, "_color": { @@ -5838,17 +5971,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 156 + "__id__": 160 }, "_children": [], "_active": true, "_components": [ { - "__id__": 158 + "__id__": 162 } ], "_prefab": { - "__id__": 159 + "__id__": 163 }, "_opacity": 255, "_color": { @@ -5902,7 +6035,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 157 + "__id__": 161 }, "_enabled": true, "_materials": [ @@ -5934,7 +6067,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5947,17 +6080,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 156 + "__id__": 160 }, "_children": [], "_active": true, "_components": [ { - "__id__": 161 + "__id__": 165 } ], "_prefab": { - "__id__": 162 + "__id__": 166 }, "_opacity": 255, "_color": { @@ -6011,7 +6144,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 160 + "__id__": 164 }, "_enabled": true, "_materials": [ @@ -6042,7 +6175,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6055,20 +6188,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 156 + "__id__": 160 }, "_children": [], "_active": true, "_components": [ { - "__id__": 164 + "__id__": 168 }, { - "__id__": 165 + "__id__": 169 } ], "_prefab": { - "__id__": 166 + "__id__": 170 }, "_opacity": 255, "_color": { @@ -6122,7 +6255,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 163 + "__id__": 167 }, "_enabled": true, "_materials": [ @@ -6155,7 +6288,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 163 + "__id__": 167 }, "_enabled": true, "_color": { @@ -6171,7 +6304,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6184,7 +6317,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 156 + "__id__": 160 }, "_enabled": true, "_materials": [ @@ -6218,7 +6351,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 156 + "__id__": 160 }, "_enabled": true, "_normalMaterial": null, @@ -6227,7 +6360,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 169 + "__id__": 173 } ], "_N$interactable": true, @@ -6283,7 +6416,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 156 + "__id__": 160 }, "_id": "" }, @@ -6300,7 +6433,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 156 + "__id__": 160 }, "_enabled": true, "label": null, @@ -6310,7 +6443,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6323,33 +6456,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 173 + "__id__": 177 }, { - "__id__": 176 + "__id__": 180 }, { - "__id__": 179 + "__id__": 183 } ], "_active": true, "_components": [ { - "__id__": 183 + "__id__": 187 }, { - "__id__": 184 + "__id__": 188 }, { - "__id__": 186 + "__id__": 190 } ], "_prefab": { - "__id__": 187 + "__id__": 191 }, "_opacity": 255, "_color": { @@ -6403,17 +6536,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 172 + "__id__": 176 }, "_children": [], "_active": true, "_components": [ { - "__id__": 174 + "__id__": 178 } ], "_prefab": { - "__id__": 175 + "__id__": 179 }, "_opacity": 255, "_color": { @@ -6467,7 +6600,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 173 + "__id__": 177 }, "_enabled": true, "_materials": [ @@ -6499,7 +6632,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6512,17 +6645,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 172 + "__id__": 176 }, "_children": [], "_active": true, "_components": [ { - "__id__": 177 + "__id__": 181 } ], "_prefab": { - "__id__": 178 + "__id__": 182 }, "_opacity": 255, "_color": { @@ -6576,7 +6709,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 176 + "__id__": 180 }, "_enabled": true, "_materials": [ @@ -6607,7 +6740,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6620,20 +6753,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 172 + "__id__": 176 }, "_children": [], "_active": true, "_components": [ { - "__id__": 180 + "__id__": 184 }, { - "__id__": 181 + "__id__": 185 } ], "_prefab": { - "__id__": 182 + "__id__": 186 }, "_opacity": 255, "_color": { @@ -6687,7 +6820,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 179 + "__id__": 183 }, "_enabled": true, "_materials": [ @@ -6720,7 +6853,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 179 + "__id__": 183 }, "_enabled": true, "_color": { @@ -6736,7 +6869,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6749,7 +6882,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 172 + "__id__": 176 }, "_enabled": true, "_materials": [ @@ -6783,7 +6916,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 172 + "__id__": 176 }, "_enabled": true, "_normalMaterial": null, @@ -6792,7 +6925,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 185 + "__id__": 189 } ], "_N$interactable": true, @@ -6848,7 +6981,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 172 + "__id__": 176 }, "_id": "" }, @@ -6865,7 +6998,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 172 + "__id__": 176 }, "_enabled": true, "label": null, @@ -6875,7 +7008,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6888,33 +7021,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 189 + "__id__": 193 }, { - "__id__": 192 + "__id__": 196 }, { - "__id__": 195 + "__id__": 199 } ], "_active": true, "_components": [ { - "__id__": 199 + "__id__": 203 }, { - "__id__": 200 + "__id__": 204 }, { - "__id__": 202 + "__id__": 206 } ], "_prefab": { - "__id__": 203 + "__id__": 207 }, "_opacity": 255, "_color": { @@ -6968,17 +7101,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 188 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 190 + "__id__": 194 } ], "_prefab": { - "__id__": 191 + "__id__": 195 }, "_opacity": 255, "_color": { @@ -7032,7 +7165,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 189 + "__id__": 193 }, "_enabled": true, "_materials": [ @@ -7064,7 +7197,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7077,17 +7210,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 188 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 193 + "__id__": 197 } ], "_prefab": { - "__id__": 194 + "__id__": 198 }, "_opacity": 255, "_color": { @@ -7141,7 +7274,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 192 + "__id__": 196 }, "_enabled": true, "_materials": [ @@ -7172,7 +7305,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7185,20 +7318,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 188 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 196 + "__id__": 200 }, { - "__id__": 197 + "__id__": 201 } ], "_prefab": { - "__id__": 198 + "__id__": 202 }, "_opacity": 255, "_color": { @@ -7252,7 +7385,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 195 + "__id__": 199 }, "_enabled": true, "_materials": [ @@ -7285,7 +7418,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 195 + "__id__": 199 }, "_enabled": true, "_color": { @@ -7301,7 +7434,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7314,7 +7447,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 188 + "__id__": 192 }, "_enabled": true, "_materials": [ @@ -7348,7 +7481,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 188 + "__id__": 192 }, "_enabled": true, "_normalMaterial": null, @@ -7357,7 +7490,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 201 + "__id__": 205 } ], "_N$interactable": true, @@ -7413,7 +7546,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 188 + "__id__": 192 }, "_id": "" }, @@ -7430,7 +7563,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 188 + "__id__": 192 }, "_enabled": true, "label": null, @@ -7440,7 +7573,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7464,7 +7597,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 63 + "__id__": 67 }, "_enabled": true, "alignMode": 0, @@ -7519,14 +7652,14 @@ "_active": true, "_components": [ { - "__id__": 209 + "__id__": 213 }, { - "__id__": 210 + "__id__": 214 } ], "_prefab": { - "__id__": 211 + "__id__": 215 }, "_opacity": 150, "_color": { @@ -7580,7 +7713,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 208 + "__id__": 212 }, "_enabled": true, "_materials": [ @@ -7612,7 +7745,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 208 + "__id__": 212 }, "_enabled": true, "_id": "" @@ -7639,14 +7772,14 @@ "_active": true, "_components": [ { - "__id__": 213 + "__id__": 217 }, { - "__id__": 214 + "__id__": 218 } ], "_prefab": { - "__id__": 215 + "__id__": 219 }, "_opacity": 150, "_color": { @@ -7700,7 +7833,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 212 + "__id__": 216 }, "_enabled": true, "_materials": [ @@ -7732,7 +7865,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 212 + "__id__": 216 }, "_enabled": true, "_id": "" @@ -7748,108 +7881,6 @@ "fileId": "c5IbgSqWhDerwgA0hdz30t", "sync": false }, - { - "__type__": "cc.Node", - "_name": "Top", - "_objFlags": 0, - "_parent": { - "__id__": 1 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 217 - } - ], - "_prefab": { - "__id__": 218 - }, - "_opacity": 255, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 0, - "height": 0 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_trs": { - "__type__": "TypedArray", - "ctor": "Float64Array", - "array": [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1 - ] - }, - "_eulerAngles": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_skewX": 0, - "_skewY": 0, - "_is3DNode": false, - "_groupIndex": 0, - "groupIndex": 0, - "_id": "" - }, - { - "__type__": "cc.Widget", - "_name": "", - "_objFlags": 0, - "node": { - "__id__": 216 - }, - "_enabled": true, - "alignMode": 1, - "_target": null, - "_alignFlags": 0, - "_left": 0, - "_right": 0, - "_top": 0, - "_bottom": 0, - "_verticalCenter": 0, - "_horizontalCenter": 0, - "_isAbsLeft": true, - "_isAbsRight": true, - "_isAbsTop": true, - "_isAbsBottom": true, - "_isAbsHorizontalCenter": true, - "_isAbsVerticalCenter": true, - "_originalWidth": 0, - "_originalHeight": 0, - "_id": "" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "e5881p4DhA2o2G5SieRWXh", - "sync": false - }, { "__type__": "48bfeZuYFZE2qmgxbW2IigB", "_name": "", @@ -7862,7 +7893,7 @@ "__id__": 1 }, "itemList": { - "__id__": 69 + "__id__": 73 }, "_id": "" }, diff --git a/library/imports/b0/b01ef5c5-2755-455d-acb4-ba3818f5e331.json b/library/imports/b0/b01ef5c5-2755-455d-acb4-ba3818f5e331.json index d749bed..23900f4 100644 --- a/library/imports/b0/b01ef5c5-2755-455d-acb4-ba3818f5e331.json +++ b/library/imports/b0/b01ef5c5-2755-455d-acb4-ba3818f5e331.json @@ -21,28 +21,13 @@ "__id__": 2 }, { - "__id__": 6 + "__id__": 7 }, { - "__id__": 10 + "__id__": 11 }, { - "__id__": 14 - }, - { - "__id__": 20 - }, - { - "__id__": 27 - }, - { - "__id__": 48 - }, - { - "__id__": 62 - }, - { - "__id__": 208 + "__id__": 66 }, { "__id__": 212 @@ -54,11 +39,11 @@ "_active": true, "_components": [ { - "__id__": 219 + "__id__": 220 } ], "_prefab": { - "__id__": 220 + "__id__": 221 }, "_opacity": 255, "_color": { @@ -122,10 +107,13 @@ }, { "__id__": 4 + }, + { + "__id__": 5 } ], "_prefab": { - "__id__": 5 + "__id__": 6 }, "_opacity": 150, "_color": { @@ -216,6 +204,33 @@ "_enabled": true, "_id": "" }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 45, + "_left": 0, + "_right": 0, + "_top": -210, + "_bottom": -210, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 1080, + "_originalHeight": 2340, + "_id": "" + }, { "__type__": "cc.PrefabInfo", "root": { @@ -238,14 +253,14 @@ "_active": true, "_components": [ { - "__id__": 7 + "__id__": 8 }, { - "__id__": 8 + "__id__": 9 } ], "_prefab": { - "__id__": 9 + "__id__": 10 }, "_opacity": 255, "_color": { @@ -299,7 +314,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 6 + "__id__": 7 }, "_enabled": true, "_materials": [ @@ -331,7 +346,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 6 + "__id__": 7 }, "_enabled": true, "alignMode": 1, @@ -368,23 +383,103 @@ }, { "__type__": "cc.Node", - "_name": "shop_1", + "_name": "Top", "_objFlags": 0, "_parent": { "__id__": 1 }, + "_children": [ + { + "__id__": 12 + }, + { + "__id__": 16 + }, + { + "__id__": 22 + }, + { + "__id__": 29 + }, + { + "__id__": 50 + } + ], + "_active": true, + "_components": [ + { + "__id__": 64 + } + ], + "_prefab": { + "__id__": 65 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 600, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "shop_1", + "_objFlags": 0, + "_parent": { + "__id__": 11 + }, "_children": [], "_active": true, "_components": [ { - "__id__": 11 + "__id__": 13 }, { - "__id__": 12 + "__id__": 14 } ], "_prefab": { - "__id__": 13 + "__id__": 15 }, "_opacity": 255, "_color": { @@ -409,7 +504,7 @@ "ctor": "Float64Array", "array": [ 0, - 949.9650000000001, + 349.965, 0, 0, 0, @@ -438,7 +533,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 10 + "__id__": 12 }, "_enabled": true, "_materials": [ @@ -470,17 +565,17 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 10 + "__id__": 12 }, - "_enabled": true, + "_enabled": false, "alignMode": 1, "_target": { "__id__": 1 }, - "_alignFlags": 41, + "_alignFlags": 0, "_left": 0, "_right": 0, - "_top": -207.96500000000003, + "_top": -207.96499999999992, "_bottom": 0, "_verticalCenter": 0, "_horizontalCenter": 0, @@ -502,7 +597,7 @@ "asset": { "__id__": 0 }, - "fileId": "90DrGs6xtHo4tHMIZiqLcb", + "fileId": "91FPh7kZtC+51mI5KXRts7", "sync": false }, { @@ -510,23 +605,23 @@ "_name": "btn1", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [], "_active": true, "_components": [ - { - "__id__": 15 - }, - { - "__id__": 16 - }, { "__id__": 17 + }, + { + "__id__": 18 + }, + { + "__id__": 19 } ], "_prefab": { - "__id__": 19 + "__id__": 21 }, "_opacity": 255, "_color": { @@ -550,8 +645,8 @@ "__type__": "TypedArray", "ctor": "Float64Array", "array": [ - 466.1360000000001, - 909.3890000000001, + 466.136, + 309.389, 0, 0, 0, @@ -580,7 +675,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 14 + "__id__": 16 }, "_enabled": true, "_materials": [ @@ -614,17 +709,17 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 14 + "__id__": 16 }, - "_enabled": true, + "_enabled": false, "alignMode": 1, "_target": { "__id__": 1 }, - "_alignFlags": 33, + "_alignFlags": 0, "_left": 0, - "_right": 24.36399999999992, - "_top": -214.889, + "_right": 24.363999999999976, + "_top": -214.8889999999999, "_bottom": 0, "_verticalCenter": 0, "_horizontalCenter": 0, @@ -643,7 +738,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 14 + "__id__": 16 }, "_enabled": true, "_normalMaterial": null, @@ -652,7 +747,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 18 + "__id__": 20 } ], "_N$interactable": true, @@ -708,7 +803,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 14 + "__id__": 16 }, "_id": "" }, @@ -730,7 +825,7 @@ "asset": { "__id__": 0 }, - "fileId": "a2ox7Ov9ZOB6iBpRQMSCCo", + "fileId": "e9IXR3YMZH/LK0pWT6/fFs", "sync": false }, { @@ -738,24 +833,24 @@ "_name": "tx", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [ { - "__id__": 21 + "__id__": 23 } ], "_active": true, "_components": [ { - "__id__": 24 + "__id__": 26 }, { - "__id__": 25 + "__id__": 27 } ], "_prefab": { - "__id__": 26 + "__id__": 28 }, "_opacity": 255, "_color": { @@ -780,7 +875,7 @@ "ctor": "Float64Array", "array": [ -396.283, - 792.312, + 192.312, 0, 0, 0, @@ -809,17 +904,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 20 + "__id__": 22 }, "_children": [], "_active": true, "_components": [ { - "__id__": 22 + "__id__": 24 } ], "_prefab": { - "__id__": 23 + "__id__": 25 }, "_opacity": 255, "_color": { @@ -873,7 +968,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 21 + "__id__": 23 }, "_enabled": true, "_materials": [ @@ -908,7 +1003,7 @@ "asset": { "__id__": 0 }, - "fileId": "d0cu9Nk4dKAZm9+TEr1h++", + "fileId": "6duTmfvPZI15Tyxu/nDGaQ", "sync": false }, { @@ -916,7 +1011,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 20 + "__id__": 22 }, "_enabled": true, "_materials": [ @@ -950,14 +1045,14 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 20 + "__id__": 22 }, - "_enabled": true, + "_enabled": false, "alignMode": 1, "_target": { "__id__": 1 }, - "_alignFlags": 9, + "_alignFlags": 0, "_left": 49.716999999999985, "_right": 327.573, "_top": 64.18799999999999, @@ -982,7 +1077,7 @@ "asset": { "__id__": 0 }, - "fileId": "3ckQl/Tq5GbrsTP7UO38K3", + "fileId": "a5A/o3AFBDzKqB/S9rvtZ/", "sync": false }, { @@ -990,36 +1085,36 @@ "_name": "Stamina", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [ { - "__id__": 28 + "__id__": 30 }, { - "__id__": 31 + "__id__": 33 }, { - "__id__": 34 + "__id__": 36 }, { - "__id__": 37 - }, - { - "__id__": 40 + "__id__": 39 }, { "__id__": 42 + }, + { + "__id__": 44 } ], "_active": true, "_components": [ { - "__id__": 45 + "__id__": 47 } ], "_prefab": { - "__id__": 47 + "__id__": 49 }, "_opacity": 255, "_color": { @@ -1044,7 +1139,7 @@ "ctor": "Float64Array", "array": [ -81.953, - 843.354, + 243.354, 0, 0, 0, @@ -1073,17 +1168,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": true, "_components": [ { - "__id__": 29 + "__id__": 31 } ], "_prefab": { - "__id__": 30 + "__id__": 32 }, "_opacity": 255, "_color": { @@ -1137,7 +1232,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 28 + "__id__": 30 }, "_enabled": true, "_materials": [ @@ -1174,7 +1269,7 @@ "asset": { "__id__": 0 }, - "fileId": "6aVfqR99lM8b6s1IfFRYgi", + "fileId": "19Vagxn5RESbaZv3yl2LEb", "sync": false }, { @@ -1182,17 +1277,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": true, "_components": [ { - "__id__": 32 + "__id__": 34 } ], "_prefab": { - "__id__": 33 + "__id__": 35 }, "_opacity": 255, "_color": { @@ -1246,7 +1341,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 31 + "__id__": 33 }, "_enabled": true, "_materials": [ @@ -1283,7 +1378,7 @@ "asset": { "__id__": 0 }, - "fileId": "acxWLwLgNPM5VDtDzhPjtp", + "fileId": "b2lfcyQ49EB7t79ZeIBCne", "sync": false }, { @@ -1291,17 +1386,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": false, "_components": [ { - "__id__": 35 + "__id__": 37 } ], "_prefab": { - "__id__": 36 + "__id__": 38 }, "_opacity": 255, "_color": { @@ -1355,7 +1450,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 34 + "__id__": 36 }, "_enabled": true, "_materials": [ @@ -1392,7 +1487,7 @@ "asset": { "__id__": 0 }, - "fileId": "d0UvPpwplBxaQVyjLRxNG1", + "fileId": "c5jBvL+phOkJwx6KQi0Oho", "sync": false }, { @@ -1400,17 +1495,17 @@ "_name": "man", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": true, "_components": [ { - "__id__": 38 + "__id__": 40 } ], "_prefab": { - "__id__": 39 + "__id__": 41 }, "_opacity": 255, "_color": { @@ -1464,7 +1559,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 37 + "__id__": 39 }, "_enabled": true, "_materials": [ @@ -1501,7 +1596,7 @@ "asset": { "__id__": 0 }, - "fileId": "2dvYFmzLRBJaIsm94hfDMQ", + "fileId": "d3g30jWINCaJkprI0sP21F", "sync": false }, { @@ -1509,13 +1604,13 @@ "_name": "health", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": false, "_components": [], "_prefab": { - "__id__": 41 + "__id__": 43 }, "_opacity": 255, "_color": { @@ -1572,7 +1667,7 @@ "asset": { "__id__": 0 }, - "fileId": "88IgQBjH1Jo6ZZInXvN0ae", + "fileId": "ad9H+uSf9EXYyx1W0pDOC2", "sync": false }, { @@ -1580,17 +1675,17 @@ "_name": "time", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": false, "_components": [ { - "__id__": 43 + "__id__": 45 } ], "_prefab": { - "__id__": 44 + "__id__": 46 }, "_opacity": 255, "_color": { @@ -1644,7 +1739,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 42 + "__id__": 44 }, "_enabled": true, "_materials": [ @@ -1680,7 +1775,7 @@ "asset": { "__id__": 0 }, - "fileId": "5eVwMMS0VEuK9KkGYaVfU8", + "fileId": "d5cavi+kVIiZHGn7Ckkr5o", "sync": false }, { @@ -1688,7 +1783,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 27 + "__id__": 29 }, "_enabled": true, "_normalMaterial": null, @@ -1697,7 +1792,7 @@ "zoomScale": 1.1, "clickEvents": [ { - "__id__": 46 + "__id__": 48 } ], "_N$interactable": true, @@ -1753,7 +1848,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 27 + "__id__": 29 }, "_id": "" }, @@ -1773,7 +1868,7 @@ "asset": { "__id__": 0 }, - "fileId": "cfwKYUzqBBtYvOE6xeCswl", + "fileId": "85ac4ottRF5ZtnPpf+rdij", "sync": false }, { @@ -1781,30 +1876,30 @@ "_name": "Coin", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [ { - "__id__": 49 + "__id__": 51 }, { - "__id__": 52 + "__id__": 54 }, { - "__id__": 55 + "__id__": 57 }, { - "__id__": 58 + "__id__": 60 } ], "_active": true, "_components": [ { - "__id__": 60 + "__id__": 62 } ], "_prefab": { - "__id__": 61 + "__id__": 63 }, "_opacity": 255, "_color": { @@ -1829,7 +1924,7 @@ "ctor": "Float64Array", "array": [ 335.588, - 843.354, + 243.354, 0, 0, 0, @@ -1858,17 +1953,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": true, "_components": [ { - "__id__": 50 + "__id__": 52 } ], "_prefab": { - "__id__": 51 + "__id__": 53 }, "_opacity": 255, "_color": { @@ -1922,7 +2017,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 49 + "__id__": 51 }, "_enabled": true, "_materials": [ @@ -1959,7 +2054,7 @@ "asset": { "__id__": 0 }, - "fileId": "ecYhqIPwNJX5efs88/AoQx", + "fileId": "46VBB8DqVOCYvDI0hpWnhL", "sync": false }, { @@ -1967,17 +2062,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": true, "_components": [ { - "__id__": 53 + "__id__": 55 } ], "_prefab": { - "__id__": 54 + "__id__": 56 }, "_opacity": 255, "_color": { @@ -2031,7 +2126,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 52 + "__id__": 54 }, "_enabled": true, "_materials": [ @@ -2068,7 +2163,7 @@ "asset": { "__id__": 0 }, - "fileId": "57LSY16pBJD6eBAcvkUnBv", + "fileId": "f3Mq/ajaNOT7gWBBs0mQFE", "sync": false }, { @@ -2076,17 +2171,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": false, "_components": [ { - "__id__": 56 + "__id__": 58 } ], "_prefab": { - "__id__": 57 + "__id__": 59 }, "_opacity": 255, "_color": { @@ -2140,7 +2235,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 55 + "__id__": 57 }, "_enabled": true, "_materials": [ @@ -2177,7 +2272,7 @@ "asset": { "__id__": 0 }, - "fileId": "efsl7ltxZA56KA2MUqzwPk", + "fileId": "12vK+mfsRIUZNjZ0bz1Wmx", "sync": false }, { @@ -2185,13 +2280,13 @@ "_name": "Coin", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": true, "_components": [], "_prefab": { - "__id__": 59 + "__id__": 61 }, "_opacity": 255, "_color": { @@ -2248,7 +2343,7 @@ "asset": { "__id__": 0 }, - "fileId": "6bzgOXQXtJzr+SvxqA0HSq", + "fileId": "abaidugJ1M1Jyqc7VJZvnF", "sync": false }, { @@ -2256,7 +2351,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 48 + "__id__": 50 }, "_enabled": false, "_normalMaterial": null, @@ -2319,7 +2414,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 48 + "__id__": 50 }, "_id": "" }, @@ -2331,7 +2426,45 @@ "asset": { "__id__": 0 }, - "fileId": "dbTBrfJ3pF26e9bPbIoOkH", + "fileId": "ad6SLGWm5IHKfZs3S5aS6p", + "sync": false + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 11 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 1, + "_left": 0, + "_right": 0, + "_top": 360, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e5881p4DhA2o2G5SieRWXh", "sync": false }, { @@ -2343,20 +2476,20 @@ }, "_children": [ { - "__id__": 63 + "__id__": 67 }, { - "__id__": 70 + "__id__": 74 } ], "_active": true, "_components": [ { - "__id__": 68 + "__id__": 72 } ], "_prefab": { - "__id__": 207 + "__id__": 211 }, "_opacity": 255, "_color": { @@ -2410,24 +2543,24 @@ "_name": "scrollBar", "_objFlags": 0, "_parent": { - "__id__": 62 + "__id__": 66 }, "_children": [ { - "__id__": 64 + "__id__": 68 } ], "_active": false, "_components": [ { - "__id__": 67 + "__id__": 71 }, { - "__id__": 205 + "__id__": 209 } ], "_prefab": { - "__id__": 206 + "__id__": 210 }, "_opacity": 255, "_color": { @@ -2481,17 +2614,17 @@ "_name": "bar", "_objFlags": 0, "_parent": { - "__id__": 63 + "__id__": 67 }, "_children": [], "_active": true, "_components": [ { - "__id__": 65 + "__id__": 69 } ], "_prefab": { - "__id__": 66 + "__id__": 70 }, "_opacity": 255, "_color": { @@ -2545,7 +2678,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 64 + "__id__": 68 }, "_enabled": true, "_materials": [ @@ -2588,18 +2721,18 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 63 + "__id__": 67 }, "_enabled": true, "_scrollView": { - "__id__": 68 + "__id__": 72 }, "_touching": false, "_opacity": 255, "enableAutoHide": true, "autoHideTime": 1, "_N$handle": { - "__id__": 65 + "__id__": 69 }, "_N$direction": 1, "_id": "" @@ -2609,7 +2742,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 62 + "__id__": 66 }, "_enabled": true, "horizontal": false, @@ -2621,14 +2754,14 @@ "scrollEvents": [], "cancelInnerEvents": true, "_N$content": { - "__id__": 69 + "__id__": 73 }, "content": { - "__id__": 69 + "__id__": 73 }, "_N$horizontalScrollBar": null, "_N$verticalScrollBar": { - "__id__": 67 + "__id__": 71 }, "_id": "" }, @@ -2637,41 +2770,41 @@ "_name": "content", "_objFlags": 0, "_parent": { - "__id__": 70 + "__id__": 74 }, "_children": [ { - "__id__": 73 + "__id__": 77 }, { - "__id__": 76 + "__id__": 80 }, { - "__id__": 92 + "__id__": 96 }, { - "__id__": 108 + "__id__": 112 }, { - "__id__": 124 + "__id__": 128 }, { - "__id__": 140 + "__id__": 144 }, { - "__id__": 156 + "__id__": 160 }, { - "__id__": 172 + "__id__": 176 }, { - "__id__": 188 + "__id__": 192 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 204 + "__id__": 208 }, "_opacity": 255, "_color": { @@ -2725,21 +2858,21 @@ "_name": "view", "_objFlags": 0, "_parent": { - "__id__": 62 + "__id__": 66 }, "_children": [ { - "__id__": 69 + "__id__": 73 } ], "_active": true, "_components": [ { - "__id__": 71 + "__id__": 75 } ], "_prefab": { - "__id__": 72 + "__id__": 76 }, "_opacity": 255, "_color": { @@ -2793,7 +2926,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 70 + "__id__": 74 }, "_enabled": true, "_materials": [ @@ -2824,17 +2957,17 @@ "_name": "txt1", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [], "_active": true, "_components": [ { - "__id__": 74 + "__id__": 78 } ], "_prefab": { - "__id__": 75 + "__id__": 79 }, "_opacity": 255, "_color": { @@ -2888,7 +3021,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 73 + "__id__": 77 }, "_enabled": true, "_materials": [ @@ -2933,33 +3066,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 77 + "__id__": 81 }, { - "__id__": 80 + "__id__": 84 }, { - "__id__": 83 + "__id__": 87 } ], "_active": true, "_components": [ { - "__id__": 87 + "__id__": 91 }, { - "__id__": 88 + "__id__": 92 }, { - "__id__": 90 + "__id__": 94 } ], "_prefab": { - "__id__": 91 + "__id__": 95 }, "_opacity": 255, "_color": { @@ -3013,17 +3146,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 76 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 78 + "__id__": 82 } ], "_prefab": { - "__id__": 79 + "__id__": 83 }, "_opacity": 255, "_color": { @@ -3077,7 +3210,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 77 + "__id__": 81 }, "_enabled": true, "_materials": [ @@ -3109,7 +3242,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3122,17 +3255,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 76 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 81 + "__id__": 85 } ], "_prefab": { - "__id__": 82 + "__id__": 86 }, "_opacity": 255, "_color": { @@ -3186,7 +3319,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 80 + "__id__": 84 }, "_enabled": true, "_materials": [ @@ -3217,7 +3350,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3230,20 +3363,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 76 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 84 + "__id__": 88 }, { - "__id__": 85 + "__id__": 89 } ], "_prefab": { - "__id__": 86 + "__id__": 90 }, "_opacity": 255, "_color": { @@ -3297,7 +3430,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 83 + "__id__": 87 }, "_enabled": true, "_materials": [ @@ -3330,7 +3463,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 83 + "__id__": 87 }, "_enabled": true, "_color": { @@ -3346,7 +3479,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3359,7 +3492,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 76 + "__id__": 80 }, "_enabled": true, "_materials": [ @@ -3393,7 +3526,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 76 + "__id__": 80 }, "_enabled": true, "_normalMaterial": null, @@ -3402,7 +3535,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 89 + "__id__": 93 } ], "_N$interactable": true, @@ -3458,7 +3591,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 76 + "__id__": 80 }, "_id": "" }, @@ -3475,7 +3608,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 76 + "__id__": 80 }, "_enabled": true, "label": null, @@ -3485,7 +3618,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3498,33 +3631,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 93 + "__id__": 97 }, { - "__id__": 96 + "__id__": 100 }, { - "__id__": 99 + "__id__": 103 } ], "_active": true, "_components": [ { - "__id__": 103 + "__id__": 107 }, { - "__id__": 104 + "__id__": 108 }, { - "__id__": 106 + "__id__": 110 } ], "_prefab": { - "__id__": 107 + "__id__": 111 }, "_opacity": 255, "_color": { @@ -3578,17 +3711,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 92 + "__id__": 96 }, "_children": [], "_active": true, "_components": [ { - "__id__": 94 + "__id__": 98 } ], "_prefab": { - "__id__": 95 + "__id__": 99 }, "_opacity": 255, "_color": { @@ -3642,7 +3775,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 93 + "__id__": 97 }, "_enabled": true, "_materials": [ @@ -3674,7 +3807,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3687,17 +3820,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 92 + "__id__": 96 }, "_children": [], "_active": true, "_components": [ { - "__id__": 97 + "__id__": 101 } ], "_prefab": { - "__id__": 98 + "__id__": 102 }, "_opacity": 255, "_color": { @@ -3751,7 +3884,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 96 + "__id__": 100 }, "_enabled": true, "_materials": [ @@ -3782,7 +3915,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3795,20 +3928,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 92 + "__id__": 96 }, "_children": [], "_active": true, "_components": [ { - "__id__": 100 + "__id__": 104 }, { - "__id__": 101 + "__id__": 105 } ], "_prefab": { - "__id__": 102 + "__id__": 106 }, "_opacity": 255, "_color": { @@ -3862,7 +3995,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 99 + "__id__": 103 }, "_enabled": true, "_materials": [ @@ -3895,7 +4028,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 99 + "__id__": 103 }, "_enabled": true, "_color": { @@ -3911,7 +4044,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3924,7 +4057,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 92 + "__id__": 96 }, "_enabled": true, "_materials": [ @@ -3958,7 +4091,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 92 + "__id__": 96 }, "_enabled": true, "_normalMaterial": null, @@ -3967,7 +4100,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 105 + "__id__": 109 } ], "_N$interactable": true, @@ -4023,7 +4156,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 92 + "__id__": 96 }, "_id": "" }, @@ -4040,7 +4173,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 92 + "__id__": 96 }, "_enabled": true, "label": null, @@ -4050,7 +4183,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4063,33 +4196,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 109 + "__id__": 113 }, { - "__id__": 112 + "__id__": 116 }, { - "__id__": 115 + "__id__": 119 } ], "_active": true, "_components": [ { - "__id__": 119 + "__id__": 123 }, { - "__id__": 120 + "__id__": 124 }, { - "__id__": 122 + "__id__": 126 } ], "_prefab": { - "__id__": 123 + "__id__": 127 }, "_opacity": 255, "_color": { @@ -4143,17 +4276,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 108 + "__id__": 112 }, "_children": [], "_active": true, "_components": [ { - "__id__": 110 + "__id__": 114 } ], "_prefab": { - "__id__": 111 + "__id__": 115 }, "_opacity": 255, "_color": { @@ -4207,7 +4340,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 109 + "__id__": 113 }, "_enabled": true, "_materials": [ @@ -4239,7 +4372,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4252,17 +4385,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 108 + "__id__": 112 }, "_children": [], "_active": true, "_components": [ { - "__id__": 113 + "__id__": 117 } ], "_prefab": { - "__id__": 114 + "__id__": 118 }, "_opacity": 255, "_color": { @@ -4316,7 +4449,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 112 + "__id__": 116 }, "_enabled": true, "_materials": [ @@ -4347,7 +4480,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4360,20 +4493,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 108 + "__id__": 112 }, "_children": [], "_active": true, "_components": [ { - "__id__": 116 + "__id__": 120 }, { - "__id__": 117 + "__id__": 121 } ], "_prefab": { - "__id__": 118 + "__id__": 122 }, "_opacity": 255, "_color": { @@ -4427,7 +4560,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 115 + "__id__": 119 }, "_enabled": true, "_materials": [ @@ -4460,7 +4593,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 115 + "__id__": 119 }, "_enabled": true, "_color": { @@ -4476,7 +4609,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4489,7 +4622,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 108 + "__id__": 112 }, "_enabled": true, "_materials": [ @@ -4523,7 +4656,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 108 + "__id__": 112 }, "_enabled": true, "_normalMaterial": null, @@ -4532,7 +4665,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 121 + "__id__": 125 } ], "_N$interactable": true, @@ -4588,7 +4721,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 108 + "__id__": 112 }, "_id": "" }, @@ -4605,7 +4738,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 108 + "__id__": 112 }, "_enabled": true, "label": null, @@ -4615,7 +4748,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4628,33 +4761,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 125 + "__id__": 129 }, { - "__id__": 128 + "__id__": 132 }, { - "__id__": 131 + "__id__": 135 } ], "_active": true, "_components": [ { - "__id__": 135 + "__id__": 139 }, { - "__id__": 136 + "__id__": 140 }, { - "__id__": 138 + "__id__": 142 } ], "_prefab": { - "__id__": 139 + "__id__": 143 }, "_opacity": 255, "_color": { @@ -4708,17 +4841,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 124 + "__id__": 128 }, "_children": [], "_active": true, "_components": [ { - "__id__": 126 + "__id__": 130 } ], "_prefab": { - "__id__": 127 + "__id__": 131 }, "_opacity": 255, "_color": { @@ -4772,7 +4905,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 125 + "__id__": 129 }, "_enabled": true, "_materials": [ @@ -4804,7 +4937,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4817,17 +4950,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 124 + "__id__": 128 }, "_children": [], "_active": true, "_components": [ { - "__id__": 129 + "__id__": 133 } ], "_prefab": { - "__id__": 130 + "__id__": 134 }, "_opacity": 255, "_color": { @@ -4881,7 +5014,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 128 + "__id__": 132 }, "_enabled": true, "_materials": [ @@ -4912,7 +5045,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4925,20 +5058,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 124 + "__id__": 128 }, "_children": [], "_active": true, "_components": [ { - "__id__": 132 + "__id__": 136 }, { - "__id__": 133 + "__id__": 137 } ], "_prefab": { - "__id__": 134 + "__id__": 138 }, "_opacity": 255, "_color": { @@ -4992,7 +5125,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 131 + "__id__": 135 }, "_enabled": true, "_materials": [ @@ -5025,7 +5158,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 131 + "__id__": 135 }, "_enabled": true, "_color": { @@ -5041,7 +5174,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5054,7 +5187,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 128 }, "_enabled": true, "_materials": [ @@ -5088,7 +5221,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 128 }, "_enabled": true, "_normalMaterial": null, @@ -5097,7 +5230,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 137 + "__id__": 141 } ], "_N$interactable": true, @@ -5153,7 +5286,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 124 + "__id__": 128 }, "_id": "" }, @@ -5170,7 +5303,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 128 }, "_enabled": true, "label": null, @@ -5180,7 +5313,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5193,33 +5326,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 141 + "__id__": 145 }, { - "__id__": 144 + "__id__": 148 }, { - "__id__": 147 + "__id__": 151 } ], "_active": true, "_components": [ { - "__id__": 151 + "__id__": 155 }, { - "__id__": 152 + "__id__": 156 }, { - "__id__": 154 + "__id__": 158 } ], "_prefab": { - "__id__": 155 + "__id__": 159 }, "_opacity": 255, "_color": { @@ -5273,17 +5406,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 144 }, "_children": [], "_active": true, "_components": [ { - "__id__": 142 + "__id__": 146 } ], "_prefab": { - "__id__": 143 + "__id__": 147 }, "_opacity": 255, "_color": { @@ -5337,7 +5470,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 141 + "__id__": 145 }, "_enabled": true, "_materials": [ @@ -5369,7 +5502,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5382,17 +5515,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 144 }, "_children": [], "_active": true, "_components": [ { - "__id__": 145 + "__id__": 149 } ], "_prefab": { - "__id__": 146 + "__id__": 150 }, "_opacity": 255, "_color": { @@ -5446,7 +5579,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 144 + "__id__": 148 }, "_enabled": true, "_materials": [ @@ -5477,7 +5610,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5490,20 +5623,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 144 }, "_children": [], "_active": true, "_components": [ { - "__id__": 148 + "__id__": 152 }, { - "__id__": 149 + "__id__": 153 } ], "_prefab": { - "__id__": 150 + "__id__": 154 }, "_opacity": 255, "_color": { @@ -5557,7 +5690,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 147 + "__id__": 151 }, "_enabled": true, "_materials": [ @@ -5590,7 +5723,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 147 + "__id__": 151 }, "_enabled": true, "_color": { @@ -5606,7 +5739,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5619,7 +5752,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 140 + "__id__": 144 }, "_enabled": true, "_materials": [ @@ -5653,7 +5786,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 140 + "__id__": 144 }, "_enabled": true, "_normalMaterial": null, @@ -5662,7 +5795,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 153 + "__id__": 157 } ], "_N$interactable": true, @@ -5718,7 +5851,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 140 + "__id__": 144 }, "_id": "" }, @@ -5735,7 +5868,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 140 + "__id__": 144 }, "_enabled": true, "label": null, @@ -5745,7 +5878,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5758,33 +5891,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 157 + "__id__": 161 }, { - "__id__": 160 + "__id__": 164 }, { - "__id__": 163 + "__id__": 167 } ], "_active": true, "_components": [ { - "__id__": 167 + "__id__": 171 }, { - "__id__": 168 + "__id__": 172 }, { - "__id__": 170 + "__id__": 174 } ], "_prefab": { - "__id__": 171 + "__id__": 175 }, "_opacity": 255, "_color": { @@ -5838,17 +5971,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 156 + "__id__": 160 }, "_children": [], "_active": true, "_components": [ { - "__id__": 158 + "__id__": 162 } ], "_prefab": { - "__id__": 159 + "__id__": 163 }, "_opacity": 255, "_color": { @@ -5902,7 +6035,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 157 + "__id__": 161 }, "_enabled": true, "_materials": [ @@ -5934,7 +6067,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5947,17 +6080,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 156 + "__id__": 160 }, "_children": [], "_active": true, "_components": [ { - "__id__": 161 + "__id__": 165 } ], "_prefab": { - "__id__": 162 + "__id__": 166 }, "_opacity": 255, "_color": { @@ -6011,7 +6144,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 160 + "__id__": 164 }, "_enabled": true, "_materials": [ @@ -6042,7 +6175,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6055,20 +6188,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 156 + "__id__": 160 }, "_children": [], "_active": true, "_components": [ { - "__id__": 164 + "__id__": 168 }, { - "__id__": 165 + "__id__": 169 } ], "_prefab": { - "__id__": 166 + "__id__": 170 }, "_opacity": 255, "_color": { @@ -6122,7 +6255,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 163 + "__id__": 167 }, "_enabled": true, "_materials": [ @@ -6155,7 +6288,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 163 + "__id__": 167 }, "_enabled": true, "_color": { @@ -6171,7 +6304,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6184,7 +6317,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 156 + "__id__": 160 }, "_enabled": true, "_materials": [ @@ -6218,7 +6351,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 156 + "__id__": 160 }, "_enabled": true, "_normalMaterial": null, @@ -6227,7 +6360,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 169 + "__id__": 173 } ], "_N$interactable": true, @@ -6283,7 +6416,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 156 + "__id__": 160 }, "_id": "" }, @@ -6300,7 +6433,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 156 + "__id__": 160 }, "_enabled": true, "label": null, @@ -6310,7 +6443,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6323,33 +6456,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 173 + "__id__": 177 }, { - "__id__": 176 + "__id__": 180 }, { - "__id__": 179 + "__id__": 183 } ], "_active": true, "_components": [ { - "__id__": 183 + "__id__": 187 }, { - "__id__": 184 + "__id__": 188 }, { - "__id__": 186 + "__id__": 190 } ], "_prefab": { - "__id__": 187 + "__id__": 191 }, "_opacity": 255, "_color": { @@ -6403,17 +6536,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 172 + "__id__": 176 }, "_children": [], "_active": true, "_components": [ { - "__id__": 174 + "__id__": 178 } ], "_prefab": { - "__id__": 175 + "__id__": 179 }, "_opacity": 255, "_color": { @@ -6467,7 +6600,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 173 + "__id__": 177 }, "_enabled": true, "_materials": [ @@ -6499,7 +6632,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6512,17 +6645,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 172 + "__id__": 176 }, "_children": [], "_active": true, "_components": [ { - "__id__": 177 + "__id__": 181 } ], "_prefab": { - "__id__": 178 + "__id__": 182 }, "_opacity": 255, "_color": { @@ -6576,7 +6709,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 176 + "__id__": 180 }, "_enabled": true, "_materials": [ @@ -6607,7 +6740,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6620,20 +6753,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 172 + "__id__": 176 }, "_children": [], "_active": true, "_components": [ { - "__id__": 180 + "__id__": 184 }, { - "__id__": 181 + "__id__": 185 } ], "_prefab": { - "__id__": 182 + "__id__": 186 }, "_opacity": 255, "_color": { @@ -6687,7 +6820,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 179 + "__id__": 183 }, "_enabled": true, "_materials": [ @@ -6720,7 +6853,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 179 + "__id__": 183 }, "_enabled": true, "_color": { @@ -6736,7 +6869,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6749,7 +6882,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 172 + "__id__": 176 }, "_enabled": true, "_materials": [ @@ -6783,7 +6916,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 172 + "__id__": 176 }, "_enabled": true, "_normalMaterial": null, @@ -6792,7 +6925,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 185 + "__id__": 189 } ], "_N$interactable": true, @@ -6848,7 +6981,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 172 + "__id__": 176 }, "_id": "" }, @@ -6865,7 +6998,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 172 + "__id__": 176 }, "_enabled": true, "label": null, @@ -6875,7 +7008,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6888,33 +7021,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 189 + "__id__": 193 }, { - "__id__": 192 + "__id__": 196 }, { - "__id__": 195 + "__id__": 199 } ], "_active": true, "_components": [ { - "__id__": 199 + "__id__": 203 }, { - "__id__": 200 + "__id__": 204 }, { - "__id__": 202 + "__id__": 206 } ], "_prefab": { - "__id__": 203 + "__id__": 207 }, "_opacity": 255, "_color": { @@ -6968,17 +7101,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 188 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 190 + "__id__": 194 } ], "_prefab": { - "__id__": 191 + "__id__": 195 }, "_opacity": 255, "_color": { @@ -7032,7 +7165,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 189 + "__id__": 193 }, "_enabled": true, "_materials": [ @@ -7064,7 +7197,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7077,17 +7210,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 188 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 193 + "__id__": 197 } ], "_prefab": { - "__id__": 194 + "__id__": 198 }, "_opacity": 255, "_color": { @@ -7141,7 +7274,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 192 + "__id__": 196 }, "_enabled": true, "_materials": [ @@ -7172,7 +7305,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7185,20 +7318,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 188 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 196 + "__id__": 200 }, { - "__id__": 197 + "__id__": 201 } ], "_prefab": { - "__id__": 198 + "__id__": 202 }, "_opacity": 255, "_color": { @@ -7252,7 +7385,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 195 + "__id__": 199 }, "_enabled": true, "_materials": [ @@ -7285,7 +7418,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 195 + "__id__": 199 }, "_enabled": true, "_color": { @@ -7301,7 +7434,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7314,7 +7447,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 188 + "__id__": 192 }, "_enabled": true, "_materials": [ @@ -7348,7 +7481,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 188 + "__id__": 192 }, "_enabled": true, "_normalMaterial": null, @@ -7357,7 +7490,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 201 + "__id__": 205 } ], "_N$interactable": true, @@ -7413,7 +7546,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 188 + "__id__": 192 }, "_id": "" }, @@ -7430,7 +7563,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 188 + "__id__": 192 }, "_enabled": true, "label": null, @@ -7440,7 +7573,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7464,7 +7597,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 63 + "__id__": 67 }, "_enabled": true, "alignMode": 0, @@ -7519,14 +7652,14 @@ "_active": true, "_components": [ { - "__id__": 209 + "__id__": 213 }, { - "__id__": 210 + "__id__": 214 } ], "_prefab": { - "__id__": 211 + "__id__": 215 }, "_opacity": 150, "_color": { @@ -7580,7 +7713,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 208 + "__id__": 212 }, "_enabled": true, "_materials": [ @@ -7612,7 +7745,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 208 + "__id__": 212 }, "_enabled": true, "_id": "" @@ -7639,14 +7772,14 @@ "_active": true, "_components": [ { - "__id__": 213 + "__id__": 217 }, { - "__id__": 214 + "__id__": 218 } ], "_prefab": { - "__id__": 215 + "__id__": 219 }, "_opacity": 150, "_color": { @@ -7700,7 +7833,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 212 + "__id__": 216 }, "_enabled": true, "_materials": [ @@ -7732,7 +7865,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 212 + "__id__": 216 }, "_enabled": true, "_id": "" @@ -7748,108 +7881,6 @@ "fileId": "c5IbgSqWhDerwgA0hdz30t", "sync": false }, - { - "__type__": "cc.Node", - "_name": "Top", - "_objFlags": 0, - "_parent": { - "__id__": 1 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 217 - } - ], - "_prefab": { - "__id__": 218 - }, - "_opacity": 255, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 0, - "height": 0 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_trs": { - "__type__": "TypedArray", - "ctor": "Float64Array", - "array": [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1 - ] - }, - "_eulerAngles": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_skewX": 0, - "_skewY": 0, - "_is3DNode": false, - "_groupIndex": 0, - "groupIndex": 0, - "_id": "" - }, - { - "__type__": "cc.Widget", - "_name": "", - "_objFlags": 0, - "node": { - "__id__": 216 - }, - "_enabled": true, - "alignMode": 1, - "_target": null, - "_alignFlags": 0, - "_left": 0, - "_right": 0, - "_top": 0, - "_bottom": 0, - "_verticalCenter": 0, - "_horizontalCenter": 0, - "_isAbsLeft": true, - "_isAbsRight": true, - "_isAbsTop": true, - "_isAbsBottom": true, - "_isAbsHorizontalCenter": true, - "_isAbsVerticalCenter": true, - "_originalWidth": 0, - "_originalHeight": 0, - "_id": "" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "e5881p4DhA2o2G5SieRWXh", - "sync": false - }, { "__type__": "48bfeZuYFZE2qmgxbW2IigB", "_name": "", @@ -7862,7 +7893,7 @@ "__id__": 1 }, "itemList": { - "__id__": 69 + "__id__": 73 }, "_id": "" }, diff --git a/library/uuid-to-mtime.json b/library/uuid-to-mtime.json index 1dee128..71877df 100644 --- a/library/uuid-to-mtime.json +++ b/library/uuid-to-mtime.json @@ -1,3652 +1,3657 @@ { "2e3d6223-9889-4122-8121-c6d837f5367e": { - "asset": 1750920249178, - "meta": 1751250884665, + "asset": 1751270412198, + "meta": 1751270454721, "relativePath": "migration" }, "29f52784-2fca-467b-92e7-8fd9ef8c57b7": { - "asset": 1751264990546, - "meta": 1751265754020, + "asset": 1751270412038, + "meta": 1751270454721, "relativePath": "Scene" }, "4734c20c-0db8-4eb2-92ea-e692f4d70934": { - "asset": 1751264990552, - "meta": 1751265754021, + "asset": 1751270412078, + "meta": 1751270454721, "relativePath": "Script" }, "7a231473-d1df-4b05-8620-6376c36252c1": { - "asset": 1594224021434, - "meta": 1715325874879, + "asset": 1751270412197, + "meta": 1751270454795, "relativePath": "migration\\use_v2.1-2.2.1_cc.Toggle_event.js" }, "7c1d6faa-66b9-4423-aa04-8c38a15768cf": { - "asset": 1751264990560, - "meta": 1751265754016, + "asset": 1751270412154, + "meta": 1751270454719, "relativePath": "animation" }, "6ebfe2d9-539a-4853-8b16-fca5c89cf2ce": { - "asset": 1750920249210, - "meta": 1751279112478, + "asset": 1751270412222, + "meta": 1751270454721, "relativePath": "music" }, "bf3935ca-518a-42f4-84e4-ad96badfd1b4": { - "asset": 1751265193383, - "meta": 1751265754017, + "asset": 1751270449712, + "meta": 1751270454721, "relativePath": "prefab" }, "52e78fe3-9095-42ad-8e4d-f9bb12dc69ce": { - "asset": 1750920249997, - "meta": 1751250884680, + "asset": 1751270412424, + "meta": 1751270454721, "relativePath": "resources" }, "2880dc26-5b38-48bd-baba-daaec97499cb": { - "asset": 1751268493348, - "meta": 1751268533997, + "asset": 1751270449712, + "meta": 1751270454721, "relativePath": "res" }, "eaa8b84d-69d0-4170-9f7d-8179ea948cde": { - "asset": 1750920250218, - "meta": 1751250884714, + "asset": 1751270412072, + "meta": 1751270455624, "relativePath": "Script\\module" }, "8848cd9b-8115-456d-a656-2abcda1dadbe": { - "asset": 1750920250186, - "meta": 1751250884733, + "asset": 1751270412063, + "meta": 1751270456822, "relativePath": "Script\\module\\Config" }, "13a0b173-d59e-4a9d-b5e3-4dbe4dc37cc1": { - "asset": 1750920250186, - "meta": 1751250884733, + "asset": 1751270412065, + "meta": 1751270456823, "relativePath": "Script\\module\\Crypto" }, "b4e113c6-a987-4133-bfa0-3355d8ab4bd1": { - "asset": 1750920250202, - "meta": 1751250884735, + "asset": 1751270412066, + "meta": 1751270456824, "relativePath": "Script\\module\\GameStart" }, "0487cacb-b94a-4ab6-a301-b6402ab0ac5d": { - "asset": 1750920250202, - "meta": 1751250884735, + "asset": 1751270412067, + "meta": 1751270456825, "relativePath": "Script\\module\\Music" }, "ff6560d9-676d-42ad-8ec7-e44acb84ad9e": { - "asset": 1750920250202, - "meta": 1751250884735, + "asset": 1751270412068, + "meta": 1751270456826, "relativePath": "Script\\module\\Notification" }, "d3520299-33dc-43d2-b522-d424efb5575d": { - "asset": 1750920250218, - "meta": 1751250884737, + "asset": 1751270412070, + "meta": 1751270456829, "relativePath": "Script\\module\\RankList" }, "2af8f2ef-b8a0-43ad-a144-ef4a887f2fa9": { - "asset": 1750920250218, - "meta": 1751250884740, + "asset": 1751270412072, + "meta": 1751270456830, "relativePath": "Script\\module\\Storage" }, "2a81f82d-8d16-44af-b947-44eea4dde54f": { - "asset": 1750920250234, - "meta": 1751250884741, + "asset": 1751270412073, + "meta": 1751270456830, "relativePath": "Script\\module\\Tool" }, "e64e1a97-c93f-4257-ab34-80341d8ff79d": { - "asset": 1627607030000, - "meta": 1718260711110, + "asset": 1751270412065, + "meta": 1751270457972, "relativePath": "Script\\module\\Crypto\\crypto-js.min.js" }, "55403563-1a5a-4f2f-9eb8-82c762641837": { - "asset": 1718260279375, - "meta": 1718260711215, + "asset": 1751270412068, + "meta": 1751270458024, "relativePath": "Script\\module\\Notification\\Notification.ts" }, "5c9b8159-89a3-4b32-b303-b3d4f7ac1c9f": { - "asset": 1626178655932, - "meta": 1718265038280, + "asset": 1751270412041, + "meta": 1751270455204, "relativePath": "Script\\DynamicAtlasManager.js" }, "2cddbdcb-5dba-4b13-960c-9ebe6d17a7db": { - "asset": 1718692696758, - "meta": 1719800322876, + "asset": 1751270412251, + "meta": 1751270456501, "relativePath": "resources\\Json\\LEVEL_INFO.json" }, "066e91c2-fc55-407c-b061-9e4de4a9f224": { - "asset": 1750920249666, - "meta": 1751250884706, + "asset": 1751270412346, + "meta": 1751270454831, "relativePath": "resources\\Json" }, "e8b23e56-8d10-44ad-a8f0-2e637cc45533": { - "asset": 1718681194622, - "meta": 1718681195177, + "asset": 1751270412042, + "meta": 1751270455348, "relativePath": "Script\\GameScene.js" }, "e92938d8-5d93-4823-8770-fd489523a2f5": { - "asset": 1751264990554, - "meta": 1751265754026, + "asset": 1751270412153, + "meta": 1751270455832, "relativePath": "UI\\UI" }, "bdc76845-baea-4381-911e-af437cccf839": { - "asset": 1750920250218, - "meta": 1751250884739, + "asset": 1751270412071, + "meta": 1751270456829, "relativePath": "Script\\module\\Share" }, "b42c4fc1-4cd1-4b12-b206-930cea3d49ca": { - "asset": 1720419330469, - "meta": 1720607873884, + "asset": 1751270412070, + "meta": 1751270457054, "relativePath": "Script\\module\\Share.zip" }, "d54211e0-2d28-4528-88e3-e5fd7c9b59a2": { - "asset": 1721812722990, - "meta": 1721814802300, + "asset": 1751270412069, + "meta": 1751270458124, "relativePath": "Script\\module\\RankList\\List.ts" }, "e74a9f7d-2031-4e69-bcb2-9998174088b2": { - "asset": 1722825953945, - "meta": 1722825954677, + "asset": 1751270412048, + "meta": 1751270455729, "relativePath": "Script\\RankManager.ts" }, "9c08062d-4cf1-4b6e-a8ba-4a3881cc7e7d": { - "asset": 1751279191682, - "meta": 1751279191687, - "relativePath": "StartScene\\LoadScene.fire" + "asset": 1751270412038, + "meta": 1751270455128, + "relativePath": "Scene\\LoadScene.fire" }, "93c9bdf3-8205-46e5-a8f1-3576b0dbc836": { - "asset": 1750920250250, - "meta": 1751250884715, + "asset": 1751270412052, + "meta": 1751270455785, "relativePath": "Script\\Sdk" }, "ca0f9934-a015-436e-9402-f8e30d4c5de6": { - "asset": 1725446198136, - "meta": 1725446199111, + "asset": 1751270412069, + "meta": 1751270458036, "relativePath": "Script\\module\\RankList\\ItemRender.ts" }, "3bad2bb2-3b0e-4ccc-bab7-6f983d6879f6": { - "asset": 1725867716734, - "meta": 1725867724437, + "asset": 1751270412053, + "meta": 1751270455827, "relativePath": "Script\\Window.ts" }, "e35ab717-e554-40a0-8b4e-ea6805718c97": { - "asset": 1725869717168, - "meta": 1725869717675, + "asset": 1751270412041, + "meta": 1751270455190, "relativePath": "Script\\ControlManager.ts" }, "771a3d9a-4013-4654-a777-fbaea0c93280": { - "asset": 1744193262345, - "meta": 1744193408326, + "asset": 1751270412064, + "meta": 1751270457985, "relativePath": "Script\\module\\Crypto\\HttpUtil.ts" }, "dbc5acf2-1061-4d14-a2c5-61c3b03f302f": { - "asset": 1751264990561, - "meta": 1751265754022, + "asset": 1751270412225, + "meta": 1751270454820, "relativePath": "prefab\\map" }, "805c69df-dfdf-4759-97ae-5a7341f424c7": { - "asset": 1742440857125, - "meta": 1742440898761, + "asset": 1751270412041, + "meta": 1751270455340, "relativePath": "Script\\GameOver.ts" }, "4fc739bf-784a-4b9a-b36f-3752a98df628": { - "asset": 1750920249147, - "meta": 1751250884665, + "asset": 1751270412194, + "meta": 1751270454720, "relativePath": "effect" }, "edf0e3d4-4233-4e7b-a725-a1a37209b53a": { - "asset": 1744016572170, - "meta": 1748437823787, + "asset": 1751270412177, + "meta": 1751270454761, "relativePath": "effect\\mohu.effect" }, "4b6dcf92-bde1-46a0-9d58-f3abd25cd3fd": { - "asset": 1744021741725, - "meta": 1748437823777, + "asset": 1751270412161, + "meta": 1751270454753, "relativePath": "effect\\full.effect" }, "7929eb2c-aa5c-4d48-bceb-0312f46aede8": { - "asset": 1750920250250, - "meta": 1751250884715, + "asset": 1751270412077, + "meta": 1751270455709, "relativePath": "Script\\prop" }, "c390fa89-6858-4fdd-a0df-42f78cb37275": { - "asset": 1750920249242, - "meta": 1751250884702, + "asset": 1751270412233, + "meta": 1751270454820, "relativePath": "prefab\\prop" }, "92465aa7-5132-43c3-9493-ab5b7ba1e968": { - "asset": 1744100334038, - "meta": 1744100338251, + "asset": 1751270412076, + "meta": 1751270456874, "relativePath": "Script\\prop\\Key.ts" }, "a496b103-90e1-421c-94c5-500167b26227": { - "asset": 1749019402739, - "meta": 1749019402742, + "asset": 1751270412230, + "meta": 1751270456028, "relativePath": "prefab\\prop\\key.prefab" }, "725f6dd5-18b0-44f9-997a-d89b23ac1fc0": { - "asset": 1749019413554, - "meta": 1749019413559, + "asset": 1751270412231, + "meta": 1751270456028, "relativePath": "prefab\\prop\\lock.prefab" }, "a99d5bb3-6216-4c6e-bfb6-f793289870df": { - "asset": 1749118099108, - "meta": 1749118099113, + "asset": 1751270412229, + "meta": 1751270456028, "relativePath": "prefab\\prop\\heng.prefab" }, "b5a00886-b32d-4185-a4a6-fd9f7a8dbe90": { - "asset": 1749118121705, - "meta": 1749118121709, + "asset": 1751270412232, + "meta": 1751270456112, "relativePath": "prefab\\prop\\shu.prefab" }, "7290c680-dfdc-4c59-9736-a614cc2a8bcf": { - "asset": 1744193586570, - "meta": 1744193608920, + "asset": 1751270412070, + "meta": 1751270458132, "relativePath": "Script\\module\\Share\\share.ts" }, "75a77063-a5a9-456a-8b4f-bfde10c137e8": { - "asset": 1751254988503, - "meta": 1751254988509, + "asset": 1751270412225, + "meta": 1751270455992, "relativePath": "prefab\\map\\turn_Wall.prefab" }, "0cf46635-8a58-4196-b24e-d075875778d0": { - "asset": 1749019434200, - "meta": 1749019434204, + "asset": 1751270412227, + "meta": 1751270456018, "relativePath": "prefab\\prop\\boom.prefab" }, "7d8008d1-2a44-467e-a492-ddf8527addba": { - "asset": 1744794871178, - "meta": 1744794875511, + "asset": 1751270412073, + "meta": 1751270455678, "relativePath": "Script\\peizhi.ts" }, "4e7ff711-8a91-49f7-8580-bf07609eaaa9": { - "asset": 1751265193385, - "meta": 1751265754024, + "asset": 1751270449725, + "meta": 1751270454835, "relativePath": "resources\\prefab" }, "a500df91-fa68-49df-9b91-3087fab64e20": { - "asset": 1750920249966, - "meta": 1751250884729, + "asset": 1751270412439, + "meta": 1751270456563, "relativePath": "resources\\prefab\\block" }, "2ea4f287-fa08-4f3e-8c66-6f9738b0fd0a": { - "asset": 1751254201731, - "meta": 1751254201740, + "asset": 1751270412426, + "meta": 1751270457532, "relativePath": "resources\\prefab\\block\\block11.prefab" }, "3f275c96-62b0-417f-9224-aeb073192f1d": { - "asset": 1751254116544, - "meta": 1751254116553, + "asset": 1751270412427, + "meta": 1751270457534, "relativePath": "resources\\prefab\\block\\block12.prefab" }, "4c1187d9-40bd-4210-acd7-0eecf4b2706f": { - "asset": 1751266378121, - "meta": 1751266378128, + "asset": 1751270412427, + "meta": 1751270457542, "relativePath": "resources\\prefab\\block\\block13.prefab" }, "4df8b354-d4c6-4219-852d-37ea032eb450": { - "asset": 1751254149832, - "meta": 1751254149842, + "asset": 1751270412430, + "meta": 1751270457549, "relativePath": "resources\\prefab\\block\\block16.prefab" }, "b54f9b14-fdec-476f-98f8-f0a519f7e844": { - "asset": 1751254134219, - "meta": 1751254134229, + "asset": 1751270412428, + "meta": 1751270457551, "relativePath": "resources\\prefab\\block\\block14.prefab" }, "fe980cba-a552-4d61-a357-19c19262f33e": { - "asset": 1751254156589, - "meta": 1751254156598, + "asset": 1751270412431, + "meta": 1751270457554, "relativePath": "resources\\prefab\\block\\block17.prefab" }, "6acd6f05-53d0-4866-b1a3-3fdc05bea16e": { - "asset": 1751254176591, - "meta": 1751254176601, + "asset": 1751270412434, + "meta": 1751270457565, "relativePath": "resources\\prefab\\block\\block20.prefab" }, "be5782f3-3dc7-43b8-a66a-ec50c83d0077": { - "asset": 1751254142921, - "meta": 1751254142932, + "asset": 1751270412429, + "meta": 1751270457552, "relativePath": "resources\\prefab\\block\\block15.prefab" }, "3a3098c2-78cb-4f85-834f-9a282d864462": { - "asset": 1751254170279, - "meta": 1751254170289, + "asset": 1751270412433, + "meta": 1751270457557, "relativePath": "resources\\prefab\\block\\block19.prefab" }, "503530e7-cfb4-4bcb-ac38-d4dd3ce3d1af": { - "asset": 1751253683568, - "meta": 1751253683581, + "asset": 1751270412433, + "meta": 1751270457559, "relativePath": "resources\\prefab\\block\\block2.prefab" }, "bc027956-4f24-4f96-b705-359a19cccb53": { - "asset": 1751254182847, - "meta": 1751254182859, + "asset": 1751270412434, + "meta": 1751270457562, "relativePath": "resources\\prefab\\block\\block21.prefab" }, "59a8c009-6f37-4960-b842-18f457d55412": { - "asset": 1751254188354, - "meta": 1751254188362, + "asset": 1751270412435, + "meta": 1751270457563, "relativePath": "resources\\prefab\\block\\block22.prefab" }, "90a9eb51-3d7f-4094-add0-ad20f9379337": { - "asset": 1751253695382, - "meta": 1751253695395, + "asset": 1751270412436, + "meta": 1751270457570, "relativePath": "resources\\prefab\\block\\block3.prefab" }, "7e0a9fcf-7599-443b-814d-05bf5cca516a": { - "asset": 1751254071640, - "meta": 1751254071649, + "asset": 1751270412438, + "meta": 1751270457609, "relativePath": "resources\\prefab\\block\\block7.prefab" }, "5b0aa537-7f4b-4132-ac45-2101f453a688": { - "asset": 1751254083118, - "meta": 1751254083132, + "asset": 1751270412439, + "meta": 1751270457628, "relativePath": "resources\\prefab\\block\\block8.prefab" }, "0237ad36-2cdb-4e29-944a-8720564056bc": { - "asset": 1751254090308, - "meta": 1751254090317, + "asset": 1751270412439, + "meta": 1751270457985, "relativePath": "resources\\prefab\\block\\block9.prefab" }, "b38991fe-2e45-431c-8f23-974e7905dfaa": { - "asset": 1751254061691, - "meta": 1751254061700, + "asset": 1751270412438, + "meta": 1751270457604, "relativePath": "resources\\prefab\\block\\block6.prefab" }, "74a04df7-a212-4b10-b77c-99e06c88867a": { - "asset": 1750920249997, - "meta": 1751250884729, + "asset": 1751270412446, + "meta": 1751270456565, "relativePath": "resources\\prefab\\wall" }, "a63ade2f-c476-4f26-84e6-b978db27c435": { - "asset": 1751266992986, - "meta": 1751266992991, + "asset": 1751270412442, + "meta": 1751270458238, "relativePath": "resources\\prefab\\wall\\downRight.prefab" }, "fc41ae6e-8743-4057-86fa-bff2f8ff171b": { - "asset": 1751268863599, - "meta": 1751268863605, + "asset": 1751270412446, + "meta": 1751270458248, "relativePath": "resources\\prefab\\wall\\upRight.prefab" }, "a710c09b-ab49-4276-9660-b882fcff8b24": { - "asset": 1751266977982, - "meta": 1751266977987, + "asset": 1751270412441, + "meta": 1751270457990, "relativePath": "resources\\prefab\\wall\\downLeft.prefab" }, "2ad95b5e-51fe-4864-ad40-6743b8fac9d5": { - "asset": 1744881186883, - "meta": 1744881186886, + "asset": 1751270412231, + "meta": 1751270456111, "relativePath": "prefab\\prop\\risefall.prefab" }, "6023e99b-9806-44e9-8325-487a6cfdf3e5": { - "asset": 1751254255980, - "meta": 1751254255984, + "asset": 1751270412223, + "meta": 1751270455971, "relativePath": "prefab\\map\\MapBlock.prefab" }, "eec86efa-7642-410f-934a-7af388c0311a": { - "asset": 1749540308756, - "meta": 1749540308778, + "asset": 1751270412435, + "meta": 1751270457568, "relativePath": "resources\\prefab\\block\\block23.prefab" }, "b6ab43fe-8e9a-48ac-9dc9-9107a47de661": { - "asset": 1751268465856, - "meta": 1751268465862, + "asset": 1751270412442, + "meta": 1751270458240, "relativePath": "resources\\prefab\\wall\\left.prefab" }, "cef92b6b-13fd-44c8-a4af-848b55a7ba57": { - "asset": 1751268154576, - "meta": 1751268154583, + "asset": 1751270412441, + "meta": 1751270458026, "relativePath": "resources\\prefab\\wall\\down.prefab" }, "8600d9b3-b4ad-4c84-b458-42b4f31addcd": { - "asset": 1751268460610, - "meta": 1751268460618, + "asset": 1751270412443, + "meta": 1751270458242, "relativePath": "resources\\prefab\\wall\\right.prefab" }, "f0da65e3-27d4-43c7-9945-ace5c5d815e5": { - "asset": 1751268823943, - "meta": 1751268823948, + "asset": 1751270412444, + "meta": 1751270458245, "relativePath": "resources\\prefab\\wall\\up.prefab" }, "2873d380-eeb8-4805-af74-462d711f466a": { - "asset": 1751254098759, - "meta": 1751254098769, + "asset": 1751270412426, + "meta": 1751270457514, "relativePath": "resources\\prefab\\block\\block10.prefab" }, "e0e349ff-f854-45e4-9764-50b9babdd4f4": { - "asset": 1745394054739, - "meta": 1745394231033, + "asset": 1751270412074, + "meta": 1751270455702, "relativePath": "Script\\position.ts" }, "d773d6d6-5bab-40cf-a17e-6742f7217531": { - "asset": 1745396686155, - "meta": 1745396686598, + "asset": 1751270412077, + "meta": 1751270456885, "relativePath": "Script\\prop\\Star.ts" }, "2a1b17d6-1191-49f5-9d22-584e0776462b": { - "asset": 1745394376000, - "meta": 1745405584681, + "asset": 1751270412291, + "meta": 1751270456363, "relativePath": "resources\\Json\\level16.json" }, "b77a22b4-309b-44fa-abd8-2969a04f40c1": { - "asset": 1745397707000, - "meta": 1745405584684, + "asset": 1751270412292, + "meta": 1751270456365, "relativePath": "resources\\Json\\level18.json" }, "9b2dd653-8198-4221-b239-f531220b63e9": { - "asset": 1745403002000, - "meta": 1745405584687, + "asset": 1751270412295, + "meta": 1751270456369, "relativePath": "resources\\Json\\level22.json" }, "ecd6848d-38d5-46d2-996f-30b47678d91e": { - "asset": 1745403504000, - "meta": 1745405584693, + "asset": 1751270412297, + "meta": 1751270456369, "relativePath": "resources\\Json\\level24.json" }, "2982813d-b86d-476a-b7f0-4aa5db975110": { - "asset": 1745402187000, - "meta": 1745405584699, + "asset": 1751270412294, + "meta": 1751270456369, "relativePath": "resources\\Json\\level20.json" }, "051d3cb4-82a8-434d-8c54-db90891e921a": { - "asset": 1745404470000, - "meta": 1745405584707, + "asset": 1751270412300, + "meta": 1751270456378, "relativePath": "resources\\Json\\level27.json" }, "b70aeb1f-01ce-4fdd-be00-c62f1119cbcc": { - "asset": 1745404916000, - "meta": 1745405584708, + "asset": 1751270412300, + "meta": 1751270456380, "relativePath": "resources\\Json\\level28.json" }, "6ae06208-a2c9-4a04-8c00-afdf3893db50": { - "asset": 1745406160000, - "meta": 1745479622030, + "asset": 1751270412302, + "meta": 1751270456384, "relativePath": "resources\\Json\\level30.json" }, "8a0fe43e-e606-48f4-bed9-5354abd6ca9e": { - "asset": 1745405636000, - "meta": 1745479622030, + "asset": 1751270412301, + "meta": 1751270456381, "relativePath": "resources\\Json\\level29.json" }, "18986fd3-d6c9-4343-9052-bb3bb4361be1": { - "asset": 1745487706000, - "meta": 1745550983303, + "asset": 1751270412302, + "meta": 1751270456386, "relativePath": "resources\\Json\\level31.json" }, "c6199a6f-b313-437d-8b9c-165e1466b659": { - "asset": 1745487716000, - "meta": 1745550983308, + "asset": 1751270412306, + "meta": 1751270456393, "relativePath": "resources\\Json\\level38.json" }, "33709cdd-1903-43f6-9791-ffcdeaefcf92": { - "asset": 1745465902000, - "meta": 1745479622062, + "asset": 1751270412305, + "meta": 1751270456391, "relativePath": "resources\\Json\\level36.json" }, "5a13c40d-c6ea-4902-a528-aa45a249bbd0": { - "asset": 1745475730000, - "meta": 1745479622062, + "asset": 1751270412306, + "meta": 1751270456396, "relativePath": "resources\\Json\\level39.json" }, "e95a2979-58a0-4f26-a874-6b1648ed524f": { - "asset": 1745486441000, - "meta": 1745550983337, + "asset": 1751270412309, + "meta": 1751270456403, "relativePath": "resources\\Json\\level43.json" }, "6e749de9-76c8-4528-8894-a6b38757e70a": { - "asset": 1745495270000, - "meta": 1745550983365, + "asset": 1751270412315, + "meta": 1751270456416, "relativePath": "resources\\Json\\level50.json" }, "806d1742-26ea-42a9-ac9e-4be66adb4122": { - "asset": 1745488624000, - "meta": 1745550983355, + "asset": 1751270412312, + "meta": 1751270456411, "relativePath": "resources\\Json\\level47.json" }, "15e917cb-b4e4-4694-a025-45bd3a31ccc3": { - "asset": 1751254163888, - "meta": 1751254163897, + "asset": 1751270412432, + "meta": 1751270457556, "relativePath": "resources\\prefab\\block\\block18.prefab" }, "52958c6c-bab5-40a7-9e16-328fb1143a3a": { - "asset": 1745485058335, - "meta": 1745485470601, + "asset": 1751270412045, + "meta": 1751270455624, "relativePath": "Script\\MapBlock.ts" }, "d4a58722-34f3-4a67-a943-53c8c6a2f040": { - "asset": 1745548862095, - "meta": 1745550741559, + "asset": 1751270412134, + "meta": 1751270457577, "relativePath": "UI\\UI\\icon.png" }, "1024689e-c2b8-4ef4-91de-02732703334f": { - "asset": 1751267006288, - "meta": 1751267006293, + "asset": 1751270412445, + "meta": 1751270458242, "relativePath": "resources\\prefab\\wall\\upLeft.prefab" }, "340590d7-f501-4626-8c74-a8246476d27e": { - "asset": 1750920249273, - "meta": 1751250884704, + "asset": 1751270412241, + "meta": 1751270454829, "relativePath": "res\\spine" }, "34fa006b-b745-41c9-8260-44a60254952b": { - "asset": 1745742957504, - "meta": 1745821252684, + "asset": 1751270412241, + "meta": 1751270458514, "relativePath": "res\\spine\\破碎.plist" }, "c83397a1-d62d-4546-9599-4561e767d33f": { - "asset": 1744962657274, - "meta": 1745821252626, + "asset": 1751270412239, + "meta": 1751270456150, "relativePath": "res\\spine\\star.png" }, "e1d57e63-4f2f-467d-9c55-0a889d5533a8": { - "asset": 1745228724000, - "meta": 1745834136422, + "asset": 1751270412249, + "meta": 1751270456198, "relativePath": "resources\\Json\\CLICK_DATA.json" }, "8c09ea35-2933-437e-9de7-bb94ad1c019e": { - "asset": 1745315037000, - "meta": 1745834136423, + "asset": 1751270412253, + "meta": 1751270456217, "relativePath": "resources\\Json\\level10.json" }, "933d4cfc-5ecb-43c2-a7ec-f0b8ac153140": { - "asset": 1745317845000, - "meta": 1745834136424, + "asset": 1751270412274, + "meta": 1751270456305, "relativePath": "resources\\Json\\level13.json" }, "92dc8a08-509a-4c12-b296-f37d8e0bd4b7": { - "asset": 1745316492000, - "meta": 1745834136428, + "asset": 1751270412268, + "meta": 1751270456290, "relativePath": "resources\\Json\\level12.json" }, "7e2d7a92-92bd-4774-863b-73f079fd6f86": { - "asset": 1745316128000, - "meta": 1745834136430, + "asset": 1751270412259, + "meta": 1751270456264, "relativePath": "resources\\Json\\level11.json" }, "059e1eb6-2d96-4ad8-83c6-eb9c43d16925": { - "asset": 1745396864000, - "meta": 1745834136434, + "asset": 1751270412287, + "meta": 1751270456347, "relativePath": "resources\\Json\\level15.json" }, "4083be8e-2350-48c4-8beb-6df4c6173240": { - "asset": 1722322206000, - "meta": 1745834136438, + "asset": 1751270412252, + "meta": 1751270456201, "relativePath": "resources\\Json\\dayu_config.json" }, "e480c6e1-3b6f-479e-a4af-c06173b519ea": { - "asset": 1745828826000, - "meta": 1745834136448, + "asset": 1751270412291, + "meta": 1751270456365, "relativePath": "resources\\Json\\level17.json" }, "af87aa67-fec6-4e59-8e5c-e6a5331acc40": { - "asset": 1745309965000, - "meta": 1745834136451, + "asset": 1751270412315, + "meta": 1751270456414, "relativePath": "resources\\Json\\level5.json" }, "e2d961de-5add-4097-a2ba-cc92954a5747": { - "asset": 1745314309000, - "meta": 1745834136453, + "asset": 1751270412307, + "meta": 1751270456394, "relativePath": "resources\\Json\\level4.json" }, "2d69a479-18ec-4787-b35f-e9a9b3247435": { - "asset": 1718613752000, - "meta": 1745834136454, + "asset": 1751270412249, + "meta": 1751270456203, "relativePath": "resources\\Json\\GM_INFO.json" }, "d42cfa1a-14e6-427c-ad23-2cee3474ca86": { - "asset": 1745310786000, - "meta": 1745834136458, + "asset": 1751270412320, + "meta": 1751270456428, "relativePath": "resources\\Json\\level6.json" }, "c1046fe0-8030-42b7-80d1-002890db1a07": { - "asset": 1745314351000, - "meta": 1745834136460, + "asset": 1751270412333, + "meta": 1751270456454, "relativePath": "resources\\Json\\level8.json" }, "b4c32c3b-1ddc-47da-b926-093b56074e4f": { - "asset": 1745314622000, - "meta": 1745834136467, + "asset": 1751270412339, + "meta": 1751270456475, "relativePath": "resources\\Json\\level9.json" }, "ee202f7f-e6c8-47ef-b7fd-86021066be83": { - "asset": 1745313953000, - "meta": 1745834136473, + "asset": 1751270412325, + "meta": 1751270456442, "relativePath": "resources\\Json\\level7.json" }, "f4cdb20d-19b1-4bdf-ace4-709363ecabc5": { - "asset": 1745569874000, - "meta": 1745834136485, + "asset": 1751270412321, + "meta": 1751270456428, "relativePath": "resources\\Json\\level60.json" }, "7e27fe4e-f930-480a-8d92-0c3107d28e74": { - "asset": 1745570132000, - "meta": 1745834136486, + "asset": 1751270412321, + "meta": 1751270456432, "relativePath": "resources\\Json\\level61.json" }, "060510e3-3b32-4b9c-8f09-d72f9b820eda": { - "asset": 1745572200000, - "meta": 1745834136490, + "asset": 1751270412322, + "meta": 1751270456434, "relativePath": "resources\\Json\\level63.json" }, "c59bbf88-51e4-47a8-8290-7f93cd2e8748": { - "asset": 1745573247000, - "meta": 1745834136491, + "asset": 1751270412322, + "meta": 1751270456437, "relativePath": "resources\\Json\\level64.json" }, "ec4fd522-e3c4-4f7d-870c-f8a4e9ad722a": { - "asset": 1745830765000, - "meta": 1745834136492, + "asset": 1751270412323, + "meta": 1751270456435, "relativePath": "resources\\Json\\level65.json" }, "1b839414-50d7-4a44-92ce-e3ae734be929": { - "asset": 1745830634000, - "meta": 1745834136494, + "asset": 1751270412324, + "meta": 1751270456438, "relativePath": "resources\\Json\\level67.json" }, "baef7421-d845-44a8-b30c-616eb0b30b1f": { - "asset": 1745830758000, - "meta": 1745834136496, + "asset": 1751270412323, + "meta": 1751270456436, "relativePath": "resources\\Json\\level66.json" }, "257c6394-95e2-415a-b84f-aa8079faeb97": { - "asset": 1745834174348, - "meta": 1745834181067, + "asset": 1751270412280, + "meta": 1751270456329, "relativePath": "resources\\Json\\level14.json" }, "e08a7960-96e0-4c20-85a3-daecc3c215db": { - "asset": 1745834204964, - "meta": 1745834212082, + "asset": 1751270412321, + "meta": 1751270456433, "relativePath": "resources\\Json\\level62.json" }, "cb1d6907-6e2b-4c96-ae04-20f4be8eca78": { - "asset": 1750920250438, - "meta": 1751277532026, + "asset": 1751270412124, + "meta": 1751270454726, "relativePath": "UI" }, "a5a1fd16-fffe-4e74-8bf9-7fd966fce8b7": { - "asset": 1745999667397, - "meta": 1745999674098, + "asset": 1751270412297, + "meta": 1751270456369, "relativePath": "resources\\Json\\level23.json" }, "7575a6bd-a21d-491e-aad2-e40a189683e9": { - "asset": 1746000024920, - "meta": 1746000148798, + "asset": 1751270412200, + "meta": 1751270456360, "relativePath": "music\\hit.mp3" }, "ec293610-1767-46e8-b6b6-4a9a79ef2233": { - "asset": 1746000025640, - "meta": 1746000148800, + "asset": 1751270412200, + "meta": 1751270456356, "relativePath": "music\\down.mp3" }, "8d67c864-c7f4-4305-8b3b-2d66eb69e349": { - "asset": 1746000102638, - "meta": 1746000148801, + "asset": 1751270412220, + "meta": 1751270456358, "relativePath": "music\\xiaochu.mp3" }, + "61d4c718-db3b-4b31-8221-f16bea3cf030": { + "asset": 1751270412066, + "meta": 1751270457990, + "relativePath": "Script\\module\\GameStart\\GameAppStart.ts" + }, "825f4992-deeb-4f19-8c4e-9a65b191753b": { - "asset": 1750920249871, - "meta": 1751250884708, + "asset": 1751270412397, + "meta": 1751270454835, "relativePath": "resources\\Particle" }, "e3319d66-f8c4-44d7-8e31-d0decdefcacc": { - "asset": 1746003674850, - "meta": 1746003698356, + "asset": 1751270412303, + "meta": 1751270456387, "relativePath": "resources\\Json\\level32.json" }, "e382f149-9fe7-435f-b800-434f8203afe3": { - "asset": 1746004843292, - "meta": 1746004873879, + "asset": 1751270412304, + "meta": 1751270456389, "relativePath": "resources\\Json\\level35.json" }, "9a2c5cbb-404d-4802-8d16-b7dc44bc9b63": { - "asset": 1746005640491, - "meta": 1746005750406, + "asset": 1751270412303, + "meta": 1751270456388, "relativePath": "resources\\Json\\level33.json" }, "7271b947-0876-411a-816b-d6bb158d1490": { - "asset": 1746007994885, - "meta": 1746008162669, + "asset": 1751270412305, + "meta": 1751270456392, "relativePath": "resources\\Json\\level37.json" }, "c2861659-2172-4217-8bac-8daaca836f4f": { - "asset": 1746007574206, - "meta": 1746008162671, + "asset": 1751270412307, + "meta": 1751270456398, "relativePath": "resources\\Json\\level40.json" }, "9c856152-685e-4679-951a-e49978ae6b2a": { - "asset": 1746008540669, - "meta": 1746008542101, + "asset": 1751270412308, + "meta": 1751270456404, "relativePath": "resources\\Json\\level42.json" }, "36a3a2e9-11ae-4359-bb93-01f8f61c92bf": { - "asset": 1746008535367, - "meta": 1746008542107, + "asset": 1751270412308, + "meta": 1751270456399, "relativePath": "resources\\Json\\level41.json" }, "84916af2-bab0-43e5-91fc-07108bd831ed": { - "asset": 1746009877154, - "meta": 1746009887239, + "asset": 1751270412311, + "meta": 1751270456409, "relativePath": "resources\\Json\\level46.json" }, "55a0b4dc-93a3-4a1e-8238-bd44427943ae": { - "asset": 1746500414194, - "meta": 1746500461290, + "asset": 1751270412314, + "meta": 1751270456413, "relativePath": "resources\\Json\\level49.json" }, "10029dfc-5454-4977-bd11-8809e8f48cac": { - "asset": 1746683841330, - "meta": 1746683842661, + "asset": 1751270412072, + "meta": 1751270458136, "relativePath": "Script\\module\\Storage\\Storage.ts" }, "e98498e1-12bf-4280-8def-6f8e543fb934": { - "asset": 1747886188004, - "meta": 1747886188009, + "asset": 1751270412224, + "meta": 1751270455998, "relativePath": "prefab\\map\\reduce.prefab" }, "ca599214-e611-4461-8af3-a0de7d60ea53": { - "asset": 1746696453753, - "meta": 1746696482648, + "asset": 1751270412049, + "meta": 1751270455739, "relativePath": "Script\\Reduce.ts" }, "d2e9f95d-f8f9-45a8-8a3b-67a1f370a18d": { - "asset": 1746685509000, - "meta": 1746696858052, + "asset": 1751270412347, + "meta": 1751270458612, "relativePath": "resources\\Particle\\bot_1_1.plist" }, "3a6e128b-d998-4c0b-b1ff-762130a580a2": { - "asset": 1746685566000, - "meta": 1746696858052, + "asset": 1751270412350, + "meta": 1751270458617, "relativePath": "resources\\Particle\\bot_1_3.plist" }, "4386a35e-0b50-4e89-a827-6319df821ec2": { - "asset": 1746685533000, - "meta": 1746696858063, + "asset": 1751270412348, + "meta": 1751270458618, "relativePath": "resources\\Particle\\bot_1_2.plist" }, "a8a0985f-7251-4998-a641-c2333fbef6c6": { - "asset": 1746685740000, - "meta": 1746696858063, + "asset": 1751270412353, + "meta": 1751270458625, "relativePath": "resources\\Particle\\bot_2_3.plist" }, "d8d32fc1-13ba-435c-a2b5-b6afb5ead4c3": { - "asset": 1746685589000, - "meta": 1746696858064, + "asset": 1751270412350, + "meta": 1751270458621, "relativePath": "resources\\Particle\\bot_2_1.plist" }, "49e6cc86-2188-4109-87fd-e23e3a6bb1d3": { - "asset": 1746685761000, - "meta": 1746696858065, + "asset": 1751270412354, + "meta": 1751270458627, "relativePath": "resources\\Particle\\bot_3_1.plist" }, "cc1282c3-e268-4bbb-a5a6-895a475cfc7e": { - "asset": 1746696424000, - "meta": 1746696858065, + "asset": 1751270412355, + "meta": 1751270458630, "relativePath": "resources\\Particle\\bot_3_2.plist" }, "870ec0a5-ac62-49c6-b365-09e22bdf9448": { - "asset": 1746687083000, - "meta": 1746696858065, + "asset": 1751270412356, + "meta": 1751270458656, "relativePath": "resources\\Particle\\bot_3_3.plist" }, "cf99e49b-06ca-454a-9a13-29c4e96328c6": { - "asset": 1746686024000, - "meta": 1746696858066, + "asset": 1751270412357, + "meta": 1751270458663, "relativePath": "resources\\Particle\\left_1_1.plist" }, "b180f2e0-f364-4832-bcd7-c0727c15c5e0": { - "asset": 1746686056000, - "meta": 1746696858066, + "asset": 1751270412358, + "meta": 1751270458656, "relativePath": "resources\\Particle\\left_1_2.plist" }, "2cd94fa9-72c6-4357-88c2-697eeb061de3": { - "asset": 1746686397000, - "meta": 1746696858066, + "asset": 1751270412359, + "meta": 1751270458663, "relativePath": "resources\\Particle\\left_1_3.plist" }, "ed81d2b1-5dbe-4eca-a472-3a22134ea19e": { - "asset": 1746686875000, - "meta": 1746696858066, + "asset": 1751270412361, + "meta": 1751270458665, "relativePath": "resources\\Particle\\left_2_2.plist" }, "15604d4e-0b1d-47bb-ae71-6ddc8d6d8a96": { - "asset": 1746686907000, - "meta": 1746696858066, + "asset": 1751270412360, + "meta": 1751270458665, "relativePath": "resources\\Particle\\left_2_1.plist" }, "23f7b3b3-2805-44bf-8204-d1135244b9ae": { - "asset": 1746687038000, - "meta": 1746696858066, + "asset": 1751270412364, + "meta": 1751270458669, "relativePath": "resources\\Particle\\left_3_1.plist" }, "87bc6933-4c65-48f7-ac9e-347b2145d2ef": { - "asset": 1746686844000, - "meta": 1746696858066, + "asset": 1751270412362, + "meta": 1751270458666, "relativePath": "resources\\Particle\\left_2_3.plist" }, "e5c15f0a-718a-47b6-82dc-ea181130859b": { - "asset": 1746686810000, - "meta": 1746696858066, + "asset": 1751270412351, + "meta": 1751270458621, "relativePath": "resources\\Particle\\bot_2_2.plist" }, "9bcf0f0b-4390-407a-b338-9727ef89750a": { - "asset": 1746687057000, - "meta": 1746696858091, + "asset": 1751270412365, + "meta": 1751270458692, "relativePath": "resources\\Particle\\left_3_2.plist" }, "246d7311-437e-4184-8547-664b85645015": { - "asset": 1746687507000, - "meta": 1746696858091, + "asset": 1751270412367, + "meta": 1751270458700, "relativePath": "resources\\Particle\\right_1_1.plist" }, "abe40804-998a-4602-a647-ea4bffb74929": { - "asset": 1746693333000, - "meta": 1746696858091, + "asset": 1751270412368, + "meta": 1751270458702, "relativePath": "resources\\Particle\\right_1_2.plist" }, "471933f9-e1c4-4830-a7a4-db3e48eff87c": { - "asset": 1746694123000, - "meta": 1746696858091, + "asset": 1751270412372, + "meta": 1751270458712, "relativePath": "resources\\Particle\\right_2_3.plist" }, "523feab4-8c80-4417-90c3-47e34cf18f66": { - "asset": 1746687098000, - "meta": 1746696858098, + "asset": 1751270412366, + "meta": 1751270458702, "relativePath": "resources\\Particle\\left_3_3.plist" }, "259cbf2f-a53d-49c6-9c0d-c28875e8bcd4": { - "asset": 1746693363000, - "meta": 1746696858098, + "asset": 1751270412369, + "meta": 1751270458700, "relativePath": "resources\\Particle\\right_1_3.plist" }, "636f36f4-76c6-43be-b0de-95c017bc0749": { - "asset": 1746694419000, - "meta": 1746696858098, + "asset": 1751270412373, + "meta": 1751270458739, "relativePath": "resources\\Particle\\right_3_1.plist" }, "d6d986d6-5774-4d13-9207-4b44d4396852": { - "asset": 1746695341000, - "meta": 1746696858098, + "asset": 1751270412375, + "meta": 1751270458735, "relativePath": "resources\\Particle\\right_3_3.plist" }, "7d728925-7cba-4ba2-83ac-9902652f55bf": { - "asset": 1746693940000, - "meta": 1746696858098, + "asset": 1751270412370, + "meta": 1751270458702, "relativePath": "resources\\Particle\\right_2_1.plist" }, "40f60783-36f6-4831-b55c-3f7aef910438": { - "asset": 1746695524000, - "meta": 1746696858098, + "asset": 1751270412389, + "meta": 1751270458739, "relativePath": "resources\\Particle\\top_1_2.plist" }, "514ab07a-7f5c-46a5-87f0-88cb5dadc0cf": { - "asset": 1746695306000, - "meta": 1746696858098, + "asset": 1751270412374, + "meta": 1751270458739, "relativePath": "resources\\Particle\\right_3_2.plist" }, "01fcca73-6a36-405e-98fb-9e6f37cd2c13": { - "asset": 1746695365000, - "meta": 1746696858098, + "asset": 1751270412388, + "meta": 1751270458736, "relativePath": "resources\\Particle\\top_1_1.plist" }, "27f92c6a-8bde-4a6e-a6a9-9c187bba0ef9": { - "asset": 1746696103000, - "meta": 1746696858098, + "asset": 1751270412390, + "meta": 1751270458748, "relativePath": "resources\\Particle\\top_1_3.plist" }, "68e20e2a-61c1-4058-8cdb-4994aec5f8ce": { - "asset": 1746696176000, - "meta": 1746696858098, + "asset": 1751270412371, + "meta": 1751270458702, "relativePath": "resources\\Particle\\right_2_2.plist" }, "829311c5-ad5c-4756-9a8e-f0968c6e0162": { - "asset": 1746696154000, - "meta": 1746696858098, + "asset": 1751270412391, + "meta": 1751270458746, "relativePath": "resources\\Particle\\top_2_1.plist" }, "fe21168e-d899-4afc-82a6-e9c7585df025": { - "asset": 1746696263000, - "meta": 1746696858106, + "asset": 1751270412391, + "meta": 1751270458750, "relativePath": "resources\\Particle\\top_2_2.plist" }, "63e77e87-7700-4af5-afcc-c540b8af10a0": { - "asset": 1746696368000, - "meta": 1746696858106, + "asset": 1751270412396, + "meta": 1751270458800, "relativePath": "resources\\Particle\\top_3_3.plist" }, "1b494dbb-d786-4f0c-a69d-e4f4db0d889b": { - "asset": 1746696287000, - "meta": 1746696858106, + "asset": 1751270412392, + "meta": 1751270458798, "relativePath": "resources\\Particle\\top_2_3.plist" }, "75feb7e8-e734-4102-b055-93e74d5aed50": { - "asset": 1746696323000, - "meta": 1746696858114, + "asset": 1751270412393, + "meta": 1751270458791, "relativePath": "resources\\Particle\\top_3_1.plist" }, "89d0ea0c-b527-4f7a-a1da-9c0047f9e40e": { - "asset": 1746696349000, - "meta": 1746696858114, + "asset": 1751270412395, + "meta": 1751270458802, "relativePath": "resources\\Particle\\top_3_2.plist" }, "c5ee34da-68b8-453a-996d-dcb9cd04c942": { - "asset": 1751264990561, - "meta": 1751265754022, + "asset": 1751270412238, + "meta": 1751270454827, "relativePath": "res\\font" }, "297683d0-3b76-4fa0-befa-20deae2e66c4": { - "asset": 1746778758765, - "meta": 1746778759678, + "asset": 1751270412298, + "meta": 1751270456375, "relativePath": "resources\\Json\\level25.json" }, "5ed13d95-5b93-4407-b770-0dedeb674b0f": { - "asset": 1749038860317, - "meta": 1749038860321, + "asset": 1751270412228, + "meta": 1751270456026, "relativePath": "prefab\\prop\\freeze.prefab" }, "20379a36-3946-47df-b5c0-96ac9d277b7d": { - "asset": 1746779222301, - "meta": 1746779227524, + "asset": 1751270412310, + "meta": 1751270456408, "relativePath": "resources\\Json\\level45.json" }, "68eef335-f67e-41c3-a232-f99c4ea6797e": { - "asset": 1746779334200, - "meta": 1746779335071, + "asset": 1751270412310, + "meta": 1751270456407, "relativePath": "resources\\Json\\level44.json" }, "563da8e2-de9f-46ff-9eae-3f58663508f1": { - "asset": 1746524583000, - "meta": 1746779797923, + "asset": 1751270412329, + "meta": 1751270456447, "relativePath": "resources\\Json\\level74.json" }, "340d8651-c630-4ee0-a083-7835c3d0eb51": { - "asset": 1746524355000, - "meta": 1746779797924, + "asset": 1751270412328, + "meta": 1751270456446, "relativePath": "resources\\Json\\level73.json" }, "a059709c-98ea-4ff7-b95d-1147b409e547": { - "asset": 1746524898000, - "meta": 1746779797925, + "asset": 1751270412329, + "meta": 1751270456450, "relativePath": "resources\\Json\\level75.json" }, "9014f392-1f3d-42dc-820c-81454dde192d": { - "asset": 1746523884000, - "meta": 1746779797926, + "asset": 1751270412326, + "meta": 1751270456444, "relativePath": "resources\\Json\\level71.json" }, "6db06cce-ee05-4014-ac50-77f548822135": { - "asset": 1746524178000, - "meta": 1746779797927, + "asset": 1751270412327, + "meta": 1751270456445, "relativePath": "resources\\Json\\level72.json" }, "41916418-405c-4025-8e60-c3fdb4a83154": { - "asset": 1750920250375, - "meta": 1751272127053, + "asset": 1751270412091, + "meta": 1751270454726, "relativePath": "TextureBlock" }, "6713016b-5658-4a59-ac4a-ce9d84f47b8d": { - "asset": 1751264990553, - "meta": 1751265754025, + "asset": 1751270412123, + "meta": 1751270455832, "relativePath": "TextureBlock\\block" }, "8f9cd656-30c2-4d3f-88dd-ef00d02b3f3e": { - "asset": 1746782667237, - "meta": 1746785425448, + "asset": 1751270412101, + "meta": 1751270458863, "relativePath": "TextureBlock\\block\\block3.plist" }, "e29d7af1-7e79-4793-b052-bfeb02003e1b": { - "asset": 1746782737124, - "meta": 1746785425474, + "asset": 1751270412105, + "meta": 1751270458878, "relativePath": "TextureBlock\\block\\block4.plist" }, "4f97daea-3e76-4e62-b579-e2b6b25bffd2": { - "asset": 1746782810375, - "meta": 1746785425497, + "asset": 1751270412108, + "meta": 1751270458888, "relativePath": "TextureBlock\\block\\block5.plist" }, "f2c494b7-b6df-488f-b194-358235b0f180": { - "asset": 1749622717622, - "meta": 1749692957709, + "asset": 1751270412112, + "meta": 1751270458910, "relativePath": "TextureBlock\\block\\door.plist" }, "d01519e3-ffe3-4b8f-980b-50811cc6eb58": { - "asset": 1749622845471, - "meta": 1749692957651, + "asset": 1751270412114, + "meta": 1751270457451, "relativePath": "TextureBlock\\block\\door.png" }, "8be8182e-f38a-459c-875e-8b4c5d4c53ef": { - "asset": 1746782846484, - "meta": 1746785425326, + "asset": 1751270412111, + "meta": 1751270457475, "relativePath": "TextureBlock\\block\\block5.png" }, "48449cea-32d6-42d9-8499-1fd116440432": { - "asset": 1746782842958, - "meta": 1746785425327, + "asset": 1751270412108, + "meta": 1751270457461, "relativePath": "TextureBlock\\block\\block4.png" }, "d4dfa9d3-985d-4d58-9c06-fc12d3df7d28": { - "asset": 1746782839452, - "meta": 1746785425331, + "asset": 1751270412104, + "meta": 1751270457475, "relativePath": "TextureBlock\\block\\block3.png" }, "04e50346-1a72-40e7-84f4-34fc35145f86": { - "asset": 1746788471263, - "meta": 1746788501154, + "asset": 1751270412091, + "meta": 1751270458838, "relativePath": "TextureBlock\\block\\block1.plist" }, "4415f278-50b1-46b5-bdf1-0dd7fa4b461b": { - "asset": 1746788486306, - "meta": 1746788501121, + "asset": 1751270412095, + "meta": 1751270457444, "relativePath": "TextureBlock\\block\\block1.png" }, "363f650c-0113-40a7-b8d0-1e941f51f056": { - "asset": 1747037900326, - "meta": 1747037915382, + "asset": 1751270412376, + "meta": 1751270456535, "relativePath": "resources\\Particle\\sp1.png" }, "3041839a-879f-4de0-aac8-11fc29132a3a": { - "asset": 1747037900699, - "meta": 1747037915385, + "asset": 1751270412387, + "meta": 1751270456599, "relativePath": "resources\\Particle\\sp9.png" }, "7fd24a6a-f4ee-4180-8a76-97d073262354": { - "asset": 1747037900515, - "meta": 1747037915386, + "asset": 1751270412383, + "meta": 1751270456549, "relativePath": "resources\\Particle\\sp5.png" }, "f3366754-10f0-45e6-91f6-39784b12abd5": { - "asset": 1747037900273, - "meta": 1747037915391, + "asset": 1751270412376, + "meta": 1751270456531, "relativePath": "resources\\Particle\\sp10.png" }, "5cd8d33e-2fec-4ca3-aaad-d0fd7b123bf2": { - "asset": 1747037900374, - "meta": 1747037915399, + "asset": 1751270412378, + "meta": 1751270456536, "relativePath": "resources\\Particle\\sp2.png" }, "d5e17fe2-ec17-4842-8bfb-7d68719eecaf": { - "asset": 1747037900468, - "meta": 1747037915403, + "asset": 1751270412382, + "meta": 1751270456566, "relativePath": "resources\\Particle\\sp4.png" }, "68620429-1b3d-400e-832c-25e8358d9062": { - "asset": 1747037900420, - "meta": 1747037915406, + "asset": 1751270412381, + "meta": 1751270456575, "relativePath": "resources\\Particle\\sp3.png" }, "91339250-5bb5-461e-9d46-aa86181e755c": { - "asset": 1747037900560, - "meta": 1747037915408, + "asset": 1751270412384, + "meta": 1751270456563, "relativePath": "resources\\Particle\\sp6.png" }, "f5f04e60-a876-43ed-b0f6-f829aee17c65": { - "asset": 1747037900654, - "meta": 1747037915410, + "asset": 1751270412386, + "meta": 1751270456613, "relativePath": "resources\\Particle\\sp8.png" }, "5dc63b37-a57d-4a7c-a696-95e0f14daf93": { - "asset": 1747037900607, - "meta": 1747037915411, + "asset": 1751270412385, + "meta": 1751270456571, "relativePath": "resources\\Particle\\sp7.png" }, "c8f0a088-7a76-4057-b546-8e50c5b105c8": { - "asset": 1750920249257, - "meta": 1751250884702, + "asset": 1751270412236, + "meta": 1751270454827, "relativePath": "res\\effect" }, "a546d6f3-5346-4f7c-b2cb-e369cab36b48": { - "asset": 1747042601477, - "meta": 1748437824648, + "asset": 1751270412186, + "meta": 1751270455880, "relativePath": "effect\\texture.png" }, "7ee58a72-2111-450d-b4de-496f4b3ad9a7": { - "asset": 1747047159947, - "meta": 1747047159950, + "asset": 1751270412235, + "meta": 1751270458476, "relativePath": "res\\effect\\New Material.mtl" }, "fff54feb-03db-4d8a-b079-57eedca8a644": { - "asset": 1747120564208, - "meta": 1748437825590, + "asset": 1751270412155, + "meta": 1751270458335, "relativePath": "effect\\New Material.mtl" }, "6970f0a1-4487-4ec7-9623-cfabdaeab39c": { - "asset": 1747050236464, - "meta": 1748437823798, + "asset": 1751270412183, + "meta": 1751270454767, "relativePath": "effect\\ronghua.effect" }, "5a2ab061-e5f5-4caa-b4ee-4a27ff8e7db7": { - "asset": 1747104459028, - "meta": 1748437823809, + "asset": 1751270412193, + "meta": 1751270454778, "relativePath": "effect\\融化.effect" }, "341aecd6-8bf0-4219-adaa-dbc54ef22a32": { - "asset": 1747117357281, - "meta": 1748437823821, + "asset": 1751270412194, + "meta": 1751270454788, "relativePath": "effect\\融化.ts" }, "daf4fd67-c532-4d40-ac76-f104d2e011fc": { - "asset": 1750920255338, - "meta": 1751250884150, + "asset": 1751270413506, + "meta": 1751270445607, "relativePath": "Map" }, "f20c7bea-752c-4521-bba7-facfb396bd0f": { - "asset": 1750920255354, - "meta": 1751250884151, + "asset": 1751270413508, + "meta": 1751270445608, "relativePath": "Material" }, "40181e0c-789f-47f1-ba3c-d92486df52dd": { - "asset": 1719888368058, - "meta": 1747125841647, + "asset": 1751270413507, + "meta": 1751270445638, "relativePath": "Material\\TmoEffect.effect" }, "f2c5d7aa-95bc-4b34-a4c1-01ef2cf23d19": { - "asset": 1750920255369, - "meta": 1751250884152, + "asset": 1751270413512, + "meta": 1751270445609, "relativePath": "Script" }, "18d1ce4e-6c1b-4279-acac-c8ee5b30881b": { - "asset": 1719888368063, - "meta": 1747125841708, + "asset": 1751270413509, + "meta": 1751270445825, "relativePath": "Script\\TmoAssembler.js" }, "30e2e490-5833-4a23-af45-6da61f37ada3": { - "asset": 1719888368065, - "meta": 1747125841739, + "asset": 1751270413510, + "meta": 1751270445888, "relativePath": "Script\\TmoObjectGroup.js" }, "4fa6c3b4-e5a0-4a1a-833e-e445fdce1902": { - "asset": 1719888368066, - "meta": 1747125841748, + "asset": 1751270413510, + "meta": 1751270445902, "relativePath": "Script\\TmoSprite.js" }, "d60cfac6-6d70-4b05-ba65-2e84fb4c19fb": { - "asset": 1719888368068, - "meta": 1747125841772, + "asset": 1751270413511, + "meta": 1751270445936, "relativePath": "Script\\TmoTiledLayer.js" }, "0b9eeb66-4947-4945-9090-4bdd53602c3f": { - "asset": 1719888368071, - "meta": 1747125841791, + "asset": 1751270413512, + "meta": 1751270445963, "relativePath": "Script\\TmoTiledMap.js" }, "9a04d176-199d-4828-99e4-f04c825a7d21": { - "asset": 1719888368060, - "meta": 1747125841841, + "asset": 1751270413508, + "meta": 1751270446008, "relativePath": "Material\\TmoMaterial.mtl" }, "d0ea6fbd-3d02-4764-951b-66f01e10443c": { - "asset": 1719888368055, - "meta": 1747125841842, + "asset": 1751270413503, + "meta": 1751270446009, "relativePath": "Map\\TmoMap.tmx" }, "1bec116d-72a4-4268-8396-f530996ffb22": { - "asset": 1719888368048, - "meta": 1747125841835, + "asset": 1751270413504, + "meta": 1751270446005, "relativePath": "Map\\roguelikeSheet_transparent.png" }, "d9b8a450-e449-4113-8295-a26af54393cb": { - "asset": 1719888368053, - "meta": 1747125841836, + "asset": 1751270413506, + "meta": 1751270446004, "relativePath": "Map\\roguelikeSheet_transparent2.png" }, "e8f06cd0-a6df-473e-8c1c-c2dca70b1193": { - "asset": 1745303526000, - "meta": 1747388064817, + "asset": 1751270412166, + "meta": 1751270455708, "relativePath": "effect\\lianjie_2.png" }, "82acc72d-a7fc-4411-a357-fe2ea85ffd5c": { - "asset": 1745303526000, - "meta": 1747388064818, + "asset": 1751270412165, + "meta": 1751270455710, "relativePath": "effect\\lianjie_1.png" }, "3d20e513-a37f-4e1f-81b2-ad82655fbae7": { - "asset": 1747385177000, - "meta": 1747825104791, + "asset": 1751270412317, + "meta": 1751270456419, "relativePath": "resources\\Json\\level53.json" }, "d7bd43d2-5cca-4b6c-9e82-a6cc63527ca2": { - "asset": 1747797714000, - "meta": 1747825104796, + "asset": 1751270412319, + "meta": 1751270456423, "relativePath": "resources\\Json\\level58.json" }, "77335854-4a1a-4f26-9901-c790758a1ad8": { - "asset": 1747384577000, - "meta": 1747825104800, + "asset": 1751270412317, + "meta": 1751270456420, "relativePath": "resources\\Json\\level52.json" }, "9fab4afa-0132-4bff-a174-be0bf9309e99": { - "asset": 1747810131000, - "meta": 1747825104803, + "asset": 1751270412320, + "meta": 1751270456427, "relativePath": "resources\\Json\\level59.json" }, "da9fa04e-0928-44bc-8a94-069188915bc3": { - "asset": 1747383994000, - "meta": 1747825104804, + "asset": 1751270412333, + "meta": 1751270456456, "relativePath": "resources\\Json\\level80.json" }, "847af5ce-99e2-4928-a762-6cf0be6e0313": { - "asset": 1747813582000, - "meta": 1747825104806, + "asset": 1751270412334, + "meta": 1751270456457, "relativePath": "resources\\Json\\level81.json" }, "61ccb2ff-6d22-465b-a4c2-e30a8362e201": { - "asset": 1747374087000, - "meta": 1747825104807, + "asset": 1751270412336, + "meta": 1751270456463, "relativePath": "resources\\Json\\level84.json" }, "08ba6e2c-b755-496e-8698-1b49e2137e72": { - "asset": 1747367055000, - "meta": 1747825104810, + "asset": 1751270412334, + "meta": 1751270456459, "relativePath": "resources\\Json\\level82.json" }, "4eefa689-9a3c-4525-90f7-02e393e84cea": { - "asset": 1747816655000, - "meta": 1747825104811, + "asset": 1751270412337, + "meta": 1751270456468, "relativePath": "resources\\Json\\level86.json" }, "7deeab69-13fa-4f8b-8366-de153a780366": { - "asset": 1747815568000, - "meta": 1747825104813, + "asset": 1751270412336, + "meta": 1751270456463, "relativePath": "resources\\Json\\level85.json" }, "aae84cd2-d30f-40b7-9e29-503635e78ad3": { - "asset": 1747806207000, - "meta": 1747825104814, + "asset": 1751270412319, + "meta": 1751270456424, "relativePath": "resources\\Json\\level57.json" }, "a1c4796f-77bf-49c5-9b6a-fc680ac4fd90": { - "asset": 1747392192000, - "meta": 1747825104816, + "asset": 1751270412318, + "meta": 1751270456422, "relativePath": "resources\\Json\\level55.json" }, "8ededb2a-b535-494b-b582-046a008ff748": { - "asset": 1747819333000, - "meta": 1747825104820, + "asset": 1751270412337, + "meta": 1751270456469, "relativePath": "resources\\Json\\level87.json" }, "7b899124-e65f-42ca-9360-04616684e7c1": { - "asset": 1747379533000, - "meta": 1747825104821, + "asset": 1751270412339, + "meta": 1751270456473, "relativePath": "resources\\Json\\level89.json" }, "cc263886-aec5-4fa8-9734-b52d9e578e48": { - "asset": 1747824759000, - "meta": 1747825104822, + "asset": 1751270412339, + "meta": 1751270456474, "relativePath": "resources\\Json\\level90.json" }, "c63bea39-61e5-4b89-b514-d84a84d5b3cf": { - "asset": 1747884575000, - "meta": 1747893824029, + "asset": 1751270412325, + "meta": 1751270456440, "relativePath": "resources\\Json\\level69.json" }, "8ccfd006-2c8d-426d-8d3a-3560e61de24e": { - "asset": 1747362753000, - "meta": 1747893824031, + "asset": 1751270412332, + "meta": 1751270456453, "relativePath": "resources\\Json\\level79.json" }, "3518f8c0-d85b-48fb-99ed-41718f2bcff1": { - "asset": 1747887167000, - "meta": 1747893824033, + "asset": 1751270412331, + "meta": 1751270456451, "relativePath": "resources\\Json\\level77.json" }, "da943e93-7ecf-4ff8-936c-5a9c26a88a32": { - "asset": 1747300259000, - "meta": 1747893824035, + "asset": 1751270412332, + "meta": 1751270456455, "relativePath": "resources\\Json\\level78.json" }, "5f6898a9-23b4-4e9c-b751-017617017813": { - "asset": 1747885479000, - "meta": 1747893824037, + "asset": 1751270412330, + "meta": 1751270456452, "relativePath": "resources\\Json\\level76.json" }, "e9baff1b-7642-4be9-88ca-f3f9a4e2f510": { - "asset": 1750920249320, - "meta": 1751250884706, + "asset": 1751270412423, + "meta": 1751270454831, "relativePath": "resources\\bg" }, "02990639-fe0f-4ad3-803c-df7b0f848c77": { - "asset": 1747986598423, - "meta": 1747986908493, + "asset": 1751270412410, + "meta": 1751270456188, "relativePath": "resources\\bg\\bg1.jpg" }, "352b95f2-1985-4a53-975f-76dcf7d4b46b": { - "asset": 1747986314598, - "meta": 1747986908500, + "asset": 1751270412419, + "meta": 1751270456190, "relativePath": "resources\\bg\\bg4.jpg" }, "984f38d2-a029-4f40-926d-e83a6d99809a": { - "asset": 1747986518706, - "meta": 1747986908505, + "asset": 1751270412422, + "meta": 1751270456278, "relativePath": "resources\\bg\\bg7.jpg" }, "90680057-c6bd-4b0a-a386-8c948af5a7b4": { - "asset": 1747986363897, - "meta": 1747986908510, + "asset": 1751270412420, + "meta": 1751270456248, "relativePath": "resources\\bg\\bg5.jpg" }, "400ebc7f-8b6d-4fab-9510-228f4a852233": { - "asset": 1747986487018, - "meta": 1747986908537, + "asset": 1751270412421, + "meta": 1751270456276, "relativePath": "resources\\bg\\bg6.jpg" }, "f2ea2a0e-1212-40d4-9a37-340cec0bb051": { - "asset": 1747986266850, - "meta": 1747986908539, + "asset": 1751270412413, + "meta": 1751270456194, "relativePath": "resources\\bg\\bg3.jpg" }, "78991791-82f2-4a52-a829-5bd78ecf9e09": { - "asset": 1747986556313, - "meta": 1747986908547, + "asset": 1751270412423, + "meta": 1751270456276, "relativePath": "resources\\bg\\bg8.jpg" }, "932f20e4-718e-42cd-a735-f39449ebb955": { - "asset": 1747986188235, - "meta": 1747986908549, + "asset": 1751270412411, + "meta": 1751270456192, "relativePath": "resources\\bg\\bg2.jpg" }, "034840bc-3824-492a-9542-0b64edfb4046": { - "asset": 1750920250045, - "meta": 1751250884712, + "asset": 1751270412409, + "meta": 1751270454842, "relativePath": "resources\\Window_Prop" }, "1c111e49-b82d-4996-b6e9-bc78e698c880": { - "asset": 1747987595874, - "meta": 1747988051909, + "asset": 1751270412400, + "meta": 1751270456822, "relativePath": "resources\\Window_Prop\\daoju1.png" }, "b6ae8682-943e-426b-a202-84f37dc1e843": { - "asset": 1747987597648, - "meta": 1747988051922, + "asset": 1751270412402, + "meta": 1751270456632, "relativePath": "resources\\Window_Prop\\daoju3.png" }, "0b24a717-3022-47c4-8739-9b8de223209a": { - "asset": 1747987598677, - "meta": 1747988051932, + "asset": 1751270412402, + "meta": 1751270456824, "relativePath": "resources\\Window_Prop\\daoju4.png" }, "485efaf3-8f31-441b-8264-6597e43bedea": { - "asset": 1747987592593, - "meta": 1747988051935, + "asset": 1751270412398, + "meta": 1751270456636, "relativePath": "resources\\Window_Prop\\ban.png" }, "10bd800c-0cf0-4fd1-b081-59bdb30d45c3": { - "asset": 1747987594995, - "meta": 1747988051938, + "asset": 1751270412399, + "meta": 1751270456620, "relativePath": "resources\\Window_Prop\\btn.png" }, "f3638483-b203-466d-bd77-27450b756fa9": { - "asset": 1747987593163, - "meta": 1747988051940, + "asset": 1751270412407, + "meta": 1751270457072, "relativePath": "resources\\Window_Prop\\light1.png" }, "97c09743-de26-4de2-b679-165a0f109674": { - "asset": 1747987600435, - "meta": 1747988051944, + "asset": 1751270412404, + "meta": 1751270456825, "relativePath": "resources\\Window_Prop\\daoju6.png" }, "4f0a5f34-c7eb-40f1-b9d4-f05d45bf9157": { - "asset": 1747987594481, - "meta": 1747988051946, + "asset": 1751270412408, + "meta": 1751270457070, "relativePath": "resources\\Window_Prop\\next.png" }, "9c5c2e4c-dc57-4743-ba73-189a3050d7af": { - "asset": 1747987601327, - "meta": 1747988051963, + "asset": 1751270412405, + "meta": 1751270456826, "relativePath": "resources\\Window_Prop\\daoju7.png" }, "b56981d3-e42d-455f-81b9-418f92cd72ef": { - "asset": 1747987594827, - "meta": 1747988051972, + "asset": 1751270412399, + "meta": 1751270456615, "relativePath": "resources\\Window_Prop\\btn 2.png" }, "5e6f2066-cb12-41b7-a171-fc2003da60cf": { - "asset": 1747987599524, - "meta": 1747988051974, + "asset": 1751270412403, + "meta": 1751270456821, "relativePath": "resources\\Window_Prop\\daoju5.png" }, "31334095-1bce-4819-afb1-b9f04de73f2a": { - "asset": 1747987593750, - "meta": 1747988051977, + "asset": 1751270412407, + "meta": 1751270457068, "relativePath": "resources\\Window_Prop\\light2.png" }, "0049e9ab-7e39-49fa-abfd-27482b158ae2": { - "asset": 1747987596759, - "meta": 1747988051979, + "asset": 1751270412401, + "meta": 1751270456720, "relativePath": "resources\\Window_Prop\\daoju2.png" }, "6a766e17-7786-4eb0-9786-3e420d1dbfab": { - "asset": 1747987594427, - "meta": 1747988051982, + "asset": 1751270412408, + "meta": 1751270457083, "relativePath": "resources\\Window_Prop\\return.png" }, "f0d6a1ff-e29a-4846-b6a9-9c96f90bd6df": { - "asset": 1747987594364, - "meta": 1747988051984, + "asset": 1751270412408, + "meta": 1751270457086, "relativePath": "resources\\Window_Prop\\light3.png" }, "1fb08231-41e8-4fdb-86e3-ab67463b088f": { - "asset": 1747987594684, - "meta": 1747988052004, + "asset": 1751270412409, + "meta": 1751270457081, "relativePath": "resources\\Window_Prop\\title.png" }, "9c73e774-538e-4a64-9d46-b5905174e08b": { - "asset": 1747898684000, - "meta": 1747992743341, + "asset": 1751270412343, + "meta": 1751270456493, "relativePath": "resources\\Json\\level97.json" }, "6a78a951-d0ee-4089-ad88-c0361caed2c8": { - "asset": 1747903293000, - "meta": 1747992743343, + "asset": 1751270412253, + "meta": 1751270456218, "relativePath": "resources\\Json\\level100.json" }, "581928fd-74e9-493a-94b3-1a64313909d3": { - "asset": 1747967366000, - "meta": 1747992743346, + "asset": 1751270412257, + "meta": 1751270456255, "relativePath": "resources\\Json\\level105.json" }, "438b7ec6-23dd-471a-9137-3cab7726c687": { - "asset": 1747905455000, - "meta": 1747992743347, + "asset": 1751270412255, + "meta": 1751270456226, "relativePath": "resources\\Json\\level102.json" }, "6b3f5d56-3637-404e-a4e5-189874cd71f3": { - "asset": 1747968552000, - "meta": 1747992743349, + "asset": 1751270412257, + "meta": 1751270456258, "relativePath": "resources\\Json\\level106.json" }, "8e981011-d4c6-41b9-91f8-015f8d9b041d": { - "asset": 1747969059000, - "meta": 1747992743353, + "asset": 1751270412258, + "meta": 1751270456258, "relativePath": "resources\\Json\\level107.json" }, "615e1c78-bbf8-4aef-b55f-025f7c3aa7bb": { - "asset": 1747903996000, - "meta": 1747992743355, + "asset": 1751270412253, + "meta": 1751270456218, "relativePath": "resources\\Json\\level101.json" }, "0a0f446a-b0fc-4929-a9cc-616f502d0dcb": { - "asset": 1747970377000, - "meta": 1747992743357, + "asset": 1751270412259, + "meta": 1751270456261, "relativePath": "resources\\Json\\level108.json" }, "d8431941-00e1-4638-b2a2-1bd96d9fc5b8": { - "asset": 1747910130000, - "meta": 1747992743359, + "asset": 1751270412256, + "meta": 1751270456233, "relativePath": "resources\\Json\\level104.json" }, "0ddde8cc-1b17-454b-8696-be34361845ef": { - "asset": 1747972719000, - "meta": 1747992743360, + "asset": 1751270412260, + "meta": 1751270456268, "relativePath": "resources\\Json\\level110.json" }, "2b0f8eb4-2355-4f65-ae3a-ee6458fc3eb6": { - "asset": 1747906686000, - "meta": 1747992743362, + "asset": 1751270412256, + "meta": 1751270456231, "relativePath": "resources\\Json\\level103.json" }, "69f4fb9f-c1a8-4ffe-bd04-f77c92671be7": { - "asset": 1749636706869, - "meta": 1749692957638, + "asset": 1751270412259, + "meta": 1751270456264, "relativePath": "resources\\Json\\level109.json" }, "0c986bfc-7618-4c66-994d-e406c1da0b24": { - "asset": 1747981248000, - "meta": 1747992743369, + "asset": 1751270412263, + "meta": 1751270456268, "relativePath": "resources\\Json\\level113.json" }, "78522b60-9651-4017-8f9e-38238b0945ad": { - "asset": 1747979775000, - "meta": 1747992743370, + "asset": 1751270412261, + "meta": 1751270456268, "relativePath": "resources\\Json\\level111.json" }, "3876286a-8804-470f-9dbe-1ab37566bf3b": { - "asset": 1747982621000, - "meta": 1747992743372, + "asset": 1751270412263, + "meta": 1751270456278, "relativePath": "resources\\Json\\level114.json" }, "48e7b0d8-05ea-4fd5-8f29-925fb0ba8845": { - "asset": 1747980403000, - "meta": 1747992743374, + "asset": 1751270412261, + "meta": 1751270456268, "relativePath": "resources\\Json\\level112.json" }, "46e711be-b11e-402a-a24c-75e2e394a75b": { - "asset": 1747984981000, - "meta": 1747992743376, + "asset": 1751270412265, + "meta": 1751270456278, "relativePath": "resources\\Json\\level115.json" }, "092ba8f5-46a8-4401-b1c3-46c05efbb12b": { - "asset": 1747883244000, - "meta": 1747992743378, + "asset": 1751270412340, + "meta": 1751270456476, "relativePath": "resources\\Json\\level91.json" }, "d906f930-7480-418b-a3ce-caacbd4ecf2c": { - "asset": 1747990510000, - "meta": 1747992743378, + "asset": 1751270412267, + "meta": 1751270456287, "relativePath": "resources\\Json\\level119.json" }, "c8f0cf5f-c48c-4ca8-9399-47e3adc3a2ba": { - "asset": 1747988913000, - "meta": 1747992743379, + "asset": 1751270412266, + "meta": 1751270456278, "relativePath": "resources\\Json\\level118.json" }, "9e607042-800f-425b-94f4-774ab34c3b91": { - "asset": 1747986734000, - "meta": 1747992743379, + "asset": 1751270412265, + "meta": 1751270456278, "relativePath": "resources\\Json\\level116.json" }, "e1b9030d-905f-4f54-b854-19269ca283c7": { - "asset": 1747896374000, - "meta": 1747992743382, + "asset": 1751270412342, + "meta": 1751270456487, "relativePath": "resources\\Json\\level94.json" }, "d0c255a3-8e36-4dde-94fc-98b0a17104d5": { - "asset": 1747895170000, - "meta": 1747992743383, + "asset": 1751270412341, + "meta": 1751270456477, "relativePath": "resources\\Json\\level93.json" }, "4a6da822-ad56-4f66-a3ba-e1076dcfab32": { - "asset": 1747902270000, - "meta": 1747992743384, + "asset": 1751270412345, + "meta": 1751270456500, "relativePath": "resources\\Json\\level99.json" }, "3661505d-2c18-40dc-aa00-7997d7b19469": { - "asset": 1747898025000, - "meta": 1747992743385, + "asset": 1751270412342, + "meta": 1751270456489, "relativePath": "resources\\Json\\level96.json" }, "169c9fa2-bd83-427d-ad93-a1cce985228c": { - "asset": 1747897318000, - "meta": 1747992743388, + "asset": 1751270412342, + "meta": 1751270456488, "relativePath": "resources\\Json\\level95.json" }, "fd8b0857-2666-45ba-b857-5d08887b91dd": { - "asset": 1747894825000, - "meta": 1747992743389, + "asset": 1751270412340, + "meta": 1751270456476, "relativePath": "resources\\Json\\level92.json" }, "6ceee93b-a101-47f1-9178-07ed9270e9fb": { - "asset": 1748228746644, - "meta": 1748228747360, + "asset": 1751270412318, + "meta": 1751270456425, "relativePath": "resources\\Json\\level56.json" }, "0320e925-da03-488f-9e62-0018a6fdbb83": { - "asset": 1748249803539, - "meta": 1748249848882, + "asset": 1751270412096, + "meta": 1751270458848, "relativePath": "TextureBlock\\block\\block2.plist" }, "9836134e-b892-4283-b6b2-78b5acf3ed45": { - "asset": 1748260441106, - "meta": 1748512139383, + "asset": 1750905745131, + "meta": 1751270446063, "relativePath": "effects" }, "abc2cb62-7852-4525-a90d-d474487b88f2": { - "asset": 1748260441092, - "meta": 1748512139492, + "asset": 1750905745116, + "meta": 1751270446155, "relativePath": "effects\\builtin-phong.effect" }, "e2f00085-c597-422d-9759-52c360279106": { - "asset": 1748260441096, - "meta": 1748512139534, + "asset": 1750905745118, + "meta": 1751270446197, "relativePath": "effects\\builtin-toon.effect" }, "430eccbf-bf2c-4e6e-8c0c-884bbb487f32": { - "asset": 1748260441101, - "meta": 1748512139546, + "asset": 1750905745118, + "meta": 1751270446208, "relativePath": "effects\\__builtin-editor-gizmo-line.effect" }, "6c5cf6e1-b044-4eac-9431-835644d57381": { - "asset": 1748260441102, - "meta": 1748512139553, + "asset": 1750905745129, + "meta": 1751270446212, "relativePath": "effects\\__builtin-editor-gizmo-unlit.effect" }, "115286d1-2e10-49ee-aab4-341583f607e8": { - "asset": 1748260441106, - "meta": 1748512139574, + "asset": 1750905745131, + "meta": 1751270446215, "relativePath": "effects\\__builtin-editor-gizmo.effect" }, "f8e6b000-5643-4b86-9080-aa680ce1f599": { - "asset": 1748260441164, - "meta": 1748512139385, + "asset": 1750905745217, + "meta": 1751270446064, "relativePath": "image" }, "5c3eedba-6c41-4c0c-9ba7-d91f813cbd1c": { - "asset": 1748260441169, - "meta": 1748512139386, + "asset": 1750905745224, + "meta": 1751270446064, "relativePath": "materials" }, "fc09f9bd-2cce-4605-b630-8145ef809ed6": { - "asset": 1748260441176, - "meta": 1748512139387, + "asset": 1750905745233, + "meta": 1751270446065, "relativePath": "misc" }, "edd215b9-2796-4a05-aaf5-81f96c9281ce": { - "asset": 1748260441121, - "meta": 1748512139630, + "asset": 1750905745165, + "meta": 1751270446280, "relativePath": "image\\default_editbox_bg.png" }, "db019bf7-f71c-4111-98cf-918ea180cb48": { - "asset": 1748260441211, - "meta": 1748512139388, + "asset": 1750905745263, + "meta": 1751270446065, "relativePath": "model" }, "cfef78f1-c8df-49b7-8ed0-4c953ace2621": { - "asset": 1748260441125, - "meta": 1748512139625, + "asset": 1750905745166, + "meta": 1751270446269, "relativePath": "image\\default_progressbar.png" }, "e39e96e6-6f6e-413f-bcf1-ac7679bb648a": { - "asset": 1748260441204, - "meta": 1748512139638, + "asset": 1750905745261, + "meta": 1751270446286, "relativePath": "model\\prefab" }, "71561142-4c83-4933-afca-cb7a17f67053": { - "asset": 1748260441115, - "meta": 1748512139688, + "asset": 1750905745150, + "meta": 1751270446267, "relativePath": "image\\default_btn_disabled.png" }, "600301aa-3357-4a10-b086-84f011fa32ba": { - "asset": 1748260441112, - "meta": 1748512139709, + "asset": 1750905745131, + "meta": 1751270446276, "relativePath": "image\\default-particle.png" }, "b43ff3c2-02bb-4874-81f7-f2dea6970f18": { - "asset": 1748260441119, - "meta": 1748512139623, + "asset": 1750905745150, + "meta": 1751270446285, "relativePath": "image\\default_btn_pressed.png" }, "9d60001f-b5f4-4726-a629-2659e3ded0b8": { - "asset": 1748260441134, - "meta": 1748512139707, + "asset": 1750905745182, + "meta": 1751270446460, "relativePath": "image\\default_radio_button_on.png" }, "e851e89b-faa2-4484-bea6-5c01dd9f06e2": { - "asset": 1748260441117, - "meta": 1748512139628, + "asset": 1750905745150, + "meta": 1751270446466, "relativePath": "image\\default_btn_normal.png" }, "d81ec8ad-247c-4e62-aa3c-d35c4193c7af": { - "asset": 1748260441124, - "meta": 1748512139690, + "asset": 1750905745166, + "meta": 1751270446273, "relativePath": "image\\default_panel.png" }, "567dcd80-8bf4-4535-8a5a-313f1caf078a": { - "asset": 1748260441132, - "meta": 1748512139635, + "asset": 1750905745179, + "meta": 1751270446282, "relativePath": "image\\default_radio_button_off.png" }, "f6e6dd15-71d1-4ffe-ace7-24fd39942c05": { - "asset": 1748260441219, - "meta": 1748512139389, + "asset": 1750905745263, + "meta": 1751270446066, "relativePath": "obsolete" }, "4bab67cb-18e6-4099-b840-355f0473f890": { - "asset": 1748260441139, - "meta": 1748512139696, + "asset": 1750905745182, + "meta": 1751270446470, "relativePath": "image\\default_scrollbar_bg.png" }, "c4480a0a-6ac5-443f-8b40-361a14257fc8": { - "asset": 1748260441167, - "meta": 1748512140013, + "asset": 1750905745217, + "meta": 1751270446699, "relativePath": "materials\\builtin-phong.mtl" }, "f743d2b6-b7ea-4c14-a55b-547ed4d0a045": { - "asset": 1748260441226, - "meta": 1748512139390, + "asset": 1750905745285, + "meta": 1751270446066, "relativePath": "particle" }, "99170b0b-d210-46f1-b213-7d9e3f23098a": { - "asset": 1748260441128, - "meta": 1748512139702, + "asset": 1750905745166, + "meta": 1751270446463, "relativePath": "image\\default_progressbar_bg.png" }, "a87cc147-01b2-43f8-8e42-a7ca90b0c757": { - "asset": 1748260441183, - "meta": 1748512139922, + "asset": 1750905745233, + "meta": 1751270446646, "relativePath": "model\\prefab\\box.prefab" }, "0291c134-b3da-4098-b7b5-e397edbe947f": { - "asset": 1748260441137, - "meta": 1748512139637, + "asset": 1750905745182, + "meta": 1751270446469, "relativePath": "image\\default_scrollbar.png" }, "fe1417b6-fe6b-46a4-ae7c-9fd331f33a2a": { - "asset": 1748260441186, - "meta": 1748512139915, + "asset": 1750905745233, + "meta": 1751270446647, "relativePath": "model\\prefab\\capsule.prefab" }, "ae6c6c98-11e4-452f-8758-75f5c6a56e83": { - "asset": 1748260441310, - "meta": 1748512139391, + "asset": 1750905745397, + "meta": 1751270446067, "relativePath": "prefab" }, "0275e94c-56a7-410f-bd1a-fc7483f7d14a": { - "asset": 1748260441152, - "meta": 1748512139632, + "asset": 1750905745198, + "meta": 1751270446468, "relativePath": "image\\default_sprite_splash.png" }, "b5fc2cf2-7942-483d-be1f-bbeadc4714ad": { - "asset": 1748260441188, - "meta": 1748512139942, + "asset": 1750905745233, + "meta": 1751270446649, "relativePath": "model\\prefab\\cone.prefab" }, "1c5e4038-953a-44c2-b620-0bbfc6170477": { - "asset": 1748260441191, - "meta": 1748512139939, + "asset": 1750905745248, + "meta": 1751270446648, "relativePath": "model\\prefab\\cylinder.prefab" }, "d6d3ca85-4681-47c1-b5dd-d036a9d39ea2": { - "asset": 1748260441141, - "meta": 1748512139694, + "asset": 1750905745182, + "meta": 1751270446465, "relativePath": "image\\default_scrollbar_vertical.png" }, "6c9ef10d-b479-420b-bfe6-39cdda6a8ae0": { - "asset": 1748260441198, - "meta": 1748512139948, + "asset": 1750905745253, + "meta": 1751270446659, "relativePath": "model\\prefab\\quad.prefab" }, "3f376125-a699-40ca-ad05-04d662eaa1f2": { - "asset": 1748260441193, - "meta": 1748512139943, + "asset": 1750905745250, + "meta": 1751270446655, "relativePath": "model\\prefab\\plane.prefab" }, "617323dd-11f4-4dd3-8eec-0caf6b3b45b9": { - "asset": 1748260441145, - "meta": 1748512139699, + "asset": 1750905745182, + "meta": 1751270446471, "relativePath": "image\\default_scrollbar_vertical_bg.png" }, "2d9a4b85-b0ab-4c46-84c5-18f393ab2058": { - "asset": 1748260441200, - "meta": 1748512139947, + "asset": 1750905745256, + "meta": 1751270446658, "relativePath": "model\\prefab\\sphere.prefab" }, "de510076-056b-484f-b94c-83bef217d0e1": { - "asset": 1748260441204, - "meta": 1748512139945, + "asset": 1750905745260, + "meta": 1751270446656, "relativePath": "model\\prefab\\torus.prefab" }, "6e056173-d285-473c-b206-40a7fff5386e": { - "asset": 1748260441149, - "meta": 1748512139704, + "asset": 1750905745198, + "meta": 1751270446462, "relativePath": "image\\default_sprite.png" }, "897ef7a1-4860-4f64-968d-f5924b18668a": { - "asset": 1748260441231, - "meta": 1748512139721, + "asset": 1750905745290, + "meta": 1751270446478, "relativePath": "prefab\\2d-camera.prefab" }, "70d7cdb0-04cd-41bb-9480-c06a4785f386": { - "asset": 1748260441233, - "meta": 1748512139724, + "asset": 1750905745296, + "meta": 1751270446479, "relativePath": "prefab\\3d-camera.prefab" }, "a3ee0214-b432-4865-9666-4a3211814282": { - "asset": 1748260441267, - "meta": 1748512139725, + "asset": 1750905745330, + "meta": 1751270446480, "relativePath": "prefab\\light" }, "ed88f13d-fcad-4848-aa35-65a2cb973584": { - "asset": 1748260441239, - "meta": 1748512139727, + "asset": 1750905745300, + "meta": 1751270446483, "relativePath": "prefab\\3d-stage.prefab" }, "2c937608-2562-40ea-b264-7395df6f0cea": { - "asset": 1748260441245, - "meta": 1748512139731, + "asset": 1750905745307, + "meta": 1751270446485, "relativePath": "prefab\\canvas.prefab" }, "61aeb05b-3b32-452b-8eed-2b76deeed554": { - "asset": 1748260441249, - "meta": 1748512139735, + "asset": 1750905745310, + "meta": 1751270446481, "relativePath": "prefab\\editbox.prefab" }, "972b9a4d-47ee-4c74-b5c3-61d8a69bc29f": { - "asset": 1748260441241, - "meta": 1748512139730, + "asset": 1750905745303, + "meta": 1751270446487, "relativePath": "prefab\\button.prefab" }, "70bbeb73-6dc2-4ee4-8faf-76b3a0e34ec4": { - "asset": 1748260441236, - "meta": 1748512139734, + "asset": 1750905745298, + "meta": 1751270446484, "relativePath": "prefab\\3d-particle.prefab" }, "27756ebb-3d33-44b0-9b96-e858fadd4dd4": { - "asset": 1748260441251, - "meta": 1748512139740, + "asset": 1750905745312, + "meta": 1751270446493, "relativePath": "prefab\\label.prefab" }, "2be36297-9abb-4fee-8049-9ed5e271da8a": { - "asset": 1748260441175, - "meta": 1748512139801, + "asset": 1750905745232, + "meta": 1751270446528, "relativePath": "misc\\default_video.mp4" }, "785a442c-3ceb-45be-a46e-7317f625f3b9": { - "asset": 1748260441253, - "meta": 1748512139744, + "asset": 1750905745312, + "meta": 1751270446495, "relativePath": "prefab\\layout.prefab" }, "ca8401fe-ad6e-41a8-bd46-8e3e4e9945be": { - "asset": 1748260441268, - "meta": 1748512139748, + "asset": 1750905745330, + "meta": 1751270446499, "relativePath": "prefab\\pageview.prefab" }, "32044bd2-481f-4cf1-a656-e2b2fb1594eb": { - "asset": 1748260441281, - "meta": 1748512139759, + "asset": 1750905745348, + "meta": 1751270446504, "relativePath": "prefab\\scrollview.prefab" }, "5965ffac-69da-4b55-bcde-9225d0613c28": { - "asset": 1748260441272, - "meta": 1748512139754, + "asset": 1750905745346, + "meta": 1751270446502, "relativePath": "prefab\\progressBar.prefab" }, "cd33edea-55f5-46c2-958d-357a01384a36": { - "asset": 1748260441269, - "meta": 1748512139749, + "asset": 1750905745345, + "meta": 1751270446498, "relativePath": "prefab\\particlesystem.prefab" }, "4a37dd57-78cd-4cec-aad4-f11a73d12b63": { - "asset": 1748260441275, - "meta": 1748512139753, + "asset": 1750905745347, + "meta": 1751270446503, "relativePath": "prefab\\richtext.prefab" }, "d29077ba-1627-4a72-9579-7b56a235340c": { - "asset": 1748260441159, - "meta": 1748512139780, + "asset": 1750905745198, + "meta": 1751270446536, "relativePath": "image\\default_toggle_normal.png" }, "0004d1cf-a0ad-47d8-ab17-34d3db9d35a3": { - "asset": 1748260441284, - "meta": 1748512139756, + "asset": 1750905745349, + "meta": 1751270446505, "relativePath": "prefab\\slider.prefab" }, "c25b9d50-c8fc-4d27-beeb-6e7c1f2e5c0f": { - "asset": 1748260441157, - "meta": 1748512139784, + "asset": 1750905745198, + "meta": 1751270446523, "relativePath": "image\\default_toggle_disabled.png" }, "d8afc78c-4eac-4a9f-83dd-67bc70344d33": { - "asset": 1748260441342, - "meta": 1748512139391, + "asset": 1750905745446, + "meta": 1751270446067, "relativePath": "resources" }, "96083d03-c332-4a3f-9386-d03e2d19e8ee": { - "asset": 1748260441285, - "meta": 1748512139787, + "asset": 1750905745350, + "meta": 1751270446525, "relativePath": "prefab\\sprite.prefab" }, "73a0903d-d80e-4e3c-aa67-f999543c08f5": { - "asset": 1748260441154, - "meta": 1748512139792, + "asset": 1750905745198, + "meta": 1751270446522, "relativePath": "image\\default_toggle_checkmark.png" }, "294c1663-4adf-4a1e-a795-53808011a38a": { - "asset": 1748260441339, - "meta": 1748512139786, + "asset": 1750905745446, + "meta": 1751270446524, "relativePath": "resources\\effects" }, "bbee2217-c261-49bd-a8ce-708d6bcc3500": { - "asset": 1748260441367, - "meta": 1748512139788, + "asset": 1750905745466, + "meta": 1751270446526, "relativePath": "resources\\materials" }, "b181c1e4-0a72-4a91-bfb0-ae6f36ca60bd": { - "asset": 1748260441163, - "meta": 1748512139795, + "asset": 1750905745215, + "meta": 1751270446530, "relativePath": "image\\default_toggle_pressed.png" }, "30682f87-9f0d-4f17-8a44-72863791461b": { - "asset": 1748260441317, - "meta": 1748512139814, + "asset": 1750905745397, + "meta": 1751270446542, "relativePath": "resources\\effects\\builtin-2d-graphics.effect" }, "144c3297-af63-49e8-b8ef-1cfa29b3be28": { - "asset": 1748260441319, - "meta": 1748512139821, + "asset": 1750905745397, + "meta": 1751270446547, "relativePath": "resources\\effects\\builtin-2d-gray-sprite.effect" }, "f18742d7-56d2-4eb5-ae49-2d9d710b37c8": { - "asset": 1748260441320, - "meta": 1748512139830, + "asset": 1750905745397, + "meta": 1751270446553, "relativePath": "resources\\effects\\builtin-2d-label.effect" }, "0e93aeaa-0b53-4e40-b8e0-6268b4e07bd7": { - "asset": 1748260441323, - "meta": 1748512139838, + "asset": 1750905745397, + "meta": 1751270446559, "relativePath": "resources\\effects\\builtin-2d-spine.effect" }, "2874f8dd-416c-4440-81b7-555975426e93": { - "asset": 1748260441325, - "meta": 1748512139846, + "asset": 1750905745397, + "meta": 1751270446567, "relativePath": "resources\\effects\\builtin-2d-sprite.effect" }, "1f55e3be-b89b-4b79-88de-47fd31018044": { - "asset": 1748260441287, - "meta": 1748512139793, + "asset": 1750905745352, + "meta": 1751270446527, "relativePath": "prefab\\sprite_splash.prefab" }, "8a96b965-2dc0-4e03-aa90-3b79cb93b5b4": { - "asset": 1748260441218, - "meta": 1748512139796, + "asset": 1750905745263, + "meta": 1751270446529, "relativePath": "obsolete\\atom.png" }, "829a282c-b049-4019-bd38-5ace8d8a6417": { - "asset": 1748260441329, - "meta": 1748512139893, + "asset": 1750905745397, + "meta": 1751270446611, "relativePath": "resources\\effects\\builtin-3d-particle.effect" }, "7de03a80-4457-438d-95a7-3e7cdffd6086": { - "asset": 1748260441289, - "meta": 1748512139799, + "asset": 1750905745353, + "meta": 1751270446532, "relativePath": "prefab\\tiledmap.prefab" }, "2a7c0036-e0b3-4fe1-8998-89a54b8a2bec": { - "asset": 1748260441333, - "meta": 1748512139914, + "asset": 1750905745429, + "meta": 1751270446626, "relativePath": "resources\\effects\\builtin-3d-trail.effect" }, "c0040c95-c57f-49cd-9cbc-12316b73d0d4": { - "asset": 1748260441335, - "meta": 1748512139921, + "asset": 1750905745446, + "meta": 1751270446631, "relativePath": "resources\\effects\\builtin-clear-stencil.effect" }, "6d91e591-4ce0-465c-809f-610ec95019c6": { - "asset": 1748260441338, - "meta": 1748512139932, + "asset": 1750905745446, + "meta": 1751270446643, "relativePath": "resources\\effects\\builtin-unlit.effect" }, "0e42ba95-1fa1-46aa-b2cf-143cd1bcee2c": { - "asset": 1748260441291, - "meta": 1748512139800, + "asset": 1750905745353, + "meta": 1751270446531, "relativePath": "prefab\\tiledtile.prefab" }, "0d784963-d024-4ea6-a7db-03be0ad63010": { - "asset": 1748260441294, - "meta": 1748512139804, + "asset": 1750905745377, + "meta": 1751270446533, "relativePath": "prefab\\toggle.prefab" }, "d0a82d39-bede-46c4-b698-c81ff0dedfff": { - "asset": 1748260441225, - "meta": 1748512139797, + "asset": 1750905745284, + "meta": 1751270446542, "relativePath": "particle\\atom.png" }, "d1b8be49-b0a0-435c-83b7-552bed4bbe35": { - "asset": 1748260441302, - "meta": 1748512139808, + "asset": 1750905745397, + "meta": 1751270446534, "relativePath": "prefab\\toggleGroup.prefab" }, "bf0a434c-84dd-4a8e-a08a-7a36f180cc75": { - "asset": 1748260441298, - "meta": 1748512139815, + "asset": 1750905745396, + "meta": 1751270446537, "relativePath": "prefab\\toggleContainer.prefab" }, "61906da3-7003-4bda-9abc-5769c76faee4": { - "asset": 1748260441257, - "meta": 1748512139950, + "asset": 1750905745327, + "meta": 1751270446657, "relativePath": "prefab\\light\\ambient.prefab" }, "8c5001fd-07ee-4a4b-a8a0-63e15195e94d": { - "asset": 1748260441307, - "meta": 1748512139900, + "asset": 1750905745397, + "meta": 1751270446645, "relativePath": "prefab\\webview.prefab" }, "232d2782-c4bd-4bb4-9e01-909f03d6d3b9": { - "asset": 1748260441305, - "meta": 1748512139806, + "asset": 1750905745397, + "meta": 1751270446535, "relativePath": "prefab\\videoplayer.prefab" }, "ddb99b39-7004-47cd-9705-751905c43c46": { - "asset": 1748260441261, - "meta": 1748512139949, + "asset": 1750905745330, + "meta": 1751270446657, "relativePath": "prefab\\light\\directional.prefab" }, "f5331fd2-bf42-4ee3-a3fd-3e1657600eff": { - "asset": 1748260441267, - "meta": 1748512139951, + "asset": 1750905745330, + "meta": 1751270446659, "relativePath": "prefab\\light\\spot.prefab" }, "0cf30284-9073-46bc-9eba-e62b69dbbff3": { - "asset": 1748260441265, - "meta": 1748512139952, + "asset": 1750905745330, + "meta": 1751270446660, "relativePath": "prefab\\light\\point.prefab" }, "6f801092-0c37-4f30-89ef-c8d960825b36": { - "asset": 1748260441344, - "meta": 1748512140043, + "asset": 1750905745446, + "meta": 1751270446719, "relativePath": "resources\\materials\\builtin-2d-base.mtl" }, "3a7bb79f-32fd-422e-ada2-96f518fed422": { - "asset": 1748260441351, - "meta": 1748512140044, + "asset": 1750905745463, + "meta": 1751270446719, "relativePath": "resources\\materials\\builtin-2d-gray-sprite.mtl" }, "a153945d-2511-4c14-be7b-05d242f47d57": { - "asset": 1748260441348, - "meta": 1748512140041, + "asset": 1750905745461, + "meta": 1751270446719, "relativePath": "resources\\materials\\builtin-2d-graphics.mtl" }, "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432": { - "asset": 1748260441358, - "meta": 1748512140045, + "asset": 1750905745466, + "meta": 1751270446722, "relativePath": "resources\\materials\\builtin-2d-sprite.mtl" }, "e02d87d4-e599-4d16-8001-e14891ac6506": { - "asset": 1748260441354, - "meta": 1748512140040, + "asset": 1750905745464, + "meta": 1751270446719, "relativePath": "resources\\materials\\builtin-2d-label.mtl" }, "7afd064b-113f-480e-b793-8817d19f63c3": { - "asset": 1748260441355, - "meta": 1748512140042, + "asset": 1750905745466, + "meta": 1751270446719, "relativePath": "resources\\materials\\builtin-2d-spine.mtl" }, "cf7e0bb8-a81c-44a9-ad79-d28d43991032": { - "asset": 1748260441366, - "meta": 1748512140048, + "asset": 1750905745466, + "meta": 1751270446722, "relativePath": "resources\\materials\\builtin-clear-stencil.mtl" }, "466d4f9b-e5f4-4ea8-85d5-3c6e9a65658a": { - "asset": 1748260441362, - "meta": 1748512140050, + "asset": 1750905745466, + "meta": 1751270446722, "relativePath": "resources\\materials\\builtin-3d-trail.mtl" }, "432fa09c-cf03-4cff-a186-982604408a07": { - "asset": 1748260441359, - "meta": 1748512140049, + "asset": 1750905745466, + "meta": 1751270446722, "relativePath": "resources\\materials\\builtin-3d-particle.mtl" }, "2a296057-247c-4a1c-bbeb-0548b6c98650": { - "asset": 1748260441367, - "meta": 1748512140049, + "asset": 1750905745466, + "meta": 1751270446722, "relativePath": "resources\\materials\\builtin-unlit.mtl" }, "b8223619-7e38-47c4-841f-9160c232495a": { - "asset": 1748260441216, - "meta": 1748512140111, + "asset": 1750905745263, + "meta": 1751270446756, "relativePath": "obsolete\\atom.plist" }, "b2687ac4-099e-403c-a192-ff477686f4f5": { - "asset": 1748260441222, - "meta": 1748512140111, + "asset": 1750905745280, + "meta": 1751270446758, "relativePath": "particle\\atom.plist" }, "954fec8b-cd16-4bb9-a3b7-7719660e7558": { - "asset": 1748260441209, - "meta": 1748512143543, + "asset": 1750905745263, + "meta": 1751270449527, "relativePath": "model\\primitives.fbx" }, "bb571474-49d3-4334-91c9-6c535fca4acc": { - "asset": 1748251951379, - "meta": 1748251955936, + "asset": 1751270412338, + "meta": 1751270456470, "relativePath": "resources\\Json\\level88.json" }, "f1883a57-ccc5-48a7-9fc0-4430167d9ee3": { - "asset": 1748253245269, - "meta": 1748253259364, + "asset": 1751270412040, + "meta": 1751270455153, "relativePath": "Script\\CollisionDetection.ts" }, "9f736ed8-71dc-43c5-9d96-bfbf81ade90d": { - "asset": 1748253682095, - "meta": 1748253683010, + "asset": 1751270412324, + "meta": 1751270456439, "relativePath": "resources\\Json\\level68.json" }, "f307257e-fd8b-4b22-88e1-40d22df34759": { - "asset": 1750920249178, - "meta": 1751250884665, + "asset": 1751270412195, + "meta": 1751270454720, "relativePath": "libs" }, "2cd54f87-8181-484e-915e-e902e5bea0c1": { - "asset": 1742460335692, - "meta": 1748437823762, + "asset": 1751270412154, + "meta": 1751270454735, "relativePath": "animation\\NewScript.js" }, "19d0cfc7-d042-4f1c-803a-556069623174": { - "asset": 1750920249052, - "meta": 1751250884688, + "asset": 1751270412158, + "meta": 1751270454738, "relativePath": "effect\\boom" }, "4848d7c0-2271-44f9-b68c-8af7c82e7d39": { - "asset": 1750920249068, - "meta": 1751250884690, + "asset": 1751270412161, + "meta": 1751270454738, "relativePath": "effect\\freeze" }, "515bdb91-ddae-43df-aa2d-c51b6c703979": { - "asset": 1750920249084, - "meta": 1751250884692, + "asset": 1751270412165, + "meta": 1751270454753, "relativePath": "effect\\good" }, "fb664eba-5060-4ce6-b405-1f291dbc4aef": { - "asset": 1750920249099, - "meta": 1751250884692, + "asset": 1751270412172, + "meta": 1751270454753, "relativePath": "effect\\load" }, "9ecf33ff-c969-4fec-abd0-12b243dc28a9": { - "asset": 1750920249099, - "meta": 1751250884694, + "asset": 1751270412177, + "meta": 1751270454753, "relativePath": "effect\\magic" }, "f3e6bd15-b228-457b-a153-3c060d0ed521": { - "asset": 1750920249115, - "meta": 1751250884694, + "asset": 1751270412183, + "meta": 1751270454761, "relativePath": "effect\\nianhe" }, "4521acf8-e934-426e-b598-0e3130cff6e4": { - "asset": 1750920249131, - "meta": 1751250884696, + "asset": 1751270412185, + "meta": 1751270454769, "relativePath": "effect\\star" }, "fb8c4ca9-3797-49ea-9e0b-aba6bf29a72c": { - "asset": 1750920249147, - "meta": 1751250884696, + "asset": 1751270412188, + "meta": 1751270454769, "relativePath": "effect\\touch" }, "6cbb4c39-cc05-40b9-ade7-d861892eec7d": { - "asset": 1750920249147, - "meta": 1751250884698, + "asset": 1751270412193, + "meta": 1751270454769, "relativePath": "effect\\tuowei" }, "c9ad1894-4c1d-4fca-a277-726b4c189df5": { - "asset": 1594224021434, - "meta": 1748437823831, + "asset": 1751270412198, + "meta": 1751270454800, "relativePath": "migration\\use_v2.1-2.2.1_cc.Toggle_event_1.js" }, "07f20dc4-bce8-41f5-94b8-896b4ab7fbaf": { - "asset": 1695644846000, - "meta": 1748437824495, + "asset": 1751270412195, + "meta": 1751270454843, "relativePath": "libs\\ThinkingAnalyticsSDK.d.ts" }, + "19659ed7-1823-42a9-b8e8-1884c19df817": { + "asset": 1751270412038, + "meta": 1751270455142, + "relativePath": "Scene\\New Scene.fire" + }, "84e11f32-3c7c-4f05-8a5d-1777127f6370": { - "asset": 1747685960000, - "meta": 1748437824578, + "asset": 1751270412163, + "meta": 1751270455846, "relativePath": "effect\\good\\bang.anim" }, "59cd32c1-278f-4aba-a2b6-0e0c4f73e063": { - "asset": 1749037319744, - "meta": 1749037319747, + "asset": 1751270412164, + "meta": 1751270455849, "relativePath": "effect\\good\\bang.prefab" }, "1ac64874-02fc-4f77-861a-4886a752e380": { - "asset": 1747710233734, - "meta": 1748437824592, + "asset": 1751270412156, + "meta": 1751270455853, "relativePath": "effect\\boom\\zhandan.atlas" }, "9a528c07-9fc2-4096-a26c-ca35c67d20e9": { - "asset": 1748336555154, - "meta": 1748437824594, + "asset": 1751270412159, + "meta": 1751270455857, "relativePath": "effect\\freeze\\bingkuai.atlas" }, "ba473983-3802-46d5-965d-b3cd59b7f66e": { - "asset": 1747709904309, - "meta": 1748437824606, + "asset": 1751270412175, + "meta": 1751270455908, "relativePath": "effect\\magic\\mofabang_texiao.atlas" }, "94d219c4-f6f5-4afb-9a95-370850366448": { - "asset": 1747709651535, - "meta": 1748437824608, + "asset": 1751270412172, + "meta": 1751270455887, "relativePath": "effect\\magic\\mofabang_baozha.atlas" }, "85a570c7-dd1e-40cd-89ac-a5a0de5429c8": { - "asset": 1747685960000, - "meta": 1748437824621, + "asset": 1751270412165, + "meta": 1751270455884, "relativePath": "effect\\good\\太棒了-.png" }, "7edcbf54-d8ee-4027-950d-7d5e0086d76d": { - "asset": 1750920249147, - "meta": 1751250884727, + "asset": 1751270412190, + "meta": 1751270455952, "relativePath": "effect\\tuowei\\2D and UI trailing effects" }, "fe2e1147-b4a4-4f5d-885b-e2bac6b7b42e": { - "asset": 1748419489728, - "meta": 1748437824645, + "asset": 1751270412161, + "meta": 1751270455903, "relativePath": "effect\\freeze\\bingkuai.png" }, "71c185fc-f396-4366-8375-c40af9c2fd99": { - "asset": 1747710140423, - "meta": 1748437824668, + "asset": 1751270412181, + "meta": 1751270455920, "relativePath": "effect\\nianhe\\skeleton.atlas" }, "a13dd92f-bf7e-4b75-ab24-d443ea0a0221": { - "asset": 1748419386072, - "meta": 1748437824673, + "asset": 1751270412193, + "meta": 1751270455961, "relativePath": "effect\\tuowei\\tuowei1.prefab" }, "1c573e47-78cc-4fdb-a80b-970b2e06f16b": { - "asset": 1748336784077, - "meta": 1748437824676, + "asset": 1751270412184, + "meta": 1751270455950, "relativePath": "effect\\star\\taopao.atlas" }, "849d9729-23bc-455e-b9e5-f3bf7dc96375": { - "asset": 1748419489066, - "meta": 1748437824657, + "asset": 1751270412158, + "meta": 1751270455908, "relativePath": "effect\\boom\\zhandan.png" }, "8a50cadc-e025-4bd4-bf6e-9a8a87b63c36": { - "asset": 1748336647907, - "meta": 1748437824691, + "asset": 1751270412187, + "meta": 1751270455964, "relativePath": "effect\\touch\\fankui.atlas" }, "b11462e5-9624-4020-98f8-6418dfebaa5c": { - "asset": 1748419494362, - "meta": 1748437824696, + "asset": 1751270412177, + "meta": 1751270455946, "relativePath": "effect\\magic\\mofabang_texiao.png" }, "27f94295-c1af-4dae-a599-ec9e97060967": { - "asset": 1747710140422, - "meta": 1748437824710, + "asset": 1751270412182, + "meta": 1751270455957, "relativePath": "effect\\nianhe\\skeleton.png" }, "48588bbe-3361-44a5-b782-53ef975a9355": { - "asset": 1748419493339, - "meta": 1748437824726, + "asset": 1751270412175, + "meta": 1751270455988, "relativePath": "effect\\magic\\mofabang_baozha.png" }, "d853d588-0e29-4488-a9f9-8be43e2a8bd6": { - "asset": 1748419495069, - "meta": 1748437824730, + "asset": 1751270412185, + "meta": 1751270456008, "relativePath": "effect\\star\\taopao.png" }, "faeaa6a2-5e23-43cd-9acb-baa4eba7e32d": { - "asset": 1747710233511, - "meta": 1748437825653, + "asset": 1751270412156, + "meta": 1751270458390, "relativePath": "effect\\boom\\zhandan.json" }, "303417e6-891a-4bda-950c-4d2a04a1f4aa": { - "asset": 1747709650847, - "meta": 1748437825655, + "asset": 1751270412173, + "meta": 1751270458385, "relativePath": "effect\\magic\\mofabang_baozha.json" }, "0fb8590a-1468-4e6a-8ba6-c595642e4880": { - "asset": 1747709904145, - "meta": 1748437825660, + "asset": 1751270412176, + "meta": 1751270458390, "relativePath": "effect\\magic\\mofabang_texiao.json" }, "b98ab73e-af9c-47fa-862c-144da3071249": { - "asset": 1748336554901, - "meta": 1748437825662, + "asset": 1751270412159, + "meta": 1751270458390, "relativePath": "effect\\freeze\\bingkuai.json" }, "90e4657e-f478-47b1-91df-c5ac8b836069": { - "asset": 1748336783830, - "meta": 1748437825665, + "asset": 1751270412184, + "meta": 1751270458411, "relativePath": "effect\\star\\taopao.json" }, "4e6cd31e-a247-42dd-bae5-376b5be4059d": { - "asset": 1748336647861, - "meta": 1748437825667, + "asset": 1751270412188, + "meta": 1751270458410, "relativePath": "effect\\touch\\fankui.json" }, "e47e7785-a214-441f-8ecb-dfbec124ab29": { - "asset": 1747710140407, - "meta": 1748437825670, + "asset": 1751270412182, + "meta": 1751270458408, "relativePath": "effect\\nianhe\\skeleton.json" }, "e5b945cf-640c-4249-87eb-0c07aead8b86": { - "asset": 1745742957504, - "meta": 1748437825781, + "asset": 1751270412241, + "meta": 1751270458514, "relativePath": "res\\spine\\破碎_1.plist" }, "10b3c05c-cb90-4a2e-8872-2a8b3e890ab5": { - "asset": 1748336647906, - "meta": 1748437824774, + "asset": 1751270412188, + "meta": 1751270456010, "relativePath": "effect\\touch\\fankui.png" }, "89eea05d-23f3-4c5b-a6ce-28a491b1ed8b": { - "asset": 1747341686000, - "meta": 1748437824776, + "asset": 1751270412192, + "meta": 1751270456098, "relativePath": "effect\\tuowei\\bang.png" }, "ed1b749f-7091-4610-a494-425bb9686d4f": { - "asset": 1747047159947, - "meta": 1748437825790, + "asset": 1751270412235, + "meta": 1751270458477, "relativePath": "res\\effect\\New Material_1.mtl" }, "a43f913e-6184-42e9-bb9e-3deb36d8bcbc": { - "asset": 1744962657274, - "meta": 1748437824822, + "asset": 1751270412240, + "meta": 1751270456147, "relativePath": "res\\spine\\star_1.png" }, "e04b3e89-8b08-4014-9e5e-d36b3cf8d5a0": { - "asset": 1746008540669, - "meta": 1748437824909, + "asset": 1751270412309, + "meta": 1751270456402, "relativePath": "resources\\Json\\level42_1.json" }, "67768a91-f989-4ae1-aa68-3302f9e3cc53": { - "asset": 1746685761000, - "meta": 1748437825844, + "asset": 1751270412354, + "meta": 1751270458628, "relativePath": "resources\\Particle\\bot_3_1_1.plist" }, "7cf74208-27a8-4df5-9258-870a2746868e": { - "asset": 1746686024000, - "meta": 1748437825844, + "asset": 1751270412357, + "meta": 1751270458658, "relativePath": "resources\\Particle\\left_1_1_1.plist" }, "12306819-582e-4ee1-9e35-c24b0b935bc5": { - "asset": 1746685509000, - "meta": 1748437825845, + "asset": 1751270412348, + "meta": 1751270458618, "relativePath": "resources\\Particle\\bot_1_1_1.plist" }, "c7650af3-4db3-4d9f-a502-e0c0fce90eea": { - "asset": 1746686810000, - "meta": 1748437825846, + "asset": 1751270412352, + "meta": 1751270458621, "relativePath": "resources\\Particle\\bot_2_2_1.plist" }, "adb713c6-0fe0-4631-9c9b-adec61911be9": { - "asset": 1746696424000, - "meta": 1748437825846, + "asset": 1751270412355, + "meta": 1751270458630, "relativePath": "resources\\Particle\\bot_3_2_1.plist" }, "f8a9dd4c-54ba-48d6-bac6-38624a421af3": { - "asset": 1746685566000, - "meta": 1748437825847, + "asset": 1751270412350, + "meta": 1751270458618, "relativePath": "resources\\Particle\\bot_1_3_1.plist" }, "b6763ed3-58ec-4788-8c2c-a425e5f35f8a": { - "asset": 1746685740000, - "meta": 1748437825848, + "asset": 1751270412353, + "meta": 1751270458627, "relativePath": "resources\\Particle\\bot_2_3_1.plist" }, "52e04d9a-add5-4d61-8aed-2a2576c268eb": { - "asset": 1746686056000, - "meta": 1748437825848, + "asset": 1751270412358, + "meta": 1751270458661, "relativePath": "resources\\Particle\\left_1_2_1.plist" }, "7aef84fa-1599-4e26-9f9f-f03c57555402": { - "asset": 1746686907000, - "meta": 1748437825849, + "asset": 1751270412360, + "meta": 1751270458666, "relativePath": "resources\\Particle\\left_2_1_1.plist" }, "613e8900-5acd-4d64-af09-04e3a3bcd4b1": { - "asset": 1747376177553, - "meta": 1748437824984, + "asset": 1751270412343, + "meta": 1751270456494, "relativePath": "resources\\Json\\level97_1.json" }, "a96e9590-d76b-46a9-bc22-78fabd5f5074": { - "asset": 1746685533000, - "meta": 1748437825849, + "asset": 1751270412349, + "meta": 1751270458618, "relativePath": "resources\\Particle\\bot_1_2_1.plist" }, "e7bf65df-6953-437a-9551-5c4e7b6f1b5e": { - "asset": 1746686397000, - "meta": 1748437825851, + "asset": 1751270412359, + "meta": 1751270458656, "relativePath": "resources\\Particle\\left_1_3_1.plist" }, "9f9ed084-4b2f-470c-af4c-da9fe4685238": { - "asset": 1746687083000, - "meta": 1748437825852, + "asset": 1751270412356, + "meta": 1751270458654, "relativePath": "resources\\Particle\\bot_3_3_1.plist" }, "f6b05315-94c5-41a5-a0f1-187fca3c0f04": { - "asset": 1746685589000, - "meta": 1748437825852, + "asset": 1751270412351, + "meta": 1751270458618, "relativePath": "resources\\Particle\\bot_2_1_1.plist" }, "5949d3bc-f476-4f63-b038-22fa8cba4e62": { - "asset": 1746686875000, - "meta": 1748437825853, + "asset": 1751270412362, + "meta": 1751270458666, "relativePath": "resources\\Particle\\left_2_2_1.plist" }, "8312f0f9-6f26-423d-aaa2-ff9ee5122ca2": { - "asset": 1748338955455, - "meta": 1748437824993, + "asset": 1751270412251, + "meta": 1751270456501, "relativePath": "resources\\Json\\NEW_LEVEL.json" }, "369304fd-101d-46ed-92be-ecbd8fad18ec": { - "asset": 1746686844000, - "meta": 1748437825855, + "asset": 1751270412363, + "meta": 1751270458666, "relativePath": "resources\\Particle\\left_2_3_1.plist" }, "1413285e-fbb4-449b-aae6-ed678dfc570d": { - "asset": 1746687038000, - "meta": 1748437825855, + "asset": 1751270412364, + "meta": 1751270458670, "relativePath": "resources\\Particle\\left_3_1_1.plist" }, "aefab8fc-93d1-46a4-bcad-37868e23ed88": { - "asset": 1746687507000, - "meta": 1748437825873, + "asset": 1751270412367, + "meta": 1751270458701, "relativePath": "resources\\Particle\\right_1_1_1.plist" }, "4785d85b-8f9b-4bda-a3e6-db6fda98448d": { - "asset": 1746687098000, - "meta": 1748437825873, + "asset": 1751270412366, + "meta": 1751270458692, "relativePath": "resources\\Particle\\left_3_3_1.plist" }, "12e1b849-ce38-42b3-ad4c-afc5ecc39f53": { - "asset": 1746693333000, - "meta": 1748437825874, + "asset": 1751270412368, + "meta": 1751270458698, "relativePath": "resources\\Particle\\right_1_2_1.plist" }, "72db9548-9c2d-44a5-9b20-b2e1bc503bde": { - "asset": 1746687057000, - "meta": 1748437825874, + "asset": 1751270412365, + "meta": 1751270458698, "relativePath": "resources\\Particle\\left_3_2_1.plist" }, "e9fa150a-0934-49b2-8ff1-7a3731a51ef5": { - "asset": 1746693940000, - "meta": 1748437825876, + "asset": 1751270412370, + "meta": 1751270458702, "relativePath": "resources\\Particle\\right_2_1_1.plist" }, "91939f84-461f-4e10-8fc6-9d5d1c0a755f": { - "asset": 1746693363000, - "meta": 1748437825877, + "asset": 1751270412369, + "meta": 1751270458702, "relativePath": "resources\\Particle\\right_1_3_1.plist" }, "3ca8a558-0473-46b4-bf9e-8219bd053d31": { - "asset": 1746695306000, - "meta": 1748437825879, + "asset": 1751270412374, + "meta": 1751270458739, "relativePath": "resources\\Particle\\right_3_2_1.plist" }, "4f669477-e069-48c9-8ac4-3a78a906acdc": { - "asset": 1746694419000, - "meta": 1748437825880, + "asset": 1751270412373, + "meta": 1751270458735, "relativePath": "resources\\Particle\\right_3_1_1.plist" }, "7cd70a8a-d647-4879-bb5d-581af7354952": { - "asset": 1746695341000, - "meta": 1748437825881, + "asset": 1751270412375, + "meta": 1751270458736, "relativePath": "resources\\Particle\\right_3_3_1.plist" }, "ce0d2338-8b1e-46ac-b938-9e2e78bec2c4": { - "asset": 1746694123000, - "meta": 1748437825881, + "asset": 1751270412372, + "meta": 1751270458715, "relativePath": "resources\\Particle\\right_2_3_1.plist" }, "08e0f120-6617-416b-8415-9d1e8df99eac": { - "asset": 1746696176000, - "meta": 1748437825885, + "asset": 1751270412371, + "meta": 1751270458702, "relativePath": "resources\\Particle\\right_2_2_1.plist" }, "a2c01fb9-38c6-4c61-90ae-ebf10eb9ed97": { - "asset": 1746695524000, - "meta": 1748437825885, + "asset": 1751270412389, + "meta": 1751270458746, "relativePath": "resources\\Particle\\top_1_2_1.plist" }, "cd676662-9e94-4ce6-a646-75e290df3035": { - "asset": 1746695365000, - "meta": 1748437825886, + "asset": 1751270412388, + "meta": 1751270458739, "relativePath": "resources\\Particle\\top_1_1_1.plist" }, "acf7e102-5bfb-43d0-baba-dc86655425c7": { - "asset": 1746696103000, - "meta": 1748437825896, + "asset": 1751270412390, + "meta": 1751270458746, "relativePath": "resources\\Particle\\top_1_3_1.plist" }, "7ac2cc5d-cb5e-46e6-b8fd-a0d0fab58f94": { - "asset": 1746696154000, - "meta": 1748437825896, + "asset": 1751270412391, + "meta": 1751270458739, "relativePath": "resources\\Particle\\top_2_1_1.plist" }, "9b32ae82-e69e-4dd1-a8fa-5dcbc2f557d6": { - "asset": 1746696263000, - "meta": 1748437825908, + "asset": 1751270412392, + "meta": 1751270458750, "relativePath": "resources\\Particle\\top_2_2_1.plist" }, "904fab90-af16-403d-ae7d-92cda0ffdf88": { - "asset": 1746696287000, - "meta": 1748437825933, + "asset": 1751270412393, + "meta": 1751270458802, "relativePath": "resources\\Particle\\top_2_3_1.plist" }, "5efe1712-3acb-4700-a318-3f851110e111": { - "asset": 1746696323000, - "meta": 1748437825939, + "asset": 1751270412394, + "meta": 1751270458800, "relativePath": "resources\\Particle\\top_3_1_1.plist" }, "c86193d7-6eb3-416b-bc19-43fd0106e56e": { - "asset": 1746696349000, - "meta": 1748437825940, + "asset": 1751270412395, + "meta": 1751270458802, "relativePath": "resources\\Particle\\top_3_2_1.plist" }, "ff5bc8e1-d5a7-4667-9a01-6eb1173dee63": { - "asset": 1746696368000, - "meta": 1748437825940, + "asset": 1751270412397, + "meta": 1751270458802, "relativePath": "resources\\Particle\\top_3_3_1.plist" }, "a31899db-3035-4aa4-a9fe-7fded073dd86": { - "asset": 1747037900273, - "meta": 1748437825076, + "asset": 1751270412377, + "meta": 1751270456533, "relativePath": "resources\\Particle\\sp10_1.png" }, "939ebf75-c659-407b-9c0f-d7076254b88f": { - "asset": 1747037900654, - "meta": 1748437825084, + "asset": 1751270412386, + "meta": 1751270456604, "relativePath": "resources\\Particle\\sp8_1.png" }, "d3490b80-4d19-4947-813e-0bcc1befc7c8": { - "asset": 1747037900326, - "meta": 1748437825092, + "asset": 1751270412377, + "meta": 1751270456547, "relativePath": "resources\\Particle\\sp1_1.png" }, "5b2973a1-a163-4dc2-819f-2b5e6857af9c": { - "asset": 1747037900515, - "meta": 1748437825093, + "asset": 1751270412383, + "meta": 1751270456564, "relativePath": "resources\\Particle\\sp5_1.png" }, "c4aa25d1-758f-43cd-a8ee-a3dbacc15789": { - "asset": 1747037900560, - "meta": 1748437825106, + "asset": 1751270412384, + "meta": 1751270456568, "relativePath": "resources\\Particle\\sp6_1.png" }, "613e4638-41b7-425b-a51a-6b79fa173623": { - "asset": 1747037900420, - "meta": 1748437825107, + "asset": 1751270412381, + "meta": 1751270456544, "relativePath": "resources\\Particle\\sp3_1.png" }, "7c24de34-6445-4eb1-8e25-e67099420921": { - "asset": 1747037900607, - "meta": 1748437825111, + "asset": 1751270412385, + "meta": 1751270456601, "relativePath": "resources\\Particle\\sp7_1.png" }, "a6a556b5-3b8d-4783-b187-5c19590004c4": { - "asset": 1747037900699, - "meta": 1748437825113, + "asset": 1751270412387, + "meta": 1751270456608, "relativePath": "resources\\Particle\\sp9_1.png" }, "e70e4bb3-725c-48ca-a6ff-be6a51cecab6": { - "asset": 1747037900468, - "meta": 1748437825115, + "asset": 1751270412382, + "meta": 1751270456551, "relativePath": "resources\\Particle\\sp4_1.png" }, "13185b79-88d9-48ff-95ad-2f6cb45b602a": { - "asset": 1747037900374, - "meta": 1748437825116, + "asset": 1751270412379, + "meta": 1751270456573, "relativePath": "resources\\Particle\\sp2_1.png" }, "b7dfc157-1e68-4278-a452-23541de3bab7": { - "asset": 1750920249162, - "meta": 1751250884745, + "asset": 1751270412190, + "meta": 1751270457485, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x" }, "9d39798c-3312-4cfe-b597-73c0057c8e99": { - "asset": 1750920249162, - "meta": 1751250884750, + "asset": 1751270412190, + "meta": 1751270458245, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures" }, "e0b3973d-fd82-4d03-a0db-8ec2dd56271a": { - "asset": 1750920249162, - "meta": 1751250884752, + "asset": 1751270412192, + "meta": 1751270458245, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle" }, "05875bd1-0240-40cc-b2d9-0166038382ba": { - "asset": 1747341686000, - "meta": 1748437825544, + "asset": 1751270412191, + "meta": 1751270458301, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle\\circle_00.png" }, "b706673f-e777-40bc-af87-422aec7626a4": { - "asset": 1747341686000, - "meta": 1748437825551, + "asset": 1751270412192, + "meta": 1751270458301, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle\\flash.png" }, "4728bb0d-1617-4105-b140-fcfc14969a6b": { - "asset": 1747341686000, - "meta": 1748437825559, + "asset": 1751270412191, + "meta": 1751270458312, "relativePath": "effect\\tuowei\\2D and UI trailing effects\\2D和UI的拖尾效果3.x\\textures\\particle\\LiZi1.png" }, "6c53e21f-0dfa-4273-b08a-951f6792467b": { - "asset": 1751253708450, - "meta": 1751253708459, + "asset": 1751270412436, + "meta": 1751270457572, "relativePath": "resources\\prefab\\block\\block4.prefab" }, "6413d7ad-bfc3-4b8c-bc1c-c1d819e9d892": { - "asset": 1750920250139, - "meta": 1751250884731, + "asset": 1751270412055, + "meta": 1751270456633, "relativePath": "Script\\lq_base\\data" }, "0432403f-8c23-4a3e-813a-1a9a1d88aeed": { - "asset": 1750920250155, - "meta": 1751250884731, + "asset": 1751270412058, + "meta": 1751270456634, "relativePath": "Script\\lq_base\\util" }, "c22a3c1c-53fb-4174-9fea-8e7fd0eaeb80": { - "asset": 1748499413325, - "meta": 1748513630748, + "asset": 1751270412060, + "meta": 1751270456734, "relativePath": "Script\\lq_collide_system\\lq_collide_base.ts" }, "81314984-dc17-444a-bf3b-48014af5caaf": { - "asset": 1748499413326, - "meta": 1748513630950, + "asset": 1751270412061, + "meta": 1751270456818, "relativePath": "Script\\lq_collide_system\\lq_collide_system.js" }, "ad6beb84-3361-4f58-ac42-8c77980b3384": { - "asset": 1748499413326, - "meta": 1748513631114, + "asset": 1751270412060, + "meta": 1751270457042, "relativePath": "Script\\lq_collide_system\\lq_collide_system.d.ts" }, "a5470d94-355f-4d03-ba58-81077a780e7f": { - "asset": 1748499413804, - "meta": 1748513631012, + "asset": 1751270412055, + "meta": 1751270457603, "relativePath": "Script\\lq_base\\data\\lq_data.ts" }, "41e4557a-fef0-4dcf-97ed-8070a81667a2": { - "asset": 1748499413804, - "meta": 1748513631014, + "asset": 1751270412055, + "meta": 1751270457608, "relativePath": "Script\\lq_base\\data\\lq_interface.ts" }, "9830980f-5d4c-4417-acc1-7bd7bbe4a9db": { - "asset": 1748499413804, - "meta": 1748513630993, + "asset": 1751270412054, + "meta": 1751270457590, "relativePath": "Script\\lq_base\\data\\lq_const.ts" }, "cd21fb93-658e-4b3a-8897-b4deba47bc31": { - "asset": 1748499414034, - "meta": 1748513631049, + "asset": 1751270412056, + "meta": 1751270457628, "relativePath": "Script\\lq_base\\util\\lq_base_util.ts" }, "98488d9e-d9da-43d7-b2ef-0909d30f2904": { - "asset": 1748499414034, - "meta": 1748513631107, + "asset": 1751270412058, + "meta": 1751270457688, "relativePath": "Script\\lq_base\\util\\lq_pool_util.ts" }, "997fce7c-cb7f-4e14-b7e5-87a4f9f1f643": { - "asset": 1748499414034, - "meta": 1748513631064, + "asset": 1751270412057, + "meta": 1751270457668, "relativePath": "Script\\lq_base\\util\\lq_math_util.ts" }, "63c53081-f5d8-4bfe-9845-38fb537ae17b": { - "asset": 1748513423363, - "meta": 1748513475485, + "asset": 1751270412057, + "meta": 1751270457651, "relativePath": "Script\\lq_base\\util\\lq_game_util.ts" }, "b6fd3869-f3bc-4fcb-9660-e4cbe0824ad3": { - "asset": 1750920250139, - "meta": 1751250884712, + "asset": 1751270412056, + "meta": 1751270455400, "relativePath": "Script\\lq_base" }, "7262f828-3947-4d61-ab6b-0c5ef01a6473": { - "asset": 1750920250171, - "meta": 1751250884714, + "asset": 1751270412061, + "meta": 1751270455401, "relativePath": "Script\\lq_collide_system" }, "92f23179-46e7-4f6c-8d1f-3b68910937db": { - "asset": 1751254045760, - "meta": 1751254045768, + "asset": 1751270412437, + "meta": 1751270457591, "relativePath": "resources\\prefab\\block\\block5.prefab" }, "4bd218bc-f09f-4a7e-8581-e9faa4ee85b5": { - "asset": 1748518631814, - "meta": 1748518632693, + "asset": 1751270412060, + "meta": 1751270456742, "relativePath": "Script\\lq_collide_system\\lq_collide_config.ts" }, "e1e1fde9-4548-4234-97c0-b571d29d6964": { - "asset": 1751253674536, - "meta": 1751253674549, + "asset": 1751270412425, + "meta": 1751270457500, "relativePath": "resources\\prefab\\block\\block1.prefab" }, "92586008-06b8-4305-818c-ab9e69997bd3": { - "asset": 1748946820858, - "meta": 1748946822183, + "asset": 1751270412344, + "meta": 1751270456495, "relativePath": "resources\\Json\\level98.json" }, "4ecec063-d01a-4047-a6bf-2af9daa39c0e": { - "asset": 1749006904091, - "meta": 1749007053259, + "asset": 1751270412335, + "meta": 1751270456462, "relativePath": "resources\\Json\\level83.json" }, "3c71c961-6f67-4945-8fc8-4423bde5a407": { - "asset": 1750920250486, - "meta": 1751250884745, + "asset": 1751270412152, + "meta": 1751270457481, "relativePath": "UI\\UI\\start" }, "e1b9ccf5-5ce0-4f3a-98b3-be03da8aa0b1": { - "asset": 1744703447500, - "meta": 1749019355803, + "asset": 1751270412151, + "meta": 1751270458298, "relativePath": "UI\\UI\\start\\jiazai3.png" }, "a599dccc-d5a2-4fff-86ea-f3a03ce9b7b8": { - "asset": 1744703447383, - "meta": 1749019355803, + "asset": 1751270412150, + "meta": 1751270458288, "relativePath": "UI\\UI\\start\\jiazai1.png" }, "c8d5d71b-f258-4537-9490-86e913376bf6": { - "asset": 1744703447686, - "meta": 1749019355819, + "asset": 1751270412152, + "meta": 1751270458288, "relativePath": "UI\\UI\\start\\logo.png" }, "5446346a-3fb9-4f57-bd44-4858f8fd3af2": { - "asset": 1747986063424, - "meta": 1749019355851, + "asset": 1751270412147, + "meta": 1751270458318, "relativePath": "UI\\UI\\start\\bg.jpg" }, "4ef763e2-6a9f-4632-8dd6-5f6394e2c593": { - "asset": 1744703594000, - "meta": 1749019355867, + "asset": 1751270412148, + "meta": 1751270458318, "relativePath": "UI\\UI\\start\\bg_1.jpg" }, "707d9e1d-7462-4b68-abd1-ae01b980fde2": { - "asset": 1749022072739, - "meta": 1749022347427, + "asset": 1751270412132, + "meta": 1751270457523, "relativePath": "UI\\UI\\ice2.png" }, "07fe1d60-1325-4d4f-8cb6-0ef546f3bfe9": { - "asset": 1749022073336, - "meta": 1749022347433, + "asset": 1751270412125, + "meta": 1751270457530, "relativePath": "UI\\UI\\gx1.png" }, "e823ecf2-4cd3-49b7-ad41-785d1977e9f9": { - "asset": 1749022075753, - "meta": 1749022347498, + "asset": 1751270412129, + "meta": 1751270458016, "relativePath": "UI\\UI\\ice1.png" }, "a8367177-3aba-42cd-9f77-1f1ad166b0ac": { - "asset": 1750920250360, - "meta": 1751250884686, + "asset": 1751270412079, + "meta": 1751270454726, "relativePath": "TextureBg" }, "89c216a8-80c9-4e97-a06f-864e5640fcc8": { - "asset": 1750920250375, - "meta": 1751250884724, + "asset": 1751270412090, + "meta": 1751270455831, "relativePath": "TextureBg\\pop_Bg" }, "22bce3a4-1d59-4e46-a06c-530039f813b8": { - "asset": 1749022080209, - "meta": 1749022636401, + "asset": 1751270412090, + "meta": 1751270457450, "relativePath": "TextureBg\\pop_Bg\\yinYing.png" }, "46fd55f0-7f2d-444c-ad65-9dfff081c008": { - "asset": 1749022082580, - "meta": 1749022636409, + "asset": 1751270412082, + "meta": 1751270457417, "relativePath": "TextureBg\\pop_Bg\\pauseBg.png" }, + "669a5a6c-68ca-412c-9321-a0af32085234": { + "asset": 1751270412085, + "meta": 1751270457477, + "relativePath": "TextureBg\\pop_Bg\\result_bg2.png" + }, "cf67e4b5-6705-4eb0-809f-69efa4a5883e": { - "asset": 1749022085336, - "meta": 1749022636427, + "asset": 1751270412084, + "meta": 1751270457483, "relativePath": "TextureBg\\pop_Bg\\result_bg1.png" }, + "8ac53103-5eab-4857-b56c-2d055f0be6e3": { + "asset": 1751270412088, + "meta": 1751270457538, + "relativePath": "TextureBg\\pop_Bg\\tanchuang1.png" + }, "6d618c9c-dc6d-48d0-a203-3304725f885b": { - "asset": 1744703447453, - "meta": 1749022882221, + "asset": 1751270412150, + "meta": 1751270458288, "relativePath": "UI\\UI\\start\\jiazai2.png" }, "3c749884-1309-4030-a3f2-8c6124c14da5": { - "asset": 1749026725983, - "meta": 1749026770270, + "asset": 1751270412075, + "meta": 1751270456852, "relativePath": "Script\\prop\\Boom.ts" }, "41cb8ba0-2d20-47ff-968d-867b09e655fb": { - "asset": 1749026745970, - "meta": 1749026770305, + "asset": 1751270412076, + "meta": 1751270456879, "relativePath": "Script\\prop\\Lock.ts" }, "669f44ae-4a5f-4e46-a6b0-05c6f008da46": { - "asset": 1749027220793, - "meta": 1749027222141, + "asset": 1751270412047, + "meta": 1751270455651, "relativePath": "Script\\NumberToImage.ts" }, "3890fe43-f2f3-4d6e-acfa-07ba7794f7b6": { - "asset": 1749035384566, - "meta": 1749035454458, + "asset": 1751270412326, + "meta": 1751270456443, "relativePath": "resources\\Json\\level70.json" }, "bf502854-8e31-40c1-9d27-ac480682b4c4": { - "asset": 1750236731095, - "meta": 1750236731100, + "asset": 1751270412233, + "meta": 1751270456113, "relativePath": "prefab\\prop\\star.prefab" }, "ad8cb6f3-0a88-4247-9ba2-7ecb1d4537fe": { - "asset": 1749038829891, - "meta": 1749038830504, + "asset": 1751270412075, + "meta": 1751270456866, "relativePath": "Script\\prop\\Freeze.ts" }, "7b34e903-ce39-4cc8-bb62-11e9068ad7a0": { - "asset": 1745303526000, - "meta": 1749094519908, + "asset": 1751270412121, + "meta": 1751270457484, "relativePath": "TextureBlock\\block\\lianjie_1.png" }, "bee79baf-7ab4-4603-bd5f-9b7b367bb87f": { - "asset": 1745303526000, - "meta": 1749094519909, + "asset": 1751270412122, + "meta": 1751270457480, "relativePath": "TextureBlock\\block\\lianjie_2.png" }, "25bab75a-d0a5-42a2-b0d4-f1aca4ac8d80": { - "asset": 1749535522491, - "meta": 1749535522498, + "asset": 1751270412226, + "meta": 1751270456024, "relativePath": "prefab\\prop\\adhesive.prefab" }, "d1e47425-52fd-46a4-b2e0-ca7eb4035219": { - "asset": 1749111459159, - "meta": 1749111531179, + "asset": 1751270412179, + "meta": 1751270455917, "relativePath": "effect\\nianhe\\jiekou_heng.atlas" }, "4811f779-3bd2-4074-b313-6b217df626ad": { - "asset": 1749111459158, - "meta": 1749111531194, + "asset": 1751270412181, + "meta": 1751270455937, "relativePath": "effect\\nianhe\\jiekou_heng.png" }, "8b100987-aed3-4feb-ba02-557888c6784e": { - "asset": 1749111459120, - "meta": 1749111531210, + "asset": 1751270412180, + "meta": 1751270458398, "relativePath": "effect\\nianhe\\jiekou_heng.json" }, "d2add891-a975-4a43-8604-a7ab0ae5de91": { - "asset": 1749181658130, - "meta": 1749181658566, + "asset": 1751270412059, + "meta": 1751270456720, "relativePath": "Script\\lq_collide_system\\lq_collide.ts" }, "b5a3ac74-65d0-495a-a1ca-fa356fa27044": { - "asset": 1749193070000, - "meta": 1749195518139, + "asset": 1751270412314, + "meta": 1751270456412, "relativePath": "resources\\Json\\level48.json" }, "f12e967c-5941-4412-aec3-a0f685bbd348": { - "asset": 1749183226000, - "meta": 1749195518140, + "asset": 1751270412295, + "meta": 1751270456369, "relativePath": "resources\\Json\\level21.json" }, "92a55f0e-c363-4a6c-8f90-184e94ab3627": { - "asset": 1749182307000, - "meta": 1749195518143, + "asset": 1751270412292, + "meta": 1751270456365, "relativePath": "resources\\Json\\level19.json" }, "529f3c90-8582-4ee9-ad0e-a03537b58dbe": { - "asset": 1749189827000, - "meta": 1749195518145, + "asset": 1751270412299, + "meta": 1751270456377, "relativePath": "resources\\Json\\level26.json" }, "b8cbb874-456c-45e9-a26d-bcf67373d057": { - "asset": 1749006686343, - "meta": 1749201359103, + "asset": 1751270412167, + "meta": 1751270455863, "relativePath": "effect\\load\\skeleton.atlas" }, "904053d8-a235-4912-a613-9c55b49a1fcf": { - "asset": 1749201299713, - "meta": 1749201359262, + "asset": 1751270412172, + "meta": 1751270456097, "relativePath": "effect\\load\\skeleton.png" }, "83fdf834-580f-49fa-ab44-3f234c89d1c2": { - "asset": 1749006685475, - "meta": 1749201359280, + "asset": 1751270412167, + "meta": 1751270458388, "relativePath": "effect\\load\\skeleton.json" }, "dc0c1cff-b811-45ac-a0bb-85669ed178f7": { - "asset": 1748402748000, - "meta": 1749203150848, + "asset": 1751270412272, + "meta": 1751270456300, "relativePath": "resources\\Json\\level125.json" }, "2eb31c5e-4f7a-42d8-a961-3b5e60583d3e": { - "asset": 1748413842000, - "meta": 1749203150849, + "asset": 1751270412274, + "meta": 1751270456315, "relativePath": "resources\\Json\\level130.json" }, "510edcae-1f66-45f1-8bb4-3db4986cfa22": { - "asset": 1748411907000, - "meta": 1749203150851, + "asset": 1751270412273, + "meta": 1751270456308, "relativePath": "resources\\Json\\level128.json" }, "5080d509-53d2-44d1-90c4-349c2e006a19": { - "asset": 1748420393000, - "meta": 1749203150852, + "asset": 1751270412277, + "meta": 1751270456323, "relativePath": "resources\\Json\\level135.json" }, "fa10390d-fc46-4025-b791-04d326c1f013": { - "asset": 1748419328000, - "meta": 1749203150854, + "asset": 1751270412276, + "meta": 1751270456317, "relativePath": "resources\\Json\\level133.json" }, "abae2d80-f428-4585-870a-295a24697637": { - "asset": 1748416596000, - "meta": 1749203150856, + "asset": 1751270412276, + "meta": 1751270456322, "relativePath": "resources\\Json\\level134.json" }, "a0412d3a-5dcc-4671-af2e-aa9794f7e08f": { - "asset": 1748403832000, - "meta": 1749203150857, + "asset": 1751270412272, + "meta": 1751270456304, "relativePath": "resources\\Json\\level126.json" }, "4bd2d099-e112-49c5-b0ec-680470952c3e": { - "asset": 1748487887000, - "meta": 1749203150859, + "asset": 1751270412281, + "meta": 1751270456328, "relativePath": "resources\\Json\\level140.json" }, "f6714297-00e0-44fb-b706-e3fbef1f486d": { - "asset": 1748487286000, - "meta": 1749203150860, + "asset": 1751270412279, + "meta": 1751270456324, "relativePath": "resources\\Json\\level138.json" }, "f539cbbc-12a9-42a4-9a80-05013ba69d0b": { - "asset": 1748489625000, - "meta": 1749203150861, + "asset": 1751270412283, + "meta": 1751270456332, "relativePath": "resources\\Json\\level143.json" }, "407bfb1e-6181-40c6-8b1f-6bd368cb9507": { - "asset": 1748488631000, - "meta": 1749203150861, + "asset": 1751270412282, + "meta": 1751270456331, "relativePath": "resources\\Json\\level141.json" }, "5417765e-1eff-4053-9572-b1d1197db88a": { - "asset": 1749004853000, - "meta": 1749203150863, + "asset": 1751270412283, + "meta": 1751270456335, "relativePath": "resources\\Json\\level144.json" }, "dfae9728-10ae-4338-9000-1844255e36d6": { - "asset": 1748400420000, - "meta": 1749203150864, + "asset": 1751270412271, + "meta": 1751270456301, "relativePath": "resources\\Json\\level124.json" }, "87a1f7e1-e195-4224-9223-90f9bfcf81c8": { - "asset": 1749005652000, - "meta": 1749203150866, + "asset": 1751270412284, + "meta": 1751270456333, "relativePath": "resources\\Json\\level145.json" }, "c23a8d9a-37a2-4ee6-b9e3-3adf2f1d82be": { - "asset": 1749116284000, - "meta": 1749203150869, + "asset": 1751270412288, + "meta": 1751270456352, "relativePath": "resources\\Json\\level152.json" }, "892e12ad-70db-468f-b4bd-a2cd65677298": { - "asset": 1749114485000, - "meta": 1749203150870, + "asset": 1751270412288, + "meta": 1751270456353, "relativePath": "resources\\Json\\level151.json" }, "dc754672-6abb-4801-910e-98ba5a873885": { - "asset": 1749017386000, - "meta": 1749203150871, + "asset": 1751270412287, + "meta": 1751270456348, "relativePath": "resources\\Json\\level150.json" }, "3b669f8e-12ad-4d16-9561-6fd9ace64638": { - "asset": 1749119877000, - "meta": 1749203150872, + "asset": 1751270412290, + "meta": 1751270456356, "relativePath": "resources\\Json\\level156.json" }, "a81ff75b-b73d-433f-abf4-18849599cdff": { - "asset": 1749117900000, - "meta": 1749203150872, + "asset": 1751270412289, + "meta": 1751270456355, "relativePath": "resources\\Json\\level154.json" }, "b97dfffc-df55-4efa-a2b5-66c748fa8992": { - "asset": 1749178609000, - "meta": 1749203150873, + "asset": 1751270412290, + "meta": 1751270456363, "relativePath": "resources\\Json\\level157.json" }, "0f9aab89-5e08-423d-8030-259fe54c4d74": { - "asset": 1749207306943, - "meta": 1749207335877, + "asset": 1751270412081, + "meta": 1751270457397, "relativePath": "TextureBg\\pop_Bg\\loadBg.jpg" }, "75b4f368-70b5-452d-9afd-ca7a6f1e2e60": { - "asset": 1749208553577, - "meta": 1749208583656, + "asset": 1751270412219, + "meta": 1751270456576, "relativePath": "music\\main_bgm.mp3" }, "41760d65-2f00-4cc3-9b87-00d2592e91dd": { - "asset": 1749459335413, - "meta": 1749459340526, + "asset": 1751270412304, + "meta": 1751270456390, "relativePath": "resources\\Json\\level34.json" }, "358754f4-96c4-4bde-bce1-36451d5f8fc6": { - "asset": 1749460616755, - "meta": 1749460861066, + "asset": 1751270412058, + "meta": 1751270457678, "relativePath": "Script\\lq_base\\util\\lq_platform_util.ts" }, "8a024faa-e4af-4cae-9c5c-693bee7120c1": { - "asset": 1723104058083, - "meta": 1749467157753, + "asset": 1751270412050, + "meta": 1751270456890, "relativePath": "Script\\Sdk\\DouyinEntranceView.ts" }, "24976052-1e2b-4093-8a2f-ea8a6de66515": { - "asset": 1749470251684, - "meta": 1749470252921, + "asset": 1751270412423, + "meta": 1751270454847, "relativePath": "resources\\level51.json" }, "f6dd9161-ac72-46f4-b977-9943277a79b9": { - "asset": 1749470323688, - "meta": 1749470324880, + "asset": 1751270412316, + "meta": 1751270456416, "relativePath": "resources\\Json\\level51.json" }, "5fc5bcf5-695e-4f28-8049-421f7d8e99b6": { - "asset": 1749537069914, - "meta": 1749537221099, + "asset": 1751270412074, + "meta": 1751270456838, "relativePath": "Script\\prop\\Adhesive.ts" }, "92dfa35c-14f5-48b7-8f57-583c7a23d434": { - "asset": 1751253635838, - "meta": 1751253635849, + "asset": 1751270412425, + "meta": 1751270457496, "relativePath": "resources\\prefab\\block\\block0.prefab" }, "a57bdbd8-3153-459e-b71c-9dc08d255d09": { - "asset": 1747987602221, - "meta": 1749543933648, + "asset": 1751270412406, + "meta": 1751270457074, "relativePath": "resources\\Window_Prop\\daoju9.png" }, "6c12637c-2bb7-4e7f-881b-96809e32c6cb": { - "asset": 1749543513675, - "meta": 1749543933658, + "asset": 1751270412406, + "meta": 1751270457043, "relativePath": "resources\\Window_Prop\\daoju8.png" }, "454ad829-851a-40ea-8ab9-941e828357ca": { - "asset": 1749544806827, - "meta": 1749544834281, + "asset": 1751270412044, + "meta": 1751270455395, "relativePath": "Script\\Load.ts" }, "0d272a57-5428-450e-a8b9-1574c3d89951": { - "asset": 1749718336723, - "meta": 1749720601981, + "asset": 1751270412051, + "meta": 1751270456903, "relativePath": "Script\\Sdk\\MiniGameManager.ts" }, "38201fb6-580d-498d-818a-9b513cd981ea": { - "asset": 1749726700055, - "meta": 1749726721742, + "asset": 1751270412286, + "meta": 1751270456343, "relativePath": "resources\\Json\\level149.json" }, "b3fc0972-de1d-4a54-a194-62f91a766878": { - "asset": 1749798858423, - "meta": 1749798860525, + "asset": 1751270412125, + "meta": 1751270457504, "relativePath": "UI\\UI\\btn_yellow.png" }, "8a5504e1-4ecb-4d59-b9ec-5351a09d7442": { - "asset": 1749798858307, - "meta": 1749798860527, + "asset": 1751270412124, + "meta": 1751270457498, "relativePath": "UI\\UI\\btn_blue.png" }, "46fd7fa0-2fd8-4c2d-96ef-4df704c27b9b": { - "asset": 1749798858124, - "meta": 1749799000111, + "asset": 1751270412152, + "meta": 1751270457545, "relativePath": "UI\\UI\\tanchuang1.png" }, "f0797bd4-cc39-44cf-84d7-c7ce8ae1c9e6": { - "asset": 1749798858194, - "meta": 1749799072039, + "asset": 1751270412153, + "meta": 1751270457546, "relativePath": "UI\\UI\\tanchuang2.png" }, "fa9a438e-1f24-47fe-bbcd-b75abcff2ea8": { - "asset": 1749799335535, - "meta": 1749799360542, + "asset": 1751270412236, + "meta": 1751270458413, "relativePath": "res\\font\\font.plist" }, "4b15a631-612d-4c2a-8507-96df5812ec08": { - "asset": 1749807157281, - "meta": 1749809683377, + "asset": 1751270412139, + "meta": 1751270457526, "relativePath": "UI\\UI\\result_btn1.png" }, "ba2b6483-46df-41a9-b5f8-76ad05164bf3": { - "asset": 1749807157095, - "meta": 1749809683378, + "asset": 1751270412140, + "meta": 1751270457540, "relativePath": "UI\\UI\\result_btn3.png" }, "62e825ca-bd6a-4e05-8b08-cba467c91243": { - "asset": 1749807156752, - "meta": 1749809683379, + "asset": 1751270412140, + "meta": 1751270457544, "relativePath": "UI\\UI\\result_btn2.png" }, "d2adfa00-68ea-4d63-97a0-44fca153a2d7": { - "asset": 1749809059537, - "meta": 1749809094033, + "asset": 1751270412135, + "meta": 1751270458978, "relativePath": "UI\\UI\\publicUI.plist" }, "c58de376-bb53-4664-bf27-270be7bb53d1": { - "asset": 1750042622364, - "meta": 1750042623994, + "asset": 1751270412040, + "meta": 1751270455128, "relativePath": "Script\\Block.ts" }, "aabd80cb-b51f-44d9-b9db-0bd736acd045": { - "asset": 1750143645587, - "meta": 1750143648746, + "asset": 1751270412252, + "meta": 1751270456215, "relativePath": "resources\\Json\\level1.json" }, "71910b3b-2542-4863-8a81-cec3f15bbb41": { - "asset": 1750145338230, - "meta": 1750145376877, + "asset": 1751270412123, + "meta": 1751270457490, "relativePath": "TextureBlock\\block\\star.png" }, "7c245d33-7161-42a1-a713-d944b39d83fa": { - "asset": 1750145321392, - "meta": 1750145376899, + "asset": 1751270412122, + "meta": 1751270458958, "relativePath": "TextureBlock\\block\\star.plist" }, "76cfa326-3d21-4ca5-8ecf-d35cf4bd383b": { - "asset": 1750230727856, - "meta": 1750231085016, + "asset": 1751270412293, + "meta": 1751270456369, "relativePath": "resources\\Json\\level2.json" }, "2b67b348-a49b-45af-b4d2-690221b03a93": { - "asset": 1750233736819, - "meta": 1750233737936, + "asset": 1751270412301, + "meta": 1751270456383, "relativePath": "resources\\Json\\level3.json" }, "998a24bd-ffa0-4f96-bc39-a9789f42bd9b": { - "asset": 1750233817725, - "meta": 1750233918742, + "asset": 1751270412222, + "meta": 1751270456360, "relativePath": "music\\zhuan2.mp3" }, "7fe14751-1506-4a48-a280-a049f84bb394": { - "asset": 1750234866736, - "meta": 1750234867380, + "asset": 1751270412046, + "meta": 1751270455640, "relativePath": "Script\\NewMode.ts" }, "a5518b0f-7ed3-46f0-aa78-93f02f4579cc": { - "asset": 1750239223593, - "meta": 1750239320969, + "asset": 1751270412199, + "meta": 1751270456350, "relativePath": "music\\anniu_little.mp3" }, "7362cac7-12b5-4704-af6d-5b110c5e9fcf": { - "asset": 1750239222626, - "meta": 1750239320971, + "asset": 1751270412199, + "meta": 1751270456346, "relativePath": "music\\anniu_Big.mp3" }, "e4d2f16e-7663-4ee5-a479-06ae0eae91d5": { - "asset": 1750239221409, - "meta": 1750239320971, + "asset": 1751270412221, + "meta": 1751270456358, "relativePath": "music\\zhuan1.mp3" }, "f3f0dece-8b63-488c-92b9-3a0a93554ed0": { - "asset": 1749196521000, - "meta": 1750242263606, + "asset": 1751270412078, + "meta": 1751270455786, "relativePath": "Script\\tdanalytics.mg.cocoscreator.min.js" }, "aca4abad-df73-42bc-80b4-ca0dc9998d21": { - "asset": 1750412679731, - "meta": 1750412716128, + "asset": 1751270412048, + "meta": 1751270455670, "relativePath": "Script\\Pause.ts" }, + "58403fe7-d7a2-426b-9b19-84d3236731a8": { + "asset": 1751270412067, + "meta": 1751270458016, + "relativePath": "Script\\module\\Music\\AudioManager.ts" + }, "c5692be7-8703-45e4-9f67-23b54d290356": { - "asset": 1750752541531, - "meta": 1750753878689, + "asset": 1751270412062, + "meta": 1751270457758, "relativePath": "Script\\module\\Config\\GameConfig.ts" }, "a790b6e5-b51f-4d1a-aa85-2832e8fcfc9f": { - "asset": 1750755345320, - "meta": 1750755469968, + "asset": 1751270412277, + "meta": 1751270456325, "relativePath": "resources\\Json\\level137.json" }, "f41d602c-b8df-4067-a88a-16c4ba168356": { - "asset": 1750389088000, - "meta": 1750820043751, + "asset": 1751270412268, + "meta": 1751270456289, "relativePath": "resources\\Json\\level120.json" }, "96acc152-cb32-45fb-806d-dbda87fd435b": { - "asset": 1750395879000, - "meta": 1750820043754, + "asset": 1751270412270, + "meta": 1751270456297, "relativePath": "resources\\Json\\level122.json" }, "8b4fe7f9-ceba-43bb-bb53-6ae24b9d9244": { - "asset": 1750403988000, - "meta": 1750820043756, + "asset": 1751270412275, + "meta": 1751270456318, "relativePath": "resources\\Json\\level132.json" }, "1f01b045-4882-4eae-9c4d-37103df09d36": { - "asset": 1750407621000, - "meta": 1750820043759, + "asset": 1751270412284, + "meta": 1751270456336, "relativePath": "resources\\Json\\level146.json" }, "cfddd1e3-dca7-4b95-9892-46a6948315ca": { - "asset": 1750402528000, - "meta": 1750820043765, + "asset": 1751270412275, + "meta": 1751270456313, "relativePath": "resources\\Json\\level131.json" }, "301e6610-6a5d-46db-a4d0-3b707a3e6bb9": { - "asset": 1750397654000, - "meta": 1750820043769, + "asset": 1751270412270, + "meta": 1751270456295, "relativePath": "resources\\Json\\level123.json" }, "2af3d18b-c59a-483c-ac3a-ec6056ba053e": { - "asset": 1750416138000, - "meta": 1750820043771, + "asset": 1751270412285, + "meta": 1751270456337, "relativePath": "resources\\Json\\level147.json" }, "7d884300-fa5a-466c-8a20-6acdbe42ceda": { - "asset": 1750818540000, - "meta": 1750820043775, + "asset": 1751270412286, + "meta": 1751270456344, "relativePath": "resources\\Json\\level148.json" }, "4ae3e51b-8215-4c9f-b09c-e1632c85bd7d": { - "asset": 1750390723000, - "meta": 1750820043782, + "asset": 1751270412269, + "meta": 1751270456291, "relativePath": "resources\\Json\\level121.json" }, "1e896a42-b9b2-4865-afaa-6aabd7f7a627": { - "asset": 1750400534000, - "meta": 1750820043789, + "asset": 1751270412272, + "meta": 1751270456307, "relativePath": "resources\\Json\\level127.json" }, + "c1af99dd-ee03-40f7-9609-d3887d0dd357": { + "asset": 1751270412052, + "meta": 1751270457038, + "relativePath": "Script\\Sdk\\MiniGameSdk.ts" + }, "87a449b9-7ffa-4f00-a22b-b3202b4abfd5": { - "asset": 1751253182979, - "meta": 1751253295959, + "asset": 1751270412052, + "meta": 1751270455816, "relativePath": "Script\\Wall.ts" }, "ba9a4097-f4d2-4cc8-b325-34405e67b130": { - "asset": 1747031220662, - "meta": 1751253550229, + "asset": 1751270412117, + "meta": 1751270458942, "relativePath": "TextureBlock\\block\\freeze.plist" }, "a7769b53-73c4-4fd2-bcad-e83d044a502e": { - "asset": 1747031237447, - "meta": 1751253550202, + "asset": 1751270412121, + "meta": 1751270457516, "relativePath": "TextureBlock\\block\\freeze.png" }, "43bfc27a-ff6e-45b3-87c7-504d0f781397": { - "asset": 1751253977856, - "meta": 1751254030790, + "asset": 1751270412073, + "meta": 1751270458232, "relativePath": "Script\\module\\Tool\\GameTool.ts" }, - "84dfdbbd-ae68-4dec-b5e2-aa1e4d28c38f": { - "asset": 1745474175661, - "meta": 1751265193806, - "relativePath": "prefab\\alert" - }, - "99be851f-9f4f-4fdd-bd43-3e3f86dd78d2": { - "asset": 1741855414503, - "meta": 1751265193807, - "relativePath": "res\\music" - }, - "c8878cfa-dda2-45ac-9204-7b3c4da0d5c4": { - "asset": 1748420676403, - "meta": 1751265193808, - "relativePath": "resources\\prefab\\prop" - }, "90c37607-5145-4fb1-8d26-94d9a89baeee": { - "asset": 1751264990548, - "meta": 1751265193835, + "asset": 1751270412038, + "meta": 1751270454870, "relativePath": "Script\\Barrier.ts" }, "6ee6ccc9-e1e5-4d6f-815e-8aaa6ce5221a": { - "asset": 1751264990552, - "meta": 1751265193843, + "asset": 1751270412053, + "meta": 1751270455138, "relativePath": "Script\\btnControl.ts" }, "1dc936f8-7de8-4eae-91a0-4e48a1047e20": { - "asset": 1751264990549, - "meta": 1751265194057, + "asset": 1751270412042, + "meta": 1751270455381, "relativePath": "Script\\JiaZai.ts" }, + "809984f5-0183-4d45-9751-c6c56f5d1eb9": { + "asset": 1751270412050, + "meta": 1751270455784, + "relativePath": "Script\\SceneManager.ts" + }, "28d9b746-520c-4ddc-95f8-401692d28ffc": { - "asset": 1751264990615, - "meta": 1751272142778, + "asset": 1751270412490, + "meta": 1751270454721, "relativePath": "shop" }, "e4b11ec6-5712-4dba-ba33-eb23129e396a": { - "asset": 1751264990610, - "meta": 1751265194342, + "asset": 1751270412486, + "meta": 1751270455827, "relativePath": "shop\\img" }, "ac030bb2-163b-4609-8553-0d6e7e662d03": { - "asset": 1751264990615, - "meta": 1751265194344, + "asset": 1751270412489, + "meta": 1751270455830, "relativePath": "shop\\prefab" }, "c35d8611-3d61-4523-8ec7-3e961e2c46ab": { - "asset": 1751264990616, - "meta": 1751265194346, + "asset": 1751270412490, + "meta": 1751270455831, "relativePath": "shop\\script" }, "1c619601-a6ae-4c45-be2c-20b0d95e950f": { - "asset": 1751264990561, - "meta": 1751265194366, + "asset": 1751270412225, + "meta": 1751270456003, "relativePath": "prefab\\map\\wall.prefab" }, "66281f32-0047-4af8-8237-90c93fc4b0e8": { - "asset": 1751275766947, - "meta": 1751275766962, + "asset": 1751270466840, + "meta": 1751270466846, "relativePath": "Scene\\HomeScene.fire" }, "4eaf518b-35ec-4262-928d-4d497c3f2830": { - "asset": 1751264990545, - "meta": 1751265194383, + "asset": 1751270412036, + "meta": 1751270455155, "relativePath": "Scene\\GameScene.fire" }, "50c01dd8-431f-43cc-820e-abb2a859d031": { - "asset": 1751264990560, - "meta": 1751265194385, + "asset": 1751270412154, + "meta": 1751270454829, "relativePath": "animation\\set.anim" }, "f8d067a0-98d0-4a97-8159-506946262d4b": { - "asset": 1749799346569, - "meta": 1751265194434, + "asset": 1751270412238, + "meta": 1751270456135, "relativePath": "res\\font\\font.png" }, "49148440-dbc5-4936-b168-ac7707f80098": { - "asset": 1751264990567, - "meta": 1751265194517, + "asset": 1751270412450, + "meta": 1751270457112, "relativePath": "shop\\img\\coins3.png" }, "ea09c71c-5b5d-4b24-9b62-d93b291d93c2": { - "asset": 1751264990564, - "meta": 1751265194519, + "asset": 1751270412448, + "meta": 1751270457102, "relativePath": "shop\\img\\btn1.png" }, "5f5f473c-d88a-4bff-bb6b-2a5f6b2208e8": { - "asset": 1751264990565, - "meta": 1751265194522, + "asset": 1751270412449, + "meta": 1751270457092, "relativePath": "shop\\img\\coins2.png" }, "1c56a793-7cd3-412f-a040-8a754a2f4d41": { - "asset": 1751264990565, - "meta": 1751265194525, + "asset": 1751270412449, + "meta": 1751270457109, "relativePath": "shop\\img\\coins1.png" }, "270ef871-ac9d-4ba7-91d1-7d7624c3aed9": { - "asset": 1751264990569, - "meta": 1751265194529, + "asset": 1751270412451, + "meta": 1751270457130, "relativePath": "shop\\img\\coins5.png" }, "30543705-d10e-4279-a2fb-d2225b570bb4": { - "asset": 1751264990570, - "meta": 1751265194533, + "asset": 1751270412452, + "meta": 1751270457127, "relativePath": "shop\\img\\coins6.png" }, "e401e735-bc45-4c02-ab15-ac8f4afbed44": { - "asset": 1748249818200, - "meta": 1751265194594, + "asset": 1751270412100, + "meta": 1751270457455, "relativePath": "TextureBlock\\block\\block2.png" }, "eb639914-71d8-4def-a989-c4469533754d": { - "asset": 1749809077518, - "meta": 1751265194605, + "asset": 1751270412139, + "meta": 1751270457972, "relativePath": "UI\\UI\\publicUI.png" }, "14a00731-8325-4675-8abd-da6b581a7266": { - "asset": 1751264990569, - "meta": 1751265194540, + "asset": 1751270412451, + "meta": 1751270457102, "relativePath": "shop\\img\\coins4.png" }, "96c15f9c-935e-4e9d-b5c0-f95e5d429f5c": { - "asset": 1751264990571, - "meta": 1751265194556, + "asset": 1751270412453, + "meta": 1751270457128, "relativePath": "shop\\img\\coins7.png" }, "4dbc349a-8dbd-4753-8e82-378b916ea36b": { - "asset": 1751264990572, - "meta": 1751265194558, + "asset": 1751270412454, + "meta": 1751270457148, "relativePath": "shop\\img\\coins8.png" }, "58481a2a-4229-43d2-bd30-69e4f09cfe4b": { - "asset": 1751264990575, - "meta": 1751265194576, + "asset": 1751270412455, + "meta": 1751270457147, "relativePath": "shop\\img\\coins_sz1.png" }, "6c076da3-bb21-4e43-9e7e-d88b44bd01f4": { - "asset": 1751264990576, - "meta": 1751265194578, + "asset": 1751270412456, + "meta": 1751270457151, "relativePath": "shop\\img\\coins_sz10.png" }, "0734a70a-118d-4d9d-9a9f-9a61c11641d2": { - "asset": 1751264990575, - "meta": 1751265194582, + "asset": 1751270412455, + "meta": 1751270457148, "relativePath": "shop\\img\\coins_sz0.png" }, "1e3dbd9c-6c1c-420b-9320-e27f3195e6d0": { - "asset": 1751264990573, - "meta": 1751265194586, + "asset": 1751270412454, + "meta": 1751270457169, "relativePath": "shop\\img\\coins_di.png" }, "852ff94f-f07c-447b-93fa-a9adcb1a069b": { - "asset": 1751264990577, - "meta": 1751265194640, + "asset": 1751270412456, + "meta": 1751270457166, "relativePath": "shop\\img\\coins_sz11.png" }, "6112faa1-3935-48de-a5a8-3369a63cead8": { - "asset": 1751264990577, - "meta": 1751265194654, + "asset": 1751270412457, + "meta": 1751270457170, "relativePath": "shop\\img\\coins_sz12.png" }, "76467e5a-9a87-4d17-afae-777d7ff638a1": { - "asset": 1751264990579, - "meta": 1751265194660, + "asset": 1751270412458, + "meta": 1751270457193, "relativePath": "shop\\img\\coins_sz4.png" }, "1217c0be-cc7e-41be-b105-7c26baf444ff": { - "asset": 1751264990578, - "meta": 1751265194663, + "asset": 1751270412458, + "meta": 1751270457178, "relativePath": "shop\\img\\coins_sz2.png" }, "efc62fa5-f8bc-4661-8eb9-f6e2cb5b4ad7": { - "asset": 1751264990578, - "meta": 1751265194679, + "asset": 1751270412457, + "meta": 1751270457170, "relativePath": "shop\\img\\coins_sz13.png" }, "e9077dbb-d18e-45d5-aae4-9f46b103ed05": { - "asset": 1751264990579, - "meta": 1751265194683, + "asset": 1751270412458, + "meta": 1751270457182, "relativePath": "shop\\img\\coins_sz3.png" }, "774d1aad-d081-44e1-9d68-9a3fd767aba3": { - "asset": 1751264990580, - "meta": 1751265194686, + "asset": 1751270412459, + "meta": 1751270457193, "relativePath": "shop\\img\\coins_sz5.png" }, "08a0b3cf-1219-46ba-8171-206dfe24151b": { - "asset": 1751264990580, - "meta": 1751265194695, + "asset": 1751270412459, + "meta": 1751270457198, "relativePath": "shop\\img\\coins_sz6.png" }, "74db3129-e7a8-4b0b-baf9-e271bdfab9ba": { - "asset": 1751264990581, - "meta": 1751265194706, + "asset": 1751270412460, + "meta": 1751270457216, "relativePath": "shop\\img\\coins_sz8.png" }, "47d4dd52-9152-4724-ab77-4e9d15e14c2e": { - "asset": 1751264990581, - "meta": 1751265194708, + "asset": 1751270412460, + "meta": 1751270457219, "relativePath": "shop\\img\\coins_sz7.png" }, "3b8e0a01-7634-402d-a8d2-349fbbc809f6": { - "asset": 1751264990583, - "meta": 1751265194718, + "asset": 1751270412461, + "meta": 1751270457218, "relativePath": "shop\\img\\coins_sz9.png" }, + "406e8a3f-3b78-4541-90bb-ca79eefc1cb2": { + "asset": 1751270412473, + "meta": 1751270458818, + "relativePath": "shop\\img\\texture_atlas-0.plist" + }, "12c63ed2-bf61-4b5b-8d37-781d02f4386c": { - "asset": 1751264990584, - "meta": 1751265194727, + "asset": 1751270412462, + "meta": 1751270457223, "relativePath": "shop\\img\\cost_0.png" }, "88f4116d-72c2-46cc-9f06-d164a85a9275": { - "asset": 1751264990600, - "meta": 1751265195082, + "asset": 1751270412476, + "meta": 1751270458818, "relativePath": "shop\\img\\texture_atlas-1.plist" }, "76a01e2d-248a-494c-a56c-c14e4f26a3b0": { - "asset": 1751264990585, - "meta": 1751265194736, + "asset": 1751270412464, + "meta": 1751270457235, "relativePath": "shop\\img\\cost_10.png" }, "de906884-fc75-47a4-8e95-3bb20cbca688": { - "asset": 1751264990615, - "meta": 1751265194832, + "asset": 1751270412490, + "meta": 1751270457268, "relativePath": "shop\\script\\item.ts" }, "48bfe66e-6056-44da-a9a0-c5b5b6222801": { - "asset": 1751264990616, - "meta": 1751265194853, + "asset": 1751270412490, + "meta": 1751270457278, "relativePath": "shop\\script\\shop.ts" }, "b6cc00c9-4bc9-48a7-b075-af04e0f8cfe8": { - "asset": 1751264990585, - "meta": 1751265194742, + "asset": 1751270412463, + "meta": 1751270457237, "relativePath": "shop\\img\\cost_1.png" }, "1019c0e2-cc2c-4dde-93e4-86b676bc69cd": { - "asset": 1751264990586, - "meta": 1751265194746, + "asset": 1751270412465, + "meta": 1751270457238, "relativePath": "shop\\img\\cost_11.png" }, + "9df3aaf8-59bc-4eff-aa56-554ab3d4d2cb": { + "asset": 1751270412091, + "meta": 1751270457301, + "relativePath": "TextureBlock\\block\\AutoAtlas.pac" + }, "c31c74ba-a2b0-4b6f-ac21-5c87b44aea4a": { - "asset": 1751264990560, - "meta": 1751265194860, + "asset": 1751270412144, + "meta": 1751270457480, "relativePath": "UI\\UI\\set" }, "227db116-a70e-4157-b553-bfe8d6d18a6a": { - "asset": 1751264990587, - "meta": 1751265194758, + "asset": 1751270412465, + "meta": 1751270457249, "relativePath": "shop\\img\\cost_2.png" }, "db683201-2fb0-4753-bf65-3ae7ef314627": { - "asset": 1751264990587, - "meta": 1751265194790, + "asset": 1751270412466, + "meta": 1751270457251, "relativePath": "shop\\img\\cost_3.png" }, "c8b66182-996c-4377-8d0a-024d8b17e581": { - "asset": 1751264990590, - "meta": 1751265194803, + "asset": 1751270412467, + "meta": 1751270457269, "relativePath": "shop\\img\\cost_6.png" }, "b01ef5c5-2755-455d-acb4-ba3818f5e331": { - "asset": 1751271469102, - "meta": 1751271469112, + "asset": 1751270834671, + "meta": 1751270834676, "relativePath": "shop\\prefab\\shop.prefab" }, "a81d74d9-943b-4d0e-aad5-2999276d3447": { - "asset": 1751264990613, - "meta": 1751265194892, + "asset": 1751270412488, + "meta": 1751270457262, "relativePath": "shop\\prefab\\item.prefab" }, "f1cd9c7b-a0b7-41fc-94c2-db60d6a51281": { - "asset": 1751264990588, - "meta": 1751265194807, + "asset": 1751270412466, + "meta": 1751270457254, "relativePath": "shop\\img\\cost_4.png" }, "9ffc3971-f097-4de5-b88a-2e5e6d78104a": { - "asset": 1751264990588, - "meta": 1751265194817, + "asset": 1751270412467, + "meta": 1751270457253, "relativePath": "shop\\img\\cost_5.png" }, "4466b8d6-b468-4cb5-bc57-7a2bd3df12e4": { - "asset": 1751264990613, - "meta": 1751265194903, + "asset": 1751270412488, + "meta": 1751270457285, "relativePath": "shop\\prefab\\Tops.prefab" }, "c6022e1d-b8c5-498b-a3c1-740387f6d647": { - "asset": 1751264990591, - "meta": 1751265194855, + "asset": 1751270412468, + "meta": 1751270457292, "relativePath": "shop\\img\\cost_8.png" }, "f0c1b219-0608-4a6c-aef0-59fc9db4955e": { - "asset": 1751264990591, - "meta": 1751265194866, + "asset": 1751270412468, + "meta": 1751270457286, "relativePath": "shop\\img\\cost_7.png" }, + "6a34fed9-0090-400c-8845-15234002c44a": { + "asset": 1751270412475, + "meta": 1751270457366, + "relativePath": "shop\\img\\texture_atlas-0.png" + }, "6b7f9211-7903-45b4-b2e2-d388ba17e935": { - "asset": 1751264990592, - "meta": 1751265194869, + "asset": 1751270412469, + "meta": 1751270457307, "relativePath": "shop\\img\\cost_yuan.png" }, "6971355d-0542-42f6-96ec-4244dbcc5897": { - "asset": 1751264990605, - "meta": 1751265194954, + "asset": 1751270412481, + "meta": 1751270457434, "relativePath": "shop\\img\\texture_atlas-1.png" }, "621ae85f-f4e4-48a1-9e97-1cdfd769677d": { - "asset": 1751264990592, - "meta": 1751265194897, + "asset": 1751270412469, + "meta": 1751270457299, "relativePath": "shop\\img\\cost_9.png" }, "a7020897-1d42-416a-ab6f-b99429684626": { - "asset": 1751264990606, - "meta": 1751265194907, + "asset": 1751270412481, + "meta": 1751270457318, "relativePath": "shop\\img\\tx.png" }, "06097023-184a-44ab-be97-104b5b23de45": { - "asset": 1751264990607, - "meta": 1751265194916, + "asset": 1751270412483, + "meta": 1751270457339, "relativePath": "shop\\img\\txt2.png" }, "d824166e-71a9-461c-bd7d-2be020ff85b7": { - "asset": 1751264990606, - "meta": 1751265194918, + "asset": 1751270412482, + "meta": 1751270457334, "relativePath": "shop\\img\\txt1.png" }, "abd65429-c263-4d3a-84f3-1c26b1433094": { - "asset": 1751264990596, - "meta": 1751265194936, + "asset": 1751270412472, + "meta": 1751270457344, "relativePath": "shop\\img\\shop_2.jpg" }, "306b721d-bd6d-4dc2-9c7e-0d42021be3b3": { - "asset": 1751264990556, - "meta": 1751265194971, + "asset": 1751270412141, + "meta": 1751270458275, "relativePath": "UI\\UI\\set\\闇囧姩00.png" }, "fcaa412a-64a2-4cdc-937f-1f4fbc527dfc": { - "asset": 1751264990554, - "meta": 1751265194974, + "asset": 1751270412141, + "meta": 1751270458285, "relativePath": "UI\\UI\\set\\tiaodik.png" }, "964de756-e8ea-44b4-9371-ea2af234714a": { - "asset": 1751264990558, - "meta": 1751265194976, + "asset": 1751270412142, + "meta": 1751270458275, "relativePath": "UI\\UI\\set\\闊充箰00.png" }, "58c32817-0174-4337-a981-3e35167eb35c": { - "asset": 1751264990594, - "meta": 1751265194984, + "asset": 1751270412471, + "meta": 1751270457415, "relativePath": "shop\\img\\shop_1.png" }, "f8ebdf98-79f3-41fd-8663-8abd3225fa66": { - "asset": 1751264990557, - "meta": 1751265195000, + "asset": 1751270412142, + "meta": 1751270458285, "relativePath": "UI\\UI\\set\\闇囧姩01.png" }, "f5f584ca-c27f-40a2-96e6-6bc312eb3c21": { - "asset": 1751264990558, - "meta": 1751265195002, + "asset": 1751270412143, + "meta": 1751270458270, "relativePath": "UI\\UI\\set\\闊充箰01.png" }, "dfa1190c-5129-4775-b495-d2aca6a3a5bf": { - "asset": 1751264990560, - "meta": 1751265195004, + "asset": 1751270412144, + "meta": 1751270458283, "relativePath": "UI\\UI\\set\\闊虫晥01.png" }, "ea182daa-7a43-48b5-9a08-f20f71980deb": { - "asset": 1751264990559, - "meta": 1751265195009, + "asset": 1751270412143, + "meta": 1751270458269, "relativePath": "UI\\UI\\set\\闊虫晥00.png" }, + "d8bf615a-752c-47ba-84e3-8ef47d9c4de1": { + "asset": 1751270412486, + "meta": 1751270457424, + "relativePath": "shop\\img\\鍟嗗煄.jpg" + }, "2234ab2c-a7b4-48be-90e0-ae7aa58e9d91": { - "asset": 1751266150728, - "meta": 1751266292298, + "asset": 1751270412045, + "meta": 1751270455618, "relativePath": "Script\\Map.ts" }, "3d019ed8-3019-436d-add0-ceeb02a5baaf": { - "asset": 1746785313569, - "meta": 1751266787337, + "asset": 1751270412115, + "meta": 1751270458928, "relativePath": "TextureBlock\\block\\down.plist" }, "c660c59d-e175-4194-aaf3-33d1d03b783f": { - "asset": 1746785322424, - "meta": 1751266787293, + "asset": 1751270412116, + "meta": 1751270457454, "relativePath": "TextureBlock\\block\\down.png" }, + "df248952-2e59-4e66-9087-c06a90e587b7": { + "asset": 1751270412041, + "meta": 1751270455302, + "relativePath": "Script\\GameManager.ts" + }, "2ef5a7c6-04f5-418a-85b6-bf39220cd512": { - "asset": 1751268521295, - "meta": 1751268533998, + "asset": 1751270412247, + "meta": 1751270454830, "relativePath": "res\\texture_Block" }, "cc01997d-495e-480d-871e-be405a6c38b5": { - "asset": 1748243270785, - "meta": 1751268886474, + "asset": 1751270412242, + "meta": 1751270458472, "relativePath": "res\\texture_Block\\door.plist" }, "418b4767-01bf-4ac2-823b-9880f2a79215": { - "asset": 1748243270783, - "meta": 1751268886406, + "asset": 1751270412246, + "meta": 1751270456212, "relativePath": "res\\texture_Block\\door.png" - }, - "669a5a6c-68ca-412c-9321-a0af32085234": { - "asset": 1751274027909, - "meta": 1751274475829, - "relativePath": "TextureBg\\pop_Bg\\result_bg2.png" - }, - "8ac53103-5eab-4857-b56c-2d055f0be6e3": { - "asset": 1751274029760, - "meta": 1751274475832, - "relativePath": "TextureBg\\pop_Bg\\tanchuang1.png" - }, - "809984f5-0183-4d45-9751-c6c56f5d1eb9": { - "asset": 1751277377532, - "meta": 1751277390339, - "relativePath": "Script\\SceneManager.ts" - }, - "31150528-f369-46ce-a3aa-51b431eeaa39": { - "asset": 1751277507451, - "meta": 1751277917669, - "relativePath": "StartScene" - }, - "61d4c718-db3b-4b31-8221-f16bea3cf030": { - "asset": 1751277643319, - "meta": 1751277658616, - "relativePath": "Script\\module\\GameStart\\GameAppStart.ts" - }, - "58403fe7-d7a2-426b-9b19-84d3236731a8": { - "asset": 1751277657691, - "meta": 1751277658653, - "relativePath": "Script\\module\\Music\\AudioManager.ts" - }, - "c1af99dd-ee03-40f7-9609-d3887d0dd357": { - "asset": 1751278701178, - "meta": 1751278749241, - "relativePath": "Script\\Sdk\\MiniGameSdk.ts" - }, - "df248952-2e59-4e66-9087-c06a90e587b7": { - "asset": 1751279027968, - "meta": 1751279029771, - "relativePath": "Script\\GameManager.ts" } } \ No newline at end of file diff --git a/local/layout.editor.json b/local/layout.editor.json index 4655b21..10b6733 100644 --- a/local/layout.editor.json +++ b/local/layout.editor.json @@ -13,13 +13,13 @@ "type": "dock-h", "children": [ { - "width": 207.28125, + "width": 207, "height": 568.5, "type": "dock-v", "children": [ { - "width": 207.28125, - "height": 231.9479217529297, + "width": 207, + "height": 339.4895935058594, "type": "panel", "active": 0, "children": [ @@ -27,8 +27,8 @@ ] }, { - "width": 207.28125, - "height": 333.5520935058594, + "width": 207, + "height": 226, "type": "panel", "active": 0, "children": [ @@ -38,7 +38,7 @@ ] }, { - "width": 759.3333740234375, + "width": 759.9896240234375, "height": 568.5, "type": "panel", "active": 0, @@ -47,7 +47,7 @@ ] }, { - "width": 307.375, + "width": 307, "height": 568.5, "type": "panel", "active": 0, @@ -66,13 +66,13 @@ "cocos-services" ] }, - "window-1751279115812": {} + " common-asset-worker-worker": {} }, "panels": { "builder": { "x": 304, - "y": 34, - "width": 560, + "y": 22, + "width": 556, "height": 652 }, "project-settings": { diff --git a/local/local.json b/local/local.json index 6d1320d..829501a 100644 --- a/local/local.json +++ b/local/local.json @@ -1,6 +1,9 @@ { - "last-edit": "9c08062d-4cf1-4b6e-a8ba-4a3881cc7e7d", + "last-edit": "66281f32-0047-4af8-8237-90c93fc4b0e8", "recent-items": [ + "9c08062d-4cf1-4b6e-a8ba-4a3881cc7e7d", + "4eaf518b-35ec-4262-928d-4d497c3f2830", + "66281f32-0047-4af8-8237-90c93fc4b0e8", "5ed13d95-5b93-4407-b770-0dedeb674b0f", "bf502854-8e31-40c1-9d27-ac480682b4c4", "92dfa35c-14f5-48b7-8f57-583c7a23d434", @@ -34,10 +37,6 @@ "f0da65e3-27d4-43c7-9945-ace5c5d815e5", "1024689e-c2b8-4ef4-91de-02732703334f", "fc41ae6e-8743-4057-86fa-bff2f8ff171b", - "19659ed7-1823-42a9-b8e8-1884c19df817", - "b01ef5c5-2755-455d-acb4-ba3818f5e331", - "4eaf518b-35ec-4262-928d-4d497c3f2830", - "66281f32-0047-4af8-8237-90c93fc4b0e8", - "9c08062d-4cf1-4b6e-a8ba-4a3881cc7e7d" + "b01ef5c5-2755-455d-acb4-ba3818f5e331" ] } diff --git a/temp/BackupAssets/assets/shop/prefab/shop.prefab b/temp/BackupAssets/assets/shop/prefab/shop.prefab index 8f08ff7..fec1040 100644 --- a/temp/BackupAssets/assets/shop/prefab/shop.prefab +++ b/temp/BackupAssets/assets/shop/prefab/shop.prefab @@ -21,28 +21,13 @@ "__id__": 2 }, { - "__id__": 6 + "__id__": 7 }, { - "__id__": 10 + "__id__": 11 }, { - "__id__": 14 - }, - { - "__id__": 20 - }, - { - "__id__": 27 - }, - { - "__id__": 48 - }, - { - "__id__": 62 - }, - { - "__id__": 208 + "__id__": 66 }, { "__id__": 212 @@ -54,11 +39,11 @@ "_active": true, "_components": [ { - "__id__": 219 + "__id__": 220 } ], "_prefab": { - "__id__": 220 + "__id__": 221 }, "_opacity": 255, "_color": { @@ -122,10 +107,13 @@ }, { "__id__": 4 + }, + { + "__id__": 5 } ], "_prefab": { - "__id__": 5 + "__id__": 6 }, "_opacity": 150, "_color": { @@ -216,6 +204,33 @@ "_enabled": true, "_id": "" }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 2 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 45, + "_left": 0, + "_right": 0, + "_top": -210, + "_bottom": -210, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 1080, + "_originalHeight": 2340, + "_id": "" + }, { "__type__": "cc.PrefabInfo", "root": { @@ -238,14 +253,14 @@ "_active": true, "_components": [ { - "__id__": 7 + "__id__": 8 }, { - "__id__": 8 + "__id__": 9 } ], "_prefab": { - "__id__": 9 + "__id__": 10 }, "_opacity": 255, "_color": { @@ -299,7 +314,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 6 + "__id__": 7 }, "_enabled": true, "_materials": [ @@ -331,7 +346,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 6 + "__id__": 7 }, "_enabled": true, "alignMode": 1, @@ -368,23 +383,103 @@ }, { "__type__": "cc.Node", - "_name": "shop_1", + "_name": "Top", "_objFlags": 0, "_parent": { "__id__": 1 }, + "_children": [ + { + "__id__": 12 + }, + { + "__id__": 16 + }, + { + "__id__": 22 + }, + { + "__id__": 29 + }, + { + "__id__": 50 + } + ], + "_active": true, + "_components": [ + { + "__id__": 64 + } + ], + "_prefab": { + "__id__": 65 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 0, + "height": 0 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 600, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "shop_1", + "_objFlags": 0, + "_parent": { + "__id__": 11 + }, "_children": [], "_active": true, "_components": [ { - "__id__": 11 + "__id__": 13 }, { - "__id__": 12 + "__id__": 14 } ], "_prefab": { - "__id__": 13 + "__id__": 15 }, "_opacity": 255, "_color": { @@ -409,7 +504,7 @@ "ctor": "Float64Array", "array": [ 0, - 949.9650000000001, + 349.965, 0, 0, 0, @@ -438,7 +533,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 10 + "__id__": 12 }, "_enabled": true, "_materials": [ @@ -470,17 +565,17 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 10 + "__id__": 12 }, - "_enabled": true, + "_enabled": false, "alignMode": 1, "_target": { "__id__": 1 }, - "_alignFlags": 41, + "_alignFlags": 0, "_left": 0, "_right": 0, - "_top": -207.96500000000003, + "_top": -207.96499999999992, "_bottom": 0, "_verticalCenter": 0, "_horizontalCenter": 0, @@ -502,7 +597,7 @@ "asset": { "__id__": 0 }, - "fileId": "90DrGs6xtHo4tHMIZiqLcb", + "fileId": "91FPh7kZtC+51mI5KXRts7", "sync": false }, { @@ -510,23 +605,23 @@ "_name": "btn1", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [], "_active": true, "_components": [ - { - "__id__": 15 - }, - { - "__id__": 16 - }, { "__id__": 17 + }, + { + "__id__": 18 + }, + { + "__id__": 19 } ], "_prefab": { - "__id__": 19 + "__id__": 21 }, "_opacity": 255, "_color": { @@ -550,8 +645,8 @@ "__type__": "TypedArray", "ctor": "Float64Array", "array": [ - 466.1360000000001, - 909.3890000000001, + 466.136, + 309.389, 0, 0, 0, @@ -580,7 +675,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 14 + "__id__": 16 }, "_enabled": true, "_materials": [ @@ -614,17 +709,17 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 14 + "__id__": 16 }, - "_enabled": true, + "_enabled": false, "alignMode": 1, "_target": { "__id__": 1 }, - "_alignFlags": 33, + "_alignFlags": 0, "_left": 0, - "_right": 24.36399999999992, - "_top": -214.889, + "_right": 24.363999999999976, + "_top": -214.8889999999999, "_bottom": 0, "_verticalCenter": 0, "_horizontalCenter": 0, @@ -643,7 +738,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 14 + "__id__": 16 }, "_enabled": true, "_normalMaterial": null, @@ -652,7 +747,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 18 + "__id__": 20 } ], "_N$interactable": true, @@ -708,7 +803,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 14 + "__id__": 16 }, "_id": "" }, @@ -730,7 +825,7 @@ "asset": { "__id__": 0 }, - "fileId": "a2ox7Ov9ZOB6iBpRQMSCCo", + "fileId": "e9IXR3YMZH/LK0pWT6/fFs", "sync": false }, { @@ -738,24 +833,24 @@ "_name": "tx", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [ { - "__id__": 21 + "__id__": 23 } ], "_active": true, "_components": [ { - "__id__": 24 + "__id__": 26 }, { - "__id__": 25 + "__id__": 27 } ], "_prefab": { - "__id__": 26 + "__id__": 28 }, "_opacity": 255, "_color": { @@ -780,7 +875,7 @@ "ctor": "Float64Array", "array": [ -396.283, - 792.312, + 192.312, 0, 0, 0, @@ -809,17 +904,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 20 + "__id__": 22 }, "_children": [], "_active": true, "_components": [ { - "__id__": 22 + "__id__": 24 } ], "_prefab": { - "__id__": 23 + "__id__": 25 }, "_opacity": 255, "_color": { @@ -873,7 +968,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 21 + "__id__": 23 }, "_enabled": true, "_materials": [ @@ -908,7 +1003,7 @@ "asset": { "__id__": 0 }, - "fileId": "d0cu9Nk4dKAZm9+TEr1h++", + "fileId": "6duTmfvPZI15Tyxu/nDGaQ", "sync": false }, { @@ -916,7 +1011,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 20 + "__id__": 22 }, "_enabled": true, "_materials": [ @@ -950,14 +1045,14 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 20 + "__id__": 22 }, - "_enabled": true, + "_enabled": false, "alignMode": 1, "_target": { "__id__": 1 }, - "_alignFlags": 9, + "_alignFlags": 0, "_left": 49.716999999999985, "_right": 327.573, "_top": 64.18799999999999, @@ -982,7 +1077,7 @@ "asset": { "__id__": 0 }, - "fileId": "3ckQl/Tq5GbrsTP7UO38K3", + "fileId": "a5A/o3AFBDzKqB/S9rvtZ/", "sync": false }, { @@ -990,36 +1085,36 @@ "_name": "Stamina", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [ { - "__id__": 28 + "__id__": 30 }, { - "__id__": 31 + "__id__": 33 }, { - "__id__": 34 + "__id__": 36 }, { - "__id__": 37 - }, - { - "__id__": 40 + "__id__": 39 }, { "__id__": 42 + }, + { + "__id__": 44 } ], "_active": true, "_components": [ { - "__id__": 45 + "__id__": 47 } ], "_prefab": { - "__id__": 47 + "__id__": 49 }, "_opacity": 255, "_color": { @@ -1044,7 +1139,7 @@ "ctor": "Float64Array", "array": [ -81.953, - 843.354, + 243.354, 0, 0, 0, @@ -1073,17 +1168,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": true, "_components": [ { - "__id__": 29 + "__id__": 31 } ], "_prefab": { - "__id__": 30 + "__id__": 32 }, "_opacity": 255, "_color": { @@ -1137,7 +1232,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 28 + "__id__": 30 }, "_enabled": true, "_materials": [ @@ -1174,7 +1269,7 @@ "asset": { "__id__": 0 }, - "fileId": "6aVfqR99lM8b6s1IfFRYgi", + "fileId": "19Vagxn5RESbaZv3yl2LEb", "sync": false }, { @@ -1182,17 +1277,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": true, "_components": [ { - "__id__": 32 + "__id__": 34 } ], "_prefab": { - "__id__": 33 + "__id__": 35 }, "_opacity": 255, "_color": { @@ -1246,7 +1341,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 31 + "__id__": 33 }, "_enabled": true, "_materials": [ @@ -1283,7 +1378,7 @@ "asset": { "__id__": 0 }, - "fileId": "acxWLwLgNPM5VDtDzhPjtp", + "fileId": "b2lfcyQ49EB7t79ZeIBCne", "sync": false }, { @@ -1291,17 +1386,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": false, "_components": [ { - "__id__": 35 + "__id__": 37 } ], "_prefab": { - "__id__": 36 + "__id__": 38 }, "_opacity": 255, "_color": { @@ -1355,7 +1450,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 34 + "__id__": 36 }, "_enabled": true, "_materials": [ @@ -1392,7 +1487,7 @@ "asset": { "__id__": 0 }, - "fileId": "d0UvPpwplBxaQVyjLRxNG1", + "fileId": "c5jBvL+phOkJwx6KQi0Oho", "sync": false }, { @@ -1400,17 +1495,17 @@ "_name": "man", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": true, "_components": [ { - "__id__": 38 + "__id__": 40 } ], "_prefab": { - "__id__": 39 + "__id__": 41 }, "_opacity": 255, "_color": { @@ -1464,7 +1559,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 37 + "__id__": 39 }, "_enabled": true, "_materials": [ @@ -1501,7 +1596,7 @@ "asset": { "__id__": 0 }, - "fileId": "2dvYFmzLRBJaIsm94hfDMQ", + "fileId": "d3g30jWINCaJkprI0sP21F", "sync": false }, { @@ -1509,13 +1604,13 @@ "_name": "health", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": false, "_components": [], "_prefab": { - "__id__": 41 + "__id__": 43 }, "_opacity": 255, "_color": { @@ -1572,7 +1667,7 @@ "asset": { "__id__": 0 }, - "fileId": "88IgQBjH1Jo6ZZInXvN0ae", + "fileId": "ad9H+uSf9EXYyx1W0pDOC2", "sync": false }, { @@ -1580,17 +1675,17 @@ "_name": "time", "_objFlags": 0, "_parent": { - "__id__": 27 + "__id__": 29 }, "_children": [], "_active": false, "_components": [ { - "__id__": 43 + "__id__": 45 } ], "_prefab": { - "__id__": 44 + "__id__": 46 }, "_opacity": 255, "_color": { @@ -1644,7 +1739,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 42 + "__id__": 44 }, "_enabled": true, "_materials": [ @@ -1680,7 +1775,7 @@ "asset": { "__id__": 0 }, - "fileId": "5eVwMMS0VEuK9KkGYaVfU8", + "fileId": "d5cavi+kVIiZHGn7Ckkr5o", "sync": false }, { @@ -1688,7 +1783,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 27 + "__id__": 29 }, "_enabled": true, "_normalMaterial": null, @@ -1697,7 +1792,7 @@ "zoomScale": 1.1, "clickEvents": [ { - "__id__": 46 + "__id__": 48 } ], "_N$interactable": true, @@ -1753,7 +1848,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 27 + "__id__": 29 }, "_id": "" }, @@ -1773,7 +1868,7 @@ "asset": { "__id__": 0 }, - "fileId": "cfwKYUzqBBtYvOE6xeCswl", + "fileId": "85ac4ottRF5ZtnPpf+rdij", "sync": false }, { @@ -1781,30 +1876,30 @@ "_name": "Coin", "_objFlags": 0, "_parent": { - "__id__": 1 + "__id__": 11 }, "_children": [ { - "__id__": 49 + "__id__": 51 }, { - "__id__": 52 + "__id__": 54 }, { - "__id__": 55 + "__id__": 57 }, { - "__id__": 58 + "__id__": 60 } ], "_active": true, "_components": [ { - "__id__": 60 + "__id__": 62 } ], "_prefab": { - "__id__": 61 + "__id__": 63 }, "_opacity": 255, "_color": { @@ -1829,7 +1924,7 @@ "ctor": "Float64Array", "array": [ 335.588, - 843.354, + 243.354, 0, 0, 0, @@ -1858,17 +1953,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": true, "_components": [ { - "__id__": 50 + "__id__": 52 } ], "_prefab": { - "__id__": 51 + "__id__": 53 }, "_opacity": 255, "_color": { @@ -1922,7 +2017,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 49 + "__id__": 51 }, "_enabled": true, "_materials": [ @@ -1959,7 +2054,7 @@ "asset": { "__id__": 0 }, - "fileId": "ecYhqIPwNJX5efs88/AoQx", + "fileId": "46VBB8DqVOCYvDI0hpWnhL", "sync": false }, { @@ -1967,17 +2062,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": true, "_components": [ { - "__id__": 53 + "__id__": 55 } ], "_prefab": { - "__id__": 54 + "__id__": 56 }, "_opacity": 255, "_color": { @@ -2031,7 +2126,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 52 + "__id__": 54 }, "_enabled": true, "_materials": [ @@ -2068,7 +2163,7 @@ "asset": { "__id__": 0 }, - "fileId": "57LSY16pBJD6eBAcvkUnBv", + "fileId": "f3Mq/ajaNOT7gWBBs0mQFE", "sync": false }, { @@ -2076,17 +2171,17 @@ "_name": "New Sprite", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": false, "_components": [ { - "__id__": 56 + "__id__": 58 } ], "_prefab": { - "__id__": 57 + "__id__": 59 }, "_opacity": 255, "_color": { @@ -2140,7 +2235,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 55 + "__id__": 57 }, "_enabled": true, "_materials": [ @@ -2177,7 +2272,7 @@ "asset": { "__id__": 0 }, - "fileId": "efsl7ltxZA56KA2MUqzwPk", + "fileId": "12vK+mfsRIUZNjZ0bz1Wmx", "sync": false }, { @@ -2185,13 +2280,13 @@ "_name": "Coin", "_objFlags": 0, "_parent": { - "__id__": 48 + "__id__": 50 }, "_children": [], "_active": true, "_components": [], "_prefab": { - "__id__": 59 + "__id__": 61 }, "_opacity": 255, "_color": { @@ -2248,7 +2343,7 @@ "asset": { "__id__": 0 }, - "fileId": "6bzgOXQXtJzr+SvxqA0HSq", + "fileId": "abaidugJ1M1Jyqc7VJZvnF", "sync": false }, { @@ -2256,7 +2351,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 48 + "__id__": 50 }, "_enabled": false, "_normalMaterial": null, @@ -2319,7 +2414,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 48 + "__id__": 50 }, "_id": "" }, @@ -2331,7 +2426,45 @@ "asset": { "__id__": 0 }, - "fileId": "dbTBrfJ3pF26e9bPbIoOkH", + "fileId": "ad6SLGWm5IHKfZs3S5aS6p", + "sync": false + }, + { + "__type__": "cc.Widget", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 11 + }, + "_enabled": true, + "alignMode": 1, + "_target": null, + "_alignFlags": 1, + "_left": 0, + "_right": 0, + "_top": 360, + "_bottom": 0, + "_verticalCenter": 0, + "_horizontalCenter": 0, + "_isAbsLeft": true, + "_isAbsRight": true, + "_isAbsTop": true, + "_isAbsBottom": true, + "_isAbsHorizontalCenter": true, + "_isAbsVerticalCenter": true, + "_originalWidth": 0, + "_originalHeight": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "e5881p4DhA2o2G5SieRWXh", "sync": false }, { @@ -2343,20 +2476,20 @@ }, "_children": [ { - "__id__": 63 + "__id__": 67 }, { - "__id__": 70 + "__id__": 74 } ], "_active": true, "_components": [ { - "__id__": 68 + "__id__": 72 } ], "_prefab": { - "__id__": 207 + "__id__": 211 }, "_opacity": 255, "_color": { @@ -2410,24 +2543,24 @@ "_name": "scrollBar", "_objFlags": 0, "_parent": { - "__id__": 62 + "__id__": 66 }, "_children": [ { - "__id__": 64 + "__id__": 68 } ], "_active": false, "_components": [ { - "__id__": 67 + "__id__": 71 }, { - "__id__": 205 + "__id__": 209 } ], "_prefab": { - "__id__": 206 + "__id__": 210 }, "_opacity": 255, "_color": { @@ -2481,17 +2614,17 @@ "_name": "bar", "_objFlags": 0, "_parent": { - "__id__": 63 + "__id__": 67 }, "_children": [], "_active": true, "_components": [ { - "__id__": 65 + "__id__": 69 } ], "_prefab": { - "__id__": 66 + "__id__": 70 }, "_opacity": 255, "_color": { @@ -2545,7 +2678,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 64 + "__id__": 68 }, "_enabled": true, "_materials": [ @@ -2588,18 +2721,18 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 63 + "__id__": 67 }, "_enabled": true, "_scrollView": { - "__id__": 68 + "__id__": 72 }, "_touching": false, "_opacity": 255, "enableAutoHide": true, "autoHideTime": 1, "_N$handle": { - "__id__": 65 + "__id__": 69 }, "_N$direction": 1, "_id": "" @@ -2609,7 +2742,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 62 + "__id__": 66 }, "_enabled": true, "horizontal": false, @@ -2621,14 +2754,14 @@ "scrollEvents": [], "cancelInnerEvents": true, "_N$content": { - "__id__": 69 + "__id__": 73 }, "content": { - "__id__": 69 + "__id__": 73 }, "_N$horizontalScrollBar": null, "_N$verticalScrollBar": { - "__id__": 67 + "__id__": 71 }, "_id": "" }, @@ -2637,41 +2770,41 @@ "_name": "content", "_objFlags": 0, "_parent": { - "__id__": 70 + "__id__": 74 }, "_children": [ { - "__id__": 73 + "__id__": 77 }, { - "__id__": 76 + "__id__": 80 }, { - "__id__": 92 + "__id__": 96 }, { - "__id__": 108 + "__id__": 112 }, { - "__id__": 124 + "__id__": 128 }, { - "__id__": 140 + "__id__": 144 }, { - "__id__": 156 + "__id__": 160 }, { - "__id__": 172 + "__id__": 176 }, { - "__id__": 188 + "__id__": 192 } ], "_active": true, "_components": [], "_prefab": { - "__id__": 204 + "__id__": 208 }, "_opacity": 255, "_color": { @@ -2725,21 +2858,21 @@ "_name": "view", "_objFlags": 0, "_parent": { - "__id__": 62 + "__id__": 66 }, "_children": [ { - "__id__": 69 + "__id__": 73 } ], "_active": true, "_components": [ { - "__id__": 71 + "__id__": 75 } ], "_prefab": { - "__id__": 72 + "__id__": 76 }, "_opacity": 255, "_color": { @@ -2793,7 +2926,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 70 + "__id__": 74 }, "_enabled": true, "_materials": [ @@ -2824,17 +2957,17 @@ "_name": "txt1", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [], "_active": true, "_components": [ { - "__id__": 74 + "__id__": 78 } ], "_prefab": { - "__id__": 75 + "__id__": 79 }, "_opacity": 255, "_color": { @@ -2888,7 +3021,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 73 + "__id__": 77 }, "_enabled": true, "_materials": [ @@ -2933,33 +3066,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 77 + "__id__": 81 }, { - "__id__": 80 + "__id__": 84 }, { - "__id__": 83 + "__id__": 87 } ], "_active": true, "_components": [ { - "__id__": 87 + "__id__": 91 }, { - "__id__": 88 + "__id__": 92 }, { - "__id__": 90 + "__id__": 94 } ], "_prefab": { - "__id__": 91 + "__id__": 95 }, "_opacity": 255, "_color": { @@ -3013,17 +3146,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 76 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 78 + "__id__": 82 } ], "_prefab": { - "__id__": 79 + "__id__": 83 }, "_opacity": 255, "_color": { @@ -3077,7 +3210,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 77 + "__id__": 81 }, "_enabled": true, "_materials": [ @@ -3109,7 +3242,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3122,17 +3255,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 76 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 81 + "__id__": 85 } ], "_prefab": { - "__id__": 82 + "__id__": 86 }, "_opacity": 255, "_color": { @@ -3186,7 +3319,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 80 + "__id__": 84 }, "_enabled": true, "_materials": [ @@ -3217,7 +3350,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3230,20 +3363,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 76 + "__id__": 80 }, "_children": [], "_active": true, "_components": [ { - "__id__": 84 + "__id__": 88 }, { - "__id__": 85 + "__id__": 89 } ], "_prefab": { - "__id__": 86 + "__id__": 90 }, "_opacity": 255, "_color": { @@ -3297,7 +3430,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 83 + "__id__": 87 }, "_enabled": true, "_materials": [ @@ -3330,7 +3463,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 83 + "__id__": 87 }, "_enabled": true, "_color": { @@ -3346,7 +3479,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3359,7 +3492,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 76 + "__id__": 80 }, "_enabled": true, "_materials": [ @@ -3393,7 +3526,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 76 + "__id__": 80 }, "_enabled": true, "_normalMaterial": null, @@ -3402,7 +3535,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 89 + "__id__": 93 } ], "_N$interactable": true, @@ -3458,7 +3591,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 76 + "__id__": 80 }, "_id": "" }, @@ -3475,7 +3608,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 76 + "__id__": 80 }, "_enabled": true, "label": null, @@ -3485,7 +3618,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 76 + "__id__": 80 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3498,33 +3631,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 93 + "__id__": 97 }, { - "__id__": 96 + "__id__": 100 }, { - "__id__": 99 + "__id__": 103 } ], "_active": true, "_components": [ { - "__id__": 103 + "__id__": 107 }, { - "__id__": 104 + "__id__": 108 }, { - "__id__": 106 + "__id__": 110 } ], "_prefab": { - "__id__": 107 + "__id__": 111 }, "_opacity": 255, "_color": { @@ -3578,17 +3711,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 92 + "__id__": 96 }, "_children": [], "_active": true, "_components": [ { - "__id__": 94 + "__id__": 98 } ], "_prefab": { - "__id__": 95 + "__id__": 99 }, "_opacity": 255, "_color": { @@ -3642,7 +3775,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 93 + "__id__": 97 }, "_enabled": true, "_materials": [ @@ -3674,7 +3807,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3687,17 +3820,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 92 + "__id__": 96 }, "_children": [], "_active": true, "_components": [ { - "__id__": 97 + "__id__": 101 } ], "_prefab": { - "__id__": 98 + "__id__": 102 }, "_opacity": 255, "_color": { @@ -3751,7 +3884,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 96 + "__id__": 100 }, "_enabled": true, "_materials": [ @@ -3782,7 +3915,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3795,20 +3928,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 92 + "__id__": 96 }, "_children": [], "_active": true, "_components": [ { - "__id__": 100 + "__id__": 104 }, { - "__id__": 101 + "__id__": 105 } ], "_prefab": { - "__id__": 102 + "__id__": 106 }, "_opacity": 255, "_color": { @@ -3862,7 +3995,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 99 + "__id__": 103 }, "_enabled": true, "_materials": [ @@ -3895,7 +4028,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 99 + "__id__": 103 }, "_enabled": true, "_color": { @@ -3911,7 +4044,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -3924,7 +4057,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 92 + "__id__": 96 }, "_enabled": true, "_materials": [ @@ -3958,7 +4091,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 92 + "__id__": 96 }, "_enabled": true, "_normalMaterial": null, @@ -3967,7 +4100,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 105 + "__id__": 109 } ], "_N$interactable": true, @@ -4023,7 +4156,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 92 + "__id__": 96 }, "_id": "" }, @@ -4040,7 +4173,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 92 + "__id__": 96 }, "_enabled": true, "label": null, @@ -4050,7 +4183,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 92 + "__id__": 96 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4063,33 +4196,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 109 + "__id__": 113 }, { - "__id__": 112 + "__id__": 116 }, { - "__id__": 115 + "__id__": 119 } ], "_active": true, "_components": [ { - "__id__": 119 + "__id__": 123 }, { - "__id__": 120 + "__id__": 124 }, { - "__id__": 122 + "__id__": 126 } ], "_prefab": { - "__id__": 123 + "__id__": 127 }, "_opacity": 255, "_color": { @@ -4143,17 +4276,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 108 + "__id__": 112 }, "_children": [], "_active": true, "_components": [ { - "__id__": 110 + "__id__": 114 } ], "_prefab": { - "__id__": 111 + "__id__": 115 }, "_opacity": 255, "_color": { @@ -4207,7 +4340,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 109 + "__id__": 113 }, "_enabled": true, "_materials": [ @@ -4239,7 +4372,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4252,17 +4385,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 108 + "__id__": 112 }, "_children": [], "_active": true, "_components": [ { - "__id__": 113 + "__id__": 117 } ], "_prefab": { - "__id__": 114 + "__id__": 118 }, "_opacity": 255, "_color": { @@ -4316,7 +4449,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 112 + "__id__": 116 }, "_enabled": true, "_materials": [ @@ -4347,7 +4480,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4360,20 +4493,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 108 + "__id__": 112 }, "_children": [], "_active": true, "_components": [ { - "__id__": 116 + "__id__": 120 }, { - "__id__": 117 + "__id__": 121 } ], "_prefab": { - "__id__": 118 + "__id__": 122 }, "_opacity": 255, "_color": { @@ -4427,7 +4560,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 115 + "__id__": 119 }, "_enabled": true, "_materials": [ @@ -4460,7 +4593,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 115 + "__id__": 119 }, "_enabled": true, "_color": { @@ -4476,7 +4609,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4489,7 +4622,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 108 + "__id__": 112 }, "_enabled": true, "_materials": [ @@ -4523,7 +4656,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 108 + "__id__": 112 }, "_enabled": true, "_normalMaterial": null, @@ -4532,7 +4665,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 121 + "__id__": 125 } ], "_N$interactable": true, @@ -4588,7 +4721,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 108 + "__id__": 112 }, "_id": "" }, @@ -4605,7 +4738,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 108 + "__id__": 112 }, "_enabled": true, "label": null, @@ -4615,7 +4748,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 108 + "__id__": 112 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4628,33 +4761,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 125 + "__id__": 129 }, { - "__id__": 128 + "__id__": 132 }, { - "__id__": 131 + "__id__": 135 } ], "_active": true, "_components": [ { - "__id__": 135 + "__id__": 139 }, { - "__id__": 136 + "__id__": 140 }, { - "__id__": 138 + "__id__": 142 } ], "_prefab": { - "__id__": 139 + "__id__": 143 }, "_opacity": 255, "_color": { @@ -4708,17 +4841,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 124 + "__id__": 128 }, "_children": [], "_active": true, "_components": [ { - "__id__": 126 + "__id__": 130 } ], "_prefab": { - "__id__": 127 + "__id__": 131 }, "_opacity": 255, "_color": { @@ -4772,7 +4905,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 125 + "__id__": 129 }, "_enabled": true, "_materials": [ @@ -4804,7 +4937,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4817,17 +4950,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 124 + "__id__": 128 }, "_children": [], "_active": true, "_components": [ { - "__id__": 129 + "__id__": 133 } ], "_prefab": { - "__id__": 130 + "__id__": 134 }, "_opacity": 255, "_color": { @@ -4881,7 +5014,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 128 + "__id__": 132 }, "_enabled": true, "_materials": [ @@ -4912,7 +5045,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -4925,20 +5058,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 124 + "__id__": 128 }, "_children": [], "_active": true, "_components": [ { - "__id__": 132 + "__id__": 136 }, { - "__id__": 133 + "__id__": 137 } ], "_prefab": { - "__id__": 134 + "__id__": 138 }, "_opacity": 255, "_color": { @@ -4992,7 +5125,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 131 + "__id__": 135 }, "_enabled": true, "_materials": [ @@ -5025,7 +5158,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 131 + "__id__": 135 }, "_enabled": true, "_color": { @@ -5041,7 +5174,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5054,7 +5187,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 128 }, "_enabled": true, "_materials": [ @@ -5088,7 +5221,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 128 }, "_enabled": true, "_normalMaterial": null, @@ -5097,7 +5230,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 137 + "__id__": 141 } ], "_N$interactable": true, @@ -5153,7 +5286,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 124 + "__id__": 128 }, "_id": "" }, @@ -5170,7 +5303,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 124 + "__id__": 128 }, "_enabled": true, "label": null, @@ -5180,7 +5313,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 124 + "__id__": 128 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5193,33 +5326,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 141 + "__id__": 145 }, { - "__id__": 144 + "__id__": 148 }, { - "__id__": 147 + "__id__": 151 } ], "_active": true, "_components": [ { - "__id__": 151 + "__id__": 155 }, { - "__id__": 152 + "__id__": 156 }, { - "__id__": 154 + "__id__": 158 } ], "_prefab": { - "__id__": 155 + "__id__": 159 }, "_opacity": 255, "_color": { @@ -5273,17 +5406,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 144 }, "_children": [], "_active": true, "_components": [ { - "__id__": 142 + "__id__": 146 } ], "_prefab": { - "__id__": 143 + "__id__": 147 }, "_opacity": 255, "_color": { @@ -5337,7 +5470,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 141 + "__id__": 145 }, "_enabled": true, "_materials": [ @@ -5369,7 +5502,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5382,17 +5515,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 144 }, "_children": [], "_active": true, "_components": [ { - "__id__": 145 + "__id__": 149 } ], "_prefab": { - "__id__": 146 + "__id__": 150 }, "_opacity": 255, "_color": { @@ -5446,7 +5579,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 144 + "__id__": 148 }, "_enabled": true, "_materials": [ @@ -5477,7 +5610,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5490,20 +5623,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 140 + "__id__": 144 }, "_children": [], "_active": true, "_components": [ { - "__id__": 148 + "__id__": 152 }, { - "__id__": 149 + "__id__": 153 } ], "_prefab": { - "__id__": 150 + "__id__": 154 }, "_opacity": 255, "_color": { @@ -5557,7 +5690,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 147 + "__id__": 151 }, "_enabled": true, "_materials": [ @@ -5590,7 +5723,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 147 + "__id__": 151 }, "_enabled": true, "_color": { @@ -5606,7 +5739,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5619,7 +5752,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 140 + "__id__": 144 }, "_enabled": true, "_materials": [ @@ -5653,7 +5786,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 140 + "__id__": 144 }, "_enabled": true, "_normalMaterial": null, @@ -5662,7 +5795,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 153 + "__id__": 157 } ], "_N$interactable": true, @@ -5718,7 +5851,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 140 + "__id__": 144 }, "_id": "" }, @@ -5735,7 +5868,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 140 + "__id__": 144 }, "_enabled": true, "label": null, @@ -5745,7 +5878,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 140 + "__id__": 144 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5758,33 +5891,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 157 + "__id__": 161 }, { - "__id__": 160 + "__id__": 164 }, { - "__id__": 163 + "__id__": 167 } ], "_active": true, "_components": [ { - "__id__": 167 + "__id__": 171 }, { - "__id__": 168 + "__id__": 172 }, { - "__id__": 170 + "__id__": 174 } ], "_prefab": { - "__id__": 171 + "__id__": 175 }, "_opacity": 255, "_color": { @@ -5838,17 +5971,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 156 + "__id__": 160 }, "_children": [], "_active": true, "_components": [ { - "__id__": 158 + "__id__": 162 } ], "_prefab": { - "__id__": 159 + "__id__": 163 }, "_opacity": 255, "_color": { @@ -5902,7 +6035,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 157 + "__id__": 161 }, "_enabled": true, "_materials": [ @@ -5934,7 +6067,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -5947,17 +6080,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 156 + "__id__": 160 }, "_children": [], "_active": true, "_components": [ { - "__id__": 161 + "__id__": 165 } ], "_prefab": { - "__id__": 162 + "__id__": 166 }, "_opacity": 255, "_color": { @@ -6011,7 +6144,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 160 + "__id__": 164 }, "_enabled": true, "_materials": [ @@ -6042,7 +6175,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6055,20 +6188,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 156 + "__id__": 160 }, "_children": [], "_active": true, "_components": [ { - "__id__": 164 + "__id__": 168 }, { - "__id__": 165 + "__id__": 169 } ], "_prefab": { - "__id__": 166 + "__id__": 170 }, "_opacity": 255, "_color": { @@ -6122,7 +6255,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 163 + "__id__": 167 }, "_enabled": true, "_materials": [ @@ -6155,7 +6288,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 163 + "__id__": 167 }, "_enabled": true, "_color": { @@ -6171,7 +6304,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6184,7 +6317,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 156 + "__id__": 160 }, "_enabled": true, "_materials": [ @@ -6218,7 +6351,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 156 + "__id__": 160 }, "_enabled": true, "_normalMaterial": null, @@ -6227,7 +6360,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 169 + "__id__": 173 } ], "_N$interactable": true, @@ -6283,7 +6416,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 156 + "__id__": 160 }, "_id": "" }, @@ -6300,7 +6433,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 156 + "__id__": 160 }, "_enabled": true, "label": null, @@ -6310,7 +6443,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 156 + "__id__": 160 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6323,33 +6456,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 173 + "__id__": 177 }, { - "__id__": 176 + "__id__": 180 }, { - "__id__": 179 + "__id__": 183 } ], "_active": true, "_components": [ { - "__id__": 183 + "__id__": 187 }, { - "__id__": 184 + "__id__": 188 }, { - "__id__": 186 + "__id__": 190 } ], "_prefab": { - "__id__": 187 + "__id__": 191 }, "_opacity": 255, "_color": { @@ -6403,17 +6536,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 172 + "__id__": 176 }, "_children": [], "_active": true, "_components": [ { - "__id__": 174 + "__id__": 178 } ], "_prefab": { - "__id__": 175 + "__id__": 179 }, "_opacity": 255, "_color": { @@ -6467,7 +6600,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 173 + "__id__": 177 }, "_enabled": true, "_materials": [ @@ -6499,7 +6632,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6512,17 +6645,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 172 + "__id__": 176 }, "_children": [], "_active": true, "_components": [ { - "__id__": 177 + "__id__": 181 } ], "_prefab": { - "__id__": 178 + "__id__": 182 }, "_opacity": 255, "_color": { @@ -6576,7 +6709,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 176 + "__id__": 180 }, "_enabled": true, "_materials": [ @@ -6607,7 +6740,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6620,20 +6753,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 172 + "__id__": 176 }, "_children": [], "_active": true, "_components": [ { - "__id__": 180 + "__id__": 184 }, { - "__id__": 181 + "__id__": 185 } ], "_prefab": { - "__id__": 182 + "__id__": 186 }, "_opacity": 255, "_color": { @@ -6687,7 +6820,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 179 + "__id__": 183 }, "_enabled": true, "_materials": [ @@ -6720,7 +6853,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 179 + "__id__": 183 }, "_enabled": true, "_color": { @@ -6736,7 +6869,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6749,7 +6882,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 172 + "__id__": 176 }, "_enabled": true, "_materials": [ @@ -6783,7 +6916,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 172 + "__id__": 176 }, "_enabled": true, "_normalMaterial": null, @@ -6792,7 +6925,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 185 + "__id__": 189 } ], "_N$interactable": true, @@ -6848,7 +6981,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 172 + "__id__": 176 }, "_id": "" }, @@ -6865,7 +6998,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 172 + "__id__": 176 }, "_enabled": true, "label": null, @@ -6875,7 +7008,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 172 + "__id__": 176 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -6888,33 +7021,33 @@ "_name": "item", "_objFlags": 0, "_parent": { - "__id__": 69 + "__id__": 73 }, "_children": [ { - "__id__": 189 + "__id__": 193 }, { - "__id__": 192 + "__id__": 196 }, { - "__id__": 195 + "__id__": 199 } ], "_active": true, "_components": [ { - "__id__": 199 + "__id__": 203 }, { - "__id__": 200 + "__id__": 204 }, { - "__id__": 202 + "__id__": 206 } ], "_prefab": { - "__id__": 203 + "__id__": 207 }, "_opacity": 255, "_color": { @@ -6968,17 +7101,17 @@ "_name": "icon", "_objFlags": 0, "_parent": { - "__id__": 188 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 190 + "__id__": 194 } ], "_prefab": { - "__id__": 191 + "__id__": 195 }, "_opacity": 255, "_color": { @@ -7032,7 +7165,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 189 + "__id__": 193 }, "_enabled": true, "_materials": [ @@ -7064,7 +7197,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7077,17 +7210,17 @@ "_name": "price", "_objFlags": 0, "_parent": { - "__id__": 188 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 193 + "__id__": 197 } ], "_prefab": { - "__id__": 194 + "__id__": 198 }, "_opacity": 255, "_color": { @@ -7141,7 +7274,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 192 + "__id__": 196 }, "_enabled": true, "_materials": [ @@ -7172,7 +7305,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7185,20 +7318,20 @@ "_name": "New Label", "_objFlags": 0, "_parent": { - "__id__": 188 + "__id__": 192 }, "_children": [], "_active": true, "_components": [ { - "__id__": 196 + "__id__": 200 }, { - "__id__": 197 + "__id__": 201 } ], "_prefab": { - "__id__": 198 + "__id__": 202 }, "_opacity": 255, "_color": { @@ -7252,7 +7385,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 195 + "__id__": 199 }, "_enabled": true, "_materials": [ @@ -7285,7 +7418,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 195 + "__id__": 199 }, "_enabled": true, "_color": { @@ -7301,7 +7434,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7314,7 +7447,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 188 + "__id__": 192 }, "_enabled": true, "_materials": [ @@ -7348,7 +7481,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 188 + "__id__": 192 }, "_enabled": true, "_normalMaterial": null, @@ -7357,7 +7490,7 @@ "zoomScale": 1.2, "clickEvents": [ { - "__id__": 201 + "__id__": 205 } ], "_N$interactable": true, @@ -7413,7 +7546,7 @@ "hoverSprite": null, "_N$disabledSprite": null, "_N$target": { - "__id__": 188 + "__id__": 192 }, "_id": "" }, @@ -7430,7 +7563,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 188 + "__id__": 192 }, "_enabled": true, "label": null, @@ -7440,7 +7573,7 @@ { "__type__": "cc.PrefabInfo", "root": { - "__id__": 188 + "__id__": 192 }, "asset": { "__uuid__": "a81d74d9-943b-4d0e-aad5-2999276d3447" @@ -7464,7 +7597,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 63 + "__id__": 67 }, "_enabled": true, "alignMode": 0, @@ -7519,14 +7652,14 @@ "_active": true, "_components": [ { - "__id__": 209 + "__id__": 213 }, { - "__id__": 210 + "__id__": 214 } ], "_prefab": { - "__id__": 211 + "__id__": 215 }, "_opacity": 150, "_color": { @@ -7580,7 +7713,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 208 + "__id__": 212 }, "_enabled": true, "_materials": [ @@ -7612,7 +7745,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 208 + "__id__": 212 }, "_enabled": true, "_id": "" @@ -7639,14 +7772,14 @@ "_active": true, "_components": [ { - "__id__": 213 + "__id__": 217 }, { - "__id__": 214 + "__id__": 218 } ], "_prefab": { - "__id__": 215 + "__id__": 219 }, "_opacity": 150, "_color": { @@ -7700,7 +7833,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 212 + "__id__": 216 }, "_enabled": true, "_materials": [ @@ -7732,7 +7865,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 212 + "__id__": 216 }, "_enabled": true, "_id": "" @@ -7748,108 +7881,6 @@ "fileId": "c5IbgSqWhDerwgA0hdz30t", "sync": false }, - { - "__type__": "cc.Node", - "_name": "Top", - "_objFlags": 0, - "_parent": { - "__id__": 1 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 217 - } - ], - "_prefab": { - "__id__": 218 - }, - "_opacity": 255, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 0, - "height": 0 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_trs": { - "__type__": "TypedArray", - "ctor": "Float64Array", - "array": [ - 0, - 0, - 0, - 0, - 0, - 0, - 1, - 1, - 1, - 1 - ] - }, - "_eulerAngles": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_skewX": 0, - "_skewY": 0, - "_is3DNode": false, - "_groupIndex": 0, - "groupIndex": 0, - "_id": "" - }, - { - "__type__": "cc.Widget", - "_name": "", - "_objFlags": 0, - "node": { - "__id__": 216 - }, - "_enabled": true, - "alignMode": 1, - "_target": null, - "_alignFlags": 0, - "_left": 0, - "_right": 0, - "_top": 0, - "_bottom": 0, - "_verticalCenter": 0, - "_horizontalCenter": 0, - "_isAbsLeft": true, - "_isAbsRight": true, - "_isAbsTop": true, - "_isAbsBottom": true, - "_isAbsHorizontalCenter": true, - "_isAbsVerticalCenter": true, - "_originalWidth": 0, - "_originalHeight": 0, - "_id": "" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "e5881p4DhA2o2G5SieRWXh", - "sync": false - }, { "__type__": "48bfeZuYFZE2qmgxbW2IigB", "_name": "", @@ -7862,7 +7893,7 @@ "__id__": 1 }, "itemList": { - "__id__": 69 + "__id__": 73 }, "_id": "" }, diff --git a/temp/quick-scripts/dst/__file_stats__.json b/temp/quick-scripts/dst/__file_stats__.json index 0db052c..977275a 100644 --- a/temp/quick-scripts/dst/__file_stats__.json +++ b/temp/quick-scripts/dst/__file_stats__.json @@ -1 +1 @@ -{"version":"1.0.8","stats":{"C:/Work/Project/cb/temp/quick-scripts/src/__qc_index__.js":"2025-06-30T07:28:54.541Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_base.js":"2025-06-30T07:28:54.423Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_math_util.js":"2025-06-30T07:28:54.415Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Crypto/HttpUtil.js":"2025-06-30T07:28:54.393Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledLayer.js":"2025-06-30T07:28:54.439Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/CollisionDetection.js":"2025-06-30T07:28:54.453Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/shop/script/item.js":"2025-06-30T07:28:54.442Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Sdk/MiniGameSdk.js":"2025-06-30T07:28:54.421Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Boom.js":"2025-06-30T07:28:54.360Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/effect/融化.js":"2025-06-30T07:28:54.356Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/animation/NewScript.js":"2025-06-30T07:28:54.352Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js":"2025-06-30T07:28:54.396Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/RankList/ItemRender.js":"2025-06-30T07:28:54.431Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/GameStart/GameAppStart.js":"2025-06-30T07:28:54.385Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/data/lq_const.js":"2025-06-30T07:28:54.412Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Music/AudioManager.js":"2025-06-30T07:28:54.378Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Notification/Notification.js":"2025-06-30T07:28:54.377Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Storage/Storage.js":"2025-06-30T07:28:54.343Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Share/share.js":"2025-06-30T07:28:54.392Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Tool/GameTool.js":"2025-06-30T07:28:54.366Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/GameOver.js":"2025-06-30T07:28:54.401Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Load.js":"2025-06-30T07:28:54.368Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/JiaZai.js":"2025-06-30T07:28:54.348Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/ControlManager.js":"2025-06-30T07:28:54.447Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/GameScene.js":"2025-06-30T07:28:54.452Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/GameManager.js":"2025-06-30T07:28:54.444Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Config/GameConfig.js":"2025-06-30T07:28:54.425Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/DynamicAtlasManager.js":"2025-06-30T07:28:54.380Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/MapBlock.js":"2025-06-30T07:28:54.376Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/NumberToImage.js":"2025-06-30T07:28:54.388Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/SceneManager.js":"2025-06-30T07:28:54.402Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/NewMode.js":"2025-06-30T07:28:54.399Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Reduce.js":"2025-06-30T07:28:54.433Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Pause.js":"2025-06-30T07:28:54.419Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/RankManager.js":"2025-06-30T07:28:54.450Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Sdk/MiniGameManager.js":"2025-06-30T07:28:54.341Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Map.js":"2025-06-30T07:28:54.350Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Window.js":"2025-06-30T07:28:54.359Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_config.js":"2025-06-30T07:28:54.373Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Wall.js":"2025-06-30T07:28:54.406Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/position.js":"2025-06-30T07:28:54.446Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/peizhi.js":"2025-06-30T07:28:54.397Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Sdk/DouyinEntranceView.js":"2025-06-30T07:28:54.407Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/btnControl.js":"2025-06-30T07:28:54.390Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Barrier.js":"2025-06-30T07:28:54.409Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Lock.js":"2025-06-30T07:28:54.362Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Freeze.js":"2025-06-30T07:28:54.419Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Adhesive.js":"2025-06-30T07:28:54.383Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Star.js":"2025-06-30T07:28:54.440Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_platform_util.js":"2025-06-30T07:28:54.358Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/prop/Key.js":"2025-06-30T07:28:54.411Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_system.js":"2025-06-30T07:28:54.404Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_game_util.js":"2025-06-30T07:28:54.386Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js":"2025-06-30T07:28:54.429Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/data/lq_interface.js":"2025-06-30T07:28:54.364Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/data/lq_data.js":"2025-06-30T07:28:54.416Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/Block.js":"2025-06-30T07:28:54.426Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide.js":"2025-06-30T07:28:54.435Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/Crypto/crypto-js.min.js":"2025-06-30T07:28:54.449Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoSprite.js":"2025-06-30T07:28:54.374Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/shop/script/shop.js":"2025-06-30T07:28:54.370Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_pool_util.js":"2025-06-30T07:28:54.414Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/lq_base/util/lq_base_util.js":"2025-06-30T07:28:54.434Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledMap.js":"2025-06-30T07:28:54.338Z","C:/Work/Project/cb/temp/quick-scripts/src/assets/Script/module/RankList/List.js":"2025-06-30T07:28:54.438Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoAssembler.js":"2025-06-30T07:28:54.345Z","C:/Work/Project/cb/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoObjectGroup.js":"2025-06-30T07:28:54.354Z"}} +{"version":"1.0.8","stats":{"C:/color/temp/quick-scripts/src/__qc_index__.js":"2025-06-30T08:00:59.480Z","C:/color/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_base.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/lq_base/data/lq_interface.js":"2025-06-30T08:00:59.348Z","C:/color/temp/quick-scripts/src/assets/Script/module/Crypto/HttpUtil.js":"2025-06-30T08:00:59.363Z","C:/color/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoSprite.js":"2025-06-30T08:00:59.353Z","C:/color/temp/quick-scripts/src/assets/Script/DynamicAtlasManager.js":"2025-06-30T08:00:59.357Z","C:/color/temp/quick-scripts/src/assets/shop/script/item.js":"2025-06-30T08:00:59.398Z","C:/color/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/prop/Lock.js":"2025-06-30T08:00:59.344Z","C:/color/temp/quick-scripts/src/assets/Script/Sdk/DouyinEntranceView.js":"2025-06-30T08:00:59.375Z","C:/color/temp/quick-scripts/src/assets/effect/融化.js":"2025-06-30T08:00:59.344Z","C:/color/temp/quick-scripts/src/assets/Script/lq_base/util/lq_game_util.js":"2025-06-30T08:00:59.358Z","C:/color/temp/quick-scripts/src/assets/Script/module/GameStart/GameAppStart.js":"2025-06-30T08:00:59.358Z","C:/color/temp/quick-scripts/src/assets/animation/NewScript.js":"2025-06-30T08:00:59.342Z","C:/color/temp/quick-scripts/src/assets/Script/module/RankList/ItemRender.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/module/Notification/Notification.js":"2025-06-30T08:00:59.355Z","C:/color/temp/quick-scripts/src/assets/Script/module/Music/AudioManager.js":"2025-06-30T08:00:59.355Z","C:/color/temp/quick-scripts/src/assets/Script/module/Config/GameConfig.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/ControlManager.js":"2025-06-30T08:00:59.400Z","C:/color/temp/quick-scripts/src/assets/Script/module/Share/share.js":"2025-06-30T08:00:59.363Z","C:/color/temp/quick-scripts/src/assets/Script/GameManager.js":"2025-06-30T08:00:59.398Z","C:/color/temp/quick-scripts/src/assets/Script/module/Tool/GameTool.js":"2025-06-30T08:00:59.348Z","C:/color/temp/quick-scripts/src/assets/Script/JiaZai.js":"2025-06-30T08:00:59.338Z","C:/color/temp/quick-scripts/src/assets/Script/GameScene.js":"2025-06-30T08:00:59.402Z","C:/color/temp/quick-scripts/src/assets/Script/Reduce.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/CollisionDetection.js":"2025-06-30T08:00:59.402Z","C:/color/temp/quick-scripts/src/assets/Script/GameOver.js":"2025-06-30T08:00:59.372Z","C:/color/temp/quick-scripts/src/assets/Script/RankManager.js":"2025-06-30T08:00:59.402Z","C:/color/temp/quick-scripts/src/assets/Script/NewMode.js":"2025-06-30T08:00:59.370Z","C:/color/temp/quick-scripts/src/assets/Script/SceneManager.js":"2025-06-30T08:00:59.372Z","C:/color/temp/quick-scripts/src/assets/Script/Map.js":"2025-06-30T08:00:59.338Z","C:/color/temp/quick-scripts/src/assets/Script/Window.js":"2025-06-30T08:00:59.344Z","C:/color/temp/quick-scripts/src/assets/Script/Wall.js":"2025-06-30T08:00:59.375Z","C:/color/temp/quick-scripts/src/assets/Script/NumberToImage.js":"2025-06-30T08:00:59.363Z","C:/color/temp/quick-scripts/src/assets/Script/Pause.js":"2025-06-30T08:00:59.384Z","C:/color/temp/quick-scripts/src/assets/Script/Load.js":"2025-06-30T08:00:59.350Z","C:/color/temp/quick-scripts/src/assets/Script/btnControl.js":"2025-06-30T08:00:59.363Z","C:/color/temp/quick-scripts/src/assets/Script/position.js":"2025-06-30T08:00:59.400Z","C:/color/temp/quick-scripts/src/assets/Script/peizhi.js":"2025-06-30T08:00:59.368Z","C:/color/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_config.js":"2025-06-30T08:00:59.350Z","C:/color/temp/quick-scripts/src/assets/Script/Sdk/MiniGameManager.js":"2025-06-30T08:00:59.332Z","C:/color/temp/quick-scripts/src/assets/Script/prop/Freeze.js":"2025-06-30T08:00:59.384Z","C:/color/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide_system.js":"2025-06-30T08:00:59.372Z","C:/color/temp/quick-scripts/src/assets/Script/Sdk/MiniGameSdk.js":"2025-06-30T08:00:59.384Z","C:/color/temp/quick-scripts/src/assets/Script/prop/Boom.js":"2025-06-30T08:00:59.344Z","C:/color/temp/quick-scripts/src/assets/Script/prop/Key.js":"2025-06-30T08:00:59.378Z","C:/color/temp/quick-scripts/src/assets/Script/prop/Star.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/lq_collide_system/lq_collide.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/prop/Adhesive.js":"2025-06-30T08:00:59.358Z","C:/color/temp/quick-scripts/src/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js":"2025-06-30T08:00:59.363Z","C:/color/temp/quick-scripts/src/assets/Script/Block.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/lq_base/data/lq_const.js":"2025-06-30T08:00:59.378Z","C:/color/temp/quick-scripts/src/assets/Script/lq_base/util/lq_platform_util.js":"2025-06-30T08:00:59.344Z","C:/color/temp/quick-scripts/src/assets/Script/MapBlock.js":"2025-06-30T08:00:59.353Z","C:/color/temp/quick-scripts/src/assets/Script/lq_base/util/lq_math_util.js":"2025-06-30T08:00:59.378Z","C:/color/temp/quick-scripts/src/assets/Script/Barrier.js":"2025-06-30T08:00:59.377Z","C:/color/temp/quick-scripts/src/assets/Script/module/Storage/Storage.js":"2025-06-30T08:00:59.332Z","C:/color/temp/quick-scripts/src/assets/Script/lq_base/data/lq_data.js":"2025-06-30T08:00:59.378Z","C:/color/temp/quick-scripts/src/assets/Script/lq_base/util/lq_base_util.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/module/RankList/List.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/assets/Script/lq_base/util/lq_pool_util.js":"2025-06-30T08:00:59.378Z","C:/color/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledLayer.js":"2025-06-30T08:00:59.388Z","C:/color/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoAssembler.js":"2025-06-30T08:00:59.332Z","C:/color/temp/quick-scripts/src/assets/shop/script/shop.js":"2025-06-30T08:00:59.350Z","C:/color/temp/quick-scripts/src/assets/Script/module/Crypto/crypto-js.min.js":"2025-06-30T08:00:59.400Z","C:/color/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoObjectGroup.js":"2025-06-30T08:00:59.342Z","C:/color/temp/quick-scripts/src/tiledmap-optimize-resource/Script/TmoTiledMap.js":"2025-06-30T08:00:59.330Z"}} diff --git a/temp/quick-scripts/dst/__qc_bundle__.js b/temp/quick-scripts/dst/__qc_bundle__.js index 0b33326..a7f5584 100644 --- a/temp/quick-scripts/dst/__qc_bundle__.js +++ b/temp/quick-scripts/dst/__qc_bundle__.js @@ -103,121 +103,121 @@ require('./tiledmap-optimize-resource/Script/TmoTiledMap'); cc._RF.push(module, 'c22a3wcU/tBdJ/qjn/Q6uuA', 'lq_collide_base'); // Script/lq_collide_system/lq_collide_base.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQCollideBase = void 0; -var ccclass = cc._decorator.ccclass; -var executeInEditMode = cc._decorator.executeInEditMode; -var PolygonCollider = cc.PolygonCollider; -var property = cc._decorator.property; -var lq_collide_1 = require("./lq_collide"); -var lq_const_1 = require("../lq_base/data/lq_const"); -var LQCollideBase = /** @class */ (function (_super) { - __extends(LQCollideBase, _super); - function LQCollideBase() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.auto_update_point = true; - return _this; - } - LQCollideBase.prototype.find_collide = function () { - var collide = this.node.getComponent(lq_collide_1.LQCollide); - if (!collide) { - console.error(this.node.name + ':没有找到LQCollide组件'); - return undefined; - } - return collide; - }; - LQCollideBase.prototype.onLoad = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - collide.init_lq_collide(); - }; - LQCollideBase.prototype.onEnable = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - collide.enable_lq_collide(); - }; - LQCollideBase.prototype.onDisable = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - collide.disable_lq_collide(); - }; - LQCollideBase.prototype.onDestroy = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.onFocusInEditor = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.onLostFocusInEditor = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.resetInEditor = function () { - var collide = this.find_collide(); - if (!collide) { - return; - } - }; - LQCollideBase.prototype.update = function (dt) { - if (!CC_EDITOR || !this.auto_update_point) { - return; - } - var collide = this.find_collide(); - if (!collide) { - return; - } - if (collide.collide_shape !== lq_const_1.LQCollideShape.Polygon) { - return; - } - var polygonCollider = this.node.getComponent(PolygonCollider); - if (!polygonCollider) { - return; - } - collide.polygon_points = polygonCollider.points; - }; - __decorate([ - property({ tooltip: '多边形自动同步cocos PolygonCollider 组件中的碰撞点' }) - ], LQCollideBase.prototype, "auto_update_point", void 0); - LQCollideBase = __decorate([ - ccclass, - executeInEditMode - ], LQCollideBase); - return LQCollideBase; -}(cc.Component)); -exports.LQCollideBase = LQCollideBase; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQCollideBase = void 0; +var ccclass = cc._decorator.ccclass; +var executeInEditMode = cc._decorator.executeInEditMode; +var PolygonCollider = cc.PolygonCollider; +var property = cc._decorator.property; +var lq_collide_1 = require("./lq_collide"); +var lq_const_1 = require("../lq_base/data/lq_const"); +var LQCollideBase = /** @class */ (function (_super) { + __extends(LQCollideBase, _super); + function LQCollideBase() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.auto_update_point = true; + return _this; + } + LQCollideBase.prototype.find_collide = function () { + var collide = this.node.getComponent(lq_collide_1.LQCollide); + if (!collide) { + console.error(this.node.name + ':没有找到LQCollide组件'); + return undefined; + } + return collide; + }; + LQCollideBase.prototype.onLoad = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + collide.init_lq_collide(); + }; + LQCollideBase.prototype.onEnable = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + collide.enable_lq_collide(); + }; + LQCollideBase.prototype.onDisable = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + collide.disable_lq_collide(); + }; + LQCollideBase.prototype.onDestroy = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + }; + LQCollideBase.prototype.onFocusInEditor = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + }; + LQCollideBase.prototype.onLostFocusInEditor = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + }; + LQCollideBase.prototype.resetInEditor = function () { + var collide = this.find_collide(); + if (!collide) { + return; + } + }; + LQCollideBase.prototype.update = function (dt) { + if (!CC_EDITOR || !this.auto_update_point) { + return; + } + var collide = this.find_collide(); + if (!collide) { + return; + } + if (collide.collide_shape !== lq_const_1.LQCollideShape.Polygon) { + return; + } + var polygonCollider = this.node.getComponent(PolygonCollider); + if (!polygonCollider) { + return; + } + collide.polygon_points = polygonCollider.points; + }; + __decorate([ + property({ tooltip: '多边形自动同步cocos PolygonCollider 组件中的碰撞点' }) + ], LQCollideBase.prototype, "auto_update_point", void 0); + LQCollideBase = __decorate([ + ccclass, + executeInEditMode + ], LQCollideBase); + return LQCollideBase; +}(cc.Component)); +exports.LQCollideBase = LQCollideBase; cc._RF.pop(); } @@ -236,7 +236,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_math_util.js'; + var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_interface.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -244,57 +244,11 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '997fc58y39OFLflh6T58fZD', 'lq_math_util'); -// Script/lq_base/util/lq_math_util.ts +cc._RF.push(module, '41e45V6/vBNz5ftgHCoFmei', 'lq_interface'); +// Script/lq_base/data/lq_interface.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQMathUtil = void 0; -var LQMathUtil = /** @class */ (function () { - function LQMathUtil() { - } - LQMathUtil.random = function (min, max) { - if (min === max) { - return min; - } - else if (min < max) { - return Math.random() * (max - min) + min; - } - else { - return Math.random() * (min - max) + max; - } - }; - LQMathUtil.random_int = function (min, max) { - return Math.floor(this.random(min, max)); - }; - LQMathUtil.get_radians = function (pos, target_pos) { - var r = Math.atan2(target_pos.y - pos.y, target_pos.x - pos.x); - return r > 0 ? r : r + 6.28; - }; - LQMathUtil.intersects_rect = function (r1, r2) { - return Math.abs(r1.x - r2.x) < r1.half_width + r2.half_width && Math.abs(r1.y - r2.y) < r1.half_height + r2.half_height; - }; - LQMathUtil.intersects_point_rect = function (p, r) { - return (p.x > r.x - r.width * 0.5) && (p.x < r.x + r.width * 0.5) && (p.y > r.y - r.height * 0.5) && (p.y < r.y + r.height * 0.5); - }; - LQMathUtil.intersects_point_circle = function (p1, p2, r) { - return p1.sub(p2).magSqr() < r * r; - }; - LQMathUtil.intersects_circle = function (p1, r1, p2, r2) { - return p1.sub(p2).mag() < r1 + r2; - }; - LQMathUtil.intersects_circle_rect = function (p, r, rect) { - var relative_x = p.x - rect.x; - var relative_y = p.y - rect.y; - var dx = Math.min(relative_x, rect.half_width); - var dx1 = Math.max(dx, -rect.half_width); - var dy = Math.min(relative_y, rect.half_height); - var dy1 = Math.max(dy, -rect.half_height); - return (dx1 - relative_x) * (dx1 - relative_x) + (dy1 - relative_y) * (dy1 - relative_y) <= r * r; - }; - return LQMathUtil; -}()); -exports.LQMathUtil = LQMathUtil; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); cc._RF.pop(); } @@ -307,7 +261,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9tYXRoX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFBQTtJQTZDQSxDQUFDO0lBNUNpQixpQkFBTSxHQUFwQixVQUFxQixHQUFXLEVBQUUsR0FBVztRQUN6QyxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDYixPQUFPLEdBQUcsQ0FBQztTQUNkO2FBQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUM1QzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVhLHFCQUFVLEdBQXhCLFVBQXlCLEdBQVcsRUFBRSxHQUFXO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFYSxzQkFBVyxHQUF6QixVQUEwQixHQUFTLEVBQUUsVUFBZ0I7UUFDakQsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVhLDBCQUFlLEdBQTdCLFVBQThCLEVBQVMsRUFBRSxFQUFTO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDNUgsQ0FBQztJQUVhLGdDQUFxQixHQUFuQyxVQUFvQyxDQUFPLEVBQUUsQ0FBUTtRQUNqRCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUVhLGtDQUF1QixHQUFyQyxVQUFzQyxFQUFRLEVBQUUsRUFBUSxFQUFFLENBQVM7UUFDL0QsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVhLDRCQUFpQixHQUEvQixVQUFnQyxFQUFRLEVBQUUsRUFBVSxFQUFFLEVBQVEsRUFBRSxFQUFVO1FBQ3RFLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFYSxpQ0FBc0IsR0FBcEMsVUFBcUMsQ0FBTyxFQUFFLENBQVMsRUFBRSxJQUFXO1FBQ2hFLElBQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEMsSUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUNMLGlCQUFDO0FBQUQsQ0E3Q0EsQUE2Q0MsSUFBQTtBQTdDWSxnQ0FBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVBvcywgSVJlY3R9IGZyb20gXCIuLi9kYXRhL2xxX2ludGVyZmFjZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIExRTWF0aFV0aWwge1xyXG4gICAgcHVibGljIHN0YXRpYyByYW5kb20obWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAobWluID09PSBtYXgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pbjtcclxuICAgICAgICB9IGVsc2UgaWYgKG1pbiA8IG1heCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICsgbWluO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1pbiAtIG1heCkgKyBtYXg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcmFuZG9tX2ludChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMucmFuZG9tKG1pbiwgbWF4KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRfcmFkaWFucyhwb3M6IElQb3MsIHRhcmdldF9wb3M6IElQb3MpIHtcclxuICAgICAgICBjb25zdCByID0gTWF0aC5hdGFuMih0YXJnZXRfcG9zLnkgLSBwb3MueSwgdGFyZ2V0X3Bvcy54IC0gcG9zLngpO1xyXG4gICAgICAgIHJldHVybiByID4gMCA/IHIgOiByICsgNi4yODtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGludGVyc2VjdHNfcmVjdChyMTogSVJlY3QsIHIyOiBJUmVjdCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhyMS54IC0gcjIueCkgPCByMS5oYWxmX3dpZHRoICsgcjIuaGFsZl93aWR0aCAmJiBNYXRoLmFicyhyMS55IC0gcjIueSkgPCByMS5oYWxmX2hlaWdodCArIHIyLmhhbGZfaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19wb2ludF9yZWN0KHA6IElQb3MsIHI6IElSZWN0KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChwLnggPiByLnggLSByLndpZHRoICogMC41KSAmJiAocC54IDwgci54ICsgci53aWR0aCAqIDAuNSkgJiYgKHAueSA+IHIueSAtIHIuaGVpZ2h0ICogMC41KSAmJiAocC55IDwgci55ICsgci5oZWlnaHQgKiAwLjUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19wb2ludF9jaXJjbGUocDE6IElQb3MsIHAyOiBJUG9zLCByOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gcDEuc3ViKHAyKS5tYWdTcXIoKSA8IHIgKiByO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19jaXJjbGUocDE6IElQb3MsIHIxOiBudW1iZXIsIHAyOiBJUG9zLCByMjogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHAxLnN1YihwMikubWFnKCkgPCByMSArIHIyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19jaXJjbGVfcmVjdChwOiBJUG9zLCByOiBudW1iZXIsIHJlY3Q6IElSZWN0KSB7XHJcbiAgICAgICAgY29uc3QgcmVsYXRpdmVfeCA9IHAueCAtIHJlY3QueDtcclxuICAgICAgICBjb25zdCByZWxhdGl2ZV95ID0gcC55IC0gcmVjdC55O1xyXG4gICAgICAgIGNvbnN0IGR4ID0gTWF0aC5taW4ocmVsYXRpdmVfeCwgcmVjdC5oYWxmX3dpZHRoKTtcclxuICAgICAgICBjb25zdCBkeDEgPSBNYXRoLm1heChkeCwgLXJlY3QuaGFsZl93aWR0aCk7XHJcbiAgICAgICAgY29uc3QgZHkgPSBNYXRoLm1pbihyZWxhdGl2ZV95LCByZWN0LmhhbGZfaGVpZ2h0KTtcclxuICAgICAgICBjb25zdCBkeTEgPSBNYXRoLm1heChkeSwgLXJlY3QuaGFsZl9oZWlnaHQpO1xyXG4gICAgICAgIHJldHVybiAoZHgxIC0gcmVsYXRpdmVfeCkgKiAoZHgxIC0gcmVsYXRpdmVfeCkgKyAoZHkxIC0gcmVsYXRpdmVfeSkgKiAoZHkxIC0gcmVsYXRpdmVfeSkgPD0gciAqIHI7XHJcbiAgICB9XHJcbn0iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBvcyB7XHJcbiAgICB4OiBudW1iZXI7XHJcbiAgICB5OiBudW1iZXI7XHJcblxyXG4gICAgc3ViKHBvczogSVBvcyk6IFZlYzI7XHJcblxyXG4gICAgYWRkKHBvczogSVBvcyk6IFZlYzI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlY3Qge1xyXG4gICAgeDogbnVtYmVyO1xyXG4gICAgeTogbnVtYmVyO1xyXG4gICAgd2lkdGg6IG51bWJlcjtcclxuICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgaGFsZl93aWR0aDogbnVtYmVyO1xyXG4gICAgaGFsZl9oZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgICBzdWIocG9zOiBJUG9zKTogVmVjMjtcclxuXHJcbiAgICBhZGQocG9zOiBJUG9zKTogVmVjMjtcclxufSJdfQ== //------QC-SOURCE-SPLIT------ (function() { @@ -324,122 +278,122 @@ cc._RF.pop(); cc._RF.push(module, '771a32aQBNGVKd3+66gyTKA', 'HttpUtil'); // Script/module/Crypto/HttpUtil.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var CryptoJS = require("./crypto-js.min.js"); //引用AES源码js -var BASE_URL = "https://api.sparkus.cn"; -//只负责网络接口 次类只负责和后端交互,不负责处理数据 数据处理在GameTool -var HttpUtil = /** @class */ (function (_super) { - __extends(HttpUtil, _super); - function HttpUtil() { - return _super !== null && _super.apply(this, arguments) || this; - } - HttpUtil = __decorate([ - ccclass - ], HttpUtil); - return HttpUtil; -}(cc.Component)); -exports.default = HttpUtil; -// 响应拦截器 -// Rq.interceptors.response.use(responseHandler) -var config = { - gameId: "100012", - secretKey: "onnfPKJW", - EK: "hui231%1" -}; -var Crypoto = /** @class */ (function () { - function Crypoto() { - // 加密的向明值,自己根据项目实际情况定,需要跟后端开发保持一致 - this.keyHex = this.getHetKey(); - } - Crypoto.prototype.getHetKey = function () { - return CryptoJS.enc.Utf8.parse(config.EK); - }; - /** DES加密 */ - Crypoto.prototype.encryptByDES = function (message, secret) { - if (!message) { - return message; - } - var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; - var encrypted = CryptoJS.DES.encrypt(message, key, { - mode: CryptoJS.mode.ECB, - padding: CryptoJS.pad.Pkcs7 - }); - return encrypted.toString(); - }; - /** DES解密 */ - Crypoto.prototype.decryptByDES = function (message, secret) { - var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; - var decrypted = CryptoJS.DES.decrypt({ - ciphertext: CryptoJS.enc.Base64.parse(message) - }, key, { - mode: CryptoJS.mode.ECB, - padding: CryptoJS.pad.Pkcs7 - }); - return decrypted.toString(CryptoJS.enc.Utf8); - }; - /** hmacSHA256加密 */ - Crypoto.prototype.hmacSha256 = function (message, secret) { - var keyHex = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; - var hash = CryptoJS.HmacSHA256(message, keyHex); - return hash.toString(); - }; - /** hmacSHA256验证 */ - Crypoto.prototype.verifyHmacSha256 = function (message, signature) { - var hash = CryptoJS.HmacSHA256(message, this.keyHex); - return hash.toString() === signature; - }; - /** CBC加密 */ - Crypoto.prototype.encryptCBC = function (word) { - if (!word) { - return word; - } - var srcs = CryptoJS.enc.Utf8.parse(word); - var encrypted = CryptoJS.AES.encrypt(srcs, this.keyHex, { - iv: this.keyHex, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.ZeroPadding - }); - return encrypted.toString(); - }; - /** CBC解密 */ - Crypoto.prototype.decryptCBC = function (word) { - if (!word) { - return word; - } - var encryptedHexStr = CryptoJS.enc.Hex.parse(word); - var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); - var decrypt = CryptoJS.AES.decrypt(srcs, this.keyHex, { - iv: this.keyHex, - mode: CryptoJS.mode.CBC, - padding: CryptoJS.pad.ZeroPadding - }); - var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); - return decryptedStr.toString(); - }; - return Crypoto; -}()); -var fxCry = new Crypoto(); +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var CryptoJS = require("./crypto-js.min.js"); //引用AES源码js +var BASE_URL = "https://api.sparkus.cn"; +//只负责网络接口 次类只负责和后端交互,不负责处理数据 数据处理在GameTool +var HttpUtil = /** @class */ (function (_super) { + __extends(HttpUtil, _super); + function HttpUtil() { + return _super !== null && _super.apply(this, arguments) || this; + } + HttpUtil = __decorate([ + ccclass + ], HttpUtil); + return HttpUtil; +}(cc.Component)); +exports.default = HttpUtil; +// 响应拦截器 +// Rq.interceptors.response.use(responseHandler) +var config = { + gameId: "100012", + secretKey: "onnfPKJW", + EK: "hui231%1" +}; +var Crypoto = /** @class */ (function () { + function Crypoto() { + // 加密的向明值,自己根据项目实际情况定,需要跟后端开发保持一致 + this.keyHex = this.getHetKey(); + } + Crypoto.prototype.getHetKey = function () { + return CryptoJS.enc.Utf8.parse(config.EK); + }; + /** DES加密 */ + Crypoto.prototype.encryptByDES = function (message, secret) { + if (!message) { + return message; + } + var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; + var encrypted = CryptoJS.DES.encrypt(message, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }); + return encrypted.toString(); + }; + /** DES解密 */ + Crypoto.prototype.decryptByDES = function (message, secret) { + var key = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; + var decrypted = CryptoJS.DES.decrypt({ + ciphertext: CryptoJS.enc.Base64.parse(message) + }, key, { + mode: CryptoJS.mode.ECB, + padding: CryptoJS.pad.Pkcs7 + }); + return decrypted.toString(CryptoJS.enc.Utf8); + }; + /** hmacSHA256加密 */ + Crypoto.prototype.hmacSha256 = function (message, secret) { + var keyHex = secret ? CryptoJS.enc.Utf8.parse(secret) : this.keyHex; + var hash = CryptoJS.HmacSHA256(message, keyHex); + return hash.toString(); + }; + /** hmacSHA256验证 */ + Crypoto.prototype.verifyHmacSha256 = function (message, signature) { + var hash = CryptoJS.HmacSHA256(message, this.keyHex); + return hash.toString() === signature; + }; + /** CBC加密 */ + Crypoto.prototype.encryptCBC = function (word) { + if (!word) { + return word; + } + var srcs = CryptoJS.enc.Utf8.parse(word); + var encrypted = CryptoJS.AES.encrypt(srcs, this.keyHex, { + iv: this.keyHex, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.ZeroPadding + }); + return encrypted.toString(); + }; + /** CBC解密 */ + Crypoto.prototype.decryptCBC = function (word) { + if (!word) { + return word; + } + var encryptedHexStr = CryptoJS.enc.Hex.parse(word); + var srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); + var decrypt = CryptoJS.AES.decrypt(srcs, this.keyHex, { + iv: this.keyHex, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.ZeroPadding + }); + var decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); + return decryptedStr.toString(); + }; + return Crypoto; +}()); +var fxCry = new Crypoto(); cc._RF.pop(); } @@ -458,198 +412,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoTiledLayer.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'd60cfrGbXBLBbplLoT7TBn7', 'TmoTiledLayer'); -// Script/TmoTiledLayer.js - -"use strict"; - -exports.__esModule = true; -exports["default"] = void 0; -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html - -var _mat4_temp = cc.mat4(); -var _vec2_temp = cc.v2(); -var _vec2_temp2 = cc.v2(); -var _default = cc.Class({ - "extends": cc.TiledLayer, - // 此处修改 增加firstTmxLayer参数 - _init: function _init(layerInfo, mapInfo, tilesets, textures, texGrids, tiledMap, firstTmxLayer) { - // 修改结束 - this._cullingDirty = true; - this._layerInfo = layerInfo; - this._mapInfo = mapInfo; - // 此处修改 保存firstTmxLayer参数 - this._firstTmxLayer = firstTmxLayer; - this._tiledMap = tiledMap; - // 修改结束 - - var size = layerInfo._layerSize; - - // layerInfo - this._layerName = layerInfo.name; - this._tiles = layerInfo._tiles; - this._properties = layerInfo.properties; - this._layerSize = size; - this._minGID = layerInfo._minGID; - this._maxGID = layerInfo._maxGID; - this._opacity = layerInfo._opacity; - this._renderOrder = mapInfo.renderOrder; - this._staggerAxis = mapInfo.getStaggerAxis(); - this._staggerIndex = mapInfo.getStaggerIndex(); - this._hexSideLength = mapInfo.getHexSideLength(); - this._animations = mapInfo.getTileAnimations(); - - // tilesets - this._tilesets = tilesets; - // textures - this._textures = textures; - // grid texture - this._texGrids = texGrids; - - // mapInfo - this._layerOrientation = mapInfo.orientation; - this._mapTileSize = mapInfo.getTileSize(); - var maptw = this._mapTileSize.width; - var mapth = this._mapTileSize.height; - var layerW = this._layerSize.width; - var layerH = this._layerSize.height; - if (this._layerOrientation === cc.TiledMap.Orientation.HEX) { - // handle hex map - var TiledMap = cc.TiledMap; - var StaggerAxis = TiledMap.StaggerAxis; - var StaggerIndex = TiledMap.StaggerIndex; - var width = 0, - height = 0; - this._odd_even = this._staggerIndex === StaggerIndex.STAGGERINDEX_ODD ? 1 : -1; - if (this._staggerAxis === StaggerAxis.STAGGERAXIS_X) { - this._diffX1 = (maptw - this._hexSideLength) / 2; - this._diffY1 = 0; - height = mapth * (layerH + 0.5); - width = (maptw + this._hexSideLength) * Math.floor(layerW / 2) + maptw * (layerW % 2); - } else { - this._diffX1 = 0; - this._diffY1 = (mapth - this._hexSideLength) / 2; - width = maptw * (layerW + 0.5); - height = (mapth + this._hexSideLength) * Math.floor(layerH / 2) + mapth * (layerH % 2); - } - this.node.setContentSize(width, height); - } else if (this._layerOrientation === cc.TiledMap.Orientation.ISO) { - var wh = layerW + layerH; - this.node.setContentSize(maptw * 0.5 * wh, mapth * 0.5 * wh); - } else { - this.node.setContentSize(layerW * maptw, layerH * mapth); - } - - // offset (after layer orientation is set); - this._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); - this._useAutomaticVertexZ = false; - this._vertexZvalue = 0; - this._syncAnchorPoint(); - this._prepareToRender(); - }, - _updateCulling: function _updateCulling() { - if (CC_EDITOR) { - this.enableCulling(false); - } else if (this._enableCulling) { - // 此处修改 若不为首个layer 直接复用firstLayer的结果 - // this._firstTmxLayer不为空时 表示当前layer不是首个layer - var firstTmxLayer = this._firstTmxLayer; - if (!!firstTmxLayer) { - this._cullingRect = firstTmxLayer._cullingRect; - this._cullingDirty = firstTmxLayer._cacheCullingDirty; - return; - } - // 修改结束 - - this.node._updateWorldMatrix(); - cc.Mat4.invert(_mat4_temp, this.node._worldMatrix); - var rect = cc.visibleRect; - var camera = cc.Camera.findCamera(this.node); - if (camera) { - _vec2_temp.x = 0; - _vec2_temp.y = 0; - _vec2_temp2.x = _vec2_temp.x + rect.width; - _vec2_temp2.y = _vec2_temp.y + rect.height; - camera.getScreenToWorldPoint(_vec2_temp, _vec2_temp); - camera.getScreenToWorldPoint(_vec2_temp2, _vec2_temp2); - cc.Vec2.transformMat4(_vec2_temp, _vec2_temp, _mat4_temp); - cc.Vec2.transformMat4(_vec2_temp2, _vec2_temp2, _mat4_temp); - this._updateViewPort(_vec2_temp.x, _vec2_temp.y, _vec2_temp2.x - _vec2_temp.x, _vec2_temp2.y - _vec2_temp.y); - // 此处修改 若为首个layer 缓存_cullingDirty。 - // _cullingDirty会在填充渲染数据后被改为false 所以需要缓存这里的结果 - if (!firstTmxLayer) { - this._cacheCullingDirty = this._cullingDirty; - } - // 修改结束 - } - } - }, - _traverseAllGrid: function _traverseAllGrid() { - var tiles = this._tiles; - var texGrids = this._texGrids; - var tilesetIndexArr = this._tilesetIndexArr; - var tilesetIndexToArrIndex = this._tilesetIndexToArrIndex = {}; - var TiledMap = cc.TiledMap; - var TileFlag = TiledMap.TileFlag; - var FLIPPED_MASK = TileFlag.FLIPPED_MASK; - var singleTexture = this._tiledMap.isSingleTexture(); - tilesetIndexArr.length = 0; - for (var i = 0; i < tiles.length; i++) { - var gid = tiles[i]; - if (gid === 0) continue; - gid = (gid & FLIPPED_MASK) >>> 0; - var grid = texGrids[gid]; - if (!grid) { - cc.error("CCTiledLayer:_traverseAllGrid grid is null, gid is:", gid); - continue; - } - var tilesetIdx = grid.texId; - if (tilesetIndexToArrIndex[tilesetIdx] !== undefined) continue; - tilesetIndexToArrIndex[tilesetIdx] = tilesetIndexArr.length; - tilesetIndexArr.push(tilesetIdx); - - // 此处修改 当只有一个图集时 可以直接停止遍历 - if (singleTexture) { - break; - } - // 修改结束 - } - } -}); -exports["default"] = _default; -module.exports = exports["default"]; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRMYXllci5qcyJdLCJuYW1lcyI6WyJfbWF0NF90ZW1wIiwiY2MiLCJtYXQ0IiwiX3ZlYzJfdGVtcCIsInYyIiwiX3ZlYzJfdGVtcDIiLCJfZGVmYXVsdCIsIkNsYXNzIiwiVGlsZWRMYXllciIsIl9pbml0IiwibGF5ZXJJbmZvIiwibWFwSW5mbyIsInRpbGVzZXRzIiwidGV4dHVyZXMiLCJ0ZXhHcmlkcyIsInRpbGVkTWFwIiwiZmlyc3RUbXhMYXllciIsIl9jdWxsaW5nRGlydHkiLCJfbGF5ZXJJbmZvIiwiX21hcEluZm8iLCJfZmlyc3RUbXhMYXllciIsIl90aWxlZE1hcCIsInNpemUiLCJfbGF5ZXJTaXplIiwiX2xheWVyTmFtZSIsIm5hbWUiLCJfdGlsZXMiLCJfcHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJfbWluR0lEIiwiX21heEdJRCIsIl9vcGFjaXR5IiwiX3JlbmRlck9yZGVyIiwicmVuZGVyT3JkZXIiLCJfc3RhZ2dlckF4aXMiLCJnZXRTdGFnZ2VyQXhpcyIsIl9zdGFnZ2VySW5kZXgiLCJnZXRTdGFnZ2VySW5kZXgiLCJfaGV4U2lkZUxlbmd0aCIsImdldEhleFNpZGVMZW5ndGgiLCJfYW5pbWF0aW9ucyIsImdldFRpbGVBbmltYXRpb25zIiwiX3RpbGVzZXRzIiwiX3RleHR1cmVzIiwiX3RleEdyaWRzIiwiX2xheWVyT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsIl9tYXBUaWxlU2l6ZSIsImdldFRpbGVTaXplIiwibWFwdHciLCJ3aWR0aCIsIm1hcHRoIiwiaGVpZ2h0IiwibGF5ZXJXIiwibGF5ZXJIIiwiVGlsZWRNYXAiLCJPcmllbnRhdGlvbiIsIkhFWCIsIlN0YWdnZXJBeGlzIiwiU3RhZ2dlckluZGV4IiwiX29kZF9ldmVuIiwiU1RBR0dFUklOREVYX09ERCIsIlNUQUdHRVJBWElTX1giLCJfZGlmZlgxIiwiX2RpZmZZMSIsIk1hdGgiLCJmbG9vciIsIm5vZGUiLCJzZXRDb250ZW50U2l6ZSIsIklTTyIsIndoIiwiX29mZnNldCIsIm9mZnNldCIsIngiLCJ5IiwiX3VzZUF1dG9tYXRpY1ZlcnRleFoiLCJfdmVydGV4WnZhbHVlIiwiX3N5bmNBbmNob3JQb2ludCIsIl9wcmVwYXJlVG9SZW5kZXIiLCJfdXBkYXRlQ3VsbGluZyIsIkNDX0VESVRPUiIsImVuYWJsZUN1bGxpbmciLCJfZW5hYmxlQ3VsbGluZyIsIl9jdWxsaW5nUmVjdCIsIl9jYWNoZUN1bGxpbmdEaXJ0eSIsIl91cGRhdGVXb3JsZE1hdHJpeCIsIk1hdDQiLCJpbnZlcnQiLCJfd29ybGRNYXRyaXgiLCJyZWN0IiwidmlzaWJsZVJlY3QiLCJjYW1lcmEiLCJDYW1lcmEiLCJmaW5kQ2FtZXJhIiwiZ2V0U2NyZWVuVG9Xb3JsZFBvaW50IiwiVmVjMiIsInRyYW5zZm9ybU1hdDQiLCJfdXBkYXRlVmlld1BvcnQiLCJfdHJhdmVyc2VBbGxHcmlkIiwidGlsZXMiLCJ0aWxlc2V0SW5kZXhBcnIiLCJfdGlsZXNldEluZGV4QXJyIiwidGlsZXNldEluZGV4VG9BcnJJbmRleCIsIl90aWxlc2V0SW5kZXhUb0FyckluZGV4IiwiVGlsZUZsYWciLCJGTElQUEVEX01BU0siLCJzaW5nbGVUZXh0dXJlIiwiaXNTaW5nbGVUZXh0dXJlIiwibGVuZ3RoIiwiaSIsImdpZCIsImdyaWQiLCJlcnJvciIsInRpbGVzZXRJZHgiLCJ0ZXhJZCIsInVuZGVmaW5lZCIsInB1c2giLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUlBLFVBQVUsR0FBR0MsRUFBRSxDQUFDQyxJQUFJLEVBQUU7QUFDMUIsSUFBSUMsVUFBVSxHQUFHRixFQUFFLENBQUNHLEVBQUUsRUFBRTtBQUN4QixJQUFJQyxXQUFXLEdBQUdKLEVBQUUsQ0FBQ0csRUFBRSxFQUFFO0FBQUMsSUFBQUUsUUFBQSxHQUVY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QUFBL0csUUFBQTtBQUFBZ0gsTUFBQSxDQUFBRCxPQUFBLEdBQUFBLE9BQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxubGV0IF9tYXQ0X3RlbXAgPSBjYy5tYXQ0KCk7XHJcbmxldCBfdmVjMl90ZW1wID0gY2MudjIoKTtcclxubGV0IF92ZWMyX3RlbXAyID0gY2MudjIoKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IGNjLlRpbGVkTGF5ZXIsXHJcblxyXG4gICAgLy8g5q2k5aSE5L+u5pS5IOWinuWKoGZpcnN0VG14TGF5ZXLlj4LmlbBcclxuICAgIF9pbml0KGxheWVySW5mbywgbWFwSW5mbywgdGlsZXNldHMsIHRleHR1cmVzLCB0ZXhHcmlkcywgdGlsZWRNYXAsIGZpcnN0VG14TGF5ZXIpIHtcclxuICAgICAgICAvLyDkv67mlLnnu5PmnZ9cclxuICAgICAgICB0aGlzLl9jdWxsaW5nRGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2xheWVySW5mbyA9IGxheWVySW5mbztcclxuICAgICAgICB0aGlzLl9tYXBJbmZvID0gbWFwSW5mbztcclxuICAgICAgICAvLyDmraTlpITkv67mlLkg5L+d5a2YZmlyc3RUbXhMYXllcuWPguaVsFxyXG4gICAgICAgIHRoaXMuX2ZpcnN0VG14TGF5ZXIgPSBmaXJzdFRteExheWVyO1xyXG4gICAgICAgIHRoaXMuX3RpbGVkTWFwID0gdGlsZWRNYXA7XHJcbiAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcblxyXG4gICAgICAgIGxldCBzaXplID0gbGF5ZXJJbmZvLl9sYXllclNpemU7XHJcblxyXG4gICAgICAgIC8vIGxheWVySW5mb1xyXG4gICAgICAgIHRoaXMuX2xheWVyTmFtZSA9IGxheWVySW5mby5uYW1lO1xyXG4gICAgICAgIHRoaXMuX3RpbGVzID0gbGF5ZXJJbmZvLl90aWxlcztcclxuICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gbGF5ZXJJbmZvLnByb3BlcnRpZXM7XHJcbiAgICAgICAgdGhpcy5fbGF5ZXJTaXplID0gc2l6ZTtcclxuICAgICAgICB0aGlzLl9taW5HSUQgPSBsYXllckluZm8uX21pbkdJRDtcclxuICAgICAgICB0aGlzLl9tYXhHSUQgPSBsYXllckluZm8uX21heEdJRDtcclxuICAgICAgICB0aGlzLl9vcGFjaXR5ID0gbGF5ZXJJbmZvLl9vcGFjaXR5O1xyXG4gICAgICAgIHRoaXMuX3JlbmRlck9yZGVyID0gbWFwSW5mby5yZW5kZXJPcmRlcjtcclxuICAgICAgICB0aGlzLl9zdGFnZ2VyQXhpcyA9IG1hcEluZm8uZ2V0U3RhZ2dlckF4aXMoKTtcclxuICAgICAgICB0aGlzLl9zdGFnZ2VySW5kZXggPSBtYXBJbmZvLmdldFN0YWdnZXJJbmRleCgpO1xyXG4gICAgICAgIHRoaXMuX2hleFNpZGVMZW5ndGggPSBtYXBJbmZvLmdldEhleFNpZGVMZW5ndGgoKTtcclxuICAgICAgICB0aGlzLl9hbmltYXRpb25zID0gbWFwSW5mby5nZXRUaWxlQW5pbWF0aW9ucygpO1xyXG5cclxuICAgICAgICAvLyB0aWxlc2V0c1xyXG4gICAgICAgIHRoaXMuX3RpbGVzZXRzID0gdGlsZXNldHM7XHJcbiAgICAgICAgLy8gdGV4dHVyZXNcclxuICAgICAgICB0aGlzLl90ZXh0dXJlcyA9IHRleHR1cmVzO1xyXG4gICAgICAgIC8vIGdyaWQgdGV4dHVyZVxyXG4gICAgICAgIHRoaXMuX3RleEdyaWRzID0gdGV4R3JpZHM7XHJcblxyXG4gICAgICAgIC8vIG1hcEluZm9cclxuICAgICAgICB0aGlzLl9sYXllck9yaWVudGF0aW9uID0gbWFwSW5mby5vcmllbnRhdGlvbjtcclxuICAgICAgICB0aGlzLl9tYXBUaWxlU2l6ZSA9IG1hcEluZm8uZ2V0VGlsZVNpemUoKTtcclxuXHJcbiAgICAgICAgbGV0IG1hcHR3ID0gdGhpcy5fbWFwVGlsZVNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IG1hcHRoID0gdGhpcy5fbWFwVGlsZVNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGxldCBsYXllclcgPSB0aGlzLl9sYXllclNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGxheWVySCA9IHRoaXMuX2xheWVyU2l6ZS5oZWlnaHQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9sYXllck9yaWVudGF0aW9uID09PSBjYy5UaWxlZE1hcC5PcmllbnRhdGlvbi5IRVgpIHtcclxuICAgICAgICAgICAgLy8gaGFuZGxlIGhleCBtYXBcclxuICAgICAgICAgICAgY29uc3QgVGlsZWRNYXAgPSBjYy5UaWxlZE1hcDtcclxuICAgICAgICAgICAgY29uc3QgU3RhZ2dlckF4aXMgPSBUaWxlZE1hcC5TdGFnZ2VyQXhpcztcclxuICAgICAgICAgICAgY29uc3QgU3RhZ2dlckluZGV4ID0gVGlsZWRNYXAuU3RhZ2dlckluZGV4O1xyXG4gICAgICAgICAgICBsZXQgd2lkdGggPSAwLCBoZWlnaHQgPSAwO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fb2RkX2V2ZW4gPSAodGhpcy5fc3RhZ2dlckluZGV4ID09PSBTdGFnZ2VySW5kZXguU1RBR0dFUklOREVYX09ERCkgPyAxIDogLTE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdGFnZ2VyQXhpcyA9PT0gU3RhZ2dlckF4aXMuU1RBR0dFUkFYSVNfWCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlgxID0gKG1hcHR3IC0gdGhpcy5faGV4U2lkZUxlbmd0aCkgLyAyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlkxID0gMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IG1hcHRoICogKGxheWVySCArIDAuNSk7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCA9IChtYXB0dyArIHRoaXMuX2hleFNpZGVMZW5ndGgpICogTWF0aC5mbG9vcihsYXllclcgLyAyKSArIG1hcHR3ICogKGxheWVyVyAlIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlgxID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpZmZZMSA9IChtYXB0aCAtIHRoaXMuX2hleFNpZGVMZW5ndGgpIC8gMjtcclxuICAgICAgICAgICAgICAgIHdpZHRoID0gbWFwdHcgKiAobGF5ZXJXICsgMC41KTtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IChtYXB0aCArIHRoaXMuX2hleFNpZGVMZW5ndGgpICogTWF0aC5mbG9vcihsYXllckggLyAyKSArIG1hcHRoICogKGxheWVySCAlIDIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2xheWVyT3JpZW50YXRpb24gPT09IGNjLlRpbGVkTWFwLk9yaWVudGF0aW9uLklTTykge1xyXG4gICAgICAgICAgICBsZXQgd2ggPSBsYXllclcgKyBsYXllckg7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZShtYXB0dyAqIDAuNSAqIHdoLCBtYXB0aCAqIDAuNSAqIHdoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuc2V0Q29udGVudFNpemUobGF5ZXJXICogbWFwdHcsIGxheWVySCAqIG1hcHRoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG9mZnNldCAoYWZ0ZXIgbGF5ZXIgb3JpZW50YXRpb24gaXMgc2V0KTtcclxuICAgICAgICB0aGlzLl9vZmZzZXQgPSBjYy52MihsYXllckluZm8ub2Zmc2V0LngsIC1sYXllckluZm8ub2Zmc2V0LnkpO1xyXG4gICAgICAgIHRoaXMuX3VzZUF1dG9tYXRpY1ZlcnRleFogPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl92ZXJ0ZXhadmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuX3N5bmNBbmNob3JQb2ludCgpO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVUb1JlbmRlcigpO1xyXG4gICAgfSxcclxuICAgIF91cGRhdGVDdWxsaW5nKCkge1xyXG4gICAgICAgIGlmIChDQ19FRElUT1IpIHtcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVDdWxsaW5nKGZhbHNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2VuYWJsZUN1bGxpbmcpIHtcclxuICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOiLpeS4jeS4uummluS4qmxheWVyIOebtOaOpeWkjeeUqGZpcnN0TGF5ZXLnmoTnu5PmnpxcclxuICAgICAgICAgICAgLy8gdGhpcy5fZmlyc3RUbXhMYXllcuS4jeS4uuepuuaXtiDooajnpLrlvZPliY1sYXllcuS4jeaYr+mmluS4qmxheWVyXHJcbiAgICAgICAgICAgIGxldCBmaXJzdFRteExheWVyID0gdGhpcy5fZmlyc3RUbXhMYXllcjtcclxuICAgICAgICAgICAgaWYgKCEhZmlyc3RUbXhMYXllcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VsbGluZ1JlY3QgPSBmaXJzdFRteExheWVyLl9jdWxsaW5nUmVjdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1bGxpbmdEaXJ0eSA9IGZpcnN0VG14TGF5ZXIuX2NhY2hlQ3VsbGluZ0RpcnR5O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOS/ruaUuee7k+adn1xyXG5cclxuICAgICAgICAgICAgdGhpcy5ub2RlLl91cGRhdGVXb3JsZE1hdHJpeCgpO1xyXG4gICAgICAgICAgICBjYy5NYXQ0LmludmVydChfbWF0NF90ZW1wLCB0aGlzLm5vZGUuX3dvcmxkTWF0cml4KTtcclxuICAgICAgICAgICAgbGV0IHJlY3QgPSBjYy52aXNpYmxlUmVjdDtcclxuICAgICAgICAgICAgbGV0IGNhbWVyYSA9IGNjLkNhbWVyYS5maW5kQ2FtZXJhKHRoaXMubm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChjYW1lcmEpIHtcclxuICAgICAgICAgICAgICAgIF92ZWMyX3RlbXAueCA9IDA7XHJcbiAgICAgICAgICAgICAgICBfdmVjMl90ZW1wLnkgPSAwO1xyXG4gICAgICAgICAgICAgICAgX3ZlYzJfdGVtcDIueCA9IF92ZWMyX3RlbXAueCArIHJlY3Qud2lkdGg7XHJcbiAgICAgICAgICAgICAgICBfdmVjMl90ZW1wMi55ID0gX3ZlYzJfdGVtcC55ICsgcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBjYW1lcmEuZ2V0U2NyZWVuVG9Xb3JsZFBvaW50KF92ZWMyX3RlbXAsIF92ZWMyX3RlbXApO1xyXG4gICAgICAgICAgICAgICAgY2FtZXJhLmdldFNjcmVlblRvV29ybGRQb2ludChfdmVjMl90ZW1wMiwgX3ZlYzJfdGVtcDIpO1xyXG4gICAgICAgICAgICAgICAgY2MuVmVjMi50cmFuc2Zvcm1NYXQ0KF92ZWMyX3RlbXAsIF92ZWMyX3RlbXAsIF9tYXQ0X3RlbXApO1xyXG4gICAgICAgICAgICAgICAgY2MuVmVjMi50cmFuc2Zvcm1NYXQ0KF92ZWMyX3RlbXAyLCBfdmVjMl90ZW1wMiwgX21hdDRfdGVtcCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVmlld1BvcnQoX3ZlYzJfdGVtcC54LCBfdmVjMl90ZW1wLnksIF92ZWMyX3RlbXAyLnggLSBfdmVjMl90ZW1wLngsIF92ZWMyX3RlbXAyLnkgLSBfdmVjMl90ZW1wLnkpO1xyXG4gICAgICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOiLpeS4uummluS4qmxheWVyIOe8k+WtmF9jdWxsaW5nRGlydHnjgIJcclxuICAgICAgICAgICAgICAgIC8vIF9jdWxsaW5nRGlydHnkvJrlnKjloavlhYXmuLLmn5PmlbDmja7lkI7ooqvmlLnkuLpmYWxzZSDmiYDku6XpnIDopoHnvJPlrZjov5nph4znmoTnu5PmnpxcclxuICAgICAgICAgICAgICAgIGlmICghZmlyc3RUbXhMYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlQ3VsbGluZ0RpcnR5ID0gdGhpcy5fY3VsbGluZ0RpcnR5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgX3RyYXZlcnNlQWxsR3JpZCAoKSB7XHJcbiAgICAgICAgbGV0IHRpbGVzID0gdGhpcy5fdGlsZXM7XHJcbiAgICAgICAgbGV0IHRleEdyaWRzID0gdGhpcy5fdGV4R3JpZHM7XHJcbiAgICAgICAgbGV0IHRpbGVzZXRJbmRleEFyciA9IHRoaXMuX3RpbGVzZXRJbmRleEFycjtcclxuICAgICAgICBsZXQgdGlsZXNldEluZGV4VG9BcnJJbmRleCA9IHRoaXMuX3RpbGVzZXRJbmRleFRvQXJySW5kZXggPSB7fTtcclxuXHJcbiAgICAgICAgY29uc3QgVGlsZWRNYXAgPSBjYy5UaWxlZE1hcDtcclxuICAgICAgICBjb25zdCBUaWxlRmxhZyA9IFRpbGVkTWFwLlRpbGVGbGFnO1xyXG4gICAgICAgIGNvbnN0IEZMSVBQRURfTUFTSyA9IFRpbGVGbGFnLkZMSVBQRURfTUFTSztcclxuXHJcbiAgICAgICAgbGV0IHNpbmdsZVRleHR1cmUgPSB0aGlzLl90aWxlZE1hcC5pc1NpbmdsZVRleHR1cmUoKTtcclxuXHJcbiAgICAgICAgdGlsZXNldEluZGV4QXJyLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZ2lkID0gdGlsZXNbaV07XHJcbiAgICAgICAgICAgIGlmIChnaWQgPT09IDApIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBnaWQgPSAoKGdpZCAmIEZMSVBQRURfTUFTSykgPj4+IDApO1xyXG4gICAgICAgICAgICBsZXQgZ3JpZCA9IHRleEdyaWRzW2dpZF07XHJcbiAgICAgICAgICAgIGlmICghZ3JpZCkge1xyXG4gICAgICAgICAgICAgICAgY2MuZXJyb3IoXCJDQ1RpbGVkTGF5ZXI6X3RyYXZlcnNlQWxsR3JpZCBncmlkIGlzIG51bGwsIGdpZCBpczpcIiwgZ2lkKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB0aWxlc2V0SWR4ID0gZ3JpZC50ZXhJZDtcclxuICAgICAgICAgICAgaWYgKHRpbGVzZXRJbmRleFRvQXJySW5kZXhbdGlsZXNldElkeF0gIT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcbiAgICAgICAgICAgIHRpbGVzZXRJbmRleFRvQXJySW5kZXhbdGlsZXNldElkeF0gPSB0aWxlc2V0SW5kZXhBcnIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aWxlc2V0SW5kZXhBcnIucHVzaCh0aWxlc2V0SWR4KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDlvZPlj6rmnInkuIDkuKrlm77pm4bml7Yg5Y+v5Lul55u05o6l5YGc5q2i6YGN5Y6GXHJcbiAgICAgICAgICAgIGlmIChzaW5nbGVUZXh0dXJlKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDkv67mlLnnu5PmnZ9cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59KTtcclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/CollisionDetection.js'; + var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoSprite.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -657,102 +420,59 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'f1883pXzMVIp5/ARDAWfZ7j', 'CollisionDetection'); -// Script/CollisionDetection.ts +cc._RF.push(module, '4fa6cO05aBKGoM+5EX9zhkC', 'TmoSprite'); +// Script/TmoSprite.js -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; -var CollisionDetection = /** @class */ (function (_super) { - __extends(CollisionDetection, _super); - function CollisionDetection() { - return _super !== null && _super.apply(this, arguments) || this; - } - CollisionDetection_1 = CollisionDetection; - CollisionDetection.prototype.onLoad = function () { - if (CollisionDetection_1._instance == null) { - CollisionDetection_1._instance = this; - // cc.game.addPersistRootNode(this.node); - } - else { - return; - } - }; - //碰撞检测函数 - CollisionDetection.prototype.isColliding = function (rect1, rect2) { - // 快速排除:检查边界框是否相交 - if (rect1.xMax < rect2.xMin || rect2.xMax < rect1.xMin || rect1.yMax < rect2.yMin || rect2.yMax < rect1.yMin) { - return { isColliding: false }; - } - // 调用原始的 intersects 方法 - var isColliding = rect1.intersects(rect2); - return { isColliding: isColliding }; - }; - // 获取多边形的所有边的法线 - CollisionDetection.prototype.getNormals = function (polygon) { - var normals = []; - var length = polygon.length; - for (var i = 0; i < length; i++) { - var p1 = polygon[i]; - var p2 = polygon[(i + 1) % length]; - var edge = new cc.Vec2(p2.x - p1.x, p2.y - p1.y); - var normal = new cc.Vec2(-edge.y, edge.x); - normal.normalize(); - normals.push(normal); - } - return normals; - }; - // 将多边形投影到轴上 - CollisionDetection.prototype.project = function (polygon, axis) { - var min = cc.Vec2.dot(polygon[0], axis); - var max = min; - for (var i = 1; i < polygon.length; i++) { - var dotProduct = cc.Vec2.dot(polygon[i], axis); - if (dotProduct < min) { - min = dotProduct; - } - else if (dotProduct > max) { - max = dotProduct; - } - } - return { min: min, max: max }; - }; - // 检查两个投影是否重叠 - CollisionDetection.prototype.overlap = function (projection1, projection2) { - return !(projection1.max < projection2.min || projection2.max < projection1.min); - }; - var CollisionDetection_1; - CollisionDetection = CollisionDetection_1 = __decorate([ - ccclass - ], CollisionDetection); - return CollisionDetection; -}(cc.Component)); -exports.default = CollisionDetection; +"use strict"; + +exports.__esModule = true; +exports["default"] = void 0; +var _TmoAssembler = require("./TmoAssembler"); +var _default = cc.Class({ + "extends": cc.Sprite, + /** + * 设置TextureIndex + */ + setTextureIdx: function setTextureIdx(idx) { + this._textureIdx = idx; + this.setVertsDirty(); + }, + _getDefaultMaterial: function _getDefaultMaterial() { + // 从TiledMap取得默认的材质 + return this._getTiledMap().getObjectMaterial(); + }, + _updateMaterial: function _updateMaterial() { + // make sure material is belong to self. + var material = this.getMaterial(0); + if (material) { + if (material.getDefine('USE_TEXTURE') !== undefined) { + material.define('USE_TEXTURE', true); + } + // 手动设置哈希值,避免无法合批 + material.updateHash(999999); + + // 增加WITH_COLOR宏定义 + var noColor = this.isNoColor(); + material.define('WITH_COLOR', !noColor); + } + cc.BlendFunc.prototype._updateMaterial.call(this); + }, + _resetAssembler: function _resetAssembler() { + // 修改默认Assembler + var assembler = this._assembler = new _TmoAssembler.TmoAssembler(); + assembler.init(this); + this._updateColor(); + this.setVertsDirty(); + }, + _getTiledMap: function _getTiledMap() { + return this.node._tiledMap; + }, + isNoColor: function isNoColor() { + return this._getTiledMap().isNoColor(); + } +}); +exports["default"] = _default; +module.exports = exports["default"]; cc._RF.pop(); } @@ -765,5549 +485,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDb2xsaXNpb25EZXRlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHNUUsSUFBQSxLQUF3QyxFQUFFLENBQUMsVUFBVSxFQUFwRCxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxnQkFBZ0Isc0JBQWlCLENBQUM7QUFHNUQ7SUFBZ0Qsc0NBQVk7SUFBNUQ7O0lBNkRBLENBQUM7MkJBN0RvQixrQkFBa0I7SUFDUCxtQ0FBTSxHQUFOO1FBQ3hCLElBQUksb0JBQWtCLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUN0QyxvQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLHlDQUF5QztTQUM1QzthQUNJO1lBQ0QsT0FBTztTQUNWO0lBRUwsQ0FBQztJQUNELFFBQVE7SUFDRCx3Q0FBVyxHQUFsQixVQUFtQixLQUFjLEVBQUUsS0FBYztRQUM3QyxpQkFBaUI7UUFDakIsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNqQztRQUVELHNCQUFzQjtRQUN0QixJQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE9BQU8sRUFBRSxXQUFXLGFBQUEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFHRCxlQUFlO0lBQ1AsdUNBQVUsR0FBbEIsVUFBbUIsT0FBa0I7UUFDakMsSUFBTSxPQUFPLEdBQWMsRUFBRSxDQUFDO1FBQzlCLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3QixJQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLElBQU0sSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWTtJQUNKLG9DQUFPLEdBQWYsVUFBZ0IsT0FBa0IsRUFBRSxJQUFhO1FBQzdDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxVQUFVLEdBQUcsR0FBRyxFQUFFO2dCQUNsQixHQUFHLEdBQUcsVUFBVSxDQUFDO2FBQ3BCO2lCQUFNLElBQUksVUFBVSxHQUFHLEdBQUcsRUFBRTtnQkFDekIsR0FBRyxHQUFHLFVBQVUsQ0FBQzthQUNwQjtTQUNKO1FBQ0QsT0FBTyxFQUFFLEdBQUcsS0FBQSxFQUFFLEdBQUcsS0FBQSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGFBQWE7SUFDTCxvQ0FBTyxHQUFmLFVBQWdCLFdBQXlDLEVBQUUsV0FBeUM7UUFDaEcsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7O0lBMURnQixrQkFBa0I7UUFEdEMsT0FBTztPQUNhLGtCQUFrQixDQTZEdEM7SUFBRCx5QkFBQztDQTdERCxBQTZEQyxDQTdEK0MsRUFBRSxDQUFDLFNBQVMsR0E2RDNEO2tCQTdEb0Isa0JBQWtCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eSwgcmVxdWlyZUNvbXBvbmVudH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGlzaW9uRGV0ZWN0aW9uIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTsgICAgICBvbkxvYWQoKSB7XHJcbiAgICAgICAgaWYgKENvbGxpc2lvbkRldGVjdGlvbi5faW5zdGFuY2UgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBDb2xsaXNpb25EZXRlY3Rpb24uX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgLy8gY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLy/norDmkp7mo4DmtYvlh73mlbBcclxuICAgIHB1YmxpYyBpc0NvbGxpZGluZyhyZWN0MTogY2MuUmVjdCwgcmVjdDI6IGNjLlJlY3QpOiB7IGlzQ29sbGlkaW5nOiBib29sZWFuIH0ge1xyXG4gICAgICAgIC8vIOW/q+mAn+aOkumZpO+8muajgOafpei+ueeVjOahhuaYr+WQpuebuOS6pFxyXG4gICAgICAgIGlmIChyZWN0MS54TWF4IDwgcmVjdDIueE1pbiB8fCByZWN0Mi54TWF4IDwgcmVjdDEueE1pbiB8fCByZWN0MS55TWF4IDwgcmVjdDIueU1pbiB8fCByZWN0Mi55TWF4IDwgcmVjdDEueU1pbikge1xyXG4gICAgICAgICAgICByZXR1cm4geyBpc0NvbGxpZGluZzogZmFsc2UgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOiwg+eUqOWOn+Wni+eahCBpbnRlcnNlY3RzIOaWueazlVxyXG4gICAgICAgIGNvbnN0IGlzQ29sbGlkaW5nID0gcmVjdDEuaW50ZXJzZWN0cyhyZWN0Mik7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGlzQ29sbGlkaW5nIH07XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIOiOt+WPluWkmui+ueW9oueahOaJgOaciei+ueeahOazlee6v1xyXG4gICAgcHJpdmF0ZSBnZXROb3JtYWxzKHBvbHlnb246IGNjLlZlYzJbXSk6IGNjLlZlYzJbXSB7XHJcbiAgICAgICAgY29uc3Qgbm9ybWFsczogY2MuVmVjMltdID0gW107XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gcG9seWdvbi5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBwMSA9IHBvbHlnb25baV07XHJcbiAgICAgICAgICAgIGNvbnN0IHAyID0gcG9seWdvblsoaSArIDEpICUgbGVuZ3RoXTtcclxuICAgICAgICAgICAgY29uc3QgZWRnZSA9IG5ldyBjYy5WZWMyKHAyLnggLSBwMS54LCBwMi55IC0gcDEueSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbCA9IG5ldyBjYy5WZWMyKC1lZGdlLnksIGVkZ2UueCk7XHJcbiAgICAgICAgICAgIG5vcm1hbC5ub3JtYWxpemUoKTtcclxuICAgICAgICAgICAgbm9ybWFscy5wdXNoKG5vcm1hbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub3JtYWxzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWwhuWkmui+ueW9ouaKleW9seWIsOi9tOS4ilxyXG4gICAgcHJpdmF0ZSBwcm9qZWN0KHBvbHlnb246IGNjLlZlYzJbXSwgYXhpczogY2MuVmVjMik6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0ge1xyXG4gICAgICAgIGxldCBtaW4gPSBjYy5WZWMyLmRvdChwb2x5Z29uWzBdLCBheGlzKTtcclxuICAgICAgICBsZXQgbWF4ID0gbWluO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkb3RQcm9kdWN0ID0gY2MuVmVjMi5kb3QocG9seWdvbltpXSwgYXhpcyk7XHJcbiAgICAgICAgICAgIGlmIChkb3RQcm9kdWN0IDwgbWluKSB7XHJcbiAgICAgICAgICAgICAgICBtaW4gPSBkb3RQcm9kdWN0O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvdFByb2R1Y3QgPiBtYXgpIHtcclxuICAgICAgICAgICAgICAgIG1heCA9IGRvdFByb2R1Y3Q7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgbWluLCBtYXggfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmo4Dmn6XkuKTkuKrmipXlvbHmmK/lkKbph43lj6BcclxuICAgIHByaXZhdGUgb3ZlcmxhcChwcm9qZWN0aW9uMTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSwgcHJvamVjdGlvbjI6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIShwcm9qZWN0aW9uMS5tYXggPCBwcm9qZWN0aW9uMi5taW4gfHwgcHJvamVjdGlvbjIubWF4IDwgcHJvamVjdGlvbjEubWluKTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/shop/script/item.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'de906iE/HVHpI6VO7IMvKaI', 'item'); -// shop/script/item.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - NewClass.prototype.start = function () { - }; - //购买商品道具 - NewClass.prototype.buyProp = function (propName) { - // if(cc.fx.GameConfig.GM_INFO.coin < 1500){ - // MiniGameSdk.API.showToast("金币不足,无法购买道具"); - // return; - // } - // let propWindow = this.node.parent.parent.getChildByName("propWindow"); - // propWindow.active = false; - // cc.fx.GameConfig.GM_INFO.coin -= 1500; - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "label", void 0); - __decorate([ - property - ], NewClass.prototype, "text", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBMkJDO1FBeEJHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQzs7UUFvQnZCLGlCQUFpQjtJQUNyQixDQUFDO0lBcEJHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCxRQUFRO0lBQ1IsMEJBQU8sR0FBUCxVQUFRLFFBQVE7UUFDWiw0Q0FBNEM7UUFDNUMsZ0RBQWdEO1FBQ2hELGNBQWM7UUFDZCxJQUFJO1FBQ0oseUVBQXlFO1FBQ3pFLDZCQUE2QjtRQUM3Qix5Q0FBeUM7SUFDN0MsQ0FBQztJQXJCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyQjVCO0lBQUQsZUFBQztDQTNCRCxBQTJCQyxDQTNCcUMsRUFBRSxDQUFDLFNBQVMsR0EyQmpEO2tCQTNCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+i0reS5sOWVhuWTgemBk+WFt1xyXG4gICAgYnV5UHJvcChwcm9wTmFtZSkge1xyXG4gICAgICAgIC8vIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgLy8gICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gbGV0IHByb3BXaW5kb3cgPSB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgLy8gcHJvcFdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiAtPSAxNTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Sdk/MiniGameSdk.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'c1af9nd7gNA95YJ04h9DdNX', 'MiniGameSdk'); -// Script/Sdk/MiniGameSdk.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MiniGameSdk = void 0; -/** - * 小游戏平台SDK工具封装,目前只支持微信和抖音平台 - */ -var MiniGameSdk; -(function (MiniGameSdk) { - function isWechat() { - //@ts-ignore - return window.wx !== null && window.wx !== undefined; - } - MiniGameSdk.isWechat = isWechat; - function isBytedance() { - //@ts-ignore - return window.tt !== null && window.tt !== undefined; - } - MiniGameSdk.isBytedance = isBytedance; - function getSysWinSize() { - var sys; - if (isWechat()) { - // @ts-ignore - sys = wx.getSystemInfoSync(); - } - else if (isBytedance()) { - // @ts-ignore - sys = tt.getSystemInfoSync(); - } - var size = { width: 0, height: 0 }; - if (sys) { - size.width = sys.windowWidth; - size.height = sys.windowHeight; - } - return size; - } - /** - * 插屏广告。微信抖音都支持! - */ - var ADInterstitial = /** @class */ (function () { - function ADInterstitial(adUid) { - this._adUid = adUid; - } - Object.defineProperty(ADInterstitial.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - ADInterstitial.prototype.show = function () { - var _this = this; - var _a, _b; - // @ts-ignore - if (isWechat() && !wx.createInterstitialAd) { - console.warn('wechat unsupport interstitial AD!'); - this._interstitial = null; - return; - } - // @ts-ignore - if (isBytedance() && !tt.createInterstitialAd) { - console.warn('bytedance unsupport interstitial AD!'); - this._interstitial = null; - return; - } - if (this._interstitial) { - this._interstitial.load(); - } - else { - if (isWechat()) { - // @ts-ignore - this._interstitial = wx.createInterstitialAd({ adUnitId: this._adUid }); - } - else if (isBytedance()) { - // @ts-ignore - this._interstitial = tt.createInterstitialAd({ adUnitId: this._adUid }); - } - else { - this._interstitial = null; - } - (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.onLoad(function () { - console.log('load interstitial ad success'); - _this._interstitial.show().catch(function (err) { - console.log('catch interstitial ad error:', err); - }); - }); - (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.onError(function (err) { - console.log('interstitial ad on error:', err); - }); - } - }; - ADInterstitial.prototype.destory = function () { - var _a; - (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return ADInterstitial; - }()); - var ADBanner = /** @class */ (function () { - /** - * 抖音和微信都支持 - * 横幅广告。预估宽度默认为300,预估高度为140。如果你不确定就按默认值来。 - * @param adUid 广告UID,后端配置 - * @param isTop 是否在屏幕顶部展示。内部会自动居中计算位置。 - * @param bannerWidth 横幅广告的预估宽度。默认300 - * @param autoShow 广告加载完成后是否立刻显示,默认为不显示 - */ - function ADBanner(adUid, param, bannerWidth, autoShow) { - if (bannerWidth === void 0) { bannerWidth = 300; } - if (autoShow === void 0) { autoShow = false; } - this._adUid = adUid; - this.create(autoShow, bannerWidth, param); // 默认300比较合适 - } - Object.defineProperty(ADBanner.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - ADBanner.prototype.create = function (autoShow, bannerWidth, param) { - var _this = this; - var _a, _b; - if (!isWechat() && !isBytedance()) { - this._banner = null; - return; - } - this.destroy(); - var winSize = getSysWinSize(); - var height = bannerWidth * 0.4; - var top = 0, left = 0; - if (typeof param === "boolean") { - left = (winSize.width - bannerWidth) / 2; - top = param ? 5 : (winSize.height - height); - } - else { - left = param.left; - top = param.top; - } - var params = { - adUnitId: this._adUid, - adIntervals: 30, - style: { left: left, top: top, width: bannerWidth } - }; - if (isWechat()) { - // @ts-ignore - this._banner = wx.createBannerAd(params); - } - else if (isBytedance()) { - // @ts-ignore - this._banner = tt.createBannerAd(params); - } - else { - this._banner = null; - } - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.onError(function (err) { - console.log('ad banner error:', err); - }); - (_b = this._banner) === null || _b === void 0 ? void 0 : _b.onLoad(function () { - autoShow && _this._banner.show(); - }); - }; - ADBanner.prototype.show = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.show(); - }; - ADBanner.prototype.hide = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); - }; - ADBanner.prototype.destroy = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return ADBanner; - }()); - var ADCustom = /** @class */ (function () { - /** - * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持! - * @param adUid 广告UID,后端配置 - * @param top 从左上角开始,距离屏幕顶部的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 - * @param left 从左上角开始,距离屏幕最左边的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 - * @param scale 原生模板广告的尺寸,默认为1,即100%。此值在微信服务后端广告中获得,默认为100%,目前有100%,90%,80%三种,一般情况不用修改。若有修改,记得传入值,例如90%就传入0.9。 - */ - function ADCustom(adUid, top, left, scale) { - if (top === void 0) { top = 0; } - if (left === void 0) { left = 0; } - if (scale === void 0) { scale = 1.0; } - this._adUid = adUid; - this.createCustomAd(top, left, scale); - } - Object.defineProperty(ADCustom.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - ADCustom.prototype.createCustomAd = function (top, left, scale) { - var _a; - if (!isWechat()) { // only wechat support custom ad - this._adCustom = null; - console.log('Only wechat support Custom Ad'); - return; - } - this.destroy(); - // 原生模板5个应用宽度为375,若设置了缩放比例,则宽度也需要设置 - // let width = 375 * this._scale; - // let newLeft = (sys.windowWidth - width) / 2; - // let newTop = sys.windowHeight / 2; // 120是预估高度 - // @ts-ignore - this._adCustom = wx.createCustomAd({ - adUnitId: this._adUid, - //@ts-ignore - style: { left: left, top: top, fixed: true } - }); - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.onError(function (err) { - console.log('ad custom error:', err); - }); - }; - ADCustom.prototype.show = function () { - var _a; - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.show(); - }; - ADCustom.prototype.hide = function () { - var _a; - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.hide(); - }; - ADCustom.prototype.destroy = function () { - var _a; - (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return ADCustom; - }()); - /** - * 视频广告用户点击行为结果 - */ - var EAdVideoResult; - (function (EAdVideoResult) { - /** - * 用户看完了广告,游戏可发放奖励。 - */ - EAdVideoResult[EAdVideoResult["ACCEPT"] = 0] = "ACCEPT"; - /** - * 用户中途关闭了广告,即未看完状态。不可发放奖励。 - */ - EAdVideoResult[EAdVideoResult["REJECT"] = 1] = "REJECT"; - /** - * 广告组件内部发生了错误。不可发放奖励。 - */ - EAdVideoResult[EAdVideoResult["ERROR"] = 2] = "ERROR"; - })(EAdVideoResult = MiniGameSdk.EAdVideoResult || (MiniGameSdk.EAdVideoResult = {})); - var ADVideo = /** @class */ (function () { - function ADVideo(adUid) { - this._adVideo = null; - this._adUid = adUid; - } - Object.defineProperty(ADVideo.prototype, "aduid", { - get: function () { - return this._adUid; - }, - enumerable: false, - configurable: true - }); - /** - * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount - * @param onResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 - * @param target onResult的拥有者 - * @param maxVideoCount 可以连续看最大视频个数,可最大化商业效率。默认为3个。 - * @returns - */ - ADVideo.prototype.show = function (onResult, target, maxVideoCount) { - var _this = this; - var _a, _b, _c, _d, _e; - if (maxVideoCount === void 0) { maxVideoCount = 3; } - var callback = function (state, count) { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, state, count); - }; - if (!isWechat() && !isBytedance()) { - callback(EAdVideoResult.ACCEPT, 1); - this._adVideo = null; - return; - } - var onAdVideoClosed = function (res) { - var _a; - (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); - if (isWechat()) { - if (res && res.isEnded || res === undefined) { - callback(EAdVideoResult.ACCEPT, 1); - } - else { - callback(EAdVideoResult.REJECT, 0); - } - } - else if (isBytedance()) { - var resConverted = res; - if (resConverted && resConverted.count > 0) { - callback(EAdVideoResult.ACCEPT, resConverted.count); - } - else { - callback(EAdVideoResult.REJECT, 0); - } - } - }; - (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); - if (isWechat()) { - // @ts-ignore - this._adVideo = wx.createRewardedVideoAd({ - adUnitId: this._adUid - }); - } - else if (isBytedance()) { - // @ts-ignore - this._adVideo = tt.createRewardedVideoAd({ - adUnitId: this._adUid, - multiton: true, - multitonRewardMsg: ['多1次奖励', '再多一次奖励', '再多一次奖励'], - multitonRewardTimes: maxVideoCount, - }); - } - else { - this._adVideo = null; - } - (_b = this._adVideo) === null || _b === void 0 ? void 0 : _b.onLoad(function () { - console.log('Ad load success'); - }); - (_c = this._adVideo) === null || _c === void 0 ? void 0 : _c.onError(function (err) { - console.log('Ad video error:', err); - callback(EAdVideoResult.ERROR, 0); - }); - (_d = this._adVideo) === null || _d === void 0 ? void 0 : _d.onClose(onAdVideoClosed); - (_e = this._adVideo) === null || _e === void 0 ? void 0 : _e.show().catch(function () { - var _a; - (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.load().then(function () { var _a; return (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.show(); }).catch(function (err) { - console.log('Catch video ad error:', err); - callback(EAdVideoResult.ERROR, 0); - }); - }); - }; - ADVideo.prototype.destory = function () { - var _a; - (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.destory(); - }; - return ADVideo; - }()); - var EAdBannerLocation; - (function (EAdBannerLocation) { - /** - * 屏幕顶部 - */ - EAdBannerLocation[EAdBannerLocation["TOP"] = 0] = "TOP"; - /** - * 屏幕底部 - */ - EAdBannerLocation[EAdBannerLocation["BOTTOM"] = 1] = "BOTTOM"; - })(EAdBannerLocation = MiniGameSdk.EAdBannerLocation || (MiniGameSdk.EAdBannerLocation = {})); - var AdvertManager = /** @class */ (function () { - function AdvertManager() { - this._customs = {}; - } - Object.defineProperty(AdvertManager, "instance", { - get: function () { - if (!AdvertManager._instance) { - AdvertManager._instance = new AdvertManager(); - } - return AdvertManager._instance; - }, - enumerable: false, - configurable: true - }); - /** - * 预加载横幅广告,不会显示。只有你在调用showBanner时才会显示。 - * 可重复调用,但是会销毁上一次的实例。一般情况,全局有一个就行了,太多占用内存,而且没必要。 - * @param adUid 广告UID - * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 - * @param scale 默认为跟屏幕一样的宽度,可以通过设置缩放比例来调整大小。当然,平台有规定最大或最小宽度,函数内部会自动计算。 - */ - AdvertManager.prototype.loadBanner = function (adUid, location, scale) { - var _a; - if (location === void 0) { location = EAdBannerLocation.TOP; } - if (scale === void 0) { scale = 1.0; } - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); - var size = getSysWinSize(); - // 当 style.width 小于 300 时,会取作 300。 当 style.width 大于屏幕宽度时,会取作屏幕宽度。 - var width = size.width * scale; - width = width < 300 ? 300 : width; // 最小值矫正 - width = width > size.width ? size.width : width; //最大值矫正 - this._banner = typeof location === 'number' ? new ADBanner(adUid, location === EAdBannerLocation.TOP, width, false) : new ADBanner(adUid, location, width, false); - }; - /** - * 显示横幅广告 - */ - AdvertManager.prototype.showBanner = function () { - if (this._banner) { - this._banner.show(); - } - else { - console.warn('MiniGameSDK: banner is null, you must call loadBanner(...) first!'); - } - }; - /** - * 隐藏横幅广告 - */ - AdvertManager.prototype.hideBanner = function () { - var _a; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); - }; - /** - * 弹出插屏广告 - * @param adUid 广告单元id - */ - AdvertManager.prototype.showInterstitial = function (adUid) { - var _a; - if (this._interstitial && this._interstitial.aduid === adUid) { - this._interstitial.show(); - } - else { - (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destory(); - this._interstitial = new ADInterstitial(adUid); - this._interstitial.show(); - } - }; - /** - * 加载原生模板广告,不会显示。只有你在调用showCustom时才会显示。 - * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持本函数,会调用无效! - * @param adUid 广告ID - * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 - * @param scale 缩放比例,默认是1,即不缩放。这个缩放并不是自己填,而是根据微信MP后台你配置的原生模板广告的缩放比例填,目前有100%,90%,80%三种,一般情况不用修改。若有后台修改,记得传入值,例如90%就传入0.9。 - */ - AdvertManager.prototype.loadCustom = function (adUid, location, scale) { - if (location === void 0) { location = { top: 0, left: 0 }; } - if (scale === void 0) { scale = 1; } - // this._custom?.destroy(); - // this._custom = new ADCustom(adUid, location.top, location.left, scale); - if (this._customs[adUid]) { - console.log(adUid + " has been loaded."); - return; - } - this._customs[adUid] = new ADCustom(adUid, location.top, location.left, scale); - }; - /** - * 显示自定义广告。 - * @param adUid 广告的唯一标识符。使用此标识符来查找和显示特定的自定义广告。 - * - * 此方法尝试根据提供的adUid显示一个自定义广告。如果给定的adUid对应的自定义广告已加载, - * 则调用该广告的显示方法。如果广告未加载,则在控制台输出警告信息。 - */ - AdvertManager.prototype.showCustom = function (adUid) { - if (this._customs[adUid]) { - this._customs[adUid].show(); - } - else { - console.warn("You have not load " + adUid + " of Custom AD, can not show!"); - } - }; - /** - * 隐藏指定的自定义广告单元 - * - * 此方法用于隐藏通过广告单元标识符(adUid)指定的自定义广告。如果指定的广告单元已加载并显示, - * 则将其隐藏;如果广告单元未加载,则在控制台输出警告信息。 - * - * @param adUid 广告单元标识符,用于唯一标识一个自定义广告单元。 - */ - AdvertManager.prototype.hideCustom = function (adUid) { - if (this._customs[adUid]) { - this._customs[adUid].hide(); - } - else { - console.warn("You have not load " + adUid + " of Custom AD, can not hide!"); - } - }; - /** - * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount - * @param adUid 广告ID。如果与上一次UID不同,则内部会重新创建实例。开发者完全不用关心这个细节。 - * @param onVideoResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 - * @param target onVideoResult的拥有者 - * @param maxVideoCount 最大视频个数。默认是3,仅对抖音平台生效。微信平台看完视频count的结果永远是1或0 - */ - AdvertManager.prototype.showVideo = function (adUid, onVideoResult, target, maxVideoCount) { - var _a; - if (maxVideoCount === void 0) { maxVideoCount = 3; } - if (this._video && this._video.aduid === adUid) { - this._video.show(onVideoResult, target, maxVideoCount); - } - else { - (_a = this._video) === null || _a === void 0 ? void 0 : _a.destory(); - this._video = new ADVideo(adUid); - this._video.show(onVideoResult, target, maxVideoCount); - } - }; - /** - * 销毁内部所有实例,清空内存 - */ - AdvertManager.prototype.destroyAll = function () { - var _a, _b, _c, _d; - (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); - this._banner = null; - (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.destory(); - this._interstitial = null; - (_c = this._video) === null || _c === void 0 ? void 0 : _c.destory(); - this._video = null; - if (this._customs) { - for (var val in this._customs) { - (_d = this._customs[val]) === null || _d === void 0 ? void 0 : _d.destroy(); - } - this._customs = {}; - } - }; - return AdvertManager; - }()); - MiniGameSdk.AdvertManager = AdvertManager; - var EGameClubIcon; - (function (EGameClubIcon) { - /** 绿色图标 */ - EGameClubIcon["GREEN"] = "green"; - /** 红色图标 */ - EGameClubIcon["WHITE"] = "white"; - /** 有黑色圆角背景的白色图标 */ - EGameClubIcon["DARK"] = "dark"; - /** 有白色圆角背景的绿色图标 */ - EGameClubIcon["LIGHT"] = "light"; - })(EGameClubIcon = MiniGameSdk.EGameClubIcon || (MiniGameSdk.EGameClubIcon = {})); - var GameClub = /** @class */ (function () { - function GameClub() { - } - Object.defineProperty(GameClub, "instance", { - get: function () { - if (!this._instance) { - this._instance = new GameClub(); - } - return this._instance; - }, - enumerable: false, - configurable: true - }); - /** - * 创建游戏圈按钮 - * @param icon - * @param position - * @param size - * @param openLink - */ - GameClub.prototype.create = function (icon, position, size, openLink) { - if (icon === void 0) { icon = EGameClubIcon.GREEN; } - if (position === void 0) { position = { top: 0, left: 0 }; } - if (size === void 0) { size = { width: 40, height: 40 }; } - if (isWechat()) { - // @ts-ignore - this._club = wx.createGameClubButton({ - icon: icon, - style: { - left: position.left, - top: position.top, - width: size.width, - height: size.height - }, - openlink: openLink - }); - } - }; - GameClub.prototype.show = function () { - var _a; - (_a = this._club) === null || _a === void 0 ? void 0 : _a.show(); - }; - GameClub.prototype.hide = function () { - var _a; - (_a = this._club) === null || _a === void 0 ? void 0 : _a.hide(); - }; - GameClub.prototype.destory = function () { - var _a; - (_a = this._club) === null || _a === void 0 ? void 0 : _a.destroy(); - }; - return GameClub; - }()); - MiniGameSdk.GameClub = GameClub; - /** - * 振动类型 - */ - var EVirbrateType; - (function (EVirbrateType) { - /** - * 短振动 - */ - EVirbrateType[EVirbrateType["SHORT"] = 0] = "SHORT"; - /** - * 长振动 - */ - EVirbrateType[EVirbrateType["LONG"] = 1] = "LONG"; - })(EVirbrateType = MiniGameSdk.EVirbrateType || (MiniGameSdk.EVirbrateType = {})); - /** - * 抖音侧边栏专属接口 - */ - var BytedanceSidebar = /** @class */ (function () { - function BytedanceSidebar() { - } - /** - * 本游戏在抖音环境下启动监控,需要放在全局环境中,保证能第一时间启动。因为可能监听抖音失败(抖音小游戏官方的说明)! - * @param onResult 包含一个boolean参数的函数 - * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 - */ - BytedanceSidebar.listenFromSidebar = function (onResult, target) { - if (!isBytedance()) { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - return; - } - // @ts-ignore - tt.onShow(function (res) { - console.log('onShow launch res:', res); - if (res.scene === '021036') { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); - console.log('launch from sidebar'); - } - else { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - console.log('NOT launch from douyin sidebar!'); - } - }); - // @ts-ignore - var options = tt.getLaunchOptionsSync(); - if (options && options.scene === '021036') { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); - } - }; - /** - * 检测抖音侧边栏是否存在 - * @param onResult 包含一个boolean参数的函数 - * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 - * @returns - */ - BytedanceSidebar.checkSideBar = function (onResult, target) { - if (!isBytedance()) { - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - return; - } - //@ts-ignore - tt.checkScene({ - scene: "sidebar", - success: function (res) { - console.log("check scene success: ", res.isExist); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, res.isExist); - }, - fail: function (res) { - console.log("check scene fail:", res); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - } - }); - }; - /** - * 跳转到抖音侧边栏 - * @param onResult 包含一个boolean参数的函数 - * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 - * @returns - */ - BytedanceSidebar.navigateToSidebar = function (onResult, target) { - if (!isBytedance()) { - console.log("not douyin platform!"); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - return; - } - // @ts-ignore - tt.navigateToScene({ - scene: "sidebar", - success: function () { - console.log("navigate success"); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); - }, - fail: function (res) { - console.log("navigate failed reason:", res); - onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); - }, - }); - }; - return BytedanceSidebar; - }()); - MiniGameSdk.BytedanceSidebar = BytedanceSidebar; - /** - * 平台常用API合集 - */ - var API = /** @class */ (function () { - function API() { - } - /** - * 分享app给朋友,微信小游戏分享是没有onSuccess回调的。 - * @param title 标题 - * @param description 细节描述信息 - * @param imageUrl 图片地址 - * @param query 查询信息 - * @param onSuccess 抖音会回调,微信不会回调 - */ - API.shareAppToFriends = function (title, description, imageUrl, query, onSuccess) { - if (description === void 0) { description = ''; } - if (isWechat()) { - try { - //@ts-ignore - wx.shareAppMessage({ - title: title, - imageUrl: imageUrl, - query: query, - }); - } - catch (err) { - console.log("share faild: " + err); - } - } - if (isBytedance()) { - //@ts-ignore - tt.shareAppMessage({ - title: title, - desc: description, - imageUrl: imageUrl !== null && imageUrl !== void 0 ? imageUrl : '', - query: query !== null && query !== void 0 ? query : '', - success: function (res) { - console.log('share success:', res); - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); - }, - fail: function (res) { - console.log('share fail:', res); - } - }); - } - }; - /** - * 显示提示信息 - * @param title 标题 - * @param duration 时长(单位:秒) - * @returns - */ - API.showToast = function (title, duration) { - if (duration === void 0) { duration = 2; } - if (isWechat()) { - // @ts-ignore - wx.showToast({ - title: title, - icon: 'none', - duration: duration * 500 - }); - } - }; - /** - * 设备震动效果,默认为短震动。注意:可能一些机型不会生效,具体看平台方的说明 - * @param type MiniGameSdk.API.EVirbrateType - */ - API.vibrate = function (type) { - if (type === void 0) { type = EVirbrateType.SHORT; } - if (isWechat()) { - switch (type) { - case EVirbrateType.SHORT: - //@ts-ignore - wx.vibrateShort({ - success: function (res) { - console.log('vibrate success:', res); - }, - fail: function (res) { - console.log('vibrateShort failed', res); - }, - }); - break; - case EVirbrateType.LONG: - //@ts-ignore - wx.vibrateLong({ - success: function (res) { - console.log('vibrate success', res); - }, - fail: function (res) { - console.log("vibrateLong failed", res); - }, - }); - break; - default: - break; - } - } - if (isBytedance()) { - switch (type) { - case EVirbrateType.SHORT: - //@ts-ignore - tt.vibrateShort({ - success: function (res) { - console.log('vibrate success:', res); - }, - fail: function (res) { - console.log('vibrateShort failed', res); - }, - }); - break; - case EVirbrateType.LONG: - //@ts-ignore - tt.vibrateLong({ - success: function (res) { - console.log('vibrate success', res); - }, - fail: function (res) { - console.log("vibrateLong failed", res); - }, - }); - break; - default: - break; - } - } - }; - /** - * 重启小游戏 - */ - API.reboot = function () { - if (isWechat()) { - //@ts-ignore - wx.restartMiniProgram({ - success: function () { - console.log('restart success'); - }, - fail: function () { - console.log('restart failed'); - } - }); - } - if (isBytedance()) { - try { - // @ts-ignore - tt.restartMiniProgramSync(); - } - catch (error) { - console.log("restartMiniProgramSync", error); - } - } - }; - /** - * 退出小游戏 - */ - API.exit = function () { - if (isWechat()) { - //@ts-ignore - wx.exitMiniProgram({ - success: function () { - console.log('exit success'); - }, - fail: function () { - console.log('exit failed'); - } - }); - } - if (isBytedance()) { - // @ts-ignore - tt.exitMiniProgram({ - success: function (res) { - console.log("exit success:", res === null || res === void 0 ? void 0 : res.data); - }, - fail: function (res) { - console.log("exit fail:", res === null || res === void 0 ? void 0 : res.errMsg); - }, - }); - } - }; - /** - * 显示转发按钮。通常在刚进入游戏的时候调用。 - * 主要是打开平台“...”这个按钮里面的分享菜单,一般默认是关闭的,需要调用这个函数打开。可以让用户分享你的游戏入口。 - */ - API.showShareMenu = function () { - if (isWechat()) { - //@ts-ignore - wx.showShareMenu({ - withShareTicket: true, - menus: ['shareAppMessage', 'shareTimeline'], - success: function () { }, - fail: function () { }, - complete: function () { } - }); - } - }; - /** - * 微信小游戏:跳转到另外一款小游戏 - * 抖音小游戏:跳转到指定的视频界面 - * @param targetId 微信小游戏appid或者视频界面 - */ - API.navigateTo = function (targetId, onSuccess) { - if (isWechat()) { - // @ts-ignore - wx.navigateToMiniProgram({ - appId: targetId, - extraData: { - foo: 'bar' - }, - envVersion: 'develop', - success: function (res) { - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); - } - }); - } - if (isBytedance()) { - // @ts-ignore - tt.navigateToVideoView({ - videoId: targetId, - success: function (res) { - onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); - }, - fail: function (err) { - console.log("bytedance navigateToVideoView fail", err); - }, - }); - } - }; - /** - * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session - * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null - */ - API.login = function (callback) { - var loginPlatform = function () { - if (isWechat()) { - //@ts-ignore - wx.login({ - success: function (res) { - if (res.code) { - API._loginCode = res.code; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - } - else { - console.log('login error:', res.errMsg); - } - }, - fail: function () { - API._loginCode = null; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - console.log('login fail'); - } - }); - } - else if (isBytedance()) { - //@ts-ignore - tt.login({ - force: true, - success: function (res) { - var _a, _b; - console.log("login " + res.code + " " + res.anonymousCode); - if (res.code) { - API._loginCode = (_a = res.code) === null || _a === void 0 ? void 0 : _a.toString(); - API._loginAnonymousCode = (_b = res.anonymousCode) === null || _b === void 0 ? void 0 : _b.toString(); - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - } - else { - console.log('login error:', res.errMsg); - } - }, - fail: function (res) { - API._loginCode = null; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - console.log("login fail", res); - }, - }); - } - else { - API._loginCode = null; - API._loginAnonymousCode = null; - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - console.log('not mini game platform, login codes are all null'); - } - }; - if (!API._loginCode) { - loginPlatform(); - } - else { - if (isWechat()) { - //@ts-ignore - wx.checkSession({ - success: function () { - console.log("session is valid, use current code:", API._loginCode); - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - }, - fail: function () { - console.log("session expired"); - loginPlatform(); - } - }); - } - else if (isBytedance()) { - //@ts-ignore - tt.checkSession({ - success: function () { - console.log("session is valid, user current code: " + API._loginCode + ", " + API._loginAnonymousCode); - callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); - }, - fail: function () { - console.log("session expired"); - loginPlatform(); - }, - }); - } - else { - console.log('not mini game platform, login null'); - callback === null || callback === void 0 ? void 0 : callback(null, null); - } - } - }; - /** - * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session - * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null - */ - API.getUserInfo = function (callback) { - //@ts-ignore - tt.getUserInfo({ - withCredentials: true, - success: function (res) { - API._userInfo = res; - callback(API._userInfo); - }, - fail: function (err) { - callback(err); - } - }); - }; - /** - * 调用微信云函数。由于参数需要自定义,所以为any,需要自行解释。函数只完成通道和处理一场的作用 - * @param callback 返回云函数调用结果。需要检查返回参数是否为空,失败的时候为空 - * @param name 云函数的名字 - * @param data 云函数的内容 - */ - API.callWechatCloudFunction = function (callback, name, data) { - if (!isWechat()) { - console.log('Not wechat platform, not support callWechatCloudFunction'); - return; - } - this.login(function (code, anonymousCode) { - if (!API._hasInitWechatCloudFunction) { - //@ts-ignore - wx.cloud.init(); - API._hasInitWechatCloudFunction = true; - } - //@ts-ignore - wx.cloud.callFunction({ - name: name, - data: data, - success: function (res) { return callback === null || callback === void 0 ? void 0 : callback(res); }, - fail: function (err) { - console.log('wechat cloud function error:', err); - callback === null || callback === void 0 ? void 0 : callback(null); - } - }); - }); - }; - /** - * 存储用户信息,数据量不能大。可以考虑用于分数排行榜。用户之间可共享排行数据。 - * @param key - * @param value - */ - API.setUserCloudStorage = function (key, value) { - if (isWechat()) { - // @ts-ignore - wx.setUserCloudStorage({ - KVDataList: [{ key: key, value: value }], - success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, - fail: function (err) { return console.log('set cloud storage error:', err); } - }); - } - if (isBytedance()) { - // @ts-ignore - tt.setUserCloudStorage({ - KVDataList: [{ key: key, value: value, }], - success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, - fail: function (err) { return console.log('set cloud storage error:', err); } - }); - } - }; - /* - * 数数平台初始化以及登录 - */ - API.shushu_Init = function () { - if (typeof wx !== 'undefined' && wx !== null) { - console.log("开始接入数数平台"); - //getWechatGameVersion - var appId = "121591378fc1423893deb12041413eb3"; - var test = cc.fx.GameTool.getWechatGameVersion(); - if (test == "正式版") { - appId = "87d18958cea145f29d3265470ecd3486"; - } - var config = { - // appId: "73e1ec654f15b47a1a7354fbabec05ad", // 项目 APP ID - appId: appId, - serverUrl: "https://data.nika4fun.com", - autoTrack: { - appShow: true, - appHide: true // 自动采集 ta_mg_hide - } - }; - // 创建 TA 实例 - API._ta = new ThinkingAnalyticsAPI(config); - // 初始化 - API._ta.init(); - } - }; - API.shushu_Login = function () { - API._ta.login(cc.fx.GameConfig.GM_INFO.openid); - var result = "success"; - API.shushu_Track("login", result); - API.shushu_SetSuperProperties(); - }; - API.shushu_userSet = function (time) { - if (typeof wx !== 'undefined' && wx !== null) { - console.log("设置用户注册属性"); - API._ta.userSet({ register_time: time }); - } - }; - /* - * 数数平台设置动态公共属性 - */ - API.shushu_SetSuperProperties = function () { - if (typeof wx !== 'undefined' && wx !== null && API._ta) { - var versionData = "1.3"; - // API._ta.userSetOnce({ register_time:time}); - var superProperties = { - current_level: (cc.fx.GameConfig.GM_INFO.level + 1), - current_health: cc.fx.GameConfig.GM_INFO.hp, - tmp_coin: cc.fx.GameConfig.GM_INFO.coin, - version: versionData - }; - API._ta.setSuperProperties(superProperties); //设置公共事件属性 - } - }; - API.getWechatGameVersion = function () { - if (typeof wx !== 'undefined' && wx !== null) { - // @ts-ignore - var accountInfo = wx.getAccountInfoSync(); - return accountInfo.miniProgram.version; - } - }; - /* - * 数数平台具体埋点 - */ - API.shushu_Track = function (name, data, callback) { - if (typeof wx !== 'undefined' && wx !== null) { - if (API._ta) { - // 假设 track 方法返回一个 Promise - API._ta.track(name, // 事件名称 - data // 事件属性 - ); - } - } - }; - API._loginCode = null; - API._loginAnonymousCode = null; - API._hasInitWechatCloudFunction = false; - API._userInfo = null; - API._ta = null; - return API; - }()); - MiniGameSdk.API = API; -})(MiniGameSdk = exports.MiniGameSdk || (exports.MiniGameSdk = {})); - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXE1pbmlHYW1lU2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsSUFBaUIsV0FBVyxDQW9xQzNCO0FBcHFDRCxXQUFpQixXQUFXO0lBWXhCLFNBQWdCLFFBQVE7UUFDcEIsWUFBWTtRQUNaLE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUhlLG9CQUFRLFdBR3ZCLENBQUE7SUFFRCxTQUFnQixXQUFXO1FBQ3ZCLFlBQVk7UUFDWixPQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFIZSx1QkFBVyxjQUcxQixDQUFBO0lBR0QsU0FBUyxhQUFhO1FBQ2xCLElBQUksR0FBUSxDQUFDO1FBQ2IsSUFBSSxRQUFRLEVBQUUsRUFBRTtZQUNaLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7YUFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksR0FBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzFDLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztTQUNsQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNIO1FBUUksd0JBQVksS0FBYTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN4QixDQUFDO1FBTkQsc0JBQUksaUNBQUs7aUJBQVQ7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLENBQUM7OztXQUFBO1FBTUQsNkJBQUksR0FBSjtZQUFBLGlCQXdDQzs7WUF2Q0csYUFBYTtZQUNiLElBQUksUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ3hDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQzFCLE9BQU87YUFDVjtZQUVELGFBQWE7WUFDYixJQUFJLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixFQUFFO2dCQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUM7Z0JBQ3JELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUMxQixPQUFPO2FBQ1Y7WUFHRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0gsSUFBSSxRQUFRLEVBQUUsRUFBRTtvQkFDWixhQUFhO29CQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2lCQUMzRTtxQkFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO29CQUN0QixhQUFhO29CQUNiLElBQUksQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO2lCQUMzRTtxQkFBTTtvQkFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztpQkFDN0I7Z0JBRUQsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxNQUFNLENBQUM7b0JBQ3ZCLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztvQkFDNUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsVUFBQyxHQUFRO3dCQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUNyRCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDLEVBQUU7Z0JBRUgsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxPQUFPLENBQUMsVUFBQyxHQUFRO29CQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNsRCxDQUFDLEVBQUU7YUFDTjtRQUNMLENBQUM7UUFDRCxnQ0FBTyxHQUFQOztZQUNJLE1BQUEsSUFBSSxDQUFDLGFBQWEsMENBQUUsT0FBTyxHQUFHO1FBQ2xDLENBQUM7UUFDTCxxQkFBQztJQUFELENBeERBLEFBd0RDLElBQUE7SUFFRDtRQVFJOzs7Ozs7O1dBT0c7UUFDSCxrQkFBWSxLQUFhLEVBQUUsS0FBMEIsRUFBRSxXQUF5QixFQUFFLFFBQXlCO1lBQXBELDRCQUFBLEVBQUEsaUJBQXlCO1lBQUUseUJBQUEsRUFBQSxnQkFBeUI7WUFDdkcsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsWUFBWTtRQUMzRCxDQUFDO1FBZkQsc0JBQUksMkJBQUs7aUJBQVQ7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLENBQUM7OztXQUFBO1FBZU8seUJBQU0sR0FBZCxVQUFlLFFBQWlCLEVBQUUsV0FBbUIsRUFBRSxLQUEwQjtZQUFqRixpQkE0Q0M7O1lBM0NHLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDcEIsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBRWYsSUFBSSxPQUFPLEdBQUcsYUFBYSxFQUFFLENBQUM7WUFFOUIsSUFBSSxNQUFNLEdBQUcsV0FBVyxHQUFHLEdBQUcsQ0FBQztZQUMvQixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsSUFBSSxHQUFHLENBQUMsQ0FBQztZQUV0QixJQUFJLE9BQU8sS0FBSyxLQUFLLFNBQVMsRUFBRTtnQkFDNUIsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ3hDLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDO2FBQy9DO2lCQUFNO2dCQUNILElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO2dCQUNsQixHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNuQjtZQUVELElBQUksTUFBTSxHQUFHO2dCQUNULFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDckIsV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUU7YUFDdEQsQ0FBQTtZQUVELElBQUksUUFBUSxFQUFFLEVBQUU7Z0JBQ1osYUFBYTtnQkFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUM7aUJBQU0sSUFBSSxXQUFXLEVBQUUsRUFBRTtnQkFDdEIsYUFBYTtnQkFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDNUM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7YUFDdkI7WUFFRCxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLE9BQU8sQ0FBQyxVQUFDLEdBQVE7Z0JBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQyxFQUFFO1lBRUgsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxNQUFNLENBQUM7Z0JBQ2pCLFFBQVEsSUFBSSxLQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLENBQUMsRUFBRTtRQUNQLENBQUM7UUFFRCx1QkFBSSxHQUFKOztZQUNJLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSxHQUFHO1FBQ3pCLENBQUM7UUFFRCx1QkFBSSxHQUFKOztZQUNJLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSxHQUFHO1FBQ3pCLENBQUM7UUFFRCwwQkFBTyxHQUFQOztZQUNJLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsT0FBTyxHQUFHO1FBQzVCLENBQUM7UUFDTCxlQUFDO0lBQUQsQ0E5RUEsQUE4RUMsSUFBQTtJQUVEO1FBT0k7Ozs7OztXQU1HO1FBQ0gsa0JBQVksS0FBYSxFQUFFLEdBQWUsRUFBRSxJQUFnQixFQUFFLEtBQW1CO1lBQXRELG9CQUFBLEVBQUEsT0FBZTtZQUFFLHFCQUFBLEVBQUEsUUFBZ0I7WUFBRSxzQkFBQSxFQUFBLFdBQW1CO1lBQzdFLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBYkQsc0JBQUksMkJBQUs7aUJBQVQ7Z0JBQ0ksT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3ZCLENBQUM7OztXQUFBO1FBYU8saUNBQWMsR0FBdEIsVUFBdUIsR0FBVyxFQUFFLElBQVksRUFBRSxLQUFhOztZQUMzRCxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxnQ0FBZ0M7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixDQUFDLENBQUM7Z0JBQzdDLE9BQU87YUFDVjtZQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLG1DQUFtQztZQUNuQyxpQ0FBaUM7WUFDakMsK0NBQStDO1lBQy9DLGlEQUFpRDtZQUVqRCxhQUFhO1lBQ2IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO2dCQUMvQixRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ3JCLFlBQVk7Z0JBQ1osS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7YUFDL0MsQ0FBQyxDQUFDO1lBRUgsTUFBQSxJQUFJLENBQUMsU0FBUywwQ0FBRSxPQUFPLENBQUMsVUFBQyxHQUFRO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3pDLENBQUMsRUFBRTtRQUNQLENBQUM7UUFDRCx1QkFBSSxHQUFKOztZQUNJLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsSUFBSSxHQUFHO1FBQzNCLENBQUM7UUFFRCx1QkFBSSxHQUFKOztZQUNJLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsSUFBSSxHQUFHO1FBQzNCLENBQUM7UUFFRCwwQkFBTyxHQUFQOztZQUNJLE1BQUEsSUFBSSxDQUFDLFNBQVMsMENBQUUsT0FBTyxHQUFHO1FBQzlCLENBQUM7UUFDTCxlQUFDO0lBQUQsQ0F0REEsQUFzREMsSUFBQTtJQUdEOztPQUVHO0lBQ0gsSUFBWSxjQWVYO0lBZkQsV0FBWSxjQUFjO1FBQ3RCOztXQUVHO1FBQ0gsdURBQU0sQ0FBQTtRQUVOOztXQUVHO1FBQ0gsdURBQU0sQ0FBQTtRQUVOOztXQUVHO1FBQ0gscURBQUssQ0FBQTtJQUNULENBQUMsRUFmVyxjQUFjLEdBQWQsMEJBQWMsS0FBZCwwQkFBYyxRQWV6QjtJQUVEO1FBUUksaUJBQVksS0FBYTtZQU5qQixhQUFRLEdBQVEsSUFBSSxDQUFDO1lBT3pCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7UUFORCxzQkFBSSwwQkFBSztpQkFBVDtnQkFDSSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDdkIsQ0FBQzs7O1dBQUE7UUFNRDs7Ozs7O1dBTUc7UUFDSCxzQkFBSSxHQUFKLFVBQUssUUFBc0QsRUFBRSxNQUFZLEVBQUUsYUFBeUI7WUFBcEcsaUJBbUVDOztZQW5FMEUsOEJBQUEsRUFBQSxpQkFBeUI7WUFDaEcsSUFBSSxRQUFRLEdBQUcsVUFBQyxLQUFxQixFQUFFLEtBQWE7Z0JBQ2hELFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUU7WUFDekMsQ0FBQyxDQUFBO1lBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQy9CLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsT0FBTzthQUNWO1lBRUQsSUFBSSxlQUFlLEdBQUcsVUFBQyxHQUFROztnQkFDM0IsTUFBQSxLQUFJLENBQUMsUUFBUSwwQ0FBRSxRQUFRLENBQUMsZUFBZSxFQUFFO2dCQUN6QyxJQUFJLFFBQVEsRUFBRSxFQUFFO29CQUNaLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTt3QkFDekMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ3RDO3lCQUFNO3dCQUNILFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUN0QztpQkFDSjtxQkFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO29CQUN0QixJQUFJLFlBQVksR0FBRyxHQUEwQyxDQUFDO29CQUM5RCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTt3QkFDeEMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUN2RDt5QkFBTTt3QkFDSCxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztxQkFDdEM7aUJBQ0o7WUFDTCxDQUFDLENBQUE7WUFFRCxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLFFBQVEsQ0FBQyxlQUFlLEVBQUU7WUFFekMsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixhQUFhO2dCQUNiLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU07aUJBQ3hCLENBQUMsQ0FBQzthQUNOO2lCQUFNLElBQUksV0FBVyxFQUFFLEVBQUU7Z0JBQ3RCLGFBQWE7Z0JBQ2IsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTTtvQkFDckIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQztvQkFDaEQsbUJBQW1CLEVBQUUsYUFBYTtpQkFDckMsQ0FBQyxDQUFDO2FBQ047aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7YUFDeEI7WUFHRCxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLE1BQU0sQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ25DLENBQUMsRUFBRTtZQUVILE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLFVBQUMsR0FBd0M7Z0JBQzVELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3BDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLENBQUMsRUFBRTtZQUVILE1BQUEsSUFBSSxDQUFDLFFBQVEsMENBQUUsT0FBTyxDQUFDLGVBQWUsRUFBRTtZQUV4QyxNQUFBLElBQUksQ0FBQyxRQUFRLDBDQUFFLElBQUksR0FBRyxLQUFLLENBQUM7O2dCQUN4QixNQUFBLEtBQUksQ0FBQyxRQUFRLDBDQUFFLElBQUksR0FBRyxJQUFJLENBQUMsbUNBQ3ZCLEtBQUksQ0FBQyxRQUFRLDBDQUFFLElBQUksS0FBRSxFQUFFLEtBQUssQ0FBQyxVQUFDLEdBQXdDO29CQUNsRSxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxDQUFDO29CQUMxQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdEMsQ0FBQyxFQUFFO1lBQ1gsQ0FBQyxFQUFFO1FBQ1AsQ0FBQztRQUVELHlCQUFPLEdBQVA7O1lBQ0ksTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxPQUFPLEdBQUc7UUFDN0IsQ0FBQztRQUNMLGNBQUM7SUFBRCxDQTNGQSxBQTJGQyxJQUFBO0lBRUQsSUFBWSxpQkFVWDtJQVZELFdBQVksaUJBQWlCO1FBQ3pCOztXQUVHO1FBQ0gsdURBQUcsQ0FBQTtRQUVIOztXQUVHO1FBQ0gsNkRBQU0sQ0FBQTtJQUNWLENBQUMsRUFWVyxpQkFBaUIsR0FBakIsNkJBQWlCLEtBQWpCLDZCQUFpQixRQVU1QjtJQUVEO1FBZ0JJO1lBRlEsYUFBUSxHQUE2QixFQUFFLENBQUM7UUFJaEQsQ0FBQztRQWRELHNCQUFXLHlCQUFRO2lCQUFuQjtnQkFDSSxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRTtvQkFDMUIsYUFBYSxDQUFDLFNBQVMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO2lCQUNqRDtnQkFDRCxPQUFPLGFBQWEsQ0FBQyxTQUFTLENBQUM7WUFDbkMsQ0FBQzs7O1dBQUE7UUFXRDs7Ozs7O1dBTUc7UUFDSSxrQ0FBVSxHQUFqQixVQUFrQixLQUFhLEVBQUUsUUFBK0QsRUFBRSxLQUFtQjs7WUFBcEYseUJBQUEsRUFBQSxXQUEwQyxpQkFBaUIsQ0FBQyxHQUFHO1lBQUUsc0JBQUEsRUFBQSxXQUFtQjtZQUNqSCxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLE9BQU8sR0FBRztZQUN4QixJQUFJLElBQUksR0FBVSxhQUFhLEVBQUUsQ0FBQztZQUNsQyxpRUFBaUU7WUFDakUsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDL0IsS0FBSyxHQUFHLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUTtZQUMzQyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU87WUFDeEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLEtBQUssaUJBQWlCLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEssQ0FBQztRQUVEOztXQUVHO1FBQ0ksa0NBQVUsR0FBakI7WUFDSSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUN2QjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLG1FQUFtRSxDQUFDLENBQUM7YUFDckY7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSSxrQ0FBVSxHQUFqQjs7WUFDSSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLElBQUksR0FBRztRQUN6QixDQUFDO1FBRUQ7OztXQUdHO1FBQ0ksd0NBQWdCLEdBQXZCLFVBQXdCLEtBQWE7O1lBQ2pDLElBQUksSUFBSSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQzFELElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDN0I7aUJBQU07Z0JBQ0gsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxPQUFPLEdBQUc7Z0JBQzlCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDN0I7UUFDTCxDQUFDO1FBRUQ7Ozs7OztXQU1HO1FBQ0ksa0NBQVUsR0FBakIsVUFBa0IsS0FBYSxFQUFFLFFBQXlDLEVBQUUsS0FBaUI7WUFBNUQseUJBQUEsRUFBQSxhQUF3QixHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7WUFBRSxzQkFBQSxFQUFBLFNBQWlCO1lBQ3pGLDJCQUEyQjtZQUMzQiwwRUFBMEU7WUFDMUUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixPQUFPLENBQUMsR0FBRyxDQUFJLEtBQUssc0JBQW1CLENBQUMsQ0FBQztnQkFDekMsT0FBTzthQUNWO1lBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25GLENBQUM7UUFFRDs7Ozs7O1dBTUc7UUFDSSxrQ0FBVSxHQUFqQixVQUFrQixLQUFhO1lBQzNCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUMvQjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUFxQixLQUFLLGlDQUE4QixDQUFDLENBQUM7YUFDMUU7UUFDTCxDQUFDO1FBRUQ7Ozs7Ozs7V0FPRztRQUNJLGtDQUFVLEdBQWpCLFVBQWtCLEtBQWE7WUFDM0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUN0QixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQy9CO2lCQUFNO2dCQUNILE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXFCLEtBQUssaUNBQThCLENBQUMsQ0FBQzthQUMxRTtRQUNMLENBQUM7UUFFRDs7Ozs7O1dBTUc7UUFDSSxpQ0FBUyxHQUFoQixVQUFpQixLQUFhLEVBQUUsYUFBMkQsRUFBRSxNQUFZLEVBQUUsYUFBeUI7O1lBQXpCLDhCQUFBLEVBQUEsaUJBQXlCO1lBQ2hJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDMUQ7aUJBQU07Z0JBQ0gsTUFBQSxJQUFJLENBQUMsTUFBTSwwQ0FBRSxPQUFPLEdBQUc7Z0JBQ3ZCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxNQUFNLEVBQUUsYUFBYSxDQUFDLENBQUM7YUFDMUQ7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSSxrQ0FBVSxHQUFqQjs7WUFDSSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLE9BQU8sR0FBRztZQUN4QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUVwQixNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLE9BQU8sR0FBRztZQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztZQUUxQixNQUFBLElBQUksQ0FBQyxNQUFNLDBDQUFFLE9BQU8sR0FBRztZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUVuQixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2YsS0FBSyxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO29CQUMzQixNQUFBLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLDBDQUFFLE9BQU8sR0FBRztpQkFDakM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7YUFDdEI7UUFDTCxDQUFDO1FBQ0wsb0JBQUM7SUFBRCxDQTNKQSxBQTJKQyxJQUFBO0lBM0pZLHlCQUFhLGdCQTJKekIsQ0FBQTtJQUVELElBQVksYUFZWDtJQVpELFdBQVksYUFBYTtRQUNyQixXQUFXO1FBQ1gsZ0NBQWUsQ0FBQTtRQUVmLFdBQVc7UUFDWCxnQ0FBZSxDQUFBO1FBRWYsbUJBQW1CO1FBQ25CLDhCQUFhLENBQUE7UUFFYixtQkFBbUI7UUFDbkIsZ0NBQWUsQ0FBQTtJQUNuQixDQUFDLEVBWlcsYUFBYSxHQUFiLHlCQUFhLEtBQWIseUJBQWEsUUFZeEI7SUFFRDtRQVlJO1FBRUEsQ0FBQztRQVhELHNCQUFXLG9CQUFRO2lCQUFuQjtnQkFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtvQkFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO2lCQUNuQztnQkFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDMUIsQ0FBQzs7O1dBQUE7UUFRRDs7Ozs7O1dBTUc7UUFDSCx5QkFBTSxHQUFOLFVBQU8sSUFBeUMsRUFBRSxRQUF5QyxFQUFFLElBQXVDLEVBQUUsUUFBaUI7WUFBaEoscUJBQUEsRUFBQSxPQUFzQixhQUFhLENBQUMsS0FBSztZQUFFLHlCQUFBLEVBQUEsYUFBd0IsR0FBRyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQUUscUJBQUEsRUFBQSxTQUFnQixLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7WUFDaEksSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixhQUFhO2dCQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO29CQUNqQyxJQUFJLEVBQUUsSUFBSTtvQkFDVixLQUFLLEVBQUU7d0JBQ0gsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO3dCQUNuQixHQUFHLEVBQUUsUUFBUSxDQUFDLEdBQUc7d0JBQ2pCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDakIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO3FCQUN0QjtvQkFDRCxRQUFRLEVBQUUsUUFBUTtpQkFDckIsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBRUQsdUJBQUksR0FBSjs7WUFDSSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLElBQUksR0FBRztRQUN2QixDQUFDO1FBRUQsdUJBQUksR0FBSjs7WUFDSSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLElBQUksR0FBRztRQUN2QixDQUFDO1FBRUQsMEJBQU8sR0FBUDs7WUFDSSxNQUFBLElBQUksQ0FBQyxLQUFLLDBDQUFFLE9BQU8sR0FBRztRQUMxQixDQUFDO1FBQ0wsZUFBQztJQUFELENBbERBLEFBa0RDLElBQUE7SUFsRFksb0JBQVEsV0FrRHBCLENBQUE7SUFHRDs7T0FFRztJQUNILElBQVksYUFVWDtJQVZELFdBQVksYUFBYTtRQUNyQjs7V0FFRztRQUNILG1EQUFLLENBQUE7UUFFTDs7V0FFRztRQUNILGlEQUFJLENBQUE7SUFDUixDQUFDLEVBVlcsYUFBYSxHQUFiLHlCQUFhLEtBQWIseUJBQWEsUUFVeEI7SUFJRDs7R0FFRDtJQUNDO1FBQUE7UUFtRkEsQ0FBQztRQWxGRzs7OztXQUlHO1FBQ0ksa0NBQWlCLEdBQXhCLFVBQXlCLFFBQW9DLEVBQUUsTUFBWTtZQUN2RSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUU7Z0JBQ2hCLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDOUIsT0FBTzthQUNWO1lBQ0QsYUFBYTtZQUNiLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFRO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZDLElBQUksR0FBRyxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUU7b0JBQ3hCLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtvQkFDN0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO2lCQUN0QztxQkFBTTtvQkFDSCxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7b0JBQzlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLENBQUMsQ0FBQztpQkFDbEQ7WUFDTCxDQUFDLENBQUMsQ0FBQztZQUVILGFBQWE7WUFDYixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUN4QyxJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLFFBQVEsRUFBRTtnQkFDdkMsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFO2FBQ2hDO1FBQ0wsQ0FBQztRQUVEOzs7OztXQUtHO1FBQ0ksNkJBQVksR0FBbkIsVUFBb0IsUUFBb0MsRUFBRSxNQUFZO1lBQ2xFLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRTtnQkFDaEIsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUM5QixPQUFPO2FBQ1Y7WUFFRCxZQUFZO1lBQ1osRUFBRSxDQUFDLFVBQVUsQ0FBQztnQkFDVixLQUFLLEVBQUUsU0FBUztnQkFDaEIsT0FBTyxFQUFFLFVBQUMsR0FBUTtvQkFDZCxPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixFQUFFLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFDbEQsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLElBQUksQ0FBQyxNQUFNLEVBQVcsR0FBRyxDQUFDLE9BQU8sRUFBRTtnQkFFakQsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBQyxHQUFRO29CQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ3RDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDbEMsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7UUFFRDs7Ozs7V0FLRztRQUNJLGtDQUFpQixHQUF4QixVQUF5QixRQUFvQyxFQUFFLE1BQVk7WUFDdkUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFO2dCQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7Z0JBQ3BDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDOUIsT0FBTzthQUNWO1lBRUQsYUFBYTtZQUNiLEVBQUUsQ0FBQyxlQUFlLENBQUM7Z0JBQ2YsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLE9BQU8sRUFBRTtvQkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7b0JBQ2hDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDakMsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBQyxHQUFRO29CQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzVDLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDbEMsQ0FBQzthQUNKLENBQUMsQ0FBQztRQUNQLENBQUM7UUFDTCx1QkFBQztJQUFELENBbkZBLEFBbUZDLElBQUE7SUFuRlksNEJBQWdCLG1CQW1GNUIsQ0FBQTtJQUVEOztPQUVHO0lBQ0g7UUFBQTtRQXllQSxDQUFDO1FBbGVHOzs7Ozs7O1dBT0c7UUFDSSxxQkFBaUIsR0FBeEIsVUFBeUIsS0FBYSxFQUFFLFdBQXdCLEVBQUUsUUFBaUIsRUFBRSxLQUFjLEVBQUUsU0FBc0I7WUFBbkYsNEJBQUEsRUFBQSxnQkFBd0I7WUFDNUQsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixJQUFJO29CQUNBLFlBQVk7b0JBQ1osRUFBRSxDQUFDLGVBQWUsQ0FBQzt3QkFDZixLQUFLLEVBQUUsS0FBSzt3QkFDWixRQUFRLEVBQUUsUUFBUTt3QkFDbEIsS0FBSyxFQUFFLEtBQUs7cUJBQ2YsQ0FBQyxDQUFDO2lCQUNOO2dCQUFDLE9BQU8sR0FBRyxFQUFFO29CQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWdCLEdBQUssQ0FBQyxDQUFDO2lCQUN0QzthQUNKO1lBRUQsSUFBSSxXQUFXLEVBQUUsRUFBRTtnQkFDZixZQUFZO2dCQUNaLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ2YsS0FBSyxFQUFFLEtBQUs7b0JBQ1osSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFFBQVEsRUFBRSxRQUFRLGFBQVIsUUFBUSxjQUFSLFFBQVEsR0FBSSxFQUFFO29CQUN4QixLQUFLLEVBQUUsS0FBSyxhQUFMLEtBQUssY0FBTCxLQUFLLEdBQUksRUFBRTtvQkFDbEIsT0FBTyxFQUFQLFVBQVEsR0FBUTt3QkFDWixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNuQyxTQUFTLGFBQVQsU0FBUyx1QkFBVCxTQUFTLEdBQUs7b0JBQ2xCLENBQUM7b0JBQ0QsSUFBSSxFQUFKLFVBQUssR0FBUTt3QkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztvQkFDcEMsQ0FBQztpQkFDSixDQUFDLENBQUM7YUFDTjtRQUNMLENBQUM7UUFFRDs7Ozs7V0FLRztRQUNJLGFBQVMsR0FBaEIsVUFBaUIsS0FBYSxFQUFFLFFBQW9CO1lBQXBCLHlCQUFBLEVBQUEsWUFBb0I7WUFDaEQsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixhQUFhO2dCQUNiLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0JBQ1QsS0FBSyxFQUFFLEtBQUs7b0JBQ1osSUFBSSxFQUFFLE1BQU07b0JBQ1osUUFBUSxFQUFFLFFBQVEsR0FBRyxHQUFHO2lCQUMzQixDQUFDLENBQUM7YUFDTjtRQUVMLENBQUM7UUFFRDs7O1dBR0c7UUFDSSxXQUFPLEdBQWQsVUFBZSxJQUF5QztZQUF6QyxxQkFBQSxFQUFBLE9BQXNCLGFBQWEsQ0FBQyxLQUFLO1lBQ3BELElBQUksUUFBUSxFQUFFLEVBQUU7Z0JBQ1osUUFBUSxJQUFJLEVBQUU7b0JBQ1YsS0FBSyxhQUFhLENBQUMsS0FBSzt3QkFDcEIsWUFBWTt3QkFDWixFQUFFLENBQUMsWUFBWSxDQUFDOzRCQUNaLE9BQU8sRUFBUCxVQUFRLEdBQVE7Z0NBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDekMsQ0FBQzs0QkFDRCxJQUFJLEVBQUosVUFBSyxHQUFRO2dDQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMscUJBQXFCLEVBQUUsR0FBRyxDQUFDLENBQUM7NEJBQzVDLENBQUM7eUJBQ0osQ0FBQyxDQUFDO3dCQUNILE1BQU07b0JBQ1YsS0FBSyxhQUFhLENBQUMsSUFBSTt3QkFDbkIsWUFBWTt3QkFDWixFQUFFLENBQUMsV0FBVyxDQUFDOzRCQUNYLE9BQU8sRUFBUCxVQUFRLEdBQVE7Z0NBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDeEMsQ0FBQzs0QkFDRCxJQUFJLEVBQUosVUFBSyxHQUFRO2dDQUNULE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLENBQUM7NEJBQzNDLENBQUM7eUJBQ0osQ0FBQyxDQUFDO3dCQUNILE1BQU07b0JBQ1Y7d0JBQ0ksTUFBTTtpQkFDYjthQUNKO1lBRUQsSUFBSSxXQUFXLEVBQUUsRUFBRTtnQkFDZixRQUFRLElBQUksRUFBRTtvQkFDVixLQUFLLGFBQWEsQ0FBQyxLQUFLO3dCQUNwQixZQUFZO3dCQUNaLEVBQUUsQ0FBQyxZQUFZLENBQUM7NEJBQ1osT0FBTyxFQUFQLFVBQVEsR0FBUTtnQ0FDWixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUN6QyxDQUFDOzRCQUNELElBQUksRUFBSixVQUFLLEdBQVE7Z0NBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQkFBcUIsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDNUMsQ0FBQzt5QkFDSixDQUFDLENBQUM7d0JBQ0gsTUFBTTtvQkFDVixLQUFLLGFBQWEsQ0FBQyxJQUFJO3dCQUNuQixZQUFZO3dCQUNaLEVBQUUsQ0FBQyxXQUFXLENBQUM7NEJBQ1gsT0FBTyxFQUFQLFVBQVEsR0FBUTtnQ0FDWixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsQ0FBQyxDQUFDOzRCQUN4QyxDQUFDOzRCQUNELElBQUksRUFBSixVQUFLLEdBQVE7Z0NBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxHQUFHLENBQUMsQ0FBQzs0QkFDM0MsQ0FBQzt5QkFDSixDQUFDLENBQUM7d0JBQ0gsTUFBTTtvQkFDVjt3QkFDSSxNQUFNO2lCQUNiO2FBQ0o7UUFDTCxDQUFDO1FBRUQ7O1dBRUc7UUFDSSxVQUFNLEdBQWI7WUFDSSxJQUFJLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFlBQVk7Z0JBQ1osRUFBRSxDQUFDLGtCQUFrQixDQUFDO29CQUNsQixPQUFPLEVBQUU7d0JBQ0wsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUNuQyxDQUFDO29CQUVELElBQUksRUFBRTt3QkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQ2xDLENBQUM7aUJBQ0osQ0FBQyxDQUFBO2FBQ0w7WUFFRCxJQUFJLFdBQVcsRUFBRSxFQUFFO2dCQUNmLElBQUk7b0JBQ0EsYUFBYTtvQkFDYixFQUFFLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztpQkFDL0I7Z0JBQUMsT0FBTyxLQUFLLEVBQUU7b0JBQ1osT0FBTyxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztpQkFDaEQ7YUFDSjtRQUNMLENBQUM7UUFFRDs7V0FFRztRQUNJLFFBQUksR0FBWDtZQUNJLElBQUksUUFBUSxFQUFFLEVBQUU7Z0JBQ1osWUFBWTtnQkFDWixFQUFFLENBQUMsZUFBZSxDQUFDO29CQUNmLE9BQU8sRUFBRTt3QkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO29CQUNoQyxDQUFDO29CQUNELElBQUksRUFBRTt3QkFDRixPQUFPLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMvQixDQUFDO2lCQUNKLENBQUMsQ0FBQzthQUNOO1lBRUQsSUFBSSxXQUFXLEVBQUUsRUFBRTtnQkFDZixhQUFhO2dCQUNiLEVBQUUsQ0FBQyxlQUFlLENBQUM7b0JBQ2YsT0FBTyxFQUFQLFVBQVEsR0FBUTt3QkFDWixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsSUFBSSxDQUFDLENBQUM7b0JBQzVDLENBQUM7b0JBQ0QsSUFBSSxFQUFKLFVBQUssR0FBUTt3QkFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxHQUFHLGFBQUgsR0FBRyx1QkFBSCxHQUFHLENBQUUsTUFBTSxDQUFDLENBQUM7b0JBQzNDLENBQUM7aUJBQ0osQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBRUQ7OztXQUdHO1FBQ0ksaUJBQWEsR0FBcEI7WUFDSSxJQUFJLFFBQVEsRUFBRSxFQUFFO2dCQUNaLFlBQVk7Z0JBQ1osRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDYixlQUFlLEVBQUUsSUFBSTtvQkFDckIsS0FBSyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsZUFBZSxDQUFDO29CQUMzQyxPQUFPLEVBQUUsY0FBUSxDQUFDO29CQUNsQixJQUFJLEVBQUUsY0FBUSxDQUFDO29CQUNmLFFBQVEsRUFBRSxjQUFRLENBQUM7aUJBQ3RCLENBQUMsQ0FBQzthQUNOO1FBRUwsQ0FBQztRQUVEOzs7O1dBSUc7UUFDSSxjQUFVLEdBQWpCLFVBQWtCLFFBQWdCLEVBQUUsU0FBc0I7WUFDdEQsSUFBSSxRQUFRLEVBQUUsRUFBRTtnQkFDWixhQUFhO2dCQUNiLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztvQkFDckIsS0FBSyxFQUFFLFFBQVE7b0JBQ2YsU0FBUyxFQUFFO3dCQUNQLEdBQUcsRUFBRSxLQUFLO3FCQUNiO29CQUNELFVBQVUsRUFBRSxTQUFTO29CQUNyQixPQUFPLEVBQVAsVUFBUSxHQUFRO3dCQUNaLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsR0FBSztvQkFDbEIsQ0FBQztpQkFDSixDQUFDLENBQUM7YUFDTjtZQUVELElBQUksV0FBVyxFQUFFLEVBQUU7Z0JBQ2YsYUFBYTtnQkFDYixFQUFFLENBQUMsbUJBQW1CLENBQUM7b0JBQ25CLE9BQU8sRUFBRSxRQUFRO29CQUNqQixPQUFPLEVBQUUsVUFBQyxHQUFRO3dCQUNkLFNBQVMsYUFBVCxTQUFTLHVCQUFULFNBQVMsR0FBSztvQkFDbEIsQ0FBQztvQkFDRCxJQUFJLEVBQUUsVUFBQyxHQUFRO3dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQW9DLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQzNELENBQUM7aUJBQ0osQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBR0Q7OztXQUdHO1FBQ0ksU0FBSyxHQUFaLFVBQWEsUUFBdUQ7WUFDaEUsSUFBSSxhQUFhLEdBQUc7Z0JBQ2hCLElBQUksUUFBUSxFQUFFLEVBQUU7b0JBQ1osWUFBWTtvQkFDWixFQUFFLENBQUMsS0FBSyxDQUFDO3dCQUNMLE9BQU8sRUFBRSxVQUFDLEdBQWdDOzRCQUN0QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUU7Z0NBQ1YsR0FBRyxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO2dDQUMxQixHQUFHLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO2dDQUMvQixRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsbUJBQW1CLEVBQUU7NkJBQ3ZEO2lDQUFNO2dDQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTs2QkFDMUM7d0JBQ0wsQ0FBQzt3QkFFRCxJQUFJLEVBQUU7NEJBQ0YsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7NEJBQ3RCLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7NEJBQy9CLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRTs0QkFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQTt3QkFDN0IsQ0FBQztxQkFDSixDQUFDLENBQUM7aUJBQ047cUJBQU0sSUFBSSxXQUFXLEVBQUUsRUFBRTtvQkFDdEIsWUFBWTtvQkFDWixFQUFFLENBQUMsS0FBSyxDQUFDO3dCQUNMLEtBQUssRUFBRSxJQUFJO3dCQUNYLE9BQU8sRUFBUCxVQUFRLEdBQVE7OzRCQUNaLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBUyxHQUFHLENBQUMsSUFBSSxTQUFJLEdBQUcsQ0FBQyxhQUFlLENBQUMsQ0FBQzs0QkFDdEQsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO2dDQUNWLEdBQUcsQ0FBQyxVQUFVLFNBQUcsR0FBRyxDQUFDLElBQUksMENBQUUsUUFBUSxFQUFFLENBQUM7Z0NBQ3RDLEdBQUcsQ0FBQyxtQkFBbUIsU0FBRyxHQUFHLENBQUMsYUFBYSwwQ0FBRSxRQUFRLEVBQUUsQ0FBQztnQ0FDeEQsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixFQUFFOzZCQUN2RDtpQ0FBTTtnQ0FDSCxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7NkJBQzFDO3dCQUNMLENBQUM7d0JBQ0QsSUFBSSxFQUFKLFVBQUssR0FBUTs0QkFDVCxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQzs0QkFDdEIsR0FBRyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQzs0QkFDL0IsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFHLEdBQUcsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixFQUFFOzRCQUNwRCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDbkMsQ0FBQztxQkFDSixDQUFDLENBQUM7aUJBQ047cUJBQU07b0JBQ0gsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7b0JBQ3RCLEdBQUcsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7b0JBQy9CLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRyxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRTtvQkFDcEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO2lCQUNuRTtZQUNMLENBQUMsQ0FBQTtZQUlELElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFO2dCQUNqQixhQUFhLEVBQUUsQ0FBQzthQUNuQjtpQkFBTTtnQkFDSCxJQUFJLFFBQVEsRUFBRSxFQUFFO29CQUNaLFlBQVk7b0JBQ1osRUFBRSxDQUFDLFlBQVksQ0FBQzt3QkFDWixPQUFPOzRCQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMscUNBQXFDLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDOzRCQUNuRSxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsbUJBQW1CLEVBQUU7d0JBQ3hELENBQUM7d0JBQ0QsSUFBSTs0QkFDQSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7NEJBQy9CLGFBQWEsRUFBRSxDQUFDO3dCQUNwQixDQUFDO3FCQUNKLENBQUMsQ0FBQztpQkFDTjtxQkFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO29CQUN0QixZQUFZO29CQUNaLEVBQUUsQ0FBQyxZQUFZLENBQUM7d0JBQ1osT0FBTzs0QkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLDBDQUF3QyxHQUFHLENBQUMsVUFBVSxVQUFLLEdBQUcsQ0FBQyxtQkFBcUIsQ0FBQyxDQUFDOzRCQUNsRyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUcsR0FBRyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsbUJBQW1CLEVBQUU7d0JBQ3hELENBQUM7d0JBQ0QsSUFBSTs0QkFDQSxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7NEJBQy9CLGFBQWEsRUFBRSxDQUFDO3dCQUNwQixDQUFDO3FCQUNKLENBQUMsQ0FBQztpQkFFTjtxQkFBTTtvQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLG9DQUFvQyxDQUFDLENBQUM7b0JBQ2xELFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFO2lCQUMxQjthQUNKO1FBQ0wsQ0FBQztRQUVEOzs7R0FHTDtRQUNZLGVBQVcsR0FBbEIsVUFBbUIsUUFBaUM7WUFDaEQsWUFBWTtZQUNaLEVBQUUsQ0FBQyxXQUFXLENBQUM7Z0JBQ1gsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLE9BQU8sRUFBRSxVQUFDLEdBQVE7b0JBQ2QsR0FBRyxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUM7b0JBQ3BCLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7Z0JBQ0QsSUFBSSxFQUFFLFVBQUMsR0FBUTtvQkFDWCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7YUFDSixDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQ7Ozs7O1dBS0c7UUFDSSwyQkFBdUIsR0FBOUIsVUFBK0IsUUFBNEIsRUFBRSxJQUFZLEVBQUUsSUFBUTtZQUMvRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEdBQUcsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO2dCQUN4RSxPQUFPO2FBQ1Y7WUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQUMsSUFBWSxFQUFFLGFBQXFCO2dCQUMzQyxJQUFJLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFO29CQUNsQyxZQUFZO29CQUNaLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7b0JBQ2hCLEdBQUcsQ0FBQywyQkFBMkIsR0FBRyxJQUFJLENBQUM7aUJBQzFDO2dCQUNELFlBQVk7Z0JBQ1osRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7b0JBQ2xCLElBQUksRUFBRSxJQUFJO29CQUNWLElBQUksRUFBRSxJQUFJO29CQUNWLE9BQU8sRUFBRSxVQUFDLEdBQVEsV0FBSyxRQUFRLGFBQVIsUUFBUSx1QkFBUixRQUFRLENBQUcsR0FBRyxJQUFDO29CQUN0QyxJQUFJLEVBQUUsVUFBQyxHQUFRO3dCQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ2pELFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRyxJQUFJLEVBQUU7b0JBQ3JCLENBQUM7aUJBQ0osQ0FBQyxDQUFDO1lBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO1FBRUQ7Ozs7V0FJRztRQUNJLHVCQUFtQixHQUExQixVQUEyQixHQUFXLEVBQUUsS0FBYTtZQUNqRCxJQUFJLFFBQVEsRUFBRSxFQUFFO2dCQUNaLGFBQWE7Z0JBQ2IsRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO29CQUN4QyxPQUFPLEVBQUUsY0FBTSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQTZCLEdBQUcsZ0JBQVcsS0FBTyxDQUFDLEVBQS9ELENBQStEO29CQUM5RSxJQUFJLEVBQUUsVUFBQyxHQUFRLElBQUssT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxFQUE1QyxDQUE0QztpQkFDbkUsQ0FBQyxDQUFDO2FBQ047WUFFRCxJQUFJLFdBQVcsRUFBRSxFQUFFO2dCQUNmLGFBQWE7Z0JBQ2IsRUFBRSxDQUFDLG1CQUFtQixDQUFDO29CQUNuQixVQUFVLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDO29CQUN6QyxPQUFPLEVBQUUsY0FBTSxPQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQTZCLEdBQUcsZ0JBQVcsS0FBTyxDQUFDLEVBQS9ELENBQStEO29CQUM5RSxJQUFJLEVBQUUsVUFBQyxHQUFRLElBQUssT0FBQSxPQUFPLENBQUMsR0FBRyxDQUFDLDBCQUEwQixFQUFFLEdBQUcsQ0FBQyxFQUE1QyxDQUE0QztpQkFDbkUsQ0FBQyxDQUFDO2FBQ047UUFDTCxDQUFDO1FBR0Q7O1VBRUU7UUFFSyxlQUFXLEdBQWxCO1lBQ0ksSUFBSSxPQUFPLEVBQUUsS0FBSyxXQUFXLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEIsc0JBQXNCO2dCQUN0QixJQUFJLEtBQUssR0FBRyxrQ0FBa0MsQ0FBQztnQkFDL0MsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFO29CQUNmLEtBQUssR0FBRyxrQ0FBa0MsQ0FBQztpQkFDOUM7Z0JBQ0QsSUFBSSxNQUFNLEdBQUc7b0JBQ1QsMERBQTBEO29CQUMxRCxLQUFLLEVBQUUsS0FBSztvQkFDWixTQUFTLEVBQUUsMkJBQTJCO29CQUN0QyxTQUFTLEVBQUU7d0JBQ1AsT0FBTyxFQUFFLElBQUk7d0JBQ2IsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0I7cUJBQ25DO2lCQUNKLENBQUM7Z0JBQ0YsV0FBVztnQkFDWCxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNDLE1BQU07Z0JBQ04sR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUNsQjtRQUNMLENBQUM7UUFFTSxnQkFBWSxHQUFuQjtZQUNJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMvQyxJQUFNLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDekIsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbEMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDcEMsQ0FBQztRQUVNLGtCQUFjLEdBQXJCLFVBQXNCLElBQUk7WUFDdEIsSUFBSSxPQUFPLEVBQUUsS0FBSyxXQUFXLElBQUksRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDMUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDeEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzthQUM1QztRQUNMLENBQUM7UUFFRDs7VUFFRTtRQUVLLDZCQUF5QixHQUFoQztZQUNJLElBQUksT0FBTyxFQUFFLEtBQUssV0FBVyxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRTtnQkFDckQsSUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUMxQiw4Q0FBOEM7Z0JBQzlDLElBQUksZUFBZSxHQUFHO29CQUNsQixhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztvQkFDbkQsY0FBYyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUMzQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUk7b0JBQ3ZDLE9BQU8sRUFBRSxXQUFXO2lCQUN2QixDQUFDO2dCQUNGLEdBQUcsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQSxVQUFVO2FBQ3pEO1FBQ0wsQ0FBQztRQUVNLHdCQUFvQixHQUEzQjtZQUNJLElBQUksT0FBTyxFQUFFLEtBQUssV0FBVyxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzFDLGFBQWE7Z0JBQ2IsSUFBTSxXQUFXLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQzVDLE9BQU8sV0FBVyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUM7YUFDMUM7UUFDTCxDQUFDO1FBRUQ7O1VBRUU7UUFFSyxnQkFBWSxHQUFuQixVQUFvQixJQUFJLEVBQUUsSUFBSSxFQUFFLFFBQWtEO1lBQzlFLElBQUksT0FBTyxFQUFFLEtBQUssV0FBVyxJQUFJLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQzFDLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRTtvQkFDVCwwQkFBMEI7b0JBQzFCLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUNULElBQUksRUFBRSxPQUFPO29CQUNiLElBQUksQ0FBQyxRQUFRO3FCQUNoQixDQUFBO2lCQUNKO2FBQ0o7UUFDTCxDQUFDO1FBdmVjLGNBQVUsR0FBVyxJQUFJLENBQUM7UUFDMUIsdUJBQW1CLEdBQVcsSUFBSSxDQUFDO1FBQ25DLCtCQUEyQixHQUFZLEtBQUssQ0FBQztRQUM3QyxhQUFTLEdBQVEsSUFBSSxDQUFDO1FBQ3RCLE9BQUcsR0FBUSxJQUFJLENBQUM7UUFvZW5DLFVBQUM7S0F6ZUQsQUF5ZUMsSUFBQTtJQXplWSxlQUFHLE1BeWVmLENBQUE7QUFFTCxDQUFDLEVBcHFDZ0IsV0FBVyxHQUFYLG1CQUFXLEtBQVgsbUJBQVcsUUFvcUMzQiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiDlsI/muLjmiI/lubPlj7BTREvlt6XlhbflsIHoo4XvvIznm67liY3lj6rmlK/mjIHlvq7kv6Hlkozmipbpn7PlubPlj7BcclxuICovXHJcbmV4cG9ydCBuYW1lc3BhY2UgTWluaUdhbWVTZGsge1xyXG5cclxuICAgIGludGVyZmFjZSBJU2l6ZSB7XHJcbiAgICAgICAgd2lkdGg6IG51bWJlcjtcclxuICAgICAgICBoZWlnaHQ6IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgaW50ZXJmYWNlIElQb3NpdGlvbiB7XHJcbiAgICAgICAgdG9wOiBudW1iZXI7XHJcbiAgICAgICAgbGVmdDogbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc1dlY2hhdCgpOiBib29sZWFuIHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICByZXR1cm4gd2luZG93Lnd4ICE9PSBudWxsICYmIHdpbmRvdy53eCAhPT0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBmdW5jdGlvbiBpc0J5dGVkYW5jZSgpOiBib29sZWFuIHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICByZXR1cm4gd2luZG93LnR0ICE9PSBudWxsICYmIHdpbmRvdy50dCAhPT0gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBmdW5jdGlvbiBnZXRTeXNXaW5TaXplKCk6IElTaXplIHtcclxuICAgICAgICBsZXQgc3lzOiBhbnk7XHJcbiAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBzeXMgPSB3eC5nZXRTeXN0ZW1JbmZvU3luYygpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHN5cyA9IHR0LmdldFN5c3RlbUluZm9TeW5jKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc2l6ZTogSVNpemUgPSB7IHdpZHRoOiAwLCBoZWlnaHQ6IDAgfTtcclxuICAgICAgICBpZiAoc3lzKSB7XHJcbiAgICAgICAgICAgIHNpemUud2lkdGggPSBzeXMud2luZG93V2lkdGg7XHJcbiAgICAgICAgICAgIHNpemUuaGVpZ2h0ID0gc3lzLndpbmRvd0hlaWdodDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBzaXplO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5o+S5bGP5bm/5ZGK44CC5b6u5L+h5oqW6Z+z6YO95pSv5oyB77yBXHJcbiAgICAgKi9cclxuICAgIGNsYXNzIEFESW50ZXJzdGl0aWFsIHtcclxuICAgICAgICBwcml2YXRlIF9hZFVpZDogc3RyaW5nO1xyXG4gICAgICAgIHByaXZhdGUgX2ludGVyc3RpdGlhbDogYW55O1xyXG5cclxuICAgICAgICBnZXQgYWR1aWQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNob3coKSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkgJiYgIXd4LmNyZWF0ZUludGVyc3RpdGlhbEFkKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ3dlY2hhdCB1bnN1cHBvcnQgaW50ZXJzdGl0aWFsIEFEIScpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBpZiAoaXNCeXRlZGFuY2UoKSAmJiAhdHQuY3JlYXRlSW50ZXJzdGl0aWFsQWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignYnl0ZWRhbmNlIHVuc3VwcG9ydCBpbnRlcnN0aXRpYWwgQUQhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuX2ludGVyc3RpdGlhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsLmxvYWQoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IHd4LmNyZWF0ZUludGVyc3RpdGlhbEFkKHsgYWRVbml0SWQ6IHRoaXMuX2FkVWlkIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IHR0LmNyZWF0ZUludGVyc3RpdGlhbEFkKHsgYWRVbml0SWQ6IHRoaXMuX2FkVWlkIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbD8ub25Mb2FkKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbG9hZCBpbnRlcnN0aXRpYWwgYWQgc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbC5zaG93KCkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjYXRjaCBpbnRlcnN0aXRpYWwgYWQgZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbD8ub25FcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnaW50ZXJzdGl0aWFsIGFkIG9uIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkZXN0b3J5KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWw/LmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xhc3MgQURCYW5uZXIge1xyXG4gICAgICAgIHByaXZhdGUgX2FkVWlkOiBzdHJpbmc7XHJcbiAgICAgICAgcHJpdmF0ZSBfYmFubmVyOiBhbnk7XHJcblxyXG4gICAgICAgIGdldCBhZHVpZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkVWlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5oqW6Z+z5ZKM5b6u5L+h6YO95pSv5oyBXHJcbiAgICAgICAgICog5qiq5bmF5bm/5ZGK44CC6aKE5Lyw5a695bqm6buY6K6k5Li6MzAw77yM6aKE5Lyw6auY5bqm5Li6MTQw44CC5aaC5p6c5L2g5LiN56Gu5a6a5bCx5oyJ6buY6K6k5YC85p2l44CCXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRilVJRO+8jOWQjuerr+mFjee9rlxyXG4gICAgICAgICAqIEBwYXJhbSBpc1RvcCDmmK/lkKblnKjlsY/luZXpobbpg6jlsZXnpLrjgILlhoXpg6jkvJroh6rliqjlsYXkuK3orqHnrpfkvY3nva7jgIJcclxuICAgICAgICAgKiBAcGFyYW0gYmFubmVyV2lkdGgg5qiq5bmF5bm/5ZGK55qE6aKE5Lyw5a695bqm44CC6buY6K6kMzAwXHJcbiAgICAgICAgICogQHBhcmFtIGF1dG9TaG93IOW5v+WRiuWKoOi9veWujOaIkOWQjuaYr+WQpueri+WIu+aYvuekuu+8jOm7mOiupOS4uuS4jeaYvuekulxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcsIHBhcmFtOiBib29sZWFuIHwgSVBvc2l0aW9uLCBiYW5uZXJXaWR0aDogbnVtYmVyID0gMzAwLCBhdXRvU2hvdzogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FkVWlkID0gYWRVaWQ7XHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlKGF1dG9TaG93LCBiYW5uZXJXaWR0aCwgcGFyYW0pOyAvLyDpu5jorqQzMDDmr5TovoPlkIjpgIJcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgY3JlYXRlKGF1dG9TaG93OiBib29sZWFuLCBiYW5uZXJXaWR0aDogbnVtYmVyLCBwYXJhbTogYm9vbGVhbiB8IElQb3NpdGlvbikge1xyXG4gICAgICAgICAgICBpZiAoIWlzV2VjaGF0KCkgJiYgIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG5cclxuICAgICAgICAgICAgbGV0IHdpblNpemUgPSBnZXRTeXNXaW5TaXplKCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgaGVpZ2h0ID0gYmFubmVyV2lkdGggKiAwLjQ7XHJcbiAgICAgICAgICAgIGxldCB0b3AgPSAwLCBsZWZ0ID0gMDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcGFyYW0gPT09IFwiYm9vbGVhblwiKSB7XHJcbiAgICAgICAgICAgICAgICBsZWZ0ID0gKHdpblNpemUud2lkdGggLSBiYW5uZXJXaWR0aCkgLyAyXHJcbiAgICAgICAgICAgICAgICB0b3AgPSBwYXJhbSA/IDUgOiAod2luU2l6ZS5oZWlnaHQgLSBoZWlnaHQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGVmdCA9IHBhcmFtLmxlZnQ7XHJcbiAgICAgICAgICAgICAgICB0b3AgPSBwYXJhbS50b3A7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBhZFVuaXRJZDogdGhpcy5fYWRVaWQsXHJcbiAgICAgICAgICAgICAgICBhZEludGVydmFsczogMzAsLy8g6Ieq5Yqo5Yi35paw6aKR546H5LiN6IO95bCP5LqOMzDnp5JcclxuICAgICAgICAgICAgICAgIHN0eWxlOiB7IGxlZnQ6IGxlZnQsIHRvcDogdG9wLCB3aWR0aDogYmFubmVyV2lkdGggfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gd3guY3JlYXRlQmFubmVyQWQocGFyYW1zKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSB0dC5jcmVhdGVCYW5uZXJBZChwYXJhbXMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5vbkVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2FkIGJhbm5lciBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8ub25Mb2FkKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGF1dG9TaG93ICYmIHRoaXMuX2Jhbm5lci5zaG93KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2hvdygpIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5zaG93KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaWRlKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LmhpZGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGFzcyBBREN1c3RvbSB7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRVaWQ6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF9hZEN1c3RvbTogYW55O1xyXG5cclxuICAgICAgICBnZXQgYWR1aWQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZFVpZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog55Sx5LqO5Y6f55Sf5qih5p2/5bm/5ZGK5Zyo5b6u5L+h5pyN5Yqh5ZCO56uv5Y+v5Lul5a6a5Yi25a695bqm5aSn5bCP77yM5Liq5pWw77yM57yp5pS+5q+U5L6L562J77yM5omA5Lul5L2N572u6LCD5pW06KaB5qC55o2u6K6+572u55qE5a695bqm5p2l5a6a44CC5oqW6Z+z5LiN5pSv5oyB77yBXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRilVJRO+8jOWQjuerr+mFjee9rlxyXG4gICAgICAgICAqIEBwYXJhbSB0b3Ag5LuO5bem5LiK6KeS5byA5aeL77yM6Led56a75bGP5bmV6aG26YOo55qE6Led56a744CC5rOo5oSP77ya6L+Z5Liq5pWw5o2u5Li66K6+5aSH5bGP5bmV5a695bqmd2lkdGjjgILlpoLmnpzpnIDopoHojrflj5blsY/luZXnmoTlg4/ntKDvvIzpnIDopoHkuZjku6Xorr7lpIflg4/ntKDmr5RQaXhlbC1SYXRpb++8jOS+i+WmgmlQaG9uZSAxMyBQcm/nmoRQaXhlbC1SYXRpb+S4ujPvvIzlg4/ntKDkuLpXaWR0aCoz44CCXHJcbiAgICAgICAgICogQHBhcmFtIGxlZnQg5LuO5bem5LiK6KeS5byA5aeL77yM6Led56a75bGP5bmV5pyA5bem6L6555qE6Led56a744CC5rOo5oSP77ya6L+Z5Liq5pWw5o2u5Li66K6+5aSH5bGP5bmV5a695bqmd2lkdGjjgILlpoLmnpzpnIDopoHojrflj5blsY/luZXnmoTlg4/ntKDvvIzpnIDopoHkuZjku6Xorr7lpIflg4/ntKDmr5RQaXhlbC1SYXRpb++8jOS+i+WmgmlQaG9uZSAxMyBQcm/nmoRQaXhlbC1SYXRpb+S4ujPvvIzlg4/ntKDkuLpXaWR0aCoz44CCXHJcbiAgICAgICAgICogQHBhcmFtIHNjYWxlIOWOn+eUn+aooeadv+W5v+WRiueahOWwuuWvuO+8jOm7mOiupOS4ujHvvIzljbMxMDAl44CC5q2k5YC85Zyo5b6u5L+h5pyN5Yqh5ZCO56uv5bm/5ZGK5Lit6I635b6X77yM6buY6K6k5Li6MTAwJe+8jOebruWJjeaciTEwMCXvvIw5MCXvvIw4MCXkuInnp43vvIzkuIDoiKzmg4XlhrXkuI3nlKjkv67mlLnjgILoi6XmnInkv67mlLnvvIzorrDlvpfkvKDlhaXlgLzvvIzkvovlpoI5MCXlsLHkvKDlhaUwLjnjgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBjb25zdHJ1Y3RvcihhZFVpZDogc3RyaW5nLCB0b3A6IG51bWJlciA9IDAsIGxlZnQ6IG51bWJlciA9IDAsIHNjYWxlOiBudW1iZXIgPSAxLjApIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGVDdXN0b21BZCh0b3AsIGxlZnQsIHNjYWxlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHByaXZhdGUgY3JlYXRlQ3VzdG9tQWQodG9wOiBudW1iZXIsIGxlZnQ6IG51bWJlciwgc2NhbGU6IG51bWJlcikge1xyXG4gICAgICAgICAgICBpZiAoIWlzV2VjaGF0KCkpIHsgLy8gb25seSB3ZWNoYXQgc3VwcG9ydCBjdXN0b20gYWRcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkQ3VzdG9tID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdPbmx5IHdlY2hhdCBzdXBwb3J0IEN1c3RvbSBBZCcpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgLy8g5Y6f55Sf5qih5p2/NeS4quW6lOeUqOWuveW6puS4ujM3Ne+8jOiLpeiuvue9ruS6hue8qeaUvuavlOS+i++8jOWImeWuveW6puS5n+mcgOimgeiuvue9rlxyXG4gICAgICAgICAgICAvLyBsZXQgd2lkdGggPSAzNzUgKiB0aGlzLl9zY2FsZTtcclxuICAgICAgICAgICAgLy8gbGV0IG5ld0xlZnQgPSAoc3lzLndpbmRvd1dpZHRoIC0gd2lkdGgpIC8gMjtcclxuICAgICAgICAgICAgLy8gbGV0IG5ld1RvcCA9IHN5cy53aW5kb3dIZWlnaHQgLyAyOyAvLyAxMjDmmK/pooTkvLDpq5jluqZcclxuXHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20gPSB3eC5jcmVhdGVDdXN0b21BZCh7XHJcbiAgICAgICAgICAgICAgICBhZFVuaXRJZDogdGhpcy5fYWRVaWQsXHJcbiAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHN0eWxlOiB7IGxlZnQ6IGxlZnQsIHRvcDogdG9wLCBmaXhlZDogdHJ1ZSB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20/Lm9uRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnYWQgY3VzdG9tIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzaG93KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbT8uc2hvdygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaGlkZSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20/LmhpZGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlc3Ryb3koKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FkQ3VzdG9tPy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIOinhumikeW5v+WRiueUqOaIt+eCueWHu+ihjOS4uue7k+aenFxyXG4gICAgICovXHJcbiAgICBleHBvcnQgZW51bSBFQWRWaWRlb1Jlc3VsdCB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog55So5oi355yL5a6M5LqG5bm/5ZGK77yM5ri45oiP5Y+v5Y+R5pS+5aWW5Yqx44CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgQUNDRVBULFxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlKjmiLfkuK3pgJTlhbPpl63kuoblub/lkYrvvIzljbPmnKrnnIvlroznirbmgIHjgILkuI3lj6/lj5HmlL7lpZblirHjgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBSRUpFQ1QsXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOW5v+WRiue7hOS7tuWGhemDqOWPkeeUn+S6humUmeivr+OAguS4jeWPr+WPkeaUvuWlluWKseOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIEVSUk9SLFxyXG4gICAgfVxyXG5cclxuICAgIGNsYXNzIEFEVmlkZW8ge1xyXG4gICAgICAgIHByaXZhdGUgX2FkVWlkOiBzdHJpbmc7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRWaWRlbzogYW55ID0gbnVsbDtcclxuXHJcbiAgICAgICAgZ2V0IGFkdWlkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRVaWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdHJ1Y3RvcihhZFVpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FkVWlkID0gYWRVaWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlLHkuo7lvq7kv6Hlkozmipbpn7Pop4bpopHlub/lkYrmnLrliLbkuI3lkIzvvIzlvq7kv6Hlj6/ku6XnnIvnmoTop4bpopHlub/lkYrkuKrmlbDlj6rmnIkw5ZKMMeS4qu+8jOaKlumfs+W5s+WPsOWImeWPr+S7peecizB+bWF4VmlkZW9Db3VudFxyXG4gICAgICAgICAqIEBwYXJhbSBvblJlc3VsdCDkuKTkuKrlj4LmlbDvvJrnrKzkuIDkuKpyZXPmmK9FQWRWaWRlb1Jlc3VsdOWumuS5ie+8jOesrOS6jGNvdW505piv55So5oi355yL5LqG5aSa5bCR5Liq6KeG6aKR5bm/5ZGK44CCXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBvblJlc3VsdOeahOaLpeacieiAhVxyXG4gICAgICAgICAqIEBwYXJhbSBtYXhWaWRlb0NvdW50IOWPr+S7pei/nue7reeci+acgOWkp+inhumikeS4quaVsO+8jOWPr+acgOWkp+WMluWVhuS4muaViOeOh+OAgum7mOiupOS4ujPkuKrjgIJcclxuICAgICAgICAgKiBAcmV0dXJucyBcclxuICAgICAgICAgKi9cclxuICAgICAgICBzaG93KG9uUmVzdWx0OiAocmVzOiBFQWRWaWRlb1Jlc3VsdCwgY291bnQ6IG51bWJlcikgPT4gdm9pZCwgdGFyZ2V0PzogYW55LCBtYXhWaWRlb0NvdW50OiBudW1iZXIgPSAzKTogdm9pZCB7XHJcbiAgICAgICAgICAgIGxldCBjYWxsYmFjayA9IChzdGF0ZTogRUFkVmlkZW9SZXN1bHQsIGNvdW50OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgc3RhdGUsIGNvdW50KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKCFpc1dlY2hhdCgpICYmICFpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5BQ0NFUFQsIDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbyA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCBvbkFkVmlkZW9DbG9zZWQgPSAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8/Lm9mZkNsb3NlKG9uQWRWaWRlb0Nsb3NlZCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLmlzRW5kZWQgfHwgcmVzID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRUFkVmlkZW9SZXN1bHQuQUNDRVBULCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5SRUpFQ1QsIDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXNDb252ZXJ0ZWQgPSByZXMgYXMgeyBpc0VuZGVkOiBib29sZWFuLCBjb3VudDogbnVtYmVyIH07XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc0NvbnZlcnRlZCAmJiByZXNDb252ZXJ0ZWQuY291bnQgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LkFDQ0VQVCwgcmVzQ29udmVydGVkLmNvdW50KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5SRUpFQ1QsIDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub2ZmQ2xvc2Uob25BZFZpZGVvQ2xvc2VkKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvID0gd3guY3JlYXRlUmV3YXJkZWRWaWRlb0FkKHtcclxuICAgICAgICAgICAgICAgICAgICBhZFVuaXRJZDogdGhpcy5fYWRVaWRcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8gPSB0dC5jcmVhdGVSZXdhcmRlZFZpZGVvQWQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZCxcclxuICAgICAgICAgICAgICAgICAgICBtdWx0aXRvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICBtdWx0aXRvblJld2FyZE1zZzogWyflpJox5qyh5aWW5YqxJywgJ+WGjeWkmuS4gOasoeWlluWKsScsICflho3lpJrkuIDmrKHlpZblirEnXSxcclxuICAgICAgICAgICAgICAgICAgICBtdWx0aXRvblJld2FyZFRpbWVzOiBtYXhWaWRlb0NvdW50LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8/Lm9uTG9hZCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWQgbG9hZCBzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub25FcnJvcigoZXJyOiB7IGVyck1zZzogc3RyaW5nLCBlcnJDb2RlOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0FkIHZpZGVvIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5FUlJPUiwgMCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub25DbG9zZShvbkFkVmlkZW9DbG9zZWQpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8uc2hvdygpLmNhdGNoKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8/LmxvYWQoKS50aGVuKCgpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8uc2hvdygpKS5jYXRjaCgoZXJyOiB7IGVyck1zZzogc3RyaW5nLCBlcnJDb2RlOiBudW1iZXIgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQ2F0Y2ggdmlkZW8gYWQgZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRUFkVmlkZW9SZXN1bHQuRVJST1IsIDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGRlc3RvcnkoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8/LmRlc3RvcnkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGVudW0gRUFkQmFubmVyTG9jYXRpb24ge1xyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOWxj+W5lemhtumDqFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIFRPUCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bGP5bmV5bqV6YOoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgQk9UVE9NLFxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBjbGFzcyBBZHZlcnRNYW5hZ2VyIHtcclxuXHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBBZHZlcnRNYW5hZ2VyO1xyXG5cclxuICAgICAgICBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IEFkdmVydE1hbmFnZXIge1xyXG4gICAgICAgICAgICBpZiAoIUFkdmVydE1hbmFnZXIuX2luc3RhbmNlKSB7XHJcbiAgICAgICAgICAgICAgICBBZHZlcnRNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBBZHZlcnRNYW5hZ2VyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIEFkdmVydE1hbmFnZXIuX2luc3RhbmNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBfdmlkZW86IEFEVmlkZW87XHJcbiAgICAgICAgcHJpdmF0ZSBfaW50ZXJzdGl0aWFsOiBBREludGVyc3RpdGlhbDtcclxuICAgICAgICBwcml2YXRlIF9iYW5uZXI6IEFEQmFubmVyO1xyXG4gICAgICAgIHByaXZhdGUgX2N1c3RvbXM6IFJlY29yZDxzdHJpbmcsIEFEQ3VzdG9tPiA9IHt9O1xyXG5cclxuICAgICAgICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmihOWKoOi9veaoquW5heW5v+WRiu+8jOS4jeS8muaYvuekuuOAguWPquacieS9oOWcqOiwg+eUqHNob3dCYW5uZXLml7bmiY3kvJrmmL7npLrjgIJcclxuICAgICAgICAgKiDlj6/ph43lpI3osIPnlKjvvIzkvYbmmK/kvJrplIDmr4HkuIrkuIDmrKHnmoTlrp7kvovjgILkuIDoiKzmg4XlhrXvvIzlhajlsYDmnInkuIDkuKrlsLHooYzkuobvvIzlpKrlpJrljaDnlKjlhoXlrZjvvIzogIzkuJTmsqHlv4XopoHjgIJcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKVUlEXHJcbiAgICAgICAgICogQHBhcmFtIGxvY2F0aW9uIOS9jee9ruacieS4pOenjeaDheWGte+8mjHjgIHlj6/ku6XkvKDlhaXmnprkuL7lgLzvvIzpu5jorqTkuIrmlrk7IDLjgIHlj6/ku6Xoh6rlrprkuYnkvY3nva7kvKDlhaVJUG9zaXRpb27vvIzms6jmhI9JUG9zaXRpb27kuK3nmoR0b3DlkoxsZWZ06Lef5bmz5Y+w55qEdG9wLGxlZnTmmK/kuIDoh7TvvIjmsqHmnInkuZjku6Xorr7lpIflg4/ntKDmr5RyYXRpb++8ie+8jOmcgOimgeW8gOWPkeiAheiHquW3seiwg+ivleS9jee9rlxyXG4gICAgICAgICAqIEBwYXJhbSBzY2FsZSDpu5jorqTkuLrot5/lsY/luZXkuIDmoLfnmoTlrr3luqbvvIzlj6/ku6XpgJrov4forr7nva7nvKnmlL7mr5TkvovmnaXosIPmlbTlpKflsI/jgILlvZPnhLbvvIzlubPlj7DmnInop4TlrprmnIDlpKfmiJbmnIDlsI/lrr3luqbvvIzlh73mlbDlhoXpg6jkvJroh6rliqjorqHnrpfjgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgbG9hZEJhbm5lcihhZFVpZDogc3RyaW5nLCBsb2NhdGlvbjogRUFkQmFubmVyTG9jYXRpb24gfCBJUG9zaXRpb24gPSBFQWRCYW5uZXJMb2NhdGlvbi5UT1AsIHNjYWxlOiBudW1iZXIgPSAxLjApIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIGxldCBzaXplOiBJU2l6ZSA9IGdldFN5c1dpblNpemUoKTtcclxuICAgICAgICAgICAgLy8g5b2TIHN0eWxlLndpZHRoIOWwj+S6jiAzMDAg5pe277yM5Lya5Y+W5L2cIDMwMOOAgiDlvZMgc3R5bGUud2lkdGgg5aSn5LqO5bGP5bmV5a695bqm5pe277yM5Lya5Y+W5L2c5bGP5bmV5a695bqm44CCXHJcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IHNpemUud2lkdGggKiBzY2FsZTtcclxuICAgICAgICAgICAgd2lkdGggPSB3aWR0aCA8IDMwMCA/IDMwMCA6IHdpZHRoOyAvLyDmnIDlsI/lgLznn6vmraNcclxuICAgICAgICAgICAgd2lkdGggPSB3aWR0aCA+IHNpemUud2lkdGggPyBzaXplLndpZHRoIDogd2lkdGg7IC8v5pyA5aSn5YC855+r5q2jXHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IHR5cGVvZiBsb2NhdGlvbiA9PT0gJ251bWJlcicgPyBuZXcgQURCYW5uZXIoYWRVaWQsIGxvY2F0aW9uID09PSBFQWRCYW5uZXJMb2NhdGlvbi5UT1AsIHdpZHRoLCBmYWxzZSkgOiBuZXcgQURCYW5uZXIoYWRVaWQsIGxvY2F0aW9uLCB3aWR0aCwgZmFsc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5pi+56S65qiq5bmF5bm/5ZGKXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dCYW5uZXIoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9iYW5uZXIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Jhbm5lci5zaG93KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ01pbmlHYW1lU0RLOiBiYW5uZXIgaXMgbnVsbCwgeW91IG11c3QgY2FsbCBsb2FkQmFubmVyKC4uLikgZmlyc3QhJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmakOiXj+aoquW5heW5v+WRilxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBoaWRlQmFubmVyKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LmhpZGUoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOW8ueWHuuaPkuWxj+W5v+WRilxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYrljZXlhYNpZFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBzaG93SW50ZXJzdGl0aWFsKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2ludGVyc3RpdGlhbCAmJiB0aGlzLl9pbnRlcnN0aXRpYWwuYWR1aWQgPT09IGFkVWlkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwuc2hvdygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5kZXN0b3J5KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwgPSBuZXcgQURJbnRlcnN0aXRpYWwoYWRVaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsLnNob3coKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5Yqg6L295Y6f55Sf5qih5p2/5bm/5ZGK77yM5LiN5Lya5pi+56S644CC5Y+q5pyJ5L2g5Zyo6LCD55Soc2hvd0N1c3RvbeaXtuaJjeS8muaYvuekuuOAglxyXG4gICAgICAgICAqIOeUseS6juWOn+eUn+aooeadv+W5v+WRiuWcqOW+ruS/oeacjeWKoeWQjuerr+WPr+S7peWumuWItuWuveW6puWkp+Wwj++8jOS4quaVsO+8jOe8qeaUvuavlOS+i+etie+8jOaJgOS7peS9jee9ruiwg+aVtOimgeagueaNruiuvue9rueahOWuveW6puadpeWumuOAguaKlumfs+S4jeaUr+aMgeacrOWHveaVsO+8jOS8muiwg+eUqOaXoOaViO+8gVxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYpJRFxyXG4gICAgICAgICAqIEBwYXJhbSBsb2NhdGlvbiDkvY3nva7mnInkuKTnp43mg4XlhrXvvJox44CB5Y+v5Lul5Lyg5YWl5p6a5Li+5YC877yM6buY6K6k5LiK5pa5OyAy44CB5Y+v5Lul6Ieq5a6a5LmJ5L2N572u5Lyg5YWlSVBvc2l0aW9u77yM5rOo5oSPSVBvc2l0aW9u5Lit55qEdG9w5ZKMbGVmdOi3n+W5s+WPsOeahHRvcCxsZWZ05piv5LiA6Ie077yI5rKh5pyJ5LmY5Lul6K6+5aSH5YOP57Sg5q+UcmF0aW/vvInvvIzpnIDopoHlvIDlj5HogIXoh6rlt7HosIPor5XkvY3nva5cclxuICAgICAgICAgKiBAcGFyYW0gc2NhbGUg57yp5pS+5q+U5L6L77yM6buY6K6k5pivMe+8jOWNs+S4jee8qeaUvuOAgui/meS4que8qeaUvuW5tuS4jeaYr+iHquW3seWhq++8jOiAjOaYr+agueaNruW+ruS/oU1Q5ZCO5Y+w5L2g6YWN572u55qE5Y6f55Sf5qih5p2/5bm/5ZGK55qE57yp5pS+5q+U5L6L5aGr77yM55uu5YmN5pyJMTAwJe+8jDkwJe+8jDgwJeS4ieenje+8jOS4gOiIrOaDheWGteS4jeeUqOS/ruaUueOAguiLpeacieWQjuWPsOS/ruaUue+8jOiusOW+l+S8oOWFpeWAvO+8jOS+i+WmgjkwJeWwseS8oOWFpTAuOeOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBsb2FkQ3VzdG9tKGFkVWlkOiBzdHJpbmcsIGxvY2F0aW9uOiBJUG9zaXRpb24gPSB7IHRvcDogMCwgbGVmdDogMCB9LCBzY2FsZTogbnVtYmVyID0gMSkge1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9jdXN0b20/LmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5fY3VzdG9tID0gbmV3IEFEQ3VzdG9tKGFkVWlkLCBsb2NhdGlvbi50b3AsIGxvY2F0aW9uLmxlZnQsIHNjYWxlKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbXNbYWRVaWRdKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgJHthZFVpZH0gaGFzIGJlZW4gbG9hZGVkLmApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9jdXN0b21zW2FkVWlkXSA9IG5ldyBBREN1c3RvbShhZFVpZCwgbG9jYXRpb24udG9wLCBsb2NhdGlvbi5sZWZ0LCBzY2FsZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmmL7npLroh6rlrprkuYnlub/lkYrjgIJcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGK55qE5ZSv5LiA5qCH6K+G56ym44CC5L2/55So5q2k5qCH6K+G56ym5p2l5p+l5om+5ZKM5pi+56S654m55a6a55qE6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgICAgICogXHJcbiAgICAgICAgICog5q2k5pa55rOV5bCd6K+V5qC55o2u5o+Q5L6b55qEYWRVaWTmmL7npLrkuIDkuKroh6rlrprkuYnlub/lkYrjgILlpoLmnpznu5nlrprnmoRhZFVpZOWvueW6lOeahOiHquWumuS5ieW5v+WRiuW3suWKoOi9ve+8jFxyXG4gICAgICAgICAqIOWImeiwg+eUqOivpeW5v+WRiueahOaYvuekuuaWueazleOAguWmguaenOW5v+WRiuacquWKoOi9ve+8jOWImeWcqOaOp+WItuWPsOi+k+WHuuitpuWRiuS/oeaBr+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBzaG93Q3VzdG9tKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbXNbYWRVaWRdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXN0b21zW2FkVWlkXS5zaG93KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFlvdSBoYXZlIG5vdCBsb2FkICR7YWRVaWR9IG9mIEN1c3RvbSBBRCwgY2FuIG5vdCBzaG93IWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDpmpDol4/mjIflrprnmoToh6rlrprkuYnlub/lkYrljZXlhYNcclxuICAgICAgICAgKiBcclxuICAgICAgICAgKiDmraTmlrnms5XnlKjkuo7pmpDol4/pgJrov4flub/lkYrljZXlhYPmoIfor4bnrKbvvIhhZFVpZO+8ieaMh+WumueahOiHquWumuS5ieW5v+WRiuOAguWmguaenOaMh+WumueahOW5v+WRiuWNleWFg+W3suWKoOi9veW5tuaYvuekuu+8jFxyXG4gICAgICAgICAqIOWImeWwhuWFtumakOiXj++8m+WmguaenOW5v+WRiuWNleWFg+acquWKoOi9ve+8jOWImeWcqOaOp+WItuWPsOi+k+WHuuitpuWRiuS/oeaBr+OAglxyXG4gICAgICAgICAqIFxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYrljZXlhYPmoIfor4bnrKbvvIznlKjkuo7llK/kuIDmoIfor4bkuIDkuKroh6rlrprkuYnlub/lkYrljZXlhYPjgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgaGlkZUN1c3RvbShhZFVpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXN0b21zW2FkVWlkXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VzdG9tc1thZFVpZF0uaGlkZSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBZb3UgaGF2ZSBub3QgbG9hZCAke2FkVWlkfSBvZiBDdXN0b20gQUQsIGNhbiBub3QgaGlkZSFgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog55Sx5LqO5b6u5L+h5ZKM5oqW6Z+z6KeG6aKR5bm/5ZGK5py65Yi25LiN5ZCM77yM5b6u5L+h5Y+v5Lul55yL55qE6KeG6aKR5bm/5ZGK5Liq5pWw5Y+q5pyJMOWSjDHkuKrvvIzmipbpn7PlubPlj7DliJnlj6/ku6XnnIswfm1heFZpZGVvQ291bnRcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKSUTjgILlpoLmnpzkuI7kuIrkuIDmrKFVSUTkuI3lkIzvvIzliJnlhoXpg6jkvJrph43mlrDliJvlu7rlrp7kvovjgILlvIDlj5HogIXlrozlhajkuI3nlKjlhbPlv4Pov5nkuKrnu4boioLjgIJcclxuICAgICAgICAgKiBAcGFyYW0gb25WaWRlb1Jlc3VsdCDkuKTkuKrlj4LmlbDvvJrnrKzkuIDkuKpyZXPmmK9FQWRWaWRlb1Jlc3VsdOWumuS5ie+8jOesrOS6jGNvdW505piv55So5oi355yL5LqG5aSa5bCR5Liq6KeG6aKR5bm/5ZGK44CCIFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQgb25WaWRlb1Jlc3VsdOeahOaLpeacieiAhVxyXG4gICAgICAgICAqIEBwYXJhbSBtYXhWaWRlb0NvdW50IOacgOWkp+inhumikeS4quaVsOOAgum7mOiupOaYrzPvvIzku4Xlr7nmipbpn7PlubPlj7DnlJ/mlYjjgILlvq7kv6HlubPlj7DnnIvlrozop4bpopFjb3VudOeahOe7k+aenOawuOi/nOaYrzHmiJYwXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dWaWRlbyhhZFVpZDogc3RyaW5nLCBvblZpZGVvUmVzdWx0OiAocmVzOiBFQWRWaWRlb1Jlc3VsdCwgY291bnQ6IG51bWJlcikgPT4gdm9pZCwgdGFyZ2V0PzogYW55LCBtYXhWaWRlb0NvdW50OiBudW1iZXIgPSAzKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl92aWRlbyAmJiB0aGlzLl92aWRlby5hZHVpZCA9PT0gYWRVaWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvLnNob3cob25WaWRlb1Jlc3VsdCwgdGFyZ2V0LCBtYXhWaWRlb0NvdW50KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvPy5kZXN0b3J5KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl92aWRlbyA9IG5ldyBBRFZpZGVvKGFkVWlkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvLnNob3cob25WaWRlb1Jlc3VsdCwgdGFyZ2V0LCBtYXhWaWRlb0NvdW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6ZSA5q+B5YaF6YOo5omA5pyJ5a6e5L6L77yM5riF56m65YaF5a2YXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIGRlc3Ryb3lBbGwoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSBudWxsO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5kZXN0b3J5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl92aWRlbz8uZGVzdG9yeSgpO1xyXG4gICAgICAgICAgICB0aGlzLl92aWRlbyA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VzdG9tcykge1xyXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgdmFsIGluIHRoaXMuX2N1c3RvbXMpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jdXN0b21zW3ZhbF0/LmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbXMgPSB7fTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZW51bSBFR2FtZUNsdWJJY29uIHtcclxuICAgICAgICAvKiog57u/6Imy5Zu+5qCHICovXHJcbiAgICAgICAgR1JFRU4gPSAnZ3JlZW4nLFxyXG5cclxuICAgICAgICAvKiog57qi6Imy5Zu+5qCHICovXHJcbiAgICAgICAgV0hJVEUgPSAnd2hpdGUnLFxyXG5cclxuICAgICAgICAvKiog5pyJ6buR6Imy5ZyG6KeS6IOM5pmv55qE55m96Imy5Zu+5qCHICovXHJcbiAgICAgICAgREFSSyA9ICdkYXJrJyxcclxuXHJcbiAgICAgICAgLyoqIOacieeZveiJsuWchuinkuiDjOaZr+eahOe7v+iJsuWbvuaghyAqL1xyXG4gICAgICAgIExJR0hUID0gJ2xpZ2h0J1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBjbGFzcyBHYW1lQ2x1YiB7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBHYW1lQ2x1YjtcclxuXHJcbiAgICAgICAgc3RhdGljIGdldCBpbnN0YW5jZSgpOiBHYW1lQ2x1YiB7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IEdhbWVDbHViKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBfY2x1YjogYW55O1xyXG5cclxuICAgICAgICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge1xyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOWIm+W7uua4uOaIj+WciOaMiemSrlxyXG4gICAgICAgICAqIEBwYXJhbSBpY29uIFxyXG4gICAgICAgICAqIEBwYXJhbSBwb3NpdGlvbiBcclxuICAgICAgICAgKiBAcGFyYW0gc2l6ZSBcclxuICAgICAgICAgKiBAcGFyYW0gb3BlbkxpbmsgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY3JlYXRlKGljb246IEVHYW1lQ2x1Ykljb24gPSBFR2FtZUNsdWJJY29uLkdSRUVOLCBwb3NpdGlvbjogSVBvc2l0aW9uID0geyB0b3A6IDAsIGxlZnQ6IDAgfSwgc2l6ZTogSVNpemUgPSB7IHdpZHRoOiA0MCwgaGVpZ2h0OiA0MCB9LCBvcGVuTGluaz86IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2x1YiA9IHd4LmNyZWF0ZUdhbWVDbHViQnV0dG9uKHtcclxuICAgICAgICAgICAgICAgICAgICBpY29uOiBpY29uLFxyXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQ6IHBvc2l0aW9uLmxlZnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogcG9zaXRpb24udG9wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogc2l6ZS53aWR0aCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBzaXplLmhlaWdodFxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgb3Blbmxpbms6IG9wZW5MaW5rXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2hvdygpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2x1Yj8uc2hvdygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaGlkZSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2x1Yj8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdG9yeSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fY2x1Yj8uZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmjK/liqjnsbvlnotcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGVudW0gRVZpcmJyYXRlVHlwZSB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog55+t5oyv5YqoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgU0hPUlQsXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmVv+aMr+WKqFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIExPTkdcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8qKlxyXG4gKiDmipbpn7PkvqfovrnmoI/kuJPlsZ7mjqXlj6NcclxuICovXHJcbiAgICBleHBvcnQgY2xhc3MgQnl0ZWRhbmNlU2lkZWJhciB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5pys5ri45oiP5Zyo5oqW6Z+z546v5aKD5LiL5ZCv5Yqo55uR5o6n77yM6ZyA6KaB5pS+5Zyo5YWo5bGA546v5aKD5Lit77yM5L+d6K+B6IO956ys5LiA5pe26Ze05ZCv5Yqo44CC5Zug5Li65Y+v6IO955uR5ZCs5oqW6Z+z5aSx6LSl77yI5oqW6Z+z5bCP5ri45oiP5a6Y5pa555qE6K+05piO77yJ77yBXHJcbiAgICAgICAgICogQHBhcmFtIG9uUmVzdWx0IOWMheWQq+S4gOS4qmJvb2xlYW7lj4LmlbDnmoTlh73mlbBcclxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IOS4iui/sOWHveaVsOeahOaLpeacieiAhe+8jOWmguaenOaYr+exu+eahOaIkOWRmOWHveaVsO+8jOmcgOimgeS8oOWFpXRoaXPjgILmma7pgJrmiJbljL/lkI3lh73mlbDlv73nlaXljbPlj6/jgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgbGlzdGVuRnJvbVNpZGViYXIob25SZXN1bHQ6IChzdWNjZXNzOiBib29sZWFuKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnkpIHtcclxuICAgICAgICAgICAgaWYgKCFpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHR0Lm9uU2hvdygocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdvblNob3cgbGF1bmNoIHJlczonLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5zY2VuZSA9PT0gJzAyMTAzNicpIHtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsYXVuY2ggZnJvbSBzaWRlYmFyJyk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdOT1QgbGF1bmNoIGZyb20gZG91eWluIHNpZGViYXIhJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IHR0LmdldExhdW5jaE9wdGlvbnNTeW5jKCk7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMuc2NlbmUgPT09ICcwMjEwMzYnKSB7XHJcbiAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmo4DmtYvmipbpn7PkvqfovrnmoI/mmK/lkKblrZjlnKhcclxuICAgICAgICAgKiBAcGFyYW0gb25SZXN1bHQg5YyF5ZCr5LiA5LiqYm9vbGVhbuWPguaVsOeahOWHveaVsFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQg5LiK6L+w5Ye95pWw55qE5oul5pyJ6ICF77yM5aaC5p6c5piv57G755qE5oiQ5ZGY5Ye95pWw77yM6ZyA6KaB5Lyg5YWldGhpc+OAguaZrumAmuaIluWMv+WQjeWHveaVsOW/veeVpeWNs+WPr+OAglxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBjaGVja1NpZGVCYXIob25SZXN1bHQ6IChzdWNjZXNzOiBib29sZWFuKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnkpIHtcclxuICAgICAgICAgICAgaWYgKCFpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHR0LmNoZWNrU2NlbmUoe1xyXG4gICAgICAgICAgICAgICAgc2NlbmU6IFwic2lkZWJhclwiLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJjaGVjayBzY2VuZSBzdWNjZXNzOiBcIiwgcmVzLmlzRXhpc3QpO1xyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgPGJvb2xlYW4+cmVzLmlzRXhpc3QpO1xyXG5cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrIHNjZW5lIGZhaWw6XCIsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6Lez6L2s5Yiw5oqW6Z+z5L6n6L655qCPXHJcbiAgICAgICAgICogQHBhcmFtIG9uUmVzdWx0IOWMheWQq+S4gOS4qmJvb2xlYW7lj4LmlbDnmoTlh73mlbBcclxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IOS4iui/sOWHveaVsOeahOaLpeacieiAhe+8jOWmguaenOaYr+exu+eahOaIkOWRmOWHveaVsO+8jOmcgOimgeS8oOWFpXRoaXPjgILmma7pgJrmiJbljL/lkI3lh73mlbDlv73nlaXljbPlj6/jgIJcclxuICAgICAgICAgKiBAcmV0dXJucyBcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgbmF2aWdhdGVUb1NpZGViYXIob25SZXN1bHQ6IChzdWNjZXNzOiBib29sZWFuKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnkpIHtcclxuICAgICAgICAgICAgaWYgKCFpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIm5vdCBkb3V5aW4gcGxhdGZvcm0hXCIpO1xyXG4gICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgdHQubmF2aWdhdGVUb1NjZW5lKHtcclxuICAgICAgICAgICAgICAgIHNjZW5lOiBcInNpZGViYXJcIixcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIm5hdmlnYXRlIHN1Y2Nlc3NcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIm5hdmlnYXRlIGZhaWxlZCByZWFzb246XCIsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlubPlj7DluLjnlKhBUEnlkIjpm4ZcclxuICAgICAqL1xyXG4gICAgZXhwb3J0IGNsYXNzIEFQSSB7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX2xvZ2luQ29kZTogc3RyaW5nID0gbnVsbDtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfbG9naW5Bbm9ueW1vdXNDb2RlOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF9oYXNJbml0V2VjaGF0Q2xvdWRGdW5jdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF91c2VySW5mbzogYW55ID0gbnVsbDtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfdGE6IGFueSA9IG51bGw7XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOWIhuS6q2FwcOe7meaci+WPi++8jOW+ruS/oeWwj+a4uOaIj+WIhuS6q+aYr+ayoeaciW9uU3VjY2Vzc+Wbnuiwg+eahOOAglxyXG4gICAgICAgICAqIEBwYXJhbSB0aXRsZSDmoIfpophcclxuICAgICAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24g57uG6IqC5o+P6L+w5L+h5oGvIFxyXG4gICAgICAgICAqIEBwYXJhbSBpbWFnZVVybCDlm77niYflnLDlnYBcclxuICAgICAgICAgKiBAcGFyYW0gcXVlcnkg5p+l6K+i5L+h5oGvXHJcbiAgICAgICAgICogQHBhcmFtIG9uU3VjY2VzcyDmipbpn7PkvJrlm57osIPvvIzlvq7kv6HkuI3kvJrlm57osINcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgc2hhcmVBcHBUb0ZyaWVuZHModGl0bGU6IHN0cmluZywgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnLCBpbWFnZVVybD86IHN0cmluZywgcXVlcnk/OiBzdHJpbmcsIG9uU3VjY2Vzcz86ICgpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgd3guc2hhcmVBcHBNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVVybDogaW1hZ2VVcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzaGFyZSBmYWlsZDogJHtlcnJ9YCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHR0LnNoYXJlQXBwTWVzc2FnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiBpbWFnZVVybCA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogcXVlcnkgPz8gJycsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2hhcmUgc3VjY2VzczonLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Y2Nlc3M/LigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2hhcmUgZmFpbDonLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmmL7npLrmj5DnpLrkv6Hmga9cclxuICAgICAgICAgKiBAcGFyYW0gdGl0bGUg5qCH6aKYXHJcbiAgICAgICAgICogQHBhcmFtIGR1cmF0aW9uIOaXtumVv++8iOWNleS9je+8muenku+8iVxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBzaG93VG9hc3QodGl0bGU6IHN0cmluZywgZHVyYXRpb246IG51bWJlciA9IDIpIHtcclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgICAgICAgICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24gKiA1MDBcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6K6+5aSH6ZyH5Yqo5pWI5p6c77yM6buY6K6k5Li655+t6ZyH5Yqo44CC5rOo5oSP77ya5Y+v6IO95LiA5Lqb5py65Z6L5LiN5Lya55Sf5pWI77yM5YW35L2T55yL5bmz5Y+w5pa555qE6K+05piOXHJcbiAgICAgICAgICogQHBhcmFtIHR5cGUgTWluaUdhbWVTZGsuQVBJLkVWaXJicmF0ZVR5cGVcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgdmlicmF0ZSh0eXBlOiBFVmlyYnJhdGVUeXBlID0gRVZpcmJyYXRlVHlwZS5TSE9SVCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFVmlyYnJhdGVUeXBlLlNIT1JUOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3gudmlicmF0ZVNob3J0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndmlicmF0ZSBzdWNjZXNzOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlU2hvcnQgZmFpbGVkJywgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVWaXJicmF0ZVR5cGUuTE9ORzpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHd4LnZpYnJhdGVMb25nKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndmlicmF0ZSBzdWNjZXNzJywgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHZpYnJhdGVMb25nIGZhaWxlZGAsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVWaXJicmF0ZVR5cGUuU0hPUlQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0dC52aWJyYXRlU2hvcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3M6JywgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGVTaG9ydCBmYWlsZWQnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRVZpcmJyYXRlVHlwZS5MT05HOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHQudmlicmF0ZUxvbmcoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgdmlicmF0ZUxvbmcgZmFpbGVkYCwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6YeN5ZCv5bCP5ri45oiPXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIHJlYm9vdCgpIHtcclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3gucmVzdGFydE1pbmlQcm9ncmFtKHtcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZXN0YXJ0IHN1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgICAgICBmYWlsOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZXN0YXJ0IGZhaWxlZCcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB0dC5yZXN0YXJ0TWluaVByb2dyYW1TeW5jKCk7XHJcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGByZXN0YXJ0TWluaVByb2dyYW1TeW5jYCwgZXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDpgIDlh7rlsI/muLjmiI9cclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgZXhpdCgpIHtcclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guZXhpdE1pbmlQcm9ncmFtKHtcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdleGl0IHN1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2V4aXQgZmFpbGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5leGl0TWluaVByb2dyYW0oe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJleGl0IHN1Y2Nlc3M6XCIsIHJlcz8uZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiZXhpdCBmYWlsOlwiLCByZXM/LmVyck1zZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmmL7npLrovazlj5HmjInpkq7jgILpgJrluLjlnKjliJrov5vlhaXmuLjmiI/nmoTml7blgJnosIPnlKjjgIJcclxuICAgICAgICAgKiDkuLvopoHmmK/miZPlvIDlubPlj7DigJwuLi7igJ3ov5nkuKrmjInpkq7ph4zpnaLnmoTliIbkuqvoj5zljZXvvIzkuIDoiKzpu5jorqTmmK/lhbPpl63nmoTvvIzpnIDopoHosIPnlKjov5nkuKrlh73mlbDmiZPlvIDjgILlj6/ku6XorqnnlKjmiLfliIbkuqvkvaDnmoTmuLjmiI/lhaXlj6PjgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgc2hvd1NoYXJlTWVudSgpIHtcclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2hvd1NoYXJlTWVudSh7XHJcbiAgICAgICAgICAgICAgICAgICAgd2l0aFNoYXJlVGlja2V0OiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lbnVzOiBbJ3NoYXJlQXBwTWVzc2FnZScsICdzaGFyZVRpbWVsaW5lJ10sXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4geyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6ICgpID0+IHsgfSxcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4geyB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOW+ruS/oeWwj+a4uOaIj++8mui3s+i9rOWIsOWPpuWkluS4gOasvuWwj+a4uOaIj1xyXG4gICAgICAgICAqIOaKlumfs+Wwj+a4uOaIj++8mui3s+i9rOWIsOaMh+WumueahOinhumikeeVjOmdolxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXRJZCDlvq7kv6HlsI/muLjmiI9hcHBpZOaIluiAheinhumikeeVjOmdolxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBuYXZpZ2F0ZVRvKHRhcmdldElkOiBzdHJpbmcsIG9uU3VjY2Vzcz86ICgpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4Lm5hdmlnYXRlVG9NaW5pUHJvZ3JhbSh7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwSWQ6IHRhcmdldElkLFxyXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhRGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb286ICdiYXInXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBlbnZWZXJzaW9uOiAnZGV2ZWxvcCcsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Y2Nlc3M/LigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdHQubmF2aWdhdGVUb1ZpZGVvVmlldyh7XHJcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9JZDogdGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz8uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJieXRlZGFuY2UgbmF2aWdhdGVUb1ZpZGVvVmlldyBmYWlsXCIsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bCP5ri45oiP5bmz5Y+w55m75b2V5Yqf6IO944CC5b6u5L+h6L+U5ZueY29kZe+8jOaKlumfs+i/lOWbnmNvZGXlkoxhbm9ueW1vdXNDb2Rl44CC55So5LqO55m75b2V55qE5Yet6K+B77yM6ZyA6KaB5oqK6L+Z5LiqY29kZeS8oOWbnuS9oOeahOacjeWKoeWZqOeoi+W6j+S4reWOu+iwg+eUqGNvZGUyU2Vzc2lvblxyXG4gICAgICAgICAqIEBwYXJhbSBjYWxsYmFjayAoY29kZSwgYW5vbnltb3VzQ29kZSkg56ys5LiA5Liq5Y+C5pWw5Li6Y29kZe+8jOW+ruS/oeWSjOaKlumfs+mDveaUr+aMge+8m+esrOS6jOS4quWPguaVsOS4uuWMv+WQjeiuvuWkh0lE77yM5LuF5oqW6Z+z5pSv5oyB77yM5aSx6LSl6YO96L+U5ZuebnVsbFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBsb2dpbihjYWxsYmFjazogKGNvZGU6IHN0cmluZywgYW5vbnltb3VzQ29kZTogc3RyaW5nKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgICAgIGxldCBsb2dpblBsYXRmb3JtID0gKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB3eC5sb2dpbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IChyZXM6IHsgY29kZTogYW55OyBlcnJNc2c6IGFueTsgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkNvZGUgPSByZXMuY29kZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbG9naW4gZXJyb3I6JywgcmVzLmVyck1zZylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Db2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Bbm9ueW1vdXNDb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPy4oQVBJLl9sb2dpbkNvZGUsIEFQSS5fbG9naW5Bbm9ueW1vdXNDb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2dpbiBmYWlsJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgdHQubG9naW4oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JjZTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYGxvZ2luICR7cmVzLmNvZGV9ICR7cmVzLmFub255bW91c0NvZGV9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IHJlcy5jb2RlPy50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Bbm9ueW1vdXNDb2RlID0gcmVzLmFub255bW91c0NvZGU/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbG9naW4gZXJyb3I6JywgcmVzLmVyck1zZylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkNvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYGxvZ2luIGZhaWxgLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPy4oQVBJLl9sb2dpbkNvZGUsIEFQSS5fbG9naW5Bbm9ueW1vdXNDb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbm90IG1pbmkgZ2FtZSBwbGF0Zm9ybSwgbG9naW4gY29kZXMgYXJlIGFsbCBudWxsJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgaWYgKCFBUEkuX2xvZ2luQ29kZSkge1xyXG4gICAgICAgICAgICAgICAgbG9naW5QbGF0Zm9ybSgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB3eC5jaGVja1Nlc3Npb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNlc3Npb24gaXMgdmFsaWQsIHVzZSBjdXJyZW50IGNvZGU6YCwgQVBJLl9sb2dpbkNvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNlc3Npb24gZXhwaXJlZGApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5QbGF0Zm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB0dC5jaGVja1Nlc3Npb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNlc3Npb24gaXMgdmFsaWQsIHVzZXIgY3VycmVudCBjb2RlOiAke0FQSS5fbG9naW5Db2RlfSwgJHtBUEkuX2xvZ2luQW5vbnltb3VzQ29kZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrPy4oQVBJLl9sb2dpbkNvZGUsIEFQSS5fbG9naW5Bbm9ueW1vdXNDb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbCgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzZXNzaW9uIGV4cGlyZWRgKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2luUGxhdGZvcm0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdub3QgbWluaSBnYW1lIHBsYXRmb3JtLCBsb2dpbiBudWxsJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihudWxsLCBudWxsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAqIOWwj+a4uOaIj+W5s+WPsOeZu+W9leWKn+iDveOAguW+ruS/oei/lOWbnmNvZGXvvIzmipbpn7Pov5Tlm55jb2Rl5ZKMYW5vbnltb3VzQ29kZeOAgueUqOS6jueZu+W9leeahOWHreivge+8jOmcgOimgeaKiui/meS4qmNvZGXkvKDlm57kvaDnmoTmnI3liqHlmajnqIvluo/kuK3ljrvosIPnlKhjb2RlMlNlc3Npb25cclxuICogQHBhcmFtIGNhbGxiYWNrIChjb2RlLCBhbm9ueW1vdXNDb2RlKSDnrKzkuIDkuKrlj4LmlbDkuLpjb2Rl77yM5b6u5L+h5ZKM5oqW6Z+z6YO95pSv5oyB77yb56ys5LqM5Liq5Y+C5pWw5Li65Yy/5ZCN6K6+5aSHSUTvvIzku4Xmipbpn7PmlK/mjIHvvIzlpLHotKXpg73ov5Tlm55udWxsXHJcbiAqL1xyXG4gICAgICAgIHN0YXRpYyBnZXRVc2VySW5mbyhjYWxsYmFjazogKHVzZXJJbmZvOiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHR0LmdldFVzZXJJbmZvKHtcclxuICAgICAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fdXNlckluZm8gPSByZXM7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soQVBJLl91c2VySW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDosIPnlKjlvq7kv6HkupHlh73mlbDjgILnlLHkuo7lj4LmlbDpnIDopoHoh6rlrprkuYnvvIzmiYDku6XkuLphbnnvvIzpnIDopoHoh6rooYzop6Pph4rjgILlh73mlbDlj6rlrozmiJDpgJrpgZPlkozlpITnkIbkuIDlnLrnmoTkvZznlKhcclxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sg6L+U5Zue5LqR5Ye95pWw6LCD55So57uT5p6c44CC6ZyA6KaB5qOA5p+l6L+U5Zue5Y+C5pWw5piv5ZCm5Li656m677yM5aSx6LSl55qE5pe25YCZ5Li656m6XHJcbiAgICAgICAgICogQHBhcmFtIG5hbWUg5LqR5Ye95pWw55qE5ZCN5a2XXHJcbiAgICAgICAgICogQHBhcmFtIGRhdGEg5LqR5Ye95pWw55qE5YaF5a65XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGNhbGxXZWNoYXRDbG91ZEZ1bmN0aW9uKGNhbGxiYWNrOiAocmVzOiBhbnkpID0+IHZvaWQsIG5hbWU6IHN0cmluZywgZGF0YToge30pIHtcclxuICAgICAgICAgICAgaWYgKCFpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTm90IHdlY2hhdCBwbGF0Zm9ybSwgbm90IHN1cHBvcnQgY2FsbFdlY2hhdENsb3VkRnVuY3Rpb24nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5sb2dpbigoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghQVBJLl9oYXNJbml0V2VjaGF0Q2xvdWRGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmNsb3VkLmluaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2hhc0luaXRXZWNoYXRDbG91ZEZ1bmN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogYW55KSA9PiBjYWxsYmFjaz8uKHJlcyksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3ZWNoYXQgY2xvdWQgZnVuY3Rpb24gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlrZjlgqjnlKjmiLfkv6Hmga/vvIzmlbDmja7ph4/kuI3og73lpKfjgILlj6/ku6XogIPomZHnlKjkuo7liIbmlbDmjpLooYzmppzjgILnlKjmiLfkuYvpl7Tlj6/lhbHkuqvmjpLooYzmlbDmja7jgIJcclxuICAgICAgICAgKiBAcGFyYW0ga2V5IFxyXG4gICAgICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgc2V0VXNlckNsb3VkU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2V0VXNlckNsb3VkU3RvcmFnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgS1ZEYXRhTGlzdDogW3sga2V5OiBrZXksIHZhbHVlOiB2YWx1ZSB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5zZXRVc2VyQ2xvdWRTdG9yYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICBLVkRhdGFMaXN0OiBbeyBrZXk6IGtleSwgdmFsdWU6IHZhbHVlLCB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICog5pWw5pWw5bmz5Y+w5Yid5aeL5YyW5Lul5Y+K55m75b2VXHJcbiAgICAgICAgKi9cclxuXHJcbiAgICAgICAgc3RhdGljIHNodXNodV9Jbml0KCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJyAmJiB3eCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlvIDlp4vmjqXlhaXmlbDmlbDlubPlj7BcIik7XHJcbiAgICAgICAgICAgICAgICAvL2dldFdlY2hhdEdhbWVWZXJzaW9uXHJcbiAgICAgICAgICAgICAgICBsZXQgYXBwSWQgPSBcIjEyMTU5MTM3OGZjMTQyMzg5M2RlYjEyMDQxNDEzZWIzXCI7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVzdCA9IGNjLmZ4LkdhbWVUb29sLmdldFdlY2hhdEdhbWVWZXJzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGVzdCA9PSBcIuato+W8j+eJiFwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXBwSWQgPSBcIjg3ZDE4OTU4Y2VhMTQ1ZjI5ZDMyNjU0NzBlY2QzNDg2XCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgY29uZmlnID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGFwcElkOiBcIjczZTFlYzY1NGYxNWI0N2ExYTczNTRmYmFiZWMwNWFkXCIsIC8vIOmhueebriBBUFAgSURcclxuICAgICAgICAgICAgICAgICAgICBhcHBJZDogYXBwSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyVXJsOiBcImh0dHBzOi8vZGF0YS5uaWthNGZ1bi5jb21cIiwgLy8g5LiK5oql5Zyw5Z2AXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1RyYWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFNob3c6IHRydWUsIC8vIOiHquWKqOmHh+mbhiB0YV9tZ19zaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEhpZGU6IHRydWUgLy8g6Ieq5Yqo6YeH6ZuGIHRhX21nX2hpZGVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgLy8g5Yib5bu6IFRBIOWunuS+i1xyXG4gICAgICAgICAgICAgICAgQVBJLl90YSA9IG5ldyBUaGlua2luZ0FuYWx5dGljc0FQSShjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgLy8g5Yid5aeL5YyWXHJcbiAgICAgICAgICAgICAgICBBUEkuX3RhLmluaXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhdGljIHNodXNodV9Mb2dpbigpIHtcclxuICAgICAgICAgICAgQVBJLl90YS5sb2dpbihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gXCJzdWNjZXNzXCI7XHJcbiAgICAgICAgICAgIEFQSS5zaHVzaHVfVHJhY2soXCJsb2dpblwiLCByZXN1bHQpO1xyXG4gICAgICAgICAgICBBUEkuc2h1c2h1X1NldFN1cGVyUHJvcGVydGllcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhdGljIHNodXNodV91c2VyU2V0KHRpbWUpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6K6+572u55So5oi35rOo5YaM5bGe5oCnXCIpO1xyXG4gICAgICAgICAgICAgICAgQVBJLl90YS51c2VyU2V0KHsgcmVnaXN0ZXJfdGltZTogdGltZSB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAqIOaVsOaVsOW5s+WPsOiuvue9ruWKqOaAgeWFrOWFseWxnuaAp1xyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIHN0YXRpYyBzaHVzaHVfU2V0U3VwZXJQcm9wZXJ0aWVzKCkge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJyAmJiB3eCAhPT0gbnVsbCAmJiBBUEkuX3RhKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB2ZXJzaW9uRGF0YSA9IFwiMS4zXCI7XHJcbiAgICAgICAgICAgICAgICAvLyBBUEkuX3RhLnVzZXJTZXRPbmNlKHsgcmVnaXN0ZXJfdGltZTp0aW1lfSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3VwZXJQcm9wZXJ0aWVzID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfbGV2ZWw6IChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgKyAxKSwgLy/lvZPliY3lhbPljaHnrYnnuqcgIG51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfaGVhbHRoOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAsICAgICAgICAvL+W9k+WJjeS9k+WKm+WAvFxyXG4gICAgICAgICAgICAgICAgICAgIHRtcF9jb2luOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwvL+W9k+WJjemHkeW4gVxyXG4gICAgICAgICAgICAgICAgICAgIHZlcnNpb246IHZlcnNpb25EYXRhXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgQVBJLl90YS5zZXRTdXBlclByb3BlcnRpZXMoc3VwZXJQcm9wZXJ0aWVzKTsvL+iuvue9ruWFrOWFseS6i+S7tuWxnuaAp1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdGF0aWMgZ2V0V2VjaGF0R2FtZVZlcnNpb24oKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ggIT09ICd1bmRlZmluZWQnICYmIHd4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICBjb25zdCBhY2NvdW50SW5mbyA9IHd4LmdldEFjY291bnRJbmZvU3luYygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjY291bnRJbmZvLm1pbmlQcm9ncmFtLnZlcnNpb247XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qXHJcbiAgICAgICAgKiDmlbDmlbDlubPlj7DlhbfkvZPln4vngrlcclxuICAgICAgICAqL1xyXG5cclxuICAgICAgICBzdGF0aWMgc2h1c2h1X1RyYWNrKG5hbWUsIGRhdGEsIGNhbGxiYWNrPzogKHN1Y2Nlc3M6IGJvb2xlYW4sIGVycm9yPzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ggIT09ICd1bmRlZmluZWQnICYmIHd4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoQVBJLl90YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWBh+iuviB0cmFjayDmlrnms5Xov5Tlm57kuIDkuKogUHJvbWlzZVxyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fdGEudHJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIC8vIOS6i+S7tuWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhIC8vIOS6i+S7tuWxnuaApyBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG59Il19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Boom.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '3c749iEEwlAMKPyjGEkwU2l', 'Boom'); -// Script/prop/Boom.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("../Map"); -var NumberToImage_1 = require("../NumberToImage"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Boom = /** @class */ (function (_super) { - __extends(Boom, _super); - function Boom() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Boom.prototype.onLoad = function () { - }; - Boom.prototype.start = function () { - }; - Boom.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - }; - Boom.prototype.startBoom = function () { - this.schedule(this.updateTime, 1); - }; - Boom.prototype.stopBoom = function () { - this.unschedule(this.updateTime); - this.node.parent.getComponent("Block").resetFreeze(); - this.node.destroy(); - }; - Boom.prototype.updateTime = function () { - var _this = this; - this.time--; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - if (this.time <= 0) { - this.unschedule(this.updateTime); - this.node.getChildByName("zhandan").active = true; - var skeleton = this.node.getChildByName("zhandan").getComponent(sp.Skeleton); - skeleton.setAnimation(1, "eff", false); - // 监听动画完成事件 - skeleton.setCompleteListener(function () { - // 动画播放完成后销毁节点 - _this.node.destroy(); - }); - Map_1.default._instance.failLevel("boom"); - // this.node.destroy(); - } - }; - Boom = __decorate([ - ccclass - ], Boom); - return Boom; -}(cc.Component)); -exports.default = Boom; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxCb29tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUNqQyxrREFBNkM7QUFFdkMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFLMUM7SUFBa0Msd0JBQVk7SUFBOUM7UUFBQSxxRUFtREM7UUFqREcsVUFBSSxHQUFXLEVBQUUsQ0FBQzs7UUFnRGxCLGlCQUFpQjtJQUNyQixDQUFDO0lBL0NHLDRCQUE0QjtJQUU1QixxQkFBTSxHQUFOO0lBRUEsQ0FBQztJQUVELG9CQUFLLEdBQUw7SUFDQSxDQUFDO0lBRUQsbUJBQUksR0FBSixVQUFLLElBQUk7UUFDTCxJQUFHLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzdDLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNsRyx5RkFBeUY7SUFFN0YsQ0FBQztJQUVELHdCQUFTLEdBQVQ7UUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHVCQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUFBLGlCQWdCQztRQWZHLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNoRyxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9FLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxXQUFXO1lBQ1gsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2dCQUN6QixjQUFjO2dCQUNkLEtBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxhQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4Qyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBaERnQixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBbUR4QjtJQUFELFdBQUM7Q0FuREQsQUFtREMsQ0FuRGlDLEVBQUUsQ0FBQyxTQUFTLEdBbUQ3QztrQkFuRG9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvb20gZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgdGltZTogbnVtYmVyID0gNjA7XHJcblxyXG4gICAgLy8gbWFwSW5mbzogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lKXtcclxuICAgICAgICBpZih0aW1lKSB0aGlzLnRpbWUgPSB0aW1lO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSwyMCw4LFwibG9ja19cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy50aW1lLnRvU3RyaW5nKCk7XHJcbiAgIFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0Qm9vbSgpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wQm9vbSgpe1xyXG4gICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVRpbWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzZXRGcmVlemUoKTtcclxuICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgdXBkYXRlVGltZSgpe1xyXG4gICAgICAgIHRoaXMudGltZSAtLTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsMjAsOCxcImxvY2tfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcbiAgICAgICAgaWYodGhpcy50aW1lIDw9IDApe1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemhhbmRhblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBza2VsZXRvbiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpoYW5kYW5cIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcclxuICAgICAgICAgICAgc2tlbGV0b24uc2V0QW5pbWF0aW9uKDEsXCJlZmZcIixmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vIOebkeWQrOWKqOeUu+WujOaIkOS6i+S7tlxyXG4gICAgICAgICAgICBza2VsZXRvbi5zZXRDb21wbGV0ZUxpc3RlbmVyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvuWujOaIkOWQjumUgOavgeiKgueCuVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoXCJib29tXCIpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/effect/融化.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '341aezWi/BCGa2q28VO8ioy', '融化'); -// effect/融化.ts - -"use strict"; -// IceMelt.ts -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.IceMelt = void 0; -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var IceMelt = /** @class */ (function (_super) { - __extends(IceMelt, _super); - function IceMelt() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.speed = 1; - //是否融化 - _this._isMelt = false; - _this._time = 0; - return _this; - } - IceMelt.prototype.start = function () { - this._material = this.node.getComponent(cc.Sprite).getMaterial(0); - }; - IceMelt.prototype.update = function (dt) { - if (this._material && this._isMelt) { - this._material.setProperty('u_time', this._time); - this._time += dt * this.speed; - } - }; - //开始融化 - IceMelt.prototype.startMelt = function () { - this._isMelt = true; - this._time = 0; - }; - IceMelt = __decorate([ - ccclass() - ], IceMelt); - return IceMelt; -}(cc.Component)); -exports.IceMelt = IceMelt; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcZWZmZWN0XFzono3ljJYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJUCxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUE2QiwyQkFBWTtJQUF6QztRQUFBLHFFQXlCQztRQXZCRyxXQUFLLEdBQVcsQ0FBQyxDQUFDO1FBRWxCLE1BQU07UUFDRSxhQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFdBQUssR0FBVyxDQUFDLENBQUM7O0lBbUI5QixDQUFDO0lBaEJHLHVCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELHdCQUFNLEdBQU4sVUFBTyxFQUFFO1FBQ0wsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVELE1BQU07SUFDTiwyQkFBUyxHQUFUO1FBQ0ksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQXhCUSxPQUFPO1FBRG5CLE9BQU8sRUFBRTtPQUNHLE9BQU8sQ0F5Qm5CO0lBQUQsY0FBQztDQXpCRCxBQXlCQyxDQXpCNEIsRUFBRSxDQUFDLFNBQVMsR0F5QnhDO0FBekJZLDBCQUFPIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSWNlTWVsdC50c1xyXG5cclxuXHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3MoKVxyXG5leHBvcnQgY2xhc3MgSWNlTWVsdCBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgc3BlZWQ6IG51bWJlciA9IDE7XHJcblxyXG4gICAgLy/mmK/lkKbono3ljJZcclxuICAgIHByaXZhdGUgX2lzTWVsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfdGltZTogbnVtYmVyID0gMDtcclxuICAgIHByaXZhdGUgX21hdGVyaWFsOiBjYy5NYXRlcmlhbFZhcmlhbnQ7XHJcblxyXG4gICAgc3RhcnQoKSB7XHJcbiAgICAgICAgdGhpcy5fbWF0ZXJpYWwgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuZ2V0TWF0ZXJpYWwoMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKGR0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX21hdGVyaWFsICYmIHRoaXMuX2lzTWVsdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRlcmlhbC5zZXRQcm9wZXJ0eSgndV90aW1lJywgdGhpcy5fdGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWUgKz0gZHQgKiB0aGlzLnNwZWVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+iejeWMllxyXG4gICAgc3RhcnRNZWx0KCkge1xyXG4gICAgICAgIHRoaXMuX2lzTWVsdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fdGltZSA9IDA7XHJcbiAgICB9XHJcbn0iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/animation/NewScript.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '2cd54+HgYFITpFe6QLlvqDB', 'NewScript'); -// animation/NewScript.js - -"use strict"; - -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html - -cc.Class({ - "extends": cc.Component, - properties: { - sex: { - type: cc.Enum({ - male: 0, - female: 1 - }), - "default": 0 - } - // foo: { - // // ATTRIBUTES: - // default: null, // The default value will be used only when the component attaching - // // to a node for the first time - // type: cc.SpriteFrame, // optional, default is typeof default - // serializable: true, // optional, default is true - // }, - // bar: { - // get () { - // return this._bar; - // }, - // set (value) { - // this._bar = value; - // } - // }, - }, - // LIFE-CYCLE CALLBACKS: - // onLoad () {}, - start: function start() {} // update (dt) {}, -}); - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcYW5pbWF0aW9uXFxOZXdTY3JpcHQuanMiXSwibmFtZXMiOlsiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJzZXgiLCJ0eXBlIiwiRW51bSIsIm1hbGUiLCJmZW1hbGUiLCJzdGFydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUFBLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxTQUFTO0VBRXJCQyxVQUFVLEVBQUU7SUFDUkMsR0FBRyxFQUFDO01BQ0FDLElBQUksRUFBQ0wsRUFBRSxDQUFDTSxJQUFJLENBQUM7UUFDVEMsSUFBSSxFQUFDLENBQUM7UUFDTkMsTUFBTSxFQUFDO01BQ1gsQ0FBQyxDQUFDO01BQ0YsV0FBUTtJQUNaO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VBQ0osQ0FBQztFQUVEO0VBRUE7RUFFQUMsS0FBSyxXQUFBQSxNQUFBLEVBQUksQ0FFVCxDQUFDLENBRUQ7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuQ29tcG9uZW50LFxyXG5cclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBzZXg6e1xyXG4gICAgICAgICAgICB0eXBlOmNjLkVudW0oe1xyXG4gICAgICAgICAgICAgICAgbWFsZTowLFxyXG4gICAgICAgICAgICAgICAgZmVtYWxlOjFcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6MFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBmb286IHtcclxuICAgICAgICAvLyAgICAgLy8gQVRUUklCVVRFUzpcclxuICAgICAgICAvLyAgICAgZGVmYXVsdDogbnVsbCwgICAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZCBvbmx5IHdoZW4gdGhlIGNvbXBvbmVudCBhdHRhY2hpbmdcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGEgbm9kZSBmb3IgdGhlIGZpcnN0IHRpbWVcclxuICAgICAgICAvLyAgICAgdHlwZTogY2MuU3ByaXRlRnJhbWUsIC8vIG9wdGlvbmFsLCBkZWZhdWx0IGlzIHR5cGVvZiBkZWZhdWx0XHJcbiAgICAgICAgLy8gICAgIHNlcmlhbGl6YWJsZTogdHJ1ZSwgICAvLyBvcHRpb25hbCwgZGVmYXVsdCBpcyB0cnVlXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgICAvLyBiYXI6IHtcclxuICAgICAgICAvLyAgICAgZ2V0ICgpIHtcclxuICAgICAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLl9iYXI7XHJcbiAgICAgICAgLy8gICAgIH0sXHJcbiAgICAgICAgLy8gICAgIHNldCAodmFsdWUpIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuX2JhciA9IHZhbHVlO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSxcclxuICAgIH0sXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9LFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9LFxyXG59KTtcclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '7a231Rz0d9LBYYgY3bDYlLB', 'use_v2.1-2.2.1_cc.Toggle_event'); -// migration/use_v2.1-2.2.1_cc.Toggle_event.js - -"use strict"; - -/* - * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. - * You do not need to manually add this script in any other project. - * If you don't use cc.Toggle in your project, you can delete this script directly. - * If your project is hosted in VCS such as git, submit this script together. - * - * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, - * 你无需在任何其它项目中手动添加此脚本。 - * 如果你的项目中没用到 Toggle,可直接删除该脚本。 - * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 - */ - -if (cc.Toggle) { - // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code - // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 - cc.Toggle._triggerEventInScript_isChecked = true; -} - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnQuanMiXSwibmFtZXMiOlsiY2MiLCJUb2dnbGUiLCJfdHJpZ2dlckV2ZW50SW5TY3JpcHRfaXNDaGVja2VkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSUEsRUFBRSxDQUFDQyxNQUFNLEVBQUU7RUFDWDtFQUNBO0VBQ0FELEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQywrQkFBK0IsR0FBRyxJQUFJO0FBQ3BEIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBUaGlzIHNjcmlwdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBDb2NvcyBDcmVhdG9yIGFuZCBpcyBvbmx5IHVzZWQgZm9yIHByb2plY3RzIGNvbXBhdGlibGUgd2l0aCB0aGUgdjIuMS4wIO+9niAyLjIuMSB2ZXJzaW9uLlxyXG4gKiBZb3UgZG8gbm90IG5lZWQgdG8gbWFudWFsbHkgYWRkIHRoaXMgc2NyaXB0IGluIGFueSBvdGhlciBwcm9qZWN0LlxyXG4gKiBJZiB5b3UgZG9uJ3QgdXNlIGNjLlRvZ2dsZSBpbiB5b3VyIHByb2plY3QsIHlvdSBjYW4gZGVsZXRlIHRoaXMgc2NyaXB0IGRpcmVjdGx5LlxyXG4gKiBJZiB5b3VyIHByb2plY3QgaXMgaG9zdGVkIGluIFZDUyBzdWNoIGFzIGdpdCwgc3VibWl0IHRoaXMgc2NyaXB0IHRvZ2V0aGVyLlxyXG4gKlxyXG4gKiDmraTohJrmnKznlLEgQ29jb3MgQ3JlYXRvciDoh6rliqjnlJ/miJDvvIzku4XnlKjkuo7lhbzlrrkgdjIuMS4wIH4gMi4yLjEg54mI5pys55qE5bel56iL77yMXHJcbiAqIOS9oOaXoOmcgOWcqOS7u+S9leWFtuWug+mhueebruS4reaJi+WKqOa3u+WKoOatpOiEmuacrOOAglxyXG4gKiDlpoLmnpzkvaDnmoTpobnnm67kuK3msqHnlKjliLAgVG9nZ2xl77yM5Y+v55u05o6l5Yig6Zmk6K+l6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruacieaJmOeuoeS6jiBnaXQg562J54mI5pys5bqT77yM6K+35bCG5q2k6ISa5pys5LiA5bm25LiK5Lyg44CCXHJcbiAqL1xyXG5cclxuaWYgKGNjLlRvZ2dsZSkge1xyXG4gICAgLy8gV2hldGhlciB0byB0cmlnZ2VyICd0b2dnbGUnIGFuZCAnY2hlY2tFdmVudHMnIGV2ZW50cyB3aGVuIG1vZGlmeWluZyAndG9nZ2xlLmlzQ2hlY2tlZCcgaW4gdGhlIGNvZGVcclxuICAgIC8vIOWcqOS7o+eggeS4reS/ruaUuSAndG9nZ2xlLmlzQ2hlY2tlZCcg5pe25piv5ZCm6Kem5Y+RICd0b2dnbGUnIOS4jiAnY2hlY2tFdmVudHMnIOS6i+S7tlxyXG4gICAgY2MuVG9nZ2xlLl90cmlnZ2VyRXZlbnRJblNjcmlwdF9pc0NoZWNrZWQgPSB0cnVlO1xyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/RankList/ItemRender.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'ca0f9k0oBVDbpQC+OMNTF3m', 'ItemRender'); -// Script/module/RankList/ItemRender.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var ItemRender = /** @class */ (function (_super) { - __extends(ItemRender, _super); - function ItemRender() { - var _this = _super !== null && _super.apply(this, arguments) || this; - /**数据 */ - _this.data = null; - /**索引 0表示第一项*/ - _this.itemIndex = 0; - return _this; - } - /**数据改变时调用 */ - ItemRender.prototype.dataChanged = function () { - this.data.name = cc.fx.GameTool.subName(this.data.name, 6); - this.node.getChildByName("rankLab").getComponent(cc.Label).string = this.data.rank + ""; - this.node.getChildByName("nameLab").getComponent(cc.Label).string = this.data.name + ""; - this.node.getChildByName("totalLab").getComponent(cc.Label).string = this.data.total; - var timeTemp = cc.fx.GameTool.getTimeShenNong(this.data.time); - // this.node.getChildByName("timeLab").getComponent(cc.Label).string = timeTemp + ""; - this.node.getChildByName("rank").getChildByName("one").active = false; - this.node.getChildByName("rank").getChildByName("two").active = false; - this.node.getChildByName("rank").getChildByName("three").active = false; - if (this.data.rank == 1) { - this.node.getChildByName("rank").getChildByName("one").active = true; - this.node.getChildByName("rankLab").active = false; - } - else if (this.data.rank == 2) { - this.node.getChildByName("rank").getChildByName("two").active = true; - this.node.getChildByName("rankLab").active = false; - } - else if (this.data.rank == 3) { - this.node.getChildByName("rank").getChildByName("three").active = true; - this.node.getChildByName("rankLab").active = false; - } - else { - this.node.getChildByName("rankLab").active = true; - } - this.setPic(); - }; - ItemRender.prototype.setPic = function () { - var _this = this; - this.node.getChildByName("pic").getChildByName("icon").active = false; - this.node.getChildByName("pic").getChildByName("pic").active = false; - var self = this; - var url = this.data.pic; - fetch(url) - .then(function (response) { - return response.headers.get('Content-Length'); - }) - .then(function (errNo) { - // console.log(this.data.rank,'X-Info:', errNo); // 输出X-ErrNo的值 - if (errNo == "5093") { - // console.log(this.data.rank,"没头像"); - _this.node.getChildByName("pic").getChildByName("icon").active = true; - } - }) - .catch(function (error) { - // console.error('Error fetching X-Info:', error); - }); - cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) { - if (texture) { - _this.node.getChildByName("pic").getChildByName("pic").active = true; - var sprite = _this.node.getChildByName("pic").getChildByName("pic").getComponent(cc.Sprite); - sprite.spriteFrame = new cc.SpriteFrame(texture); - // console.log(this.data.rank,"设置头像成功",err); - } - else { - // console.log("设置头像失败",url); - console.log(err, texture); - } - }); - }; - ItemRender = __decorate([ - ccclass - ], ItemRender); - return ItemRender; -}(cc.Component)); -exports.default = ItemRender; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFJhbmtMaXN0XFxJdGVtUmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXdDLDhCQUFZO0lBQXBEO1FBQUEscUVBc0VDO1FBckVHLFFBQVE7UUFDRCxVQUFJLEdBQU8sSUFBSSxDQUFDO1FBQ3ZCLGNBQWM7UUFDUCxlQUFTLEdBQVUsQ0FBQyxDQUFDOztJQWtFaEMsQ0FBQztJQWhFRyxhQUFhO0lBQ04sZ0NBQVcsR0FBbEI7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyRixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMs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QUEsS0FBSztZQUNSLGtEQUFrRDtRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsRUFBQyxVQUFDLEdBQUcsRUFBRSxPQUFvQjtZQUNuRSxJQUFHLE9BQU8sRUFBQztnQkFDUCxLQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFFLElBQUksQ0FBQztnQkFDbkUsSUFBSSxNQUFNLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCw0Q0FBNEM7YUFDL0M7aUJBQ0c7Z0JBQ0EsNkJBQTZCO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxPQUFPLENBQUMsQ0FBQTthQUMzQjtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQW5FZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQXNFOUI7SUFBRCxpQkFBQztDQXRFRCxBQXNFQyxDQXRFdUMsRUFBRSxDQUFDLFNBQVMsR0FzRW5EO2tCQXRFb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgTGlzdCwgeyBMaXN0VHlwZSB9IGZyb20gXCIuL0xpc3RcIjtcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJdGVtUmVuZGVyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIC8qKuaVsOaNriAqL1xyXG4gICAgcHVibGljIGRhdGE6YW55ID0gbnVsbDtcclxuICAgIC8qKue0ouW8lSAw6KGo56S656ys5LiA6aG5Ki9cclxuICAgIHB1YmxpYyBpdGVtSW5kZXg6bnVtYmVyID0gMDsgICAgXHJcblxyXG4gICAgLyoq5pWw5o2u5pS55Y+Y5pe26LCD55SoICovXHJcbiAgICBwdWJsaWMgZGF0YUNoYW5nZWQoKXtcclxuICAgICAgICB0aGlzLmRhdGEubmFtZSA9IGNjLmZ4LkdhbWVUb29sLnN1Yk5hbWUodGhpcy5kYXRhLm5hbWUsNik7XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLmRhdGEucmFuayArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS5uYW1lICsgXCJcIjtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS50b3RhbDtcclxuICAgICAgICBsZXQgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lU2hlbk5vbmcodGhpcy5kYXRhLnRpbWUpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcCArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBpZih0aGlzLmRhdGEucmFuayA9PSAxKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuZGF0YS5yYW5rID09IDIpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5kYXRhLnJhbmsgPT0gMyl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0UGljKCk7XHJcbiAgICB9ICAgXHJcbiAgICBcclxuICAgIHB1YmxpYyBzZXRQaWMoKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5hY3RpdmU9IGZhbHNlO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBsZXQgdXJsID0gdGhpcy5kYXRhLnBpYztcclxuICAgICAgICBmZXRjaCh1cmwpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEucmFuaywnWC1JbmZvOicsIGVyck5vKTsgLy8g6L6T5Ye6WC1FcnJOb+eahOWAvFxyXG4gICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEucmFuayxcIuayoeWktOWDj1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5hY3RpdmU9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3ByaXRlID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICAgICAgc3ByaXRlLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kYXRhLnJhbmssXCLorr7nva7lpLTlg4/miJDlip9cIixlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuiuvue9ruWktOWDj+Wksei0pVwiLHVybCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIsdGV4dHVyZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/GameStart/GameAppStart.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '61d4ccY2ztLMYIh8WvqPPAw', 'GameAppStart'); -// Script/module/GameStart/GameAppStart.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -var Storage_1 = require("../Storage/Storage"); -var GameConfig_1 = require("../Config/GameConfig"); -var HttpUtil_1 = require("../Crypto/HttpUtil"); -var Notification_1 = require("../Notification/Notification"); -var GameTool_1 = require("../Tool/GameTool"); -window.initMgr = function () { - if (cc.fx) { - return; - } - cc.fx = {}; - // console.log("1初始化"); - //基础状态信息 - cc.fx.StateInfo = { - debugMode: true, - networkConnected: true, - networkType: 'none', - isOnForeground: true //当前是否是在前台 - }; - //应用系统信息 - //配置文件 - cc.fx.StorageMessage = Storage_1.StorageMessage; - cc.fx.GameConfig = GameConfig_1.GameConfig; - cc.fx.HttpUtil = HttpUtil_1.default; - cc.fx.GameTool = GameTool_1.GameTool; - cc.fx.Notifications = Notification_1.Notifications; - cc.fx.ShareInfo = { - queryId: -1 //分享id - }; - cc.fx.Message = { - control: "10001", - startGame: "10002", - next: "10003", - changePath: "10004", - changeMap: "10005", - nextWater: "10006", - addEnd: "10007", - setData: "10008", - guideNext: "10009", - showResult: "10010", - removeTip: "10011" //执行撤回或者后退动作,移除提示 - }; - /* - * 客户端埋点分享类型 - */ - cc.fx.BurialShareType = { - Default: "default", - Invite: "invite", - DailyInviteRoomJoin: 'invite_join_room', - DailyInviteFriend: 'invite_friend', - DailyInviteGroup: 'invate_group', - DailyInviteGroupAlive: 'invate_alive', - DailyInviteGroupReward: 'invate_rewared', - DailyInviteGroupBox: 'invate_box', - DailyInviteGroupBall: 'invate_ball', - MatchResult: 'matchResult', - MatchFix5: 'MatchFix5', - MatchFix20: 'MatchFix20', - MatchFix100: 'MatchFix100', - MatchFix500: 'MatchFix500', - NewerRedEnvelope: 'newerRedEnvelope', - CoinRoomResult: 'coinRoomResult', - HighRate: "highRate", - CoinRoomWinStreak: 'coinRoomWinStreak', - CoinRoomBankruptcy1: 'coinRoomBankruptcy1', - CoinRoomBankruptcy2: 'coinRoomBankruptcy2', - CoinRoomBankruptcy3: 'coinRoomBankruptcy3', - }; - /* - * 分享到哪儿给奖励 group frined all - */ - cc.fx.ShareWhereReward = { - Group: "group", - Friend: "friend", - All: "all", - }; - //用于存储消息的ID - cc.fx.storageType = cc.Enum({ - storageTypeCustom: 1000101, - }); - //用于存储提示语 按照步骤提示 - cc.fx.tipType = cc.Enum({ - tipOne: '神农氏回到家中,开始整理今天收集来的物品。当他第一次拿出或说出一种植物时,请告诉他这是新植物。', - tipTwo: '如果他拿出或说出的植物你今天看到过,请告诉他上次是看到的;如果你听他说过,则请告诉他上次是听到的。', - tipErrNew: '这是这局游戏第一次出现{植物}', - tipErrOld: '{植物}刚才出现过呢', - tipErrHear: '上次遇到{植物}时,似乎不是听到的吧', - tipErrSee: '上次遇到{植物}时,似乎不是看到的吧', - tipErrLast: '之前确实看到过{植物},但最近一次似乎不是看到的呢', - }); -}; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXEdhbWVTdGFydFxcR2FtZUFwcFN0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQW9EO0FBQ3BELG1EQUFrRDtBQUNsRCwrQ0FBMEM7QUFDMUMsNkRBQTZEO0FBQzdELDZDQUE0QztBQUc1QyxNQUFNLENBQUMsT0FBTyxHQUFHO0lBQ2IsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ1AsT0FBTztLQUNWO0lBQ0QsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7SUFDWCx1QkFBdUI7SUFFdkIsUUFBUTtJQUNSLEVBQUUsQ0FBQyxFQUFFLENBQUMsU0FBUyxHQUFHO1FBQ2QsU0FBUyxFQUFFLElBQUk7UUFDZixnQkFBZ0IsRUFBRSxJQUFJO1FBQ3RCLFdBQVcsRUFBRSxNQUFNO1FBQ25CLGNBQWMsRUFBRSxJQUFJLENBQU0sVUFBVTtLQUN2QyxDQUFDO0lBRUYsUUFBUTtJQUNSLE1BQU07SUFDTixFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsR0FBRyx3QkFBYyxDQUFDO0lBRXRDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLHVCQUFVLENBQUM7SUFDOUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsa0JBQVEsQ0FBQztJQUMxQixFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxtQkFBUSxDQUFDO0lBQzFCLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxHQUFHLDRCQUFhLENBQUM7SUFHcEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUc7UUFDZCxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQWMsTUFBTTtLQUNsQyxDQUFDO0lBRUYsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUc7UUFDWixPQUFPLEVBQUUsT0FBTztRQUNoQixTQUFTLEVBQUUsT0FBTztRQUNsQixJQUFJLEVBQUUsT0FBTztRQUNiLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLE1BQU0sRUFBRSxPQUFPO1FBQ2YsT0FBTyxFQUFFLE9BQU87UUFDaEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsVUFBVSxFQUFFLE9BQU87UUFDbkIsU0FBUyxFQUFFLE9BQU8sQ0FBVSxpQkFBaUI7S0FDaEQsQ0FBQTtJQUVEOztNQUVFO0lBQ0YsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEdBQUc7UUFDcEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsTUFBTSxFQUFFLFFBQVE7UUFFaEIsbUJBQW1CLEVBQUUsa0JBQWtCO1FBQ3ZDLGlCQUFpQixFQUFFLGVBQWU7UUFDbEMsZ0JBQWdCLEVBQUUsY0FBYztRQUNoQyxxQkFBcUIsRUFBRSxjQUFjO1FBQ3JDLHNCQUFzQixFQUFFLGdCQUFnQjtRQUN4QyxtQkFBbUIsRUFBRSxZQUFZO1FBQ2pDLG9CQUFvQixFQUFFLGFBQWE7UUFFbkMsV0FBVyxFQUFFLGFBQWE7UUFDMUIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsV0FBVyxFQUFFLGFBQWE7UUFDMUIsV0FBVyxFQUFFLGFBQWE7UUFDMUIsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLGNBQWMsRUFBRSxnQkFBZ0I7UUFDaEMsUUFBUSxFQUFFLFVBQVU7UUFDcEIsaUJBQWlCLEVBQUUsbUJBQW1CO1FBQ3RDLG1CQUFtQixFQUFFLHFCQUFxQjtRQUMxQyxtQkFBbUIsRUFBRSxxQkFBcUI7UUFDMUMsbUJBQW1CLEVBQUUscUJBQXFCO0tBQzdDLENBQUM7SUFFRjs7T0FFRztJQUNILEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEdBQUc7UUFDckIsS0FBSyxFQUFFLE9BQU87UUFDZCxNQUFNLEVBQUUsUUFBUTtRQUNoQixHQUFHLEVBQUUsS0FBSztLQUNiLENBQUM7SUFFRixXQUFXO0lBQ1gsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztRQUN4QixpQkFBaUIsRUFBRSxPQUFPO0tBQzdCLENBQUMsQ0FBQztJQUVILGlCQUFpQjtJQUNqQixFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxpREFBaUQ7UUFDekQsTUFBTSxFQUFFLG1EQUFtRDtRQUMzRCxTQUFTLEVBQUUsaUJBQWlCO1FBQzVCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFVBQVUsRUFBRSxvQkFBb0I7UUFDaEMsU0FBUyxFQUFFLG9CQUFvQjtRQUMvQixVQUFVLEVBQUUsMkJBQTJCO0tBRTFDLENBQUMsQ0FBQztBQUVQLENBQUMsQ0FBQyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VNZXNzYWdlIH0gZnJvbSBcIi4uL1N0b3JhZ2UvU3RvcmFnZVwiO1xyXG5pbXBvcnQgeyBHYW1lQ29uZmlnIH0gZnJvbSBcIi4uL0NvbmZpZy9HYW1lQ29uZmlnXCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi4vQ3J5cHRvL0h0dHBVdGlsXCI7XHJcbmltcG9ydCB7IE5vdGlmaWNhdGlvbnMgfSBmcm9tIFwiLi4vTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvblwiO1xyXG5pbXBvcnQgeyBHYW1lVG9vbCB9IGZyb20gXCIuLi9Ub29sL0dhbWVUb29sXCI7XHJcbmltcG9ydCBBdWRpb01hbmFnZXIgZnJvbSBcIi4uL011c2ljL0F1ZGlvTWFuYWdlclwiO1xyXG5cclxud2luZG93LmluaXRNZ3IgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICBpZiAoY2MuZngpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjYy5meCA9IHt9O1xyXG4gICAgLy8gY29uc29sZS5sb2coXCIx5Yid5aeL5YyWXCIpO1xyXG5cclxuICAgIC8v5Z+656GA54q25oCB5L+h5oGvXHJcbiAgICBjYy5meC5TdGF0ZUluZm8gPSB7XHJcbiAgICAgICAgZGVidWdNb2RlOiB0cnVlLFxyXG4gICAgICAgIG5ldHdvcmtDb25uZWN0ZWQ6IHRydWUsICAgLy/nvZHnu5znirbmgIFcclxuICAgICAgICBuZXR3b3JrVHlwZTogJ25vbmUnLCAgICAgIC8v572R57uc57G75Z6LXHJcbiAgICAgICAgaXNPbkZvcmVncm91bmQ6IHRydWUgICAgICAvL+W9k+WJjeaYr+WQpuaYr+WcqOWJjeWPsFxyXG4gICAgfTtcclxuXHJcbiAgICAvL+W6lOeUqOezu+e7n+S/oeaBr1xyXG4gICAgLy/phY3nva7mlofku7ZcclxuICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlID0gU3RvcmFnZU1lc3NhZ2U7XHJcblxyXG4gICAgY2MuZnguR2FtZUNvbmZpZyA9IEdhbWVDb25maWc7XHJcbiAgICBjYy5meC5IdHRwVXRpbCA9IEh0dHBVdGlsO1xyXG4gICAgY2MuZnguR2FtZVRvb2wgPSBHYW1lVG9vbDtcclxuICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMgPSBOb3RpZmljYXRpb25zO1xyXG5cclxuXHJcbiAgICBjYy5meC5TaGFyZUluZm8gPSB7XHJcbiAgICAgICAgcXVlcnlJZDogLTEgICAgICAgICAgICAgIC8v5YiG5LqraWRcclxuICAgIH07XHJcblxyXG4gICAgY2MuZnguTWVzc2FnZSA9IHtcclxuICAgICAgICBjb250cm9sOiBcIjEwMDAxXCIsICAgICAgIC8v5Lyg6YCS5pON5L2c5o6n5Yi2XHJcbiAgICAgICAgc3RhcnRHYW1lOiBcIjEwMDAyXCIsICAgICAgLy/kvKDpgJLlvIDlp4vlu7rnrZFcclxuICAgICAgICBuZXh0OiBcIjEwMDAzXCIsICAgICAgICAgIC8v5Lyg6YCS5omn6KGM5LiL5LiA5Liq5qC85a2Q5rSq5rC05rWB6L+HXHJcbiAgICAgICAgY2hhbmdlUGF0aDogXCIxMDAwNFwiLCAgICAgICAvL+S8oOmAkuaTjeS9nOaOp+WItlxyXG4gICAgICAgIGNoYW5nZU1hcDogXCIxMDAwNVwiLCAgICAgICAgIC8v5pS55Y+Y6YKj5Zyw5Zu+XHJcbiAgICAgICAgbmV4dFdhdGVyOiBcIjEwMDA2XCIsICAgICAgICAgIC8v5Lyg6YCS5omn6KGM5LiL5LiA5Liq5qC85a2Q5rSq5rC05rWB6L+HXHJcbiAgICAgICAgYWRkRW5kOiBcIjEwMDA3XCIsICAgICAgICAgIC8v5re75Yqg57uT5p2f54K5XHJcbiAgICAgICAgc2V0RGF0YTogXCIxMDAwOFwiLCAgICAgICAgIC8v5LiK5Lyg5YiG5pWwXHJcbiAgICAgICAgZ3VpZGVOZXh0OiBcIjEwMDA5XCIsICAgICAgICAvL+W8leWvvOi/m+WFpeS4i+S4gOatpVxyXG4gICAgICAgIHNob3dSZXN1bHQ6IFwiMTAwMTBcIiwgICAgICAgICAgLy/lsZXnpLrmsrvmsLTnu5PmnpxcclxuICAgICAgICByZW1vdmVUaXA6IFwiMTAwMTFcIiAgICAgICAgICAvL+aJp+ihjOaSpOWbnuaIluiAheWQjumAgOWKqOS9nO+8jOenu+mZpOaPkOekulxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgICAgKiDlrqLmiLfnq6/ln4vngrnliIbkuqvnsbvlnotcclxuICAgICovXHJcbiAgICBjYy5meC5CdXJpYWxTaGFyZVR5cGUgPSB7XHJcbiAgICAgICAgRGVmYXVsdDogXCJkZWZhdWx0XCIsICAgICAgICAvL+m7mOiupOWIhuS6q+exu+WeiyzliIbkuqvliLDnvqRcclxuICAgICAgICBJbnZpdGU6IFwiaW52aXRlXCIsICAgICAgICAgIC8vIOmCgOivt+WlveWPi1xyXG5cclxuICAgICAgICBEYWlseUludml0ZVJvb21Kb2luOiAnaW52aXRlX2pvaW5fcm9vbScsIC8v6YKA6K+35aW95Y+L5Yqg5YWlXHJcbiAgICAgICAgRGFpbHlJbnZpdGVGcmllbmQ6ICdpbnZpdGVfZnJpZW5kJywgLy8g5pel5bi46YKA6K+35aW95Y+LXHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cDogJ2ludmF0ZV9ncm91cCcsIC8vIOaXpeW4uOWIhuS6q+e+pFxyXG4gICAgICAgIERhaWx5SW52aXRlR3JvdXBBbGl2ZTogJ2ludmF0ZV9hbGl2ZScsIC8v5pel5bi45YiG5Lqr576k5aSN5rS7XHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cFJld2FyZDogJ2ludmF0ZV9yZXdhcmVkJywvL+WIhuS6q+WlluWKsee/u+WAjVxyXG4gICAgICAgIERhaWx5SW52aXRlR3JvdXBCb3g6ICdpbnZhdGVfYm94JywgIC8v5a6d566x5YiG5Lqr5aWW5YqxXHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cEJhbGw6ICdpbnZhdGVfYmFsbCcsICAvL+WIhuS6q+mihuWPlueQg+eQg1xyXG5cclxuICAgICAgICBNYXRjaFJlc3VsdDogJ21hdGNoUmVzdWx0JywgIC8vIOavlOi1m+e7k+eul+WIhuS6q1xyXG4gICAgICAgIE1hdGNoRml4NTogJ01hdGNoRml4NScsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyA15YWD57qi5YyF6LWbXHJcbiAgICAgICAgTWF0Y2hGaXgyMDogJ01hdGNoRml4MjAnLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIw5YWD57qi5YyF6LWbXHJcbiAgICAgICAgTWF0Y2hGaXgxMDA6ICdNYXRjaEZpeDEwMCcsICAgICAgICAgICAgICAgICAgICAgIC8vIDEwMOWFg+e6ouWMhei1m1xyXG4gICAgICAgIE1hdGNoRml4NTAwOiAnTWF0Y2hGaXg1MDAnLCAgICAgICAgICAgICAgICAgICAgICAvLyA1MDDlhYPnuqLljIXotZtcclxuICAgICAgICBOZXdlclJlZEVudmVsb3BlOiAnbmV3ZXJSZWRFbnZlbG9wZScsICAgICAgICAgICAgLy8g5paw5omL57qi5YyFXHJcbiAgICAgICAgQ29pblJvb21SZXN1bHQ6ICdjb2luUm9vbVJlc3VsdCcsICAgICAgICAgICAgICAgIC8vIOmHkeW4geahjOe7k+eul1xyXG4gICAgICAgIEhpZ2hSYXRlOiBcImhpZ2hSYXRlXCIsLy/pq5jlgI3liIbkuqtcclxuICAgICAgICBDb2luUm9vbVdpblN0cmVhazogJ2NvaW5Sb29tV2luU3RyZWFrJywgICAgICAgICAvLyDov57og5xcclxuICAgICAgICBDb2luUm9vbUJhbmtydXB0Y3kxOiAnY29pblJvb21CYW5rcnVwdGN5MScsICAgICAgICAgLy8g6YeR5biB5qGM56C05LqnXHJcbiAgICAgICAgQ29pblJvb21CYW5rcnVwdGN5MjogJ2NvaW5Sb29tQmFua3J1cHRjeTInLCAgICAgICAgIC8vIOmHkeW4geahjOegtOS6p1xyXG4gICAgICAgIENvaW5Sb29tQmFua3J1cHRjeTM6ICdjb2luUm9vbUJhbmtydXB0Y3kzJywgICAgICAgICAvLyDph5HluIHmoYznoLTkuqdcclxuICAgIH07XHJcblxyXG4gICAgLypcclxuICAgICAqIOWIhuS6q+WIsOWTquWEv+e7meWlluWKsSBncm91cCBmcmluZWQgYWxsXHJcbiAgICAgKi9cclxuICAgIGNjLmZ4LlNoYXJlV2hlcmVSZXdhcmQgPSB7XHJcbiAgICAgICAgR3JvdXA6IFwiZ3JvdXBcIiwgLy/lvq7kv6HnvqRcclxuICAgICAgICBGcmllbmQ6IFwiZnJpZW5kXCIsLy/lpb3lj4tcclxuICAgICAgICBBbGw6IFwiYWxsXCIsIC8v5LiN5Yy65YiGXHJcbiAgICB9O1xyXG5cclxuICAgIC8v55So5LqO5a2Y5YKo5raI5oGv55qESURcclxuICAgIGNjLmZ4LnN0b3JhZ2VUeXBlID0gY2MuRW51bSh7XHJcbiAgICAgICAgc3RvcmFnZVR5cGVDdXN0b206IDEwMDAxMDEsIC8v55So5LqO5a2Y5YKo5YWz5Y2h562J57qnXHJcbiAgICB9KTtcclxuXHJcbiAgICAvL+eUqOS6juWtmOWCqOaPkOekuuivrSAg5oyJ54Wn5q2l6aqk5o+Q56S6XHJcbiAgICBjYy5meC50aXBUeXBlID0gY2MuRW51bSh7XHJcbiAgICAgICAgdGlwT25lOiAn56We5Yac5rCP5Zue5Yiw5a625Lit77yM5byA5aeL5pW055CG5LuK5aSp5pS26ZuG5p2l55qE54mp5ZOB44CC5b2T5LuW56ys5LiA5qyh5ou/5Ye65oiW6K+05Ye65LiA56eN5qSN54mp5pe277yM6K+35ZGK6K+J5LuW6L+Z5piv5paw5qSN54mp44CCJyxcclxuICAgICAgICB0aXBUd286ICflpoLmnpzku5bmi7/lh7rmiJbor7Tlh7rnmoTmpI3niankvaDku4rlpKnnnIvliLDov4fvvIzor7flkYror4nku5bkuIrmrKHmmK/nnIvliLDnmoTvvJvlpoLmnpzkvaDlkKzku5bor7Tov4fvvIzliJnor7flkYror4nku5bkuIrmrKHmmK/lkKzliLDnmoTjgIInLCAvL+eUqOS6juWtmOWCqOWFs+WNoeetiee6p1xyXG4gICAgICAgIHRpcEVyck5ldzogJ+i/meaYr+i/meWxgOa4uOaIj+esrOS4gOasoeWHuueOsHvmpI3nial9JyxcclxuICAgICAgICB0aXBFcnJPbGQ6ICd75qSN54mpfeWImuaJjeWHuueOsOi/h+WRoicsXHJcbiAgICAgICAgdGlwRXJySGVhcjogJ+S4iuasoemBh+WIsHvmpI3nial95pe277yM5Ly85LmO5LiN5piv5ZCs5Yiw55qE5ZCnJyxcclxuICAgICAgICB0aXBFcnJTZWU6ICfkuIrmrKHpgYfliLB75qSN54mpfeaXtu+8jOS8vOS5juS4jeaYr+eci+WIsOeahOWQpycsXHJcbiAgICAgICAgdGlwRXJyTGFzdDogJ+S5i+WJjeehruWunueci+WIsOi/h3vmpI3nial977yM5L2G5pyA6L+R5LiA5qyh5Ly85LmO5LiN5piv55yL5Yiw55qE5ZGiJyxcclxuXHJcbiAgICB9KTtcclxuXHJcbn07Il19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_const.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '98309gPXUxEF6zBe9e75Knb', 'lq_const'); -// Script/lq_base/data/lq_const.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQConst = exports.LQOperateType = exports.LQLevelStatus = exports.LQAdErrStr = exports.LQCallAd = exports.LQCallBase = exports.LQAnalysisTag = exports.LQByteDanceType = exports.LQPlatformType = exports.LQHttpDataType = exports.LQHttpRequestType = exports.LQEasing = exports.LQCollideStatus = exports.LQFollowTargetMode = exports.LQCollideShape = exports.LQBulletEmitterStatus = exports.LQRecordStatus = void 0; -var Vec2 = cc.Vec2; -var LQRecordStatus; -(function (LQRecordStatus) { - LQRecordStatus[LQRecordStatus["Idle"] = 0] = "Idle"; - LQRecordStatus[LQRecordStatus["Start"] = 1] = "Start"; - LQRecordStatus[LQRecordStatus["Pause"] = 2] = "Pause"; -})(LQRecordStatus = exports.LQRecordStatus || (exports.LQRecordStatus = {})); -var LQBulletEmitterStatus; -(function (LQBulletEmitterStatus) { - LQBulletEmitterStatus[LQBulletEmitterStatus["Idle"] = 0] = "Idle"; - LQBulletEmitterStatus[LQBulletEmitterStatus["Start"] = 1] = "Start"; - LQBulletEmitterStatus[LQBulletEmitterStatus["End"] = 2] = "End"; -})(LQBulletEmitterStatus = exports.LQBulletEmitterStatus || (exports.LQBulletEmitterStatus = {})); -var LQCollideShape; -(function (LQCollideShape) { - LQCollideShape[LQCollideShape["Rect"] = 1] = "Rect"; - LQCollideShape[LQCollideShape["Circle"] = 2] = "Circle"; - LQCollideShape[LQCollideShape["Polygon"] = 3] = "Polygon"; -})(LQCollideShape = exports.LQCollideShape || (exports.LQCollideShape = {})); -var LQFollowTargetMode; -(function (LQFollowTargetMode) { - LQFollowTargetMode[LQFollowTargetMode["Always"] = 0] = "Always"; - LQFollowTargetMode[LQFollowTargetMode["Once"] = 1] = "Once"; - LQFollowTargetMode[LQFollowTargetMode["Pass"] = 2] = "Pass"; -})(LQFollowTargetMode = exports.LQFollowTargetMode || (exports.LQFollowTargetMode = {})); -var LQCollideStatus; -(function (LQCollideStatus) { - LQCollideStatus[LQCollideStatus["Idle"] = 0] = "Idle"; - LQCollideStatus[LQCollideStatus["Live"] = 1] = "Live"; -})(LQCollideStatus = exports.LQCollideStatus || (exports.LQCollideStatus = {})); -var LQEasing; -(function (LQEasing) { - LQEasing["BackIn"] = "backIn"; - LQEasing["BackOut"] = "backOut"; - LQEasing["quadIn"] = "quadIn"; - LQEasing["quadOut"] = "quadOut"; - LQEasing["quadInOut"] = "quadInOut"; - LQEasing["cubicIn"] = "cubicIn"; - LQEasing["expoOut"] = "expoOut"; -})(LQEasing = exports.LQEasing || (exports.LQEasing = {})); -var LQHttpRequestType; -(function (LQHttpRequestType) { - LQHttpRequestType["Get"] = "get"; - LQHttpRequestType["Post"] = "post"; -})(LQHttpRequestType = exports.LQHttpRequestType || (exports.LQHttpRequestType = {})); -var LQHttpDataType; -(function (LQHttpDataType) { - LQHttpDataType[LQHttpDataType["Text"] = 0] = "Text"; - LQHttpDataType[LQHttpDataType["Binary"] = 1] = "Binary"; -})(LQHttpDataType = exports.LQHttpDataType || (exports.LQHttpDataType = {})); -var LQPlatformType; -(function (LQPlatformType) { - LQPlatformType["unknown"] = "\u672A\u77E5\u5E73\u53F0"; - LQPlatformType["all"] = "\u5168\u5E73\u53F0"; - LQPlatformType["wx"] = "\u5FAE\u4FE1"; - LQPlatformType["tt"] = "\u5B57\u8282\u8DF3\u52A8"; - LQPlatformType["oppo"] = "oppo"; - LQPlatformType["vivo"] = "vivo"; - LQPlatformType["qq"] = "qq"; - LQPlatformType["baidu"] = "\u767E\u5EA6"; - LQPlatformType["kwaigame"] = "\u5FEB\u624B"; - LQPlatformType["android"] = "\u5B89\u5353"; - LQPlatformType["ios"] = "\u82F9\u679C"; - LQPlatformType["browser"] = "\u6D4F\u89C8\u5668"; -})(LQPlatformType = exports.LQPlatformType || (exports.LQPlatformType = {})); -var LQByteDanceType; -(function (LQByteDanceType) { - LQByteDanceType["tt"] = "\u5934\u6761"; - LQByteDanceType["tt_lite"] = "\u5934\u6761\u6781\u901F\u7248"; - LQByteDanceType["douyin"] = "\u6296\u97F3"; - LQByteDanceType["douyin_lite"] = "\u6296\u97F3\u6781\u901F\u7248"; - LQByteDanceType["ppx"] = "\u76AE\u76AE\u867E"; - LQByteDanceType["devtools"] = "\u5B57\u8282\u5F00\u53D1\u5DE5\u5177"; -})(LQByteDanceType = exports.LQByteDanceType || (exports.LQByteDanceType = {})); -var LQAnalysisTag; -(function (LQAnalysisTag) { - LQAnalysisTag["VideoComplete"] = "video_complete"; - LQAnalysisTag["VideoBegin"] = "video_begin"; - LQAnalysisTag["VideoInterrupt"] = "video_interrupt"; - LQAnalysisTag["InterstitialShow"] = "interstitial_show"; - LQAnalysisTag["BannerShow"] = "banner_show"; - LQAnalysisTag["ExportShow"] = "export_show"; - LQAnalysisTag["NativeShow"] = "native_show"; - LQAnalysisTag["NativeClick"] = "native_show"; -})(LQAnalysisTag = exports.LQAnalysisTag || (exports.LQAnalysisTag = {})); -var LQCallBase; -(function (LQCallBase) { - LQCallBase[LQCallBase["InitSdk"] = 0] = "InitSdk"; - LQCallBase[LQCallBase["KeepScreenOn"] = 1] = "KeepScreenOn"; - LQCallBase[LQCallBase["Vibrate"] = 2] = "Vibrate"; - LQCallBase[LQCallBase["GetVersionCode"] = 3] = "GetVersionCode"; - LQCallBase[LQCallBase["GetVersionName"] = 4] = "GetVersionName"; - LQCallBase[LQCallBase["OpenUrl"] = 5] = "OpenUrl"; - LQCallBase[LQCallBase["DeleteDir"] = 6] = "DeleteDir"; - LQCallBase[LQCallBase["DeleteFile"] = 7] = "DeleteFile"; -})(LQCallBase = exports.LQCallBase || (exports.LQCallBase = {})); -var LQCallAd; -(function (LQCallAd) { - LQCallAd[LQCallAd["ShowBanner"] = 0] = "ShowBanner"; - LQCallAd[LQCallAd["HideBanner"] = 1] = "HideBanner"; - LQCallAd[LQCallAd["ShowVideo"] = 2] = "ShowVideo"; - LQCallAd[LQCallAd["ShowInterstitial"] = 3] = "ShowInterstitial"; - LQCallAd[LQCallAd["ShowNative"] = 4] = "ShowNative"; - LQCallAd[LQCallAd["CacheAd"] = 5] = "CacheAd"; -})(LQCallAd = exports.LQCallAd || (exports.LQCallAd = {})); -var LQAdErrStr; -(function (LQAdErrStr) { - LQAdErrStr["Unsupported"] = "\u4E0D\u652F\u6301"; - LQAdErrStr["NoParameters"] = "\u6CA1\u6709\u914D\u7F6E\u53C2\u6570"; - LQAdErrStr["NoAD"] = "\u6682\u65E0\u5E7F\u544A"; - LQAdErrStr["VersionOld"] = "\u7248\u672C\u8FC7\u4F4E"; - LQAdErrStr["VideoInterrupt"] = "\u4E2D\u65AD\u64AD\u653E"; - LQAdErrStr["InstanceErr"] = "\u5B9E\u4F8B\u4E3A\u7A7A"; - LQAdErrStr["AlreadyExist"] = "\u5DF2\u7ECF\u5B58\u5728"; - LQAdErrStr["IntervalTooShort"] = "\u95F4\u9694\u592A\u77ED"; -})(LQAdErrStr = exports.LQAdErrStr || (exports.LQAdErrStr = {})); -var LQLevelStatus; -(function (LQLevelStatus) { - LQLevelStatus[LQLevelStatus["Begin"] = 0] = "Begin"; - LQLevelStatus[LQLevelStatus["Failed"] = 1] = "Failed"; - LQLevelStatus[LQLevelStatus["Complete"] = 2] = "Complete"; -})(LQLevelStatus = exports.LQLevelStatus || (exports.LQLevelStatus = {})); -var LQOperateType; -(function (LQOperateType) { - LQOperateType[LQOperateType["ClickNode"] = 0] = "ClickNode"; - LQOperateType[LQOperateType["ClickScreen"] = 1] = "ClickScreen"; - LQOperateType[LQOperateType["Move"] = 2] = "Move"; - LQOperateType[LQOperateType["Null"] = 3] = "Null"; -})(LQOperateType = exports.LQOperateType || (exports.LQOperateType = {})); -var LQConst = /** @class */ (function () { - function LQConst() { - } - LQConst.VEC_ZERO = Vec2.ZERO; - return LQConst; -}()); -exports.LQConst = LQConst; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRXRCLElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN0QixtREFBSSxDQUFBO0lBQUUscURBQUssQ0FBQTtJQUFFLHFEQUFLLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBRXpCO0FBRUQsSUFBWSxxQkFFWDtBQUZELFdBQVkscUJBQXFCO0lBQzdCLGlFQUFJLENBQUE7SUFBRSxtRUFBSyxDQUFBO0lBQUUsK0RBQUcsQ0FBQTtBQUNwQixDQUFDLEVBRlcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFFaEM7QUFFRCxJQUFZLGNBRVg7QUFGRCxXQUFZLGNBQWM7SUFDdEIsbURBQVEsQ0FBQTtJQUFFLHVEQUFNLENBQUE7SUFBRSx5REFBTyxDQUFBO0FBQzdCLENBQUMsRUFGVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQUV6QjtBQUVELElBQVksa0JBRVg7QUFGRCxXQUFZLGtCQUFrQjtJQUMxQiwrREFBTSxDQUFBO0lBQUUsMkRBQUksQ0FBQTtJQUFFLDJEQUFJLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBRTdCO0FBRUQsSUFBWSxlQUVYO0FBRkQsV0FBWSxlQUFlO0lBQ3ZCLHFEQUFJLENBQUE7SUFBRSxxREFBSSxDQUFBO0FBQ2QsQ0FBQyxFQUZXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBRTFCO0FBRUQsSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2hCLDZCQUFpQixDQUFBO0lBQUUsK0JBQW1CLENBQUE7SUFBRSw2QkFBaUIsQ0FBQTtJQUN6RCwrQkFBbUIsQ0FBQTtJQUFFLG1D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O0lBQUUsaURBQUksQ0FBQTtBQUN0QyxDQUFDLEVBRlcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFFeEI7QUFFRDtJQUFBO0lBRUEsQ0FBQztJQURpQixnQkFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkMsY0FBQztDQUZELEFBRUMsSUFBQTtBQUZZLDBCQUFPIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZlYzIgPSBjYy5WZWMyO1xyXG5cclxuZXhwb3J0IGVudW0gTFFSZWNvcmRTdGF0dXMge1xyXG4gICAgSWRsZSwgU3RhcnQsIFBhdXNlXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQnVsbGV0RW1pdHRlclN0YXR1cyB7XHJcbiAgICBJZGxlLCBTdGFydCwgRW5kXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ29sbGlkZVNoYXBlIHtcclxuICAgIFJlY3QgPSAxLCBDaXJjbGUsIFBvbHlnb25cclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFGb2xsb3dUYXJnZXRNb2RlIHtcclxuICAgIEFsd2F5cywgT25jZSwgUGFzc1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNvbGxpZGVTdGF0dXMge1xyXG4gICAgSWRsZSwgTGl2ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUVhc2luZyB7XHJcbiAgICBCYWNrSW4gPSAnYmFja0luJywgQmFja091dCA9ICdiYWNrT3V0JywgcXVhZEluID0gJ3F1YWRJbicsXHJcbiAgICBxdWFkT3V0ID0gJ3F1YWRPdXQnLCBxdWFkSW5PdXQgPSAncXVhZEluT3V0JywgY3ViaWNJbiA9ICdjdWJpY0luJywgZXhwb091dCA9ICdleHBvT3V0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBSZXF1ZXN0VHlwZSB7XHJcbiAgICBHZXQgPSAnZ2V0JywgUG9zdCA9ICdwb3N0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBEYXRhVHlwZSB7XHJcbiAgICBUZXh0LCBCaW5hcnlcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFQbGF0Zm9ybVR5cGUge1xyXG4gICAgdW5rbm93biA9ICfmnKrnn6XlubPlj7AnLCBhbGwgPSAn5YWo5bmz5Y+wJywgd3ggPSAn5b6u5L+hJywgdHQgPSAn5a2X6IqC6Lez5YqoJywgb3BwbyA9ICdvcHBvJywgdml2byA9ICd2aXZvJywgcXEgPSAncXEnLCBiYWlkdSA9ICfnmb7luqYnLCBrd2FpZ2FtZSA9ICflv6vmiYsnLCBhbmRyb2lkID0gJ+WuieWNkycsIGlvcyA9ICfoi7nmnpwnLCBicm93c2VyID0gJ+a1j+iniOWZqCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFCeXRlRGFuY2VUeXBlIHtcclxuICAgIHR0ID0gJ+WktOadoScsIHR0X2xpdGUgPSAn5aS05p2h5p6B6YCf54mIJywgZG91eWluID0gJ+aKlumfsycsIGRvdXlpbl9saXRlID0gJ+aKlumfs+aegemAn+eJiCcsIHBweCA9ICfnmq7nmq7omb4nLCBkZXZ0b29scyA9ICflrZfoioLlvIDlj5Hlt6XlhbcnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQW5hbHlzaXNUYWcge1xyXG4gICAgVmlkZW9Db21wbGV0ZSA9ICd2aWRlb19jb21wbGV0ZScsIFZpZGVvQmVnaW4gPSAndmlkZW9fYmVnaW4nLCBWaWRlb0ludGVycnVwdCA9ICd2aWRlb19pbnRlcnJ1cHQnLCBJbnRlcnN0aXRpYWxTaG93ID0gJ2ludGVyc3RpdGlhbF9zaG93JywgQmFubmVyU2hvdyA9ICdiYW5uZXJfc2hvdycsIEV4cG9ydFNob3cgPSAnZXhwb3J0X3Nob3cnLCBOYXRpdmVTaG93ID0gJ25hdGl2ZV9zaG93JywgTmF0aXZlQ2xpY2sgPSAnbmF0aXZlX3Nob3cnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ2FsbEJhc2Uge1xyXG4gICAgSW5pdFNkaywgS2VlcFNjcmVlbk9uLCBWaWJyYXRlLCBHZXRWZXJzaW9uQ29kZSwgR2V0VmVyc2lvbk5hbWUsIE9wZW5VcmwsIERlbGV0ZURpciwgRGVsZXRlRmlsZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNhbGxBZCB7XHJcbiAgICBTaG93QmFubmVyLCBIaWRlQmFubmVyLCBTaG93VmlkZW8sIFNob3dJbnRlcnN0aXRpYWwsIFNob3dOYXRpdmUsIENhY2hlQWRcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFBZEVyclN0ciB7XHJcbiAgICBVbnN1cHBvcnRlZCA9ICfkuI3mlK/mjIEnLCBOb1BhcmFtZXRlcnMgPSAn5rKh5pyJ6YWN572u5Y+C5pWwJywgTm9BRCA9ICfmmoLml6Dlub/lkYonLCBWZXJzaW9uT2xkID0gJ+eJiOacrOi/h+S9jicsIFZpZGVvSW50ZXJydXB0ID0gJ+S4reaWreaSreaUvicsIEluc3RhbmNlRXJyID0gJ+WunuS+i+S4uuepuicsIEFscmVhZHlFeGlzdCA9ICflt7Lnu4/lrZjlnKgnLCBJbnRlcnZhbFRvb1Nob3J0ID0gJ+mXtOmalOWkquefrSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFMZXZlbFN0YXR1cyB7XHJcbiAgICBCZWdpbiwgRmFpbGVkLCBDb21wbGV0ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUU9wZXJhdGVUeXBlIHtcclxuICAgIENsaWNrTm9kZSwgQ2xpY2tTY3JlZW4sIE1vdmUsIE51bGxcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExRQ29uc3Qge1xyXG4gICAgcHVibGljIHN0YXRpYyBWRUNfWkVSTyA9IFZlYzIuWkVSTztcclxufVxyXG5cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Music/AudioManager.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '58403/n16JCa5sZhNMjZzGo', 'AudioManager'); -// Script/module/Music/AudioManager.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var AudioManager = /** @class */ (function (_super) { - __extends(AudioManager, _super); - function AudioManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - //背景音乐 - _this.audioGameBgm0 = null; - _this.xiaochu = null; - _this.hit = null; - _this.down = null; - _this.fangxiang = null; - _this.build = null; - _this.win = null; - _this.lose = null; - _this.anniu_Big = null; - _this.anniu_little = null; - _this.zhuan1 = null; - _this.zhuan2 = null; - return _this; - } - AudioManager_1 = AudioManager; - AudioManager.prototype.onLoad = function () { - if (AudioManager_1._instance == null) { - AudioManager_1._instance = this; - cc.fx.AudioManager = AudioManager_1; - cc.game.addPersistRootNode(this.node); - } - else { - return; - } - this.reward = false; - this.finish = false; - this.rewardCount = 0; - this.ctor(); - this.preload(); - }; - AudioManager.prototype.ctor = function () { - this.mAudioMap = {}; - /** - * 默认音量大小 - * @type {number} - */ - this.bgMusicVolume = 0.1; - this.effectMusicVolume = 1; - this.mMusicSwitch = 1; - this.mEffectSwitch = 1; - }; - AudioManager.prototype.play = function (audioSource, loop, callback, isBgMusic) { - // if (isBgMusic && !this.mMusicSwitch) return; - // if (!isBgMusic && !this.mEffectSwitch) return; - var volume = isBgMusic ? this.bgMusicVolume : this.effectMusicVolume; - // if (cc.sys.isBrowser) { - // if(audioSource == this.brickSound){ - // volume = 0.1; - // } - volume = 1; - cc.audioEngine.setEffectsVolume(1); - cc.audioEngine.setMusicVolume(1); - if (audioSource.name == "lose") { - cc.audioEngine.setEffectsVolume(0.5); - } - else { - cc.audioEngine.setEffectsVolume(1); - } - var context = cc.audioEngine.playEffect(audioSource, loop); - if (callback) { - cc.audioEngine.setFinishCallback(context, function () { - callback.call(this); - }.bind(this)); - } - // cc.wwx.OutPut.log('play audio effect isBrowser: ' + context.src); - this.mAudioMap[audioSource] = context; - return audioSource; - // } else { - // return audioSource; - // } - }; - AudioManager.prototype.save = function () { - // cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Music_Volume, this.mMusicSwitch); - // cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Effect_Volume, this.mEffectSwitch); - }; - // static get Instance() - // { - // if (this._instance == null) - // { - // this._instance = new AudioManager(); - // } - // return this._instance; - // } - AudioManager.prototype.preload = function () { - if (!(cc.sys.platform === cc.sys.WECHAT_GAME)) { - return; - } - var musics = [ - this.audioGameBgm0, - ]; - musics.forEach(function (path) { - }); - console.log("音乐开关", cc.fx.GameConfig.GM_INFO.musicOpen); - this.playMusicGame(); - }; - AudioManager.prototype.getAudioMusicSwitch = function () { - return this.mMusicSwitch; - }; - AudioManager.prototype.getAudioEffectSwitch = function () { - return this.mEffectSwitch; - }; - AudioManager.prototype.trunAudioSound = function (on) { - this.switchMusic(on); - this.switchEffect(on); - }; - AudioManager.prototype.switchMusic = function (on) { - if (this.mMusicSwitch != (on ? 1 : 0)) { - this.mMusicSwitch = 1 - this.mMusicSwitch; - // this.save(); - } - if (on) { - this.playMusicGame(); - } - else { - this.stopMusic(); - } - }; - AudioManager.prototype.switchEffect = function (on) { - if (this.mEffectSwitch != (on ? 1 : 0)) { - this.mEffectSwitch = 1 - this.mEffectSwitch; - // this.save(); - } - }; - AudioManager.prototype.onHide = function () { - cc.audioEngine.pauseAll(); - }; - AudioManager.prototype.onShow = function () { - cc.audioEngine.resumeAll(); - }; - //播放音效 - AudioManager.prototype.playEffect = function (name, callback) { - if (!cc.fx.GameConfig.GM_INFO.effectOpen) { - return; - } - if (this[name]) - return this.play(this[name], false, callback, this.mEffectSwitch); - }; - AudioManager.prototype.playMusic = function (key, callback, loop) { - if (!cc.fx.GameConfig.GM_INFO.musicOpen) { - return; - } - loop = typeof loop == 'undefined' || loop ? true : false; - this.stopMusic(); - this.mMusicKey = this.play(key, loop, callback, true); - }; - /** - * 游戏背景音乐 - */ - AudioManager.prototype.playMusicGame = function () { - this.stopMusic(); - this.playMusic(this.audioGameBgm0, {}, true); - }; - /** - * 停止背景音乐播放 - */ - AudioManager.prototype.stopMusic = function () { - // cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey); - cc.audioEngine.stopAll(); - }; - /** - * 恢复被暂停的背景音乐播放 - */ - AudioManager.prototype.resumeMusic = function () { - // 调用 cc.audioEngine 的 resumeMusic 方法恢复音乐播放 - cc.audioEngine.resumeMusic(); - }; - /* - * 游戏开始音效 - * - */ - AudioManager.prototype.playGameStart = function () { - }; - /* - * 失败的游戏结束 - */ - AudioManager.prototype.playGameOver = function () { - }; - /* - * 成功的游戏结束 - */ - AudioManager.prototype.playGameResultFailed = function () { - }; - /* - * 成功的游戏结束 - */ - AudioManager.prototype.playGameResultSuccess = function () { - }; - /** - * 报警的音效 - */ - /** - * 按钮 - */ - AudioManager.prototype.playAudioButton = function () { - // return this.play(this.audioButtonClick, false,null,this.mEffectSwitch); - }; - var AudioManager_1; - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "audioGameBgm0", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "xiaochu", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "hit", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "down", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "fangxiang", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "build", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "win", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "lose", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "anniu_Big", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "anniu_little", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "zhuan1", void 0); - __decorate([ - property(cc.AudioClip) - ], AudioManager.prototype, "zhuan2", void 0); - AudioManager = AudioManager_1 = __decorate([ - ccclass - ], AudioManager); - return AudioManager; -}(cc.Component)); -exports.default = AudioManager; -; -// export { AudioManager }; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE11c2ljXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFFNUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUFpUEM7UUEvT0csTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUduQyxhQUFPLEdBQWlCLElBQUksQ0FBQztRQUU3QixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixXQUFLLEdBQWlCLElBQUksQ0FBQztRQUUzQixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixrQkFBWSxHQUFpQixJQUFJLENBQUM7UUFFbEMsWUFBTSxHQUFpQixJQUFJLENBQUM7UUFFNUIsWUFBTSxHQUFpQixJQUFJLENBQUM7O0lBc05oQyxDQUFDO3FCQWpQb0IsWUFBWTtJQXdDN0IsNkJBQU0sR0FBTjtRQUNJLElBQUksY0FBWSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDaEMsY0FBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDOUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxZQUFZLEdBQUcsY0FBWSxDQUFDO1lBQ2xDLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3pDO2FBQ0k7WUFDRCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztR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SUFDTiwyQ0FBb0IsR0FBcEI7SUFFQSxDQUFDO0lBQ0Q7O01BRUU7SUFDRiw0Q0FBcUIsR0FBckI7SUFFQSxDQUFDO0lBQ0Q7O09BRUc7SUFFSDs7T0FFRztJQUNILHNDQUFlLEdBQWY7UUFDSSwwRUFBMEU7SUFDOUUsQ0FBQzs7SUE1T0Q7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzt1REFDWTtJQUduQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2lEQUNNO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7NkNBQ0U7SUFFekI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs4Q0FDRztJQUUxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO21EQUNRO0lBRS9CO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7K0NBQ0k7SUFFM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs2Q0FDRTtJQUV6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDOzhDQUNHO0lBRTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7bURBQ1E7SUFFL0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztzREFDVztJQUVsQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2dEQUNLO0lBRTVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0RBQ0s7SUEzQlgsWUFBWTtRQURoQyxPQUFPO09BQ2EsWUFBWSxDQWlQaEM7SUFBRCxtQkFBQztDQWpQRCxBQWlQQyxDQWpQeUMsRUFBRSxDQUFDLFNBQVMsR0FpUHJEO2tCQWpQb0IsWUFBWTtBQWlQaEMsQ0FBQztBQUVGLDJCQUEyQiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xuQGNjY2xhc3NcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xuICAgIC8v6IOM5pmv6Z+z5LmQXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICBhdWRpb0dhbWVCZ20wOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcbiAgICB4aWFvY2h1OiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgaGl0OiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgZG93bjogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGZhbmd4aWFuZzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGJ1aWxkOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgd2luOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXG4gICAgbG9zZTogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGFubml1X0JpZzogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIGFubml1X2xpdHRsZTogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIHpodWFuMTogY2MuQXVkaW9DbGlwID0gbnVsbDtcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxuICAgIHpodWFuMjogY2MuQXVkaW9DbGlwID0gbnVsbDtcblxuICAgIG1BdWRpb01hcDoge307XG4gICAgYmdNdXNpY1ZvbHVtZTogbnVtYmVyO1xuICAgIGVmZmVjdE11c2ljVm9sdW1lOiBudW1iZXI7XG4gICAgbU11c2ljU3dpdGNoOiBudW1iZXI7XG4gICAgbUVmZmVjdFN3aXRjaDogbnVtYmVyO1xuICAgIGJyaWNrU291bmQ6IGFueTtcbiAgICByZXdhcmQ6IGJvb2xlYW47XG4gICAgZmluaXNoOiBib29sZWFuO1xuICAgIHJld2FyZENvdW50OiBudW1iZXI7XG4gICAgbU11c2ljS2V5OiBhbnk7XG5cbiAgICBvbkxvYWQoKSB7XG4gICAgICAgIGlmIChBdWRpb01hbmFnZXIuX2luc3RhbmNlID09IG51bGwpIHtcbiAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyID0gQXVkaW9NYW5hZ2VyO1xuICAgICAgICAgICAgY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJld2FyZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmZpbmlzaCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnJld2FyZENvdW50ID0gMDtcbiAgICAgICAgdGhpcy5jdG9yKCk7XG5cbiAgICAgICAgdGhpcy5wcmVsb2FkKCk7XG4gICAgfVxuXG4gICAgY3RvcigpIHtcbiAgICAgICAgdGhpcy5tQXVkaW9NYXAgPSB7fTtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIOm7mOiupOmfs+mHj+Wkp+Wwj1xuICAgICAgICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5iZ011c2ljVm9sdW1lID0gMC4xO1xuICAgICAgICB0aGlzLmVmZmVjdE11c2ljVm9sdW1lID0gMTtcblxuICAgICAgICB0aGlzLm1NdXNpY1N3aXRjaCA9IDE7XG4gICAgICAgIHRoaXMubUVmZmVjdFN3aXRjaCA9IDE7XG4gICAgfVxuICAgIHBsYXkoYXVkaW9Tb3VyY2UsIGxvb3AsIGNhbGxiYWNrLCBpc0JnTXVzaWMpIHtcbiAgICAgICAgLy8gaWYgKGlzQmdNdXNpYyAmJiAhdGhpcy5tTXVzaWNTd2l0Y2gpIHJldHVybjtcbiAgICAgICAgLy8gaWYgKCFpc0JnTXVzaWMgJiYgIXRoaXMubUVmZmVjdFN3aXRjaCkgcmV0dXJuO1xuICAgICAgICB2YXIgdm9sdW1lID0gaXNCZ011c2ljID8gdGhpcy5iZ011c2ljVm9sdW1lIDogdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZTtcblxuICAgICAgICAvLyBpZiAoY2Muc3lzLmlzQnJvd3Nlcikge1xuICAgICAgICAvLyBpZihhdWRpb1NvdXJjZSA9PSB0aGlzLmJyaWNrU291bmQpe1xuICAgICAgICAvLyAgICAgdm9sdW1lID0gMC4xO1xuICAgICAgICAvLyB9IFxuICAgICAgICB2b2x1bWUgPSAxO1xuICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRFZmZlY3RzVm9sdW1lKDEpO1xuICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRNdXNpY1ZvbHVtZSgxKTtcbiAgICAgICAgaWYgKGF1ZGlvU291cmNlLm5hbWUgPT0gXCJsb3NlXCIpIHtcbiAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnNldEVmZmVjdHNWb2x1bWUoMC41KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNjLmF1ZGlvRW5naW5lLnNldEVmZmVjdHNWb2x1bWUoMSk7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGNvbnRleHQgPSBjYy5hdWRpb0VuZ2luZS5wbGF5RWZmZWN0KGF1ZGlvU291cmNlLCBsb29wKTtcbiAgICAgICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhjb250ZXh0LCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzKTtcbiAgICAgICAgICAgIH0uYmluZCh0aGlzKSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY2Mud3d4Lk91dFB1dC5sb2coJ3BsYXkgYXVkaW8gZWZmZWN0IGlzQnJvd3NlcjogJyArIGNvbnRleHQuc3JjKTtcblxuICAgICAgICB0aGlzLm1BdWRpb01hcFthdWRpb1NvdXJjZV0gPSBjb250ZXh0O1xuICAgICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XG4gICAgICAgIC8vIH0gZWxzZSB7XG4gICAgICAgIC8vICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICBzYXZlKCkge1xuICAgICAgICAvLyBjYy53d3guU3RvcmFnZS5zZXRJdGVtKGNjLnd3eC5TdG9yYWdlLktleV9TZXR0aW5nX011c2ljX1ZvbHVtZSwgdGhpcy5tTXVzaWNTd2l0Y2gpO1xuICAgICAgICAvLyBjYy53d3guU3RvcmFnZS5zZXRJdGVtKGNjLnd3eC5TdG9yYWdlLktleV9TZXR0aW5nX0VmZmVjdF9Wb2x1bWUsIHRoaXMubUVmZmVjdFN3aXRjaCk7XG4gICAgfVxuXG4gICAgLy8gc3RhdGljIGdldCBJbnN0YW5jZSgpXG4gICAgLy8ge1xuICAgIC8vICAgICBpZiAodGhpcy5faW5zdGFuY2UgPT0gbnVsbClcbiAgICAvLyAgICAge1xuICAgIC8vICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgQXVkaW9NYW5hZ2VyKCk7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICAgIC8vIH1cblxuICAgIHByZWxvYWQoKSB7XG4gICAgICAgIGlmICghKGNjLnN5cy5wbGF0Zm9ybSA9PT0gY2Muc3lzLldFQ0hBVF9HQU1FKSkgeyByZXR1cm47IH1cblxuICAgICAgICB2YXIgbXVzaWNzID0gW1xuICAgICAgICAgICAgdGhpcy5hdWRpb0dhbWVCZ20wLFxuICAgICAgICBdO1xuICAgICAgICBtdXNpY3MuZm9yRWFjaChmdW5jdGlvbiAocGF0aCkge1xuICAgICAgICB9KVxuICAgICAgICBjb25zb2xlLmxvZyhcIumfs+S5kOW8gOWFs1wiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuKTtcbiAgICAgICAgdGhpcy5wbGF5TXVzaWNHYW1lKCk7XG4gICAgfVxuXG4gICAgZ2V0QXVkaW9NdXNpY1N3aXRjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubU11c2ljU3dpdGNoO1xuXG4gICAgfVxuICAgIGdldEF1ZGlvRWZmZWN0U3dpdGNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5tRWZmZWN0U3dpdGNoO1xuICAgIH1cbiAgICB0cnVuQXVkaW9Tb3VuZChvbikge1xuICAgICAgICB0aGlzLnN3aXRjaE11c2ljKG9uKTtcbiAgICAgICAgdGhpcy5zd2l0Y2hFZmZlY3Qob24pXG4gICAgfVxuICAgIHN3aXRjaE11c2ljKG9uKSB7XG4gICAgICAgIGlmICh0aGlzLm1NdXNpY1N3aXRjaCAhPSAob24gPyAxIDogMCkpIHtcbiAgICAgICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMSAtIHRoaXMubU11c2ljU3dpdGNoO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9uKSB7XG4gICAgICAgICAgICB0aGlzLnBsYXlNdXNpY0dhbWUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgc3dpdGNoRWZmZWN0KG9uKSB7XG4gICAgICAgIGlmICh0aGlzLm1FZmZlY3RTd2l0Y2ggIT0gKG9uID8gMSA6IDApKSB7XG4gICAgICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxIC0gdGhpcy5tRWZmZWN0U3dpdGNoO1xuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XG5cbiAgICAgICAgfVxuICAgIH1cbiAgICBvbkhpZGUoKSB7XG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnBhdXNlQWxsKCk7XG4gICAgfVxuXG4gICAgb25TaG93KCkge1xuICAgICAgICBjYy5hdWRpb0VuZ2luZS5yZXN1bWVBbGwoKTtcbiAgICB9XG5cbiAgICAvL+aSreaUvumfs+aViFxuICAgIHBsYXlFZmZlY3QobmFtZSwgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzW25hbWVdKVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzW25hbWVdLCBmYWxzZSwgY2FsbGJhY2ssIHRoaXMubUVmZmVjdFN3aXRjaCk7XG4gICAgfVxuICAgIHBsYXlNdXNpYyhrZXksIGNhbGxiYWNrLCBsb29wKSB7XG4gICAgICAgIGlmICghY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3Blbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGxvb3AgPSB0eXBlb2YgbG9vcCA9PSAndW5kZWZpbmVkJyB8fCBsb29wID8gdHJ1ZSA6IGZhbHNlO1xuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICB0aGlzLm1NdXNpY0tleSA9IHRoaXMucGxheShrZXksIGxvb3AsIGNhbGxiYWNrLCB0cnVlKTtcblxuICAgIH1cbiAgICAvKipcbiAgICAgKiDmuLjmiI/og4zmma/pn7PkuZBcbiAgICAgKi9cbiAgICBwbGF5TXVzaWNHYW1lKCkge1xuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xuICAgICAgICB0aGlzLnBsYXlNdXNpYyh0aGlzLmF1ZGlvR2FtZUJnbTAsIHt9LCB0cnVlKTtcbiAgICB9XG4gICAgLyoqXG4gICAgICog5YGc5q2i6IOM5pmv6Z+z5LmQ5pKt5pS+XG4gICAgICovXG4gICAgc3RvcE11c2ljKCkge1xuICAgICAgICAvLyBjYy53d3guT3V0UHV0LmxvZygnc3RvcE11c2ljIGF1ZGlvIGVmZmVjdCB3eDogJyArIHRoaXMubU11c2ljS2V5KTtcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcEFsbCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaBouWkjeiiq+aaguWBnOeahOiDjOaZr+mfs+S5kOaSreaUvlxuICAgICAqL1xuICAgIHJlc3VtZU11c2ljKCkge1xuICAgICAgICAvLyDosIPnlKggY2MuYXVkaW9FbmdpbmUg55qEIHJlc3VtZU11c2ljIOaWueazleaBouWkjemfs+S5kOaSreaUvlxuICAgICAgICBjYy5hdWRpb0VuZ2luZS5yZXN1bWVNdXNpYygpO1xuICAgIH1cblxuICAgIC8qXG4gICAgKiDmuLjmiI/lvIDlp4vpn7PmlYhcbiAgICAqXG4gICAgKi9cbiAgICBwbGF5R2FtZVN0YXJ0KCkge1xuXG4gICAgfVxuICAgIC8qXG4gICAgKiDlpLHotKXnmoTmuLjmiI/nu5PmnZ9cbiAgICAqL1xuICAgIHBsYXlHYW1lT3ZlcigpIHtcblxuICAgIH1cbiAgICAvKlxuICAgICAgICAqIOaIkOWKn+eahOa4uOaIj+e7k+adn1xuICAgICAgICAqL1xuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKCkge1xuXG4gICAgfVxuICAgIC8qXG4gICAgKiDmiJDlip/nmoTmuLjmiI/nu5PmnZ9cbiAgICAqL1xuICAgIHBsYXlHYW1lUmVzdWx0U3VjY2VzcygpIHtcblxuICAgIH1cbiAgICAvKipcbiAgICAgKiDmiqXorabnmoTpn7PmlYhcbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIOaMiemSrlxuICAgICAqL1xuICAgIHBsYXlBdWRpb0J1dHRvbigpIHtcbiAgICAgICAgLy8gcmV0dXJuIHRoaXMucGxheSh0aGlzLmF1ZGlvQnV0dG9uQ2xpY2ssIGZhbHNlLG51bGwsdGhpcy5tRWZmZWN0U3dpdGNoKTtcbiAgICB9XG59O1xuXG4vLyBleHBvcnQgeyBBdWRpb01hbmFnZXIgfTtcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Notification/Notification.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '55403VjGlpPL564gsdiZBg3', 'Notification'); -// Script/module/Notification/Notification.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Notifications = void 0; -//全局通知 -var Notifications = { - _eventMap: [], - on: function (masgId, callback, target) { - if (this._eventMap[masgId] === undefined) { - this._eventMap[masgId] = []; - } - this._eventMap[masgId].push({ callback: callback, target: target }); - }, - emit: function (masgId, parameter) { - var array = this._eventMap[masgId]; - if (array === undefined) - return; - for (var i = 0; i < array.length; i++) { - var element = array[i]; - if (element) - element.callback.call(element.target, parameter); - } - }, - off: function (masgId, callback) { - var array = this._eventMap[masgId]; - if (array === undefined) - return; - for (var i = 0; i < array.length; i++) { - var element = array[i]; - if (element && element.callback === callback) { - array[i] = undefined; - break; - } - } - }, - offMasgId: function (masgId) { - this._eventMap[masgId] = undefined; - }, - removeAllMsg: function () { - for (var k in this._eventMap) { - if (this._eventMap[k]) { - this.offMasgId(k); - } - } - } -}; -exports.Notifications = Notifications; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE5vdGlmaWNhdGlvblxcTm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU07QUFDTixJQUFJLGFBQWEsR0FBRztJQUNoQixTQUFTLEVBQUUsRUFBRTtJQUNiLEVBQUUsRUFBRSxVQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTTtRQUNsQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLEVBQUUsVUFBVSxNQUFNLEVBQUUsU0FBUztRQUM3QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU87Z0JBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNqRTtJQUNMLENBQUM7SUFFRCxHQUFHLEVBQUUsVUFBVSxNQUFNLEVBQUUsUUFBUTtRQUMzQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDMUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQkFDckIsTUFBTTthQUNUO1NBQ0o7SUFDTCxDQUFDO0lBRUQsU0FBUyxFQUFFLFVBQVUsTUFBTTtRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsWUFBWSxFQUFFO1FBQ1YsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQztDQUNKLENBQUM7QUFDTyxzQ0FBYSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v5YWo5bGA6YCa55+lXHJcbnZhciBOb3RpZmljYXRpb25zID0ge1xyXG4gICAgX2V2ZW50TWFwOiBbXSxcclxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0ucHVzaCh7IGNhbGxiYWNrOiBjYWxsYmFjaywgdGFyZ2V0OiB0YXJnZXQgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGVtaXQ6IGZ1bmN0aW9uIChtYXNnSWQsIHBhcmFtZXRlcikge1xyXG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XHJcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5jYWxsYmFjay5jYWxsKGVsZW1lbnQudGFyZ2V0LCBwYXJhbWV0ZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgb2ZmOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaykge1xyXG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XHJcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY2FsbGJhY2sgPT09IGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBvZmZNYXNnSWQ6IGZ1bmN0aW9uIChtYXNnSWQpIHtcclxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xyXG4gICAgfSxcclxuXHJcbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKGxldCBrIGluIHRoaXMuX2V2ZW50TWFwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFtrXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbnMgfTsiXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Storage/Storage.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '1002938VFRJd70RiAno9Iys', 'Storage'); -// Script/module/Storage/Storage.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StorageMessage = void 0; -//缓存浏览器数据 -var StorageMessage = { - getStorage: function (key) { - var result = null; - if (cc.sys.localStorage.getItem(key)) { - var result = cc.sys.localStorage.getItem(key); - } - if (result) { - result = JSON.parse(result); - } - return result; - }, - setStorage: function (key, value) { - //主动拉起分享接口 - var temp = JSON.stringify(value); - cc.sys.localStorage.setItem(key, temp); - }, - removeStorage: function (key) { - //主动删除消息接口 - if (cc.sys.localStorage.getItem(key)) { - cc.sys.localStorage.removeItem(key); - } - }, -}; -exports.StorageMessage = StorageMessage; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFN0b3JhZ2VcXFN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUztBQUNULElBQUksY0FBYyxHQUFHO0lBQ2pCLFVBQVUsRUFBRyxVQUFTLEdBQUc7UUFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ2xDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUcsTUFBTSxFQUFDO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0QsVUFBVSxFQUFHLFVBQVMsR0FBRyxFQUFDLEtBQUs7UUFDM0IsVUFBVTtRQUNWLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsYUFBYSxFQUFHLFVBQVMsR0FBRztRQUMxQixVQUFVO1FBQ1YsSUFBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDbEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztDQUNKLENBQUM7QUFFTyx3Q0FBYyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v57yT5a2Y5rWP6KeI5Zmo5pWw5o2uXHJcbnZhciBTdG9yYWdlTWVzc2FnZSA9IHtcclxuICAgIGdldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXkpe1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcclxuICAgICAgICAgIHZhciByZXN1bHQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYocmVzdWx0KXtcclxuICAgICAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0sXHJcbiAgICBzZXRTdG9yYWdlIDogZnVuY3Rpb24oa2V5LHZhbHVlKXtcclxuICAgICAgICAvL+S4u+WKqOaLiei1t+WIhuS6q+aOpeWPo1xyXG4gICAgICAgIHZhciB0ZW1wID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHRlbXApXHJcbiAgICB9LFxyXG4gICAgcmVtb3ZlU3RvcmFnZSA6IGZ1bmN0aW9uKGtleSl7XHJcbiAgICAgIC8v5Li75Yqo5Yig6Zmk5raI5oGv5o6l5Y+jXHJcbiAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IHsgU3RvcmFnZU1lc3NhZ2UgfTsiXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Share/share.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '7290caA39xMWZc2phTMKovP', 'share'); -// Script/module/Share/share.ts - - - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFNoYXJlXFxzaGFyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Tool/GameTool.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '43bfcJ6/25Fs4fHUE0PeBOX', 'GameTool'); -// Script/module/Tool/GameTool.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GameTool = void 0; -var MiniGameSdk_1 = require("../../Sdk/MiniGameSdk"); -//最大工具类 各种公共方法,以及处理上传,获取后端接口数据 -var GameTool = { - _startTime: 0, - _endTime: 0, - _totalTime: 0, - //获取userId - Authentication: function () { - var name = "user_" + cc.fx.GameConfig.GM_INFO.gameId; - var data = JSON.parse(localStorage.getItem(name)); - if (data == "undifend" || data == null || data == "") { - var urlNow = window.location.href; - if (!this.containsTrain(urlNow)) { - var url = "https://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" + location.href; - window.location.href = url; - } - } - else { - cc.fx.StorageMessage.setStorage(name, data); - cc.fx.GameConfig.GM_INFO.userId = parseInt(data.userId); - } - }, - containsTrain: function (str) { - return /from=train/i.test(str); - }, - //埋点上传 - setGameData: function () { - //GAME_DATA 初始化 每次清零 - cc.fx.GameConfig.GAME_DATA = []; - cc.fx.GameConfig.GAME_DATA.push(cc.fx.GameConfig.CLICK_DATA); - cc.fx.GameConfig.CLICK_init(); - var data = cc.fx.GameConfig.GAME_DATA; - var matchId = this.getMatchId(); - var postData = { - "gameId": cc.fx.GameConfig.GM_INFO.gameId, - "userId": cc.fx.GameConfig.GM_INFO.userId, - "scode": cc.fx.GameConfig.GM_INFO.scode, - "matchId": matchId, - "data": data - }; - // console.log("上传数据:",postData); - // cc.fx.HttpUtil.uploadUserLogData(postData,function(){}) - }, - //上传排行榜 type为1 - setRank: function (data) { - //GAME_DATA 初始化 每次清零 - var postData = { - "gameId": cc.fx.GameConfig.GM_INFO.gameId, - "userId": cc.fx.GameConfig.GM_INFO.userId, - "type": 1, - "score": data.score, - "accuracy": data.date, - "success": cc.fx.GameConfig.GM_INFO.success - }; - // cc.fx.HttpUtil.rankData(1,function(){},postData); - }, - //获取排行榜 type为2 - getRank: function (data, callback) { - var rankLength = data.length; - var postData = { - "gameId": cc.fx.GameConfig.GM_INFO.gameId, - "userId": cc.fx.GameConfig.GM_INFO.userId, - "page": 1, - "pageSize": rankLength - }; - //回调进getRankData - // cc.fx.HttpUtil.rankData(2,data =>{callback(data)},postData); - }, - //获取matchId 用于上传每次点击数据里面记录id方便查询 - getMatchId: function () { - var matchId = cc.sys.localStorage.getItem("matchId"); - var tempId = matchId; - if (matchId == "undifend" || matchId == null) { - matchId = this.setMatchId(); - } - else { - if (this.containsNanana(matchId) == true) { - matchId = this.setMatchId(); - } - else { - var char = parseInt(tempId.substring(10, tempId.length)); - if (cc.fx.GameConfig.GM_INFO.level == 1) { - char += 1; - matchId = tempId.slice(0, 10) + char + ""; - if (this.containsNanana(matchId)) - matchId = this.setMatchId(); - cc.fx.GameConfig.GM_INFO.matchId = matchId; - cc.sys.localStorage.setItem("matchId", matchId); - } - } - } - if (this.containsNanana(matchId) == true) { - matchId = this.setMatchId(); - } - return matchId; - }, - //检测matchId 如果有缓存以前的nanana数据清除 - containsNanana: function (str) { - return /na/i.test(str); - }, - //重新设置MatchId - setMatchId: function () { - // 定义包含可用字符的字符集 - var characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - // 创建一个数组以保存随机字符 - var uuidArray = []; - // 循环10次 生成10位的UUID - for (var i = 0; i < 10; i++) { - // 生成随机索引,范围是字符集的长度 - var randomIndex = Math.floor(Math.random() * characters.length); - // 从字符集中获取随机字符 - var randomChar = characters.charAt(randomIndex); - // 将字符添加到数组中 - uuidArray.push(randomChar); - } - var data = uuidArray.join('') + 1 + ""; - cc.sys.localStorage.setItem("matchNumber", 1); - cc.sys.localStorage.setItem("matchId", data); - cc.fx.GameConfig.GM_INFO.matchId = data; - return data; - }, - //截取名字 - subName: function (name, length) { - if (name.length > length) { - name = name.substring(0, length) + "..."; - } - return name; - }, - //设置头像 - setPic: function (node, pic) { - node.active = false; - var url = pic; - setTimeout(function () { - fetch(url) - .then(function (response) { - return response.headers.get('Content-Length'); - }) - .then(function (errNo) { - if (errNo == "5093") { - node.active = true; - } - }) - .catch(function (error) { - // console.error('Error fetching X-Info:', error); - }); - }, 100); - cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) { - if (texture) { - node.active = true; - node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture); - } - else { - // console.log(err,texture) - } - }); - }, - //第一个参数把目标带进来处理,第二个参数为名字长度,不同场景不同需求 - //名字4短,小排行,名字6长,大排行 - getRankData: function (data, target, nameLength) { - target.listData = data.data.list; - target.selfData = data.data.info; - var rankData = []; - var self = false; - cc.fx.GameTool.setPic(target.selfNode.getChildByName("pic").getChildByName("icon"), target.selfData.pic); - for (var i = 0; i <= target.listData.length - 1; i++) { - rankData.push({ rank: (i + 1), name: target.listData[i].nickName, total: target.listData[i].score, time: null, pic: target.listData[i].pic }); - if (cc.fx.GameConfig.GM_INFO.userId == target.listData[i].userId) { - self = true; - target.rankNumber = i; - target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = (i + 1) + ""; - } - if (i == (target.listData.length - 1) && self == false) { - target.rankNumber = i; - target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+"; - } - } - target.selfData.nickName = cc.fx.GameTool.subName(target.selfData.nickName, nameLength); - target.selfNode.getChildByName("nameLab").getComponent(cc.Label).string = target.selfData.nickName; - target.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = target.selfData.score; - var timeTemp = cc.fx.GameTool.getTimeShenNong(target.selfData.totleTimes); - // target.selfNode.getChildByName("timeLab").getComponent(cc.Label).string = timeTemp + ""; - switch (target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string) { - case "1": - target.selfNode.getChildByName("rank").getChildByName("one").active = true; - break; - case "2": - target.selfNode.getChildByName("rank").getChildByName("two").active = true; - break; - case "3": - target.selfNode.getChildByName("rank").getChildByName("three").active = true; - break; - } - // 大排行 - if (nameLength == 6) { - target.rankList.setData(rankData); - target.selfNode.opacity = 255; - if (target.selfData.totalSunCount == 0) - target.selfNode.opacity = 0; - } - }, - getSeedRandom: function (min, max) { - // console.log("随机数:",cc.fx.GameConfig.GM_INFO.currSeed); - max = max || 1; - min = min || 0; - cc.fx.GameConfig.GM_INFO.currSeed = (cc.fx.GameConfig.GM_INFO.currSeed * 9301 + 49297) % 233280; - var rnd = cc.fx.GameConfig.GM_INFO.currSeed / 233280.0; - var tmp = min + rnd * (max - min); - return parseInt(tmp); - }, - //获取关卡配置的那个关卡数 - getCustom: function (type) { - var custom = cc.fx.StorageMessage.getStorage(cc.fx.storageType.storageTypeCustom); - if (custom == "undifend" || custom == null || custom == "") { - this.setCustom(); - } - else { - cc.fx.GameConfig.GM_INFO_SET("custom", custom[0]); - if (custom[0] != 0 || type == true) { - custom.shift(); - if (custom.length == 0) { - this.setCustom(); - } - else - cc.fx.StorageMessage.setStorage(cc.fx.storageType.storageTypeCustom, custom); - } - } - }, - //本地没有存储到配置,或者配置用完,重新创建配置 - setCustom: function () { - var arrayLength = cc.fx.GameConfig.LEVEL_INFO.length; - var arrayList = []; - for (var i = 1; i < arrayLength; i++) { - arrayList.push(i); - } - arrayList.sort(function () { return Math.random() - 0.5; }); - arrayList.unshift(0); - cc.fx.GameConfig.GM_INFO_SET("custom", arrayList[0]); - cc.fx.StorageMessage.setStorage(cc.fx.storageType.storageTypeCustom, arrayList); - }, - getSetScreenResolutionFlag: function () { - var size = cc.winSize; - var width = size.width; - var height = size.height; - if ((height / width) > (16.2 / 9)) - return false; - return true; - }, - //判断全面屏适配 - setFit: function (canvas) { - var flag = cc.fx.GameTool.getSetScreenResolutionFlag(); - if (flag) { - // console.log("不是全面屏"); - } - else { - // console.log("是全面屏"); - } - return flag; - }, - //获取游戏信息 - getGameInfo: function (node) { - var jg = false; - return jg; - }, - //设置游戏信息 - setGameInfo: function (pd) { - }, - //打字机效果 - typingAni: function (label, text, cb, target) { - var self = target; - var html = ''; - var arr = text.split(''); - var len = arr.length; - var step = 0; - self.func = function () { - html += arr[step]; - label.string = html; - if (++step == len) { - self.unschedule(self.func); - cb && cb(); - } - }; - self.schedule(self.func, 0.1, cc.macro.REPEAT_FOREVER, 0); - }, - //输入秒,返回需要展示时间格式 - getTimeMargin: function (second) { - var total = 0; - total = second; - var hour = 0; - hour = parseInt((total / 3600) + ""); //计算整数小时数 - var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数 - var min = parseInt((afterHour / 60) + ""); //计算整数分 - var m = "" + min; - if (min < 10) - m = "0" + min; - var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数 - var miao = afterMin + ""; - if (afterMin < 10) - miao = "0" + afterMin; - return m + ':' + miao; - }, - //输入秒,返回需要展示时间格式 - getTimeShenNong: function (second) { - second = parseInt(second / 1000 + ""); - var total = 0; - total = second; - var min = 0; - if (total > 60) { - min = parseInt((total / 60) + ""); //计算整数分 - } - var m = min + "'"; - var afterMin = total - min * 60; //取得算出分后剩余的秒数 - var miao = afterMin + "''"; - return m + miao; - }, - //打乱数组 - shuffleArray: function (array) { - var _a; - for (var i = array.length - 1; i > 0; i--) { - var j = Math.floor(Math.random() * (i + 1)); - _a = [array[j], array[i]], array[i] = _a[0], array[j] = _a[1]; - } - return array; - }, - //增加关卡数 - addLevel: function (time1, time2) { - cc.fx.GameConfig.GM_INFO.level += 1; - if (cc.fx.GameConfig.GM_INFO.level > 156) { - cc.fx.GameConfig.GM_INFO.level = 156; - } - var timestamp = Date.now(); - var levelInfo = { - level: cc.fx.GameConfig.GM_INFO.level, - timestamp: timestamp, - }; - // console.log("55555存储关卡数据:",levelInfo); - cc.fx.StorageMessage.setStorage("level", levelInfo); - if (time1 && time2) { - var data = { - time: time1, - add_Time: time2, - result: "success" - }; - cc.fx.GameTool.shushu_Track("finish_stage", data); - MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); - } - cc.fx.GameTool.setUserLevel(function (data) { - // console.log("存储结果:",data); - // console.log("上传",data); - }); - }, - //改变金币信息 - changeCoin: function (coin) { - console.log("changeCoin", coin); - if (coin == undefined) - return; - if (coin < 0 && cc.fx.GameConfig.GM_INFO.coin < -coin) { - // console.log("金币不足",cc.fx.GameConfig.GM_INFO.coin,-coin); - return; - } - cc.fx.GameConfig.GM_INFO.coin += coin; - if (cc.fx.GameConfig.GM_INFO.coin < 0) { - cc.fx.GameConfig.GM_INFO.coin = 0; - } - // console.log("改变的金币:",coin); - // console.log("自身金币信息:",cc.fx.GameConfig.GM_INFO.coin); - var timestamp = Date.now(); - var coinInfo = { - coin: cc.fx.GameConfig.GM_INFO.coin, - timestamp: timestamp, - }; - MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - // console.log("存储金币数据:",cc.fx.GameConfig.GM_INFO.coin,coinInfo); - cc.fx.GameTool.setUserCoin(function (data) { - // console.log("上传",data); - }); - }, - //获取用户金币数量 - getUserCoin: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.callFunction({ - name: 'userCoin', - data: { - action: 'read' - }, - success: function (res) { - // console.log('读取用户金币数据成功', res.result) - if (callback) - callback(res); - }, - fail: function (err) { - callback(err); - } - }); - } - }, - //改变用户金币 - setUserCoin: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - if (cc.fx.GameConfig.GM_INFO.coin <= 0 || cc.fx.GameConfig.GM_INFO.coin == undefined) { - console.log("金币上传失败", cc.fx.GameConfig.GM_INFO.coin); - // MiniGameSdk.API.showToast(cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameConfig.GM_INFO.coin = 0; - } - console.log("即将上传的金币数量:", cc.fx.GameConfig.GM_INFO.coin); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userCoin', - data: { - action: 'save', - coinAmount: cc.fx.GameConfig.GM_INFO.coin - }, - success: function (res) { - // console.log('云函数返回结果:', res); - if (res.result.code == 200) { - // console.log('存储金币数据成功',cc.fx.GameConfig.GM_INFO.coin); - } - if (callback) { - callback(res); - } - }, - fail: function (err) { - // console.log('存储金币数据失败') - if (callback) { - callback(err); - } - console.error('存储用户数据失败', err); - } - }); - } - }, - //获取用户关卡数 - getUserLevel: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.callFunction({ - name: 'userLevel', - data: { - action: 'read' - }, - success: function (res) { - if (callback) - callback(res); - }, - fail: function (err) { - callback(err); - } - }); - } - }, - //进游戏处理 体力值情况 - getHealth: function (callback) { - var health = cc.fx.StorageMessage.getStorage("health"); - var timestamp = Date.now(); - cc.fx.GameConfig.GM_INFO.hp = 5; - //没有存储过体力值 - if (health == null || health == undefined || health == "") { - console.log("没存储过体力值,初进"); - cc.fx.GameConfig.GM_INFO.hp = 5; - cc.fx.GameTool.getUserHealth(function (data) { - console.log("体力接口返回结果", data); - if (data.result.code == 200) { - cc.fx.GameConfig.GM_INFO.hp = data.result.data; - cc.fx.GameConfig.GM_INFO.min_Time = data.result.timestamp; - var healthInfo = { - "health": cc.fx.GameConfig.GM_INFO.hp, - "timestamp": data.result.timestamp - }; - MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); - cc.fx.StorageMessage.setStorage("health", healthInfo); - } - else if (data.result.code == 404 && data.result.message == "未找到体力数据") { - cc.fx.GameTool.setUserHealth(0, function () { - }); - } - if (callback) - callback(); - }); - } - else { - console.log("有存储过体力值:", health); - cc.fx.GameConfig.GM_INFO.hp = health.health; - if (callback) { - console.log("体力值读取完毕"); - callback(); - } - if (health.health < 0) { - console.log("体力值异常,归零"); - cc.fx.GameConfig.GM_INFO.hp = 0; - cc.fx.GameTool.setUserHealth(0, function () { - if (callback) - callback(); - }); - } - else if (health.health < 5) { - // 30分钟的毫秒数 - var thirtyMinutes = 30 * 60 * 1000; - var elapsedTime = timestamp - health.timestamp; - // 计算恢复的体力值 - var recoveredHealth = Math.min(5 - health.health, Math.floor(elapsedTime / thirtyMinutes)); - if (recoveredHealth > 0) { - health.health += recoveredHealth; - cc.fx.GameTool.setUserHealth(recoveredHealth, function () { - if (callback) - callback(); - }); - console.log("\u4F53\u529B\u503C\u6062\u590D " + recoveredHealth + " \u70B9\uFF0C\u5F53\u524D\u4F53\u529B\u503C: " + cc.fx.GameConfig.GM_INFO.hp); - } - else { - // 计算距离下一次恢复的剩余时间 - var remainingTime = Math.ceil((thirtyMinutes - (elapsedTime % thirtyMinutes)) / 1000); - console.log("\u4F53\u529B\u503C\u672A\u6EE1\uFF0C\u5F85\u6062\u590D\uFF0C\u8DDD\u79BB\u4E0B\u4E00\u6B21\u6062\u590D\u8FD8\u5269 " + remainingTime + " \u79D2"); - cc.fx.GameConfig.GM_INFO.min_Time = remainingTime; - } - } - } - }, - //获取用户体力值 - getUserHealth: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - console.log("即将进入体力获取接口"); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userHealth', - data: { - action: 'read' - }, - success: function (res) { - // console.log("体力获取成功",res); - if (callback) - callback(res); - }, - fail: function (err) { - // console.log("体力获取失败",err); - callback(err); - } - }); - } - }, - //设置用户体力值 有可能加,有可能定时器减 - setUserHealth: function (health, callback) { - cc.fx.GameConfig.GM_INFO.hp += health; - // if(health < 0) { - // } - // else MiniGameSdk.API.showToast("体力值恢复"); - var timestamp = Date.now(); - var healthInfo = {}; - //如果消耗之前不是满体力,说明已经在恢复期,并不用修改时间 - if (health < 0 && cc.fx.GameConfig.GM_INFO.hp != 4) { - var oldTime = cc.fx.StorageMessage.getStorage("health").timestamp; - healthInfo = { - "health": cc.fx.GameConfig.GM_INFO.hp, - "timestamp": oldTime - }; - } - else { - healthInfo = { - "health": cc.fx.GameConfig.GM_INFO.hp, - "timestamp": timestamp - }; - } - cc.fx.StorageMessage.setStorage("health", healthInfo); - MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.callFunction({ - name: 'userHealth', - data: { - action: 'save', - healthAmount: cc.fx.GameConfig.GM_INFO.hp, - timestamp: timestamp - }, - success: function (res) { - if (callback) { - callback(res); - } - }, - fail: function (err) { - if (callback) { - callback(err); - } - // console.error('存储关卡数据失败', err) - } - }); - } - }, - //购买行为 - buyReview: function (coin, callback) { - if (typeof wx !== 'undefined' && wx !== null) { - // console.log("实际即将消耗金币:",coin); - // this.changeCoin(coin); - callback(); - } - }, - //更改用户道具数 - buyProp: function (propid, callback) { - if (typeof wx !== 'undefined' && wx !== null) { - cc.fx.GameTool.changeCoin(-1500); - cc.fx.GameTool.setUserProp(propid, 3, function (data) { - }); - var data = { - id: (propid + ""), - num: 3 - }; - cc.fx.GameTool.shushu_Track("resource_get", data); - var _id = ""; - if (propid == 2001) - _id = "freeze_in_game"; - else if (propid == 2002) - _id = "hammer_in_game"; - else if (propid == 2003) - _id = "wand_in_game"; - var buyData = { - item_id: _id, - item_num: 1, - item_price: 1500, - cost_type: "gold" - }; - console.log("____________即将上传Shop_buy", buyData); - cc.fx.GameTool.shushu_Track("shop_buy", buyData); - callback(); - } - }, - //改变用户关卡 - setUserLevel: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - // if(cc.fx.GameConfig.GM_INFO.level <= 0 || cc.fx.GameConfig.GM_INFO.level == undefined){ - // console.log("等级重置为0"); - // cc.fx.GameConfig.GM_INFO.level = 0; - // } - // console.log("即将上传的关卡数:",cc.fx.GameConfig.GM_INFO.level); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userLevel', - data: { - action: 'save', - levelAmount: cc.fx.GameConfig.GM_INFO.level - }, - success: function (res) { - // console.log('云函数返回结果:', res); - // console.log('存储关卡数据成功',cc.fx.GameConfig.GM_INFO.level); - if (callback) { - callback(res); - } - }, - fail: function (err) { - // console.log('存储关卡数据失败') - return; - if (callback) { - callback(err); - } - console.error('存储关卡数据失败', err); - } - }); - } - }, - //获取用户关卡数 - getUserProp: function (callback) { - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.callFunction({ - name: 'userProp', - data: { - action: 'read' - }, - success: function (res) { - // console.log('读取用户道具数据成功', res.result) - if (res.result.data) { - // cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freeze; - // cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammer; - // cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magic_wand; - } - if (callback) - callback(res); - }, - fail: function (err) { - callback(err); - } - }); - } - }, - //改变用户道具 - setUserProp: function (propid, amount, callback) { - if (typeof wx !== 'undefined' && wx !== null) { - var newPropData = null; - if (propid == 0) { - newPropData = { - freeze: cc.fx.GameConfig.GM_INFO.freezeAmount, - hammer: cc.fx.GameConfig.GM_INFO.hammerAmount, - magic_wand: cc.fx.GameConfig.GM_INFO.magicAmount, - }; - } - else if (propid == 2001) { - newPropData = amount; - } - else if (propid == 2002) { - newPropData = amount; - } - else if (propid == 2003) { - newPropData = amount; - } - //@ts-ignore - wx.cloud.callFunction({ - name: 'userProp', - data: { - action: 'save', - propType: propid, - propData: newPropData - }, - success: function (res) { - // console.log('云函数返回结果:', res); - if (callback) { - callback(res); - } - // console.log('存储道具数据成功') - }, - fail: function (err) { - // console.log('存储道具数据失败') - if (callback) { - callback(err); - } - console.error('存储道具数据失败', err); - } - }); - } - }, - // 检查是否有足够的硬币 - consumeCoins: function (requiredCoins, propName, amount, callback) { - }, - // 设置用户信息 - setUserInfo: function (callback) { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { - var time = cc.fx.GameTool.formatDate(new Date()); - var userInfo = { - // 这里填写要存储的用户数据 - username: cc.fx.GameConfig.GM_INFO.username, - useravatar: cc.fx.GameConfig.GM_INFO.useravatar, - register_time: time - }; - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'save', - userData: userInfo - }, - success: function (res) { - // console.log('存储用户数据成功') - if (callback) { - callback(res); - } - }, - fail: function (err) { - if (callback) { - callback("fail"); - } - } - }); - } - }, - formatDate: function (date) { - var year = date.getFullYear(); - var month = String(date.getMonth() + 1).padStart(2, '0'); - var day = String(date.getDate()).padStart(2, '0'); - var hours = String(date.getHours()).padStart(2, '0'); - var minutes = String(date.getMinutes()).padStart(2, '0'); - var seconds = String(date.getSeconds()).padStart(2, '0'); - var milliseconds = String(date.getMilliseconds()).padStart(3, '0'); - return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + "." + milliseconds; - }, - //获取时间戳 - getTime: function () { - var timestamp = (new Date().getTime()); - return timestamp; - }, - pushLister: function () { - }, - removeAllLister: function () { - }, - shushu_Track: function (name, data) { - var eventData = {}; - switch (name) { - case "register": - break; - case "enter_stage": - eventData = { - stage_id: (cc.fx.GameConfig.GM_INFO.level + 1) - }; - break; - case "finish_stage": - eventData = { - stage_id: (cc.fx.GameConfig.GM_INFO.level + 1), - stage_duration: data.time, - added_time: data.add_Time, - result: data.result - }; - break; - case "resource_get": - eventData = { - change_reason: "购买道具", - change_num: data.num, - resource_id: data.id //道具id - }; - break; - case "resource_cost": - eventData = { - change_reason: "使用道具", - change_num: data.num, - resource_id: data.id //道具id - }; - break; - case "shop_buy": - eventData = { - item_id: data.item_id, - item_num: data.item_num, - item_price: data.item_price, - cost_type: data.cost_type, - }; - console.log("数据:", eventData); - break; - } - // MiniGameSdk.API.shushu_Track(name,eventData); - MiniGameSdk_1.MiniGameSdk.API.shushu_Track(name, eventData); - }, - getWechatGameVersion: function () { - //@ts-ignore - var accountInfo = wx.getAccountInfoSync(); - var miniProgram = accountInfo.miniProgram; - switch (miniProgram.envVersion) { - case 'develop': - return '开发版'; - case 'trial': - return '体验版'; - case 'release': - return '正式版'; - default: - return '未知版本'; - } - }, -}; -exports.GameTool = GameTool; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFRvb2xcXEdhbWVUb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFvRDtBQUVwRCwrQkFBK0I7QUFDL0IsSUFBSSxRQUFRLEdBQUc7SUFDWCxVQUFVLEVBQUUsQ0FBQztJQUNiLFFBQVEsRUFBRSxDQUFDO0lBQ1gsVUFBVSxFQUFFLENBQUM7SUFFYixVQUFVO0lBQ1YsY0FBYztRQUNWLElBQUksSUFBSSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUcsSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUM7WUFDOUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEMsSUFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUM7Z0JBQzNCLElBQUksR0FBRyxHQUFHLDhFQUE4RSxHQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQzthQUM5QjtTQUNKO2FBQ0c7WUFDQSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzRDtJQUNMLENBQUM7SUFFRCxhQUFhLFlBQUMsR0FBRztRQUNiLE9BQU8sYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsTUFBTTtJQUNOLFdBQVc7UUFDUCxvQkFBb0I7UUFDcEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdELEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzlCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxRQUFRLEdBQUc7WUFDWCxRQUFRLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDeEMsUUFBUSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQ3hDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSztZQUN2QyxTQUFTLEVBQUMsT0FBTztZQUNqQixNQUFNLEVBQUUsSUFBSTtTQUNmLENBQUM7UUFFRixpQ0FBaUM7UUFDakMsMERBQTBEO0lBQzlELENBQUM7SUFDRCxlQUFlO0lBQ2YsT0FBTyxZQUFDLElBQUk7UUFDUixvQkFBb0I7UUFDcEIsSUFBSSxRQUFRLEdBQUc7WUFDWCxRQUFRLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDeEMsUUFBUSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQ3hDLE1BQU0sRUFBQyxDQUFDO1lBQ1IsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNyQixTQUFTLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU87U0FDOUMsQ0FBQztRQUNGLG9EQUFvRDtJQUN4RCxDQUFDO0lBQ0QsY0FBYztJQUNkLE9BQU8sWUFBQyxJQUFJLEVBQUMsUUFBUTtRQUNqQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksUUFBUSxHQUFHO1lBQ1gsUUFBUSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNO1lBQ3hDLFFBQVEsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTTtZQUN4QyxNQUFNLEVBQUMsQ0FBQztZQUNSLFVBQVUsRUFBQyxVQUFVO1NBQ3hCLENBQUM7UUFDRixnQkFBZ0I7UUFDaEIsK0RBQStEO0lBQ25FLENBQUM7SUFDRCxpQ0FBaUM7SUFDakMsVUFBVTtRQUNOLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNyRCxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUM7UUFDckIsSUFBRyxPQUFPLElBQUksVUFBVSxJQUFJLE9BQU8sSUFBRSxJQUFJLEVBQUM7WUFDdEMsT0FBTyxHQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNoQzthQUNHO1lBQ0EsSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBQztnQkFDcEMsT0FBTyxHQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNoQztpQkFDRztnQkFDQSxJQUFJLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUM7b0JBQ25DLElBQUksSUFBSSxDQUFDLENBQUM7b0JBQ1YsT0FBTyxHQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQzNDLElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUM7d0JBQUUsT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDN0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7b0JBQzNDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUMsT0FBTyxDQUFDLENBQUM7aUJBQ2xEO2FBQ0o7U0FDSjtRQUVELElBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUM7WUFDcEMsT0FBTyxHQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNoQztRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUM7SUFDRCw4QkFBOEI7SUFDOUIsY0FBYyxZQUFDLEdBQUc7UUFDZCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELGFBQWE7SUFDYixVQUFVO1FBQ04sZUFBZTtRQUNmLElBQU0sVUFBVSxHQUFHLGdFQUFnRSxDQUFDO1FBQ3BGLGdCQUFnQjtRQUNoQixJQUFNLFNBQVMsR0FBRyxFQUFFLENBQUM7UUFDckIsbUJBQW1CO1FBQ25CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckIsbUJBQW1CO1lBQ3ZCLElBQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRSxjQUFjO1lBQ2QsSUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRCxZQUFZO1lBQ1osU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksSUFBSSxHQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN4QyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdDLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDeEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELE1BQU07SUFDTixPQUFPLFlBQUMsSUFBSSxFQUFDLE1BQU07UUFDZixJQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxFQUFDO1lBQ3BCLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUE7U0FDMUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsTUFBTTtJQUNOLE1BQU0sRUFBTixVQUFPLElBQUksRUFBQyxHQUFHO1FBQ1gsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2QsVUFBVSxDQUFDO1lBQ1AsS0FBSyxDQUFDLEdBQUcsQ0FBQztpQkFDVCxJQUFJLENBQUMsVUFBQSxRQUFRO2dCQUNWLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUNsRCxDQUFDLENBQUM7aUJBQ0QsSUFBSSxDQUFDLFVBQUEsS0FBSztnQkFDUCxJQUFHLEtBQUssSUFBSSxNQUFNLEVBQUM7b0JBQ2YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7aUJBQ3RCO1lBQ0wsQ0FBQyxDQUFDO2lCQUNELEtBQUssQ0FBQyxVQUFBLEtBQUs7Z0JBQ1Isa0RBQWtEO1lBQ3RELENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ1IsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLEVBQUMsR0FBRyxFQUFDLE1BQU0sRUFBQyxFQUFDLFVBQUMsR0FBRyxFQUFFLE9BQW9CO1lBQ25FLElBQUcsT0FBTyxFQUFDO2dCQUNQLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQzFFO2lCQUNHO2dCQUNBLDJCQUEyQjthQUM5QjtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUNELG1DQUFtQztJQUNuQyxtQkFBbUI7SUFDbkIsV0FBVyxZQUFDLElBQUksRUFBQyxNQUFNLEVBQUMsVUFBVTtRQUM5QixNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ2pDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQztRQUNoQixFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekcsS0FBSSxJQUFJLENBQUMsR0FBQyxDQUFDLEVBQUMsQ0FBQyxJQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFDLENBQUMsRUFBQyxDQUFDLEVBQUUsRUFBQztZQUN4QyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLElBQUksRUFBRSxHQUFHLEVBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUMsQ0FBQyxDQUFDO1lBQ3BJLElBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBQztnQkFDNUQsSUFBSSxHQUFHLElBQUksQ0FBQztnQkFDWixNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUUsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2FBQ3ZGO1lBQ0QsSUFBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFDO2dCQUNoRCxNQUFNLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQztnQkFDdEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2FBQ25GO1NBQ0o7UUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkYsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDbkcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDakcsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUUsMkZBQTJGO1FBQzNGLFFBQU8sTUFBTSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUM7WUFDM0UsS0FBSyxHQUFHO2dCQUNKLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUMzRSxNQUFNO1lBQ1YsS0FBSyxHQUFHO2dCQUNKLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUMzRSxNQUFNO1lBQ1YsS0FBSyxHQUFHO2dCQUNKLE1BQU0sQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUM3RSxNQUFNO1NBQ2I7UUFDRCxNQUFNO1FBQ04sSUFBRyxVQUFVLElBQUksQ0FBQyxFQUFDO1lBQ2YsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDbEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO1lBQzlCLElBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxhQUFhLElBQUksQ0FBQztnQkFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUM7U0FDdEU7SUFDTCxDQUFDO0lBRUQsYUFBYSxFQUFFLFVBQVUsR0FBRyxFQUFFLEdBQUc7UUFDN0IseURBQXlEO1FBQ3pELEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ2YsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDZixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQ2hHLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUksUUFBUSxDQUFDO1FBQ3hELElBQUksR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDbEMsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELGNBQWM7SUFDZCxTQUFTLFlBQUMsSUFBSTtRQUNWLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQ2xGLElBQUcsTUFBTSxJQUFJLFVBQVUsSUFBSSxNQUFNLElBQUUsSUFBSSxJQUFJLE1BQU0sSUFBSSxFQUFFLEVBQUM7WUFDcEQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ3BCO2FBQ0c7WUFDQSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELElBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUssSUFBSSxFQUFDO2dCQUMvQixNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2YsSUFBRyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBQztvQkFDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO2lCQUNwQjs7b0JBQ0ksRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3BGO1NBQ0o7SUFDTCxDQUFDO0lBQ0QseUJBQXlCO0lBQ3pCLFNBQVM7UUFDTCxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNuQixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsV0FBVyxFQUFDLENBQUMsRUFBRSxFQUFDO1lBQzNCLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDckI7UUFDRCxTQUFTLENBQUMsSUFBSSxDQUFDLGNBQU0sT0FBQSxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsR0FBRyxFQUFuQixDQUFtQixDQUFDLENBQUM7UUFDMUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNwQixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BELEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBQyxTQUFTLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBR0QsMEJBQTBCLEVBQUU7UUFDeEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztRQUN0QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUNoRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBQ0QsU0FBUztJQUNULE1BQU0sRUFBRSxVQUFVLE1BQU07UUFDcEIsSUFBSSxJQUFJLEdBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUN4RCxJQUFJLElBQUksRUFBRTtZQUNULHdCQUF3QjtTQUN4QjthQUFNO1lBQ04sdUJBQXVCO1NBQ3ZCO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUNELFFBQVE7SUFDUixXQUFXLEVBQUUsVUFBUyxJQUFJO1FBQ3RCLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUNELFFBQVE7SUFDUixXQUFXLEVBQUUsVUFBUyxFQUFFO0lBRXhCLENBQUM7SUFFRCxPQUFPO0lBQ1AsU0FBUyxZQUFDLEtBQUssRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLE1BQU07UUFDMUIsSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2xCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUNyQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1IsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLEVBQUUsSUFBSSxJQUFJLEdBQUcsRUFBRTtnQkFDZixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDM0IsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDO2FBQ2Q7UUFDTCxDQUFDLENBQUE7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFBO0lBQzVELENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsYUFBYSxFQUFDLFVBQUMsTUFBTTtRQUNqQixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxLQUFLLEdBQUcsTUFBTSxDQUFDO1FBQ2YsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO1FBQ2IsSUFBSSxHQUFHLFFBQVEsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFBLFNBQVM7UUFDOUMsSUFBSSxTQUFTLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUEsZUFBZTtRQUN0RCxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxPQUFPO1FBQy9DLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDakIsSUFBRyxHQUFHLEdBQUcsRUFBRTtZQUFFLENBQUMsR0FBRyxHQUFHLEdBQUMsR0FBRyxDQUFDO1FBQ3pCLElBQUksUUFBUSxHQUFHLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUEsYUFBYTtRQUM5RCxJQUFJLElBQUksR0FBRyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUcsUUFBUSxHQUFHLEVBQUU7WUFBRSxJQUFJLEdBQUcsR0FBRyxHQUFHLFFBQVEsQ0FBQztRQUN4QyxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFBO0lBQ3pCLENBQUM7SUFFRCxnQkFBZ0I7SUFDaEIsZUFBZSxFQUFDLFVBQUMsTUFBTTtRQUNuQixNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBQyxJQUFJLEdBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsS0FBSyxHQUFHLE1BQU0sQ0FBQztRQUNmLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLElBQUcsS0FBSyxHQUFHLEVBQUUsRUFBQztZQUNWLEdBQUcsR0FBRyxRQUFRLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLEdBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQSxPQUFPO1NBQzFDO1FBQ0QsSUFBSSxDQUFDLEdBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUVuQixJQUFJLFFBQVEsR0FBRyxLQUFLLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFBLGFBQWE7UUFDN0MsSUFBSSxJQUFJLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQztRQUMzQixPQUFPLENBQUMsR0FBRyxJQUFJLENBQUE7SUFDbkIsQ0FBQztJQUVELE1BQU07SUFDTixZQUFZLEVBQUUsVUFBVSxLQUFLOztRQUN6QixLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdkMsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QyxLQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBMUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFBLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFBLENBQXlCO1NBQy9DO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUdELE9BQU87SUFDUCxRQUFRLFlBQUMsS0FBSyxFQUFDLEtBQUs7UUFDaEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDcEMsSUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBQztZQUNwQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztTQUN4QztRQUNELElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLFNBQVMsR0FBRztZQUNaLEtBQUssRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSztZQUNwQyxTQUFTLEVBQUMsU0FBUztTQUN0QixDQUFBO1FBQ0QseUNBQXlDO1FBQ3pDLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsSUFBRyxLQUFLLElBQUksS0FBSyxFQUFDO1lBQ2QsSUFBSSxJQUFJLEdBQUc7Z0JBQ1AsSUFBSSxFQUFDLEtBQUs7Z0JBQ1YsUUFBUSxFQUFDLEtBQUs7Z0JBQ2QsTUFBTSxFQUFDLFNBQVM7YUFDbkIsQ0FBQTtZQUNELEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDakQseUJBQVcsQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsQ0FBQztTQUMvQztRQUVELEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxVQUFDLElBQUk7WUFDN0IsNkJBQTZCO1lBQzdCLDBCQUEwQjtRQUM5QixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxRQUFRO0lBQ1IsVUFBVSxZQUFDLElBQUk7UUFDWCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixJQUFHLElBQUksSUFBSSxTQUFTO1lBQUUsT0FBTztRQUM3QixJQUFHLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBQztZQUNqRCwyREFBMkQ7WUFDM0QsT0FBTztTQUNWO1FBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUM7UUFFdEMsSUFBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBQztZQUNqQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztTQUNyQztRQUNELDhCQUE4QjtRQUM5Qix3REFBd0Q7UUFDeEQsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksUUFBUSxHQUFHO1lBQ1gsSUFBSSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ2xDLFNBQVMsRUFBQyxTQUFTO1NBQ3RCLENBQUE7UUFDRCx5QkFBVyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQzVDLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsaUVBQWlFO1FBQ2pFLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFDLElBQUk7WUFDNUIsMEJBQTBCO1FBQzlCLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUVELFVBQVU7SUFDVixXQUFXLEVBQVgsVUFBWSxRQUFrQjtRQUMxQixJQUFJLE9BQU8sRUFBRSxLQUFJLFdBQVcsSUFBSSxFQUFFLEtBQUksSUFBSSxFQUFFO1lBQ3JDLFlBQVk7WUFDZixFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDdEIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRTtvQkFDRixNQUFNLEVBQUUsTUFBTTtpQkFDakI7Z0JBQ0QsT0FBTyxFQUFFLFVBQUEsR0FBRztvQkFDUix3Q0FBd0M7b0JBQ3hDLElBQUcsUUFBUTt3QkFDUCxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRXRCLENBQUM7Z0JBQ0QsSUFBSSxFQUFFLFVBQUEsR0FBRztvQkFDRixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBRXJCLENBQUM7YUFDQSxDQUFDLENBQUE7U0FDTDtJQUNMLENBQUM7SUFFRCxRQUFRO0lBQ1IsV0FBVyxZQUFDLFFBQVE7UUFDaEIsSUFBSSxPQUFPLEVBQUUsS0FBSSxXQUFXLElBQUksRUFBRSxLQUFJLElBQUksRUFBRTtZQUN4QyxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFDO2dCQUNoRixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BELDREQUE0RDtnQkFDNUQsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUM7YUFDckM7WUFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDeEQsWUFBWTtZQUNaLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUN0QixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsSUFBSSxFQUFFO29CQUNGLE1BQU0sRUFBRSxNQUFNO29CQUNkLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSTtpQkFDNUM7Z0JBQ0QsT0FBTyxFQUFFLFVBQUEsR0FBRztvQkFDUixnQ0FBZ0M7b0JBQ2hDLElBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksR0FBRyxFQUFDO3dCQUN0Qix5REFBeUQ7cUJBQzVEO29CQUNELElBQUcsUUFBUSxFQUFDO3dCQUNSLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDakI7Z0JBRUwsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBQSxHQUFHO29CQUNMLDBCQUEwQjtvQkFDMUIsSUFBRyxRQUFRLEVBQUM7d0JBQ1IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNqQjtvQkFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFDbEMsQ0FBQzthQUNBLENBQUMsQ0FBQTtTQUNMO0lBQ0wsQ0FBQztJQUdELFNBQVM7SUFDVCxZQUFZLEVBQVosVUFBYSxRQUFrQjtRQUMzQixJQUFJLE9BQU8sRUFBRSxLQUFJLFdBQVcsSUFBSSxFQUFFLEtBQUksSUFBSSxFQUFFO1lBQ3JDLFlBQVk7WUFDZixFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDdEIsSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLElBQUksRUFBRTtvQkFDRixNQUFNLEVBQUUsTUFBTTtpQkFDakI7Z0JBQ0QsT0FBTyxFQUFFLFVBQUEsR0FBRztvQkFDUixJQUFHLFFBQVE7d0JBQ1AsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUV0QixDQUFDO2dCQUNELElBQUksRUFBRSxVQUFBLEdBQUc7b0JBQ0YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUVyQixDQUFDO2FBQ0EsQ0FBQyxDQUFBO1NBQ0w7SUFDTCxDQUFDO0lBRUQsYUFBYTtJQUNiLFNBQVMsRUFBVCxVQUFVLFFBQWtCO1FBQ3hCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RCxJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDaEMsVUFBVTtRQUNWLElBQUcsTUFBTSxJQUFJLElBQUksSUFBSSxNQUFNLElBQUksU0FBUyxJQUFJLE1BQU0sSUFBSSxFQUFFLEVBQUM7WUFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxQixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNoQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsVUFBQyxJQUFJO2dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0IsSUFBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQUM7b0JBQ3ZCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQy9DLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQzFELElBQUksVUFBVSxHQUFHO3dCQUNiLFFBQVEsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTt3QkFDcEMsV0FBVyxFQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUztxQkFDcEMsQ0FBQTtvQkFDRCx5QkFBVyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO29CQUM1QyxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUN4RDtxQkFDSSxJQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUM7b0JBQ2hFLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUM7b0JBQy9CLENBQUMsQ0FBQyxDQUFDO2lCQUNOO2dCQUNELElBQUcsUUFBUTtvQkFBRSxRQUFRLEVBQUUsQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FBQTtTQUNMO2FBQ0c7WUFDQSxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBQyxNQUFNLENBQUMsQ0FBQztZQUMvQixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDNUMsSUFBRyxRQUFRLEVBQUM7Z0JBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDdkIsUUFBUSxFQUFFLENBQUM7YUFDZDtZQUNELElBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUM7Z0JBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3hCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO2dCQUNoQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxFQUFDO29CQUMzQixJQUFHLFFBQVE7d0JBQUUsUUFBUSxFQUFFLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxDQUFDO2FBQ047aUJBQ0ksSUFBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztnQkFDdEIsV0FBVztnQkFDWCxJQUFNLGFBQWEsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztnQkFDckMsSUFBTSxXQUFXLEdBQUcsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUM7Z0JBQ2pELFdBQVc7Z0JBQ1gsSUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUM3RixJQUFJLGVBQWUsR0FBRyxDQUFDLEVBQUU7b0JBQ3JCLE1BQU0sQ0FBQyxNQUFNLElBQUksZUFBZSxDQUFDO29CQUNqQyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFDO3dCQUN4QyxJQUFHLFFBQVE7NEJBQUUsUUFBUSxFQUFFLENBQUM7b0JBQzdCLENBQUMsQ0FBQyxDQUFDO29CQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsb0NBQVMsZUFBZSxxREFBYSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBSSxDQUFDLENBQUM7aUJBQ25GO3FCQUFNO29CQUNILGlCQUFpQjtvQkFDakIsSUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsR0FBRyxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO29CQUN4RixPQUFPLENBQUMsR0FBRyxDQUFDLHdIQUF1QixhQUFhLFlBQUksQ0FBQyxDQUFDO29CQUN0RCxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQztpQkFDckQ7YUFDSjtTQUNKO0lBQ0wsQ0FBQztJQUVELFNBQVM7SUFDVCxhQUFhLEVBQWIsVUFBYyxRQUFrQjtRQUM1QixJQUFJLE9BQU8sRUFBRSxLQUFJLFdBQVcsSUFBSSxFQUFFLEtBQUksSUFBSSxFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDdkIsWUFBWTtZQUNmLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUN0QixJQUFJLEVBQUUsWUFBWTtnQkFDbEIsSUFBSSxFQUFFO29CQUNGLE1BQU0sRUFBRSxNQUFNO2lCQUNqQjtnQkFDRCxPQUFPLEVBQUUsVUFBQSxHQUFHO29CQUNSLDZCQUE2QjtvQkFDN0IsSUFBRyxRQUFRO3dCQUNQLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDdEIsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBQSxHQUFHO29CQUNELDZCQUE2QjtvQkFDOUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQixDQUFDO2FBQ0EsQ0FBQyxDQUFBO1NBQ0w7SUFDTCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLGFBQWEsWUFBQyxNQUFNLEVBQUMsUUFBUTtRQUN6QixFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQztRQUN0QyxtQkFBbUI7UUFDbkIsSUFBSTtRQUNKLDJDQUEyQztRQUMzQyxJQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxVQUFVLEdBQUUsRUFBRSxDQUFBO1FBRWxCLDhCQUE4QjtRQUM5QixJQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDL0MsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNsRSxVQUFVLEdBQUc7Z0JBQ1QsUUFBUSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNwQyxXQUFXLEVBQUMsT0FBTzthQUN0QixDQUFBO1NBQ0o7YUFDRztZQUNBLFVBQVUsR0FBRztnQkFDVCxRQUFRLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3BDLFdBQVcsRUFBQyxTQUFTO2FBQ3hCLENBQUE7U0FDSjtRQUNELEVBQUUsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQseUJBQVcsQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUM1QyxJQUFJLE9BQU8sRUFBRSxLQUFJLFdBQVcsSUFBSSxFQUFFLEtBQUksSUFBSSxFQUFFO1lBQ3hDLFlBQVk7WUFDWixFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDbEIsSUFBSSxFQUFFLFlBQVk7Z0JBQ2xCLElBQUksRUFBRTtvQkFDRixNQUFNLEVBQUUsTUFBTTtvQkFDZCxZQUFZLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQ3pDLFNBQVMsRUFBQyxTQUFTO2lCQUN0QjtnQkFDRCxPQUFPLEVBQUUsVUFBQSxHQUFHO29CQUNSLElBQUcsUUFBUSxFQUFDO3dCQUNSLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDakI7Z0JBRUwsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBQSxHQUFHO29CQUNMLElBQUcsUUFBUSxFQUFDO3dCQUNSLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDakI7b0JBQ0QsaUNBQWlDO2dCQUNyQyxDQUFDO2FBQ0osQ0FBQyxDQUFBO1NBQ0w7SUFDTCxDQUFDO0lBRUQsTUFBTTtJQUNOLFNBQVMsRUFBVCxVQUFVLElBQUksRUFBQyxRQUFrQjtRQUM3QixJQUFJLE9BQU8sRUFBRSxLQUFJLFdBQVcsSUFBSSxFQUFFLEtBQUksSUFBSSxFQUFFO1lBQ3hDLGlDQUFpQztZQUNqQyx5QkFBeUI7WUFDekIsUUFBUSxFQUFFLENBQUM7U0FDZDtJQUNMLENBQUM7SUFFRCxTQUFTO0lBQ1QsT0FBTyxFQUFQLFVBQVEsTUFBTSxFQUFDLFFBQWtCO1FBQzdCLElBQUksT0FBTyxFQUFFLEtBQUksV0FBVyxJQUFJLEVBQUUsS0FBSSxJQUFJLEVBQUU7WUFDeEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBQyxDQUFDLEVBQUMsVUFBQyxJQUFJO1lBQ3pDLENBQUMsQ0FBQyxDQUFBO1lBQ0YsSUFBTSxJQUFJLEdBQUc7Z0JBQ1QsRUFBRSxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDakIsR0FBRyxFQUFDLENBQUM7YUFDUixDQUFBO1lBQ0QsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBQyxJQUFJLENBQUMsQ0FBQztZQUNqRCxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDYixJQUFHLE1BQU0sSUFBSSxJQUFJO2dCQUFFLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQztpQkFDckMsSUFBRyxNQUFNLElBQUksSUFBSTtnQkFBRSxHQUFHLEdBQUcsZ0JBQWdCLENBQUM7aUJBQzFDLElBQUcsTUFBTSxJQUFJLElBQUk7Z0JBQUUsR0FBRyxHQUFHLGNBQWMsQ0FBQztZQUU3QyxJQUFNLE9BQU8sR0FBRztnQkFDWixPQUFPLEVBQUMsR0FBRztnQkFDWCxRQUFRLEVBQUMsQ0FBQztnQkFDVixVQUFVLEVBQUMsSUFBSTtnQkFDZixTQUFTLEVBQUMsTUFBTTthQUNuQixDQUFBO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQkFBMEIsRUFBQyxPQUFPLENBQUMsQ0FBQztZQUNoRCxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hELFFBQVEsRUFBRSxDQUFDO1NBQ2Q7SUFDTCxDQUFDO0lBR0QsUUFBUTtJQUNSLFlBQVksWUFBQyxRQUFRO1FBQ2pCLElBQUksT0FBTyxFQUFFLEtBQUksV0FBVyxJQUFJLEVBQUUsS0FBSSxJQUFJLEVBQUU7WUFDeEMsMEZBQTBGO1lBQzFGLDZCQUE2QjtZQUM3QiwwQ0FBMEM7WUFDMUMsSUFBSTtZQUNKLDJEQUEyRDtZQUMzRCxZQUFZO1lBQ1osRUFBRSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7Z0JBQ3RCLElBQUksRUFBRSxXQUFXO2dCQUNqQixJQUFJLEVBQUU7b0JBQ0YsTUFBTSxFQUFFLE1BQU07b0JBQ2QsV0FBVyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2lCQUM5QztnQkFDRCxPQUFPLEVBQUUsVUFBQSxHQUFHO29CQUNSLGdDQUFnQztvQkFDaEMsMERBQTBEO29CQUMxRCxJQUFHLFFBQVEsRUFBQzt3QkFDUixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ2pCO2dCQUVMLENBQUM7Z0JBQ0QsSUFBSSxFQUFFLFVBQUEsR0FBRztvQkFDTCwwQkFBMEI7b0JBQzFCLE9BQU87b0JBQ1AsSUFBRyxRQUFRLEVBQUM7d0JBQ1IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO3FCQUNqQjtvQkFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQTtnQkFDbEMsQ0FBQzthQUNBLENBQUMsQ0FBQTtTQUNMO0lBQ0wsQ0FBQztJQUVHLFNBQVM7SUFDYixXQUFXLEVBQVgsVUFBWSxRQUFrQjtRQUMxQixJQUFJLE9BQU8sRUFBRSxLQUFJLFdBQVcsSUFBSSxFQUFFLEtBQUksSUFBSSxFQUFFO1lBQ3JDLFlBQVk7WUFDZixFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDdEIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRTtvQkFDRixNQUFNLEVBQUUsTUFBTTtpQkFDakI7Z0JBQ0QsT0FBTyxFQUFFLFVBQUEsR0FBRztvQkFDUix3Q0FBd0M7b0JBQ3hDLElBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUM7d0JBQ2Ysa0VBQWtFO3dCQUNsRSxrRUFBa0U7d0JBQ2xFLHFFQUFxRTtxQkFDeEU7b0JBQ0QsSUFBRyxRQUFRO3dCQUNQLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFFdEIsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBQSxHQUFHO29CQUNGLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDckIsQ0FBQzthQUNBLENBQUMsQ0FBQTtTQUNMO0lBQ0wsQ0FBQztJQUVELFFBQVE7SUFDUixXQUFXLFlBQUMsTUFBTSxFQUFDLE1BQU0sRUFBQyxRQUFRO1FBQzlCLElBQUksT0FBTyxFQUFFLEtBQUksV0FBVyxJQUFJLEVBQUUsS0FBSSxJQUFJLEVBQUU7WUFDeEMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUcsTUFBTSxJQUFJLENBQUMsRUFBQztnQkFDWCxXQUFXLEdBQUc7b0JBQ1YsTUFBTSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxZQUFZO29CQUM1QyxNQUFNLEVBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFlBQVk7b0JBQzVDLFVBQVUsRUFBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVztpQkFDbEQsQ0FBQTthQUNKO2lCQUNJLElBQUcsTUFBTSxJQUFJLElBQUksRUFBQztnQkFDbkIsV0FBVyxHQUFHLE1BQU0sQ0FBQzthQUN4QjtpQkFDSSxJQUFHLE1BQU0sSUFBSSxJQUFJLEVBQUM7Z0JBQ25CLFdBQVcsR0FBRyxNQUFNLENBQUM7YUFDeEI7aUJBQ0ksSUFBRyxNQUFNLElBQUksSUFBSSxFQUFDO2dCQUNuQixXQUFXLEdBQUcsTUFBTSxDQUFDO2FBQ3hCO1lBRUQsWUFBWTtZQUNaLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO2dCQUN0QixJQUFJLEVBQUUsVUFBVTtnQkFDaEIsSUFBSSxFQUFFO29CQUNGLE1BQU0sRUFBRSxNQUFNO29CQUNkLFFBQVEsRUFBRSxNQUFNO29CQUNoQixRQUFRLEVBQUUsV0FBVztpQkFDeEI7Z0JBQ0QsT0FBTyxFQUFFLFVBQUEsR0FBRztvQkFDUixnQ0FBZ0M7b0JBQ2hDLElBQUcsUUFBUSxFQUFDO3dCQUNSLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDakI7b0JBQ0QsMEJBQTBCO2dCQUM5QixDQUFDO2dCQUNELElBQUksRUFBRSxVQUFBLEdBQUc7b0JBQ0wsMEJBQTBCO29CQUMxQixJQUFHLFFBQVEsRUFBQzt3QkFDUixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7cUJBQ2pCO29CQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUNsQyxDQUFDO2FBQ0EsQ0FBQyxDQUFBO1NBQ0w7SUFDTCxDQUFDO0lBRUQsYUFBYTtJQUNiLFlBQVksRUFBWixVQUFhLGFBQXFCLEVBQUUsUUFBZ0IsRUFBRSxNQUFjLEVBQUUsUUFBUTtJQUc5RSxDQUFDO0lBRUQsU0FBUztJQUNULFdBQVcsRUFBWCxVQUFZLFFBQWtCO1FBQzFCLFlBQVk7UUFDWCxJQUFJLE9BQU8sRUFBRSxLQUFJLFdBQVcsSUFBSSxFQUFFLEtBQUksSUFBSSxFQUFFO1lBQ3JDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbkQsSUFBSSxRQUFRLEdBQUc7Z0JBQ1gsZUFBZTtnQkFDZixRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFFBQVE7Z0JBQzNDLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVTtnQkFDL0MsYUFBYSxFQUFFLElBQUk7YUFDdEIsQ0FBQTtZQUVGLFlBQVk7WUFDWCxFQUFFLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztnQkFDdEIsSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLElBQUksRUFBRTtvQkFDRixNQUFNLEVBQUUsTUFBTTtvQkFDZCxRQUFRLEVBQUUsUUFBUTtpQkFDckI7Z0JBQ0QsT0FBTyxFQUFFLFVBQUEsR0FBRztvQkFDUiwwQkFBMEI7b0JBQzFCLElBQUcsUUFBUSxFQUFDO3dCQUNSLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztxQkFDakI7Z0JBRUwsQ0FBQztnQkFDRCxJQUFJLEVBQUUsVUFBQSxHQUFHO29CQUNMLElBQUcsUUFBUSxFQUFDO3dCQUNULFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDbkI7Z0JBQ0wsQ0FBQzthQUNBLENBQUMsQ0FBQTtTQUNSO0lBQ04sQ0FBQztJQUVBLFVBQVUsRUFBVixVQUFXLElBQVU7UUFDbEIsSUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRCxJQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwRCxJQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUN2RCxJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRCxJQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUMzRCxJQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVyRSxPQUFVLElBQUksU0FBSSxLQUFLLFNBQUksR0FBRyxTQUFJLEtBQUssU0FBSSxPQUFPLFNBQUksT0FBTyxTQUFJLFlBQWMsQ0FBQztJQUNwRixDQUFDO0lBRUQsT0FBTztJQUNQLE9BQU87UUFDSCxJQUFNLFNBQVMsR0FBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtRQUN6QyxPQUFPLFNBQVMsQ0FBQztJQUNyQixDQUFDO0lBQ0QsVUFBVSxFQUFDO0lBRVgsQ0FBQztJQUNELGVBQWUsRUFBQztJQUVoQixDQUFDO0lBRUQsWUFBWSxFQUFFLFVBQVMsSUFBSSxFQUFDLElBQUk7UUFDNUIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFBO1FBQ2xCLFFBQU8sSUFBSSxFQUFDO1lBQ1IsS0FBSyxVQUFVO2dCQUNYLE1BQU07WUFDVixLQUFLLGFBQWE7Z0JBQ2QsU0FBUyxHQUFHO29CQUNSLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO2lCQUNqRCxDQUFBO2dCQUNELE1BQU07WUFDVixLQUFLLGNBQWM7Z0JBQ2YsU0FBUyxHQUFHO29CQUNSLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO29CQUM5QyxjQUFjLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUTtvQkFDekIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO2lCQUN0QixDQUFBO2dCQUNELE1BQU07WUFDVixLQUFLLGNBQWM7Z0JBQ2YsU0FBUyxHQUFHO29CQUNSLGFBQWEsRUFBQyxNQUFNO29CQUNwQixVQUFVLEVBQUMsSUFBSSxDQUFDLEdBQUc7b0JBQ25CLFdBQVcsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFRLE1BQU07aUJBQ3BDLENBQUE7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssZUFBZTtnQkFDaEIsU0FBUyxHQUFHO29CQUNSLGFBQWEsRUFBQyxNQUFNO29CQUNwQixVQUFVLEVBQUMsSUFBSSxDQUFDLEdBQUc7b0JBQ25CLFdBQVcsRUFBQyxJQUFJLENBQUMsRUFBRSxDQUFRLE1BQU07aUJBQ3BDLENBQUE7Z0JBQ0QsTUFBTTtZQUNWLEtBQUssVUFBVTtnQkFDWCxTQUFTLEdBQUc7b0JBQ1IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO29CQUNyQixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO2lCQUM1QixDQUFBO2dCQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUM3QixNQUFNO1NBQ2I7UUFDRCxnREFBZ0Q7UUFDaEQseUJBQVcsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsb0JBQW9CLEVBQUU7UUFDbEIsWUFBWTtRQUNaLElBQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVDLElBQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7UUFDNUMsUUFBUSxXQUFXLENBQUMsVUFBVSxFQUFFO1lBQzVCLEtBQUssU0FBUztnQkFDVixPQUFPLEtBQUssQ0FBQztZQUNqQixLQUFLLE9BQU87Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDakIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sS0FBSyxDQUFDO1lBQ2pCO2dCQUNJLE9BQU8sTUFBTSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztDQUVKLENBQUM7QUFDTyw0QkFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4uLy4uL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuLy/mnIDlpKflt6XlhbfnsbsgIOWQhOenjeWFrOWFseaWueazle+8jOS7peWPiuWkhOeQhuS4iuS8oO+8jOiOt+WPluWQjuerr+aOpeWPo+aVsOaNrlxyXG52YXIgR2FtZVRvb2wgPSB7XHJcbiAgICBfc3RhcnRUaW1lOiAwLFxyXG4gICAgX2VuZFRpbWU6IDAsXHJcbiAgICBfdG90YWxUaW1lOiAwLFxyXG4gICAgXHJcbiAgICAvL+iOt+WPlnVzZXJJZFxyXG4gICAgQXV0aGVudGljYXRpb24oKXtcclxuICAgICAgICBsZXQgbmFtZSA9IFwidXNlcl9cIiArIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQ7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpKTtcclxuICAgICAgICBpZihkYXRhID09IFwidW5kaWZlbmRcIiB8fCBkYXRhPT1udWxsIHx8IGRhdGEgPT0gXCJcIil7XHJcbiAgICAgICAgICAgIHZhciB1cmxOb3cgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgICAgICAgICAgaWYoIXRoaXMuY29udGFpbnNUcmFpbih1cmxOb3cpKXtcclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vYXBpLnNwYXJrdXMuY24vYXBpL3VzZXIvYXV0aC9sb2dpbj9kb21haW49aHVpMzI1NzlXZFlQc2dZcSZjYWxsYmFjaz1cIitsb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShuYW1lLGRhdGEpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkID0gcGFyc2VJbnQoZGF0YS51c2VySWQpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY29udGFpbnNUcmFpbihzdHIpIHtcclxuICAgICAgICByZXR1cm4gL2Zyb209dHJhaW4vaS50ZXN0KHN0cik7XHJcbiAgICB9LFxyXG5cclxuICAgIC8v5Z+L54K55LiK5LygXHJcbiAgICBzZXRHYW1lRGF0YSgpe1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOWIneWni+WMliDmr4/mrKHmuIXpm7ZcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdBTUVfREFUQSA9IFtdO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBLnB1c2goY2MuZnguR2FtZUNvbmZpZy5DTElDS19EQVRBKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX2luaXQoKTtcclxuICAgICAgICBsZXQgZGF0YSA9IGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBO1xyXG4gICAgICAgIGxldCBtYXRjaElkID0gdGhpcy5nZXRNYXRjaElkKCk7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcImdhbWVJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCxcclxuICAgICAgICAgICAgXCJzY29kZVwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvZGUsXHJcbiAgICAgICAgICAgIFwibWF0Y2hJZFwiOm1hdGNoSWQsXHJcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIrkvKDmlbDmja46XCIscG9zdERhdGEpO1xyXG4gICAgICAgIC8vIGNjLmZ4Lkh0dHBVdGlsLnVwbG9hZFVzZXJMb2dEYXRhKHBvc3REYXRhLGZ1bmN0aW9uKCl7fSlcclxuICAgIH0sXHJcbiAgICAvL+S4iuS8oOaOkuihjOamnCAgdHlwZeS4ujFcclxuICAgIHNldFJhbmsoZGF0YSl7XHJcbiAgICAgICAgLy9HQU1FX0RBVEEg5Yid5aeL5YyWIOavj+asoea4hembtlxyXG4gICAgICAgIGxldCBwb3N0RGF0YSA9IHtcclxuICAgICAgICAgICAgXCJnYW1lSWRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZUlkLFxyXG4gICAgICAgICAgICBcInVzZXJJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VySWQsXHJcbiAgICAgICAgICAgIFwidHlwZVwiOjEsXHJcbiAgICAgICAgICAgIFwic2NvcmVcIjogZGF0YS5zY29yZSxcclxuICAgICAgICAgICAgXCJhY2N1cmFjeVwiOiBkYXRhLmRhdGUsXHJcbiAgICAgICAgICAgIFwic3VjY2Vzc1wiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc3VjY2Vzc1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gY2MuZnguSHR0cFV0aWwucmFua0RhdGEoMSxmdW5jdGlvbigpe30scG9zdERhdGEpO1xyXG4gICAgfSxcclxuICAgIC8v6I635Y+W5o6S6KGM5qacIHR5cGXkuLoyXHJcbiAgICBnZXRSYW5rKGRhdGEsY2FsbGJhY2spe1xyXG4gICAgICAgIGxldCByYW5rTGVuZ3RoID0gZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcImdhbWVJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCxcclxuICAgICAgICAgICAgXCJwYWdlXCI6MSxcclxuICAgICAgICAgICAgXCJwYWdlU2l6ZVwiOnJhbmtMZW5ndGhcclxuICAgICAgICB9OyBcclxuICAgICAgICAvL+Wbnuiwg+i/m2dldFJhbmtEYXRhXHJcbiAgICAgICAgLy8gY2MuZnguSHR0cFV0aWwucmFua0RhdGEoMixkYXRhID0+e2NhbGxiYWNrKGRhdGEpfSxwb3N0RGF0YSk7XHJcbiAgICB9LFxyXG4gICAgLy/ojrflj5ZtYXRjaElkICDnlKjkuo7kuIrkvKDmr4/mrKHngrnlh7vmlbDmja7ph4zpnaLorrDlvZVpZOaWueS+v+afpeivolxyXG4gICAgZ2V0TWF0Y2hJZCAoKXtcclxuICAgICAgICBsZXQgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoSWRcIik7XHJcbiAgICAgICAgbGV0IHRlbXBJZCA9IG1hdGNoSWQ7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBcInVuZGlmZW5kXCIgfHwgbWF0Y2hJZD09bnVsbCl7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29udGFpbnNOYW5hbmEobWF0Y2hJZCkgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBtYXRjaElkID0gIHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2hhciA9IHBhcnNlSW50KHRlbXBJZC5zdWJzdHJpbmcoMTAsdGVtcElkLmxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYXIgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaElkICA9IHRlbXBJZC5zbGljZSgwLCAxMCkgKyBjaGFyICsgXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNvbnRhaW5zTmFuYW5hKG1hdGNoSWQpKSBtYXRjaElkID0gdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hdGNoSWQgPSBtYXRjaElkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixtYXRjaElkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5jb250YWluc05hbmFuYShtYXRjaElkKSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgbWF0Y2hJZCA9ICB0aGlzLnNldE1hdGNoSWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoSWQ7XHJcbiAgICB9LFxyXG4gICAgLy/mo4DmtYttYXRjaElkIOWmguaenOaciee8k+WtmOS7peWJjeeahG5hbmFuYeaVsOaNrua4hemZpFxyXG4gICAgY29udGFpbnNOYW5hbmEoc3RyKSB7XHJcbiAgICAgICAgcmV0dXJuIC9uYS9pLnRlc3Qoc3RyKTtcclxuICAgIH0sXHJcbiAgICAvL+mHjeaWsOiuvue9rk1hdGNoSWRcclxuICAgIHNldE1hdGNoSWQgKCl7XHJcbiAgICAgICAgLy8g5a6a5LmJ5YyF5ZCr5Y+v55So5a2X56ym55qE5a2X56ym6ZuGXHJcbiAgICAgICAgY29uc3QgY2hhcmFjdGVycyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OSc7XHJcbiAgICAgICAgLy8g5Yib5bu65LiA5Liq5pWw57uE5Lul5L+d5a2Y6ZqP5py65a2X56ymXHJcbiAgICAgICAgY29uc3QgdXVpZEFycmF5ID0gW107XHJcbiAgICAgICAgLy8g5b6q546vMTDmrKEg55Sf5oiQMTDkvY3nmoRVVUlEXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyDnlJ/miJDpmo/mnLrntKLlvJXvvIzojIPlm7TmmK/lrZfnrKbpm4bnmoTplb/luqZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIC8vIOS7juWtl+espumbhuS4reiOt+WPlumaj+acuuWtl+esplxyXG4gICAgICAgICAgICBjb25zdCByYW5kb21DaGFyID0gY2hhcmFjdGVycy5jaGFyQXQocmFuZG9tSW5kZXgpO1xyXG4gICAgICAgICAgICAvLyDlsIblrZfnrKbmt7vliqDliLDmlbDnu4TkuK1cclxuICAgICAgICAgICAgdXVpZEFycmF5LnB1c2gocmFuZG9tQ2hhcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkYXRhID0gIHV1aWRBcnJheS5qb2luKCcnKSArIDEgKyBcIlwiO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoTnVtYmVyXCIsMSk7XHJcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibWF0Y2hJZFwiLGRhdGEpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYXRjaElkID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgICAvL+aIquWPluWQjeWtl1xyXG4gICAgc3ViTmFtZShuYW1lLGxlbmd0aCl7XHJcbiAgICAgICAgaWYobmFtZS5sZW5ndGggPiBsZW5ndGgpe1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCxsZW5ndGgpICsgXCIuLi5cIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgIH0sXHJcbiAgICAvL+iuvue9ruWktOWDj1xyXG4gICAgc2V0UGljKG5vZGUscGljKXtcclxuICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB1cmwgPSBwaWM7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGZldGNoKHVybClcclxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudGhlbihlcnJObyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIG5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBuZXcgY2MuU3ByaXRlRnJhbWUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycix0ZXh0dXJlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcbiAgICAvL+esrOS4gOS4quWPguaVsOaKiuebruagh+W4pui/m+adpeWkhOeQhu+8jOesrOS6jOS4quWPguaVsOS4uuWQjeWtl+mVv+W6pu+8jOS4jeWQjOWcuuaZr+S4jeWQjOmcgOaxglxyXG4gICAgLy/lkI3lrZc055+t77yM5bCP5o6S6KGM77yM5ZCN5a2XNumVv++8jOWkp+aOkuihjFxyXG4gICAgZ2V0UmFua0RhdGEoZGF0YSx0YXJnZXQsbmFtZUxlbmd0aCl7XHJcbiAgICAgICAgdGFyZ2V0Lmxpc3REYXRhID0gZGF0YS5kYXRhLmxpc3Q7XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZEYXRhID0gZGF0YS5kYXRhLmluZm87XHJcbiAgICAgICAgbGV0IHJhbmtEYXRhID0gW107XHJcbiAgICAgICAgbGV0IHNlbGYgPSBmYWxzZTtcclxuICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0UGljKHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGFyZ2V0LnNlbGZEYXRhLnBpYyk7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTw9dGFyZ2V0Lmxpc3REYXRhLmxlbmd0aC0xO2krKyl7XHJcbiAgICAgICAgICAgIHJhbmtEYXRhLnB1c2goe3Jhbms6KGkrMSksIG5hbWU6dGFyZ2V0Lmxpc3REYXRhW2ldLm5pY2tOYW1lLCB0b3RhbDp0YXJnZXQubGlzdERhdGFbaV0uc2NvcmUsdGltZTpudWxsLCBwaWM6dGFyZ2V0Lmxpc3REYXRhW2ldLnBpY30pO1xyXG4gICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkID09IHRhcmdldC5saXN0RGF0YVtpXS51c2VySWQpe1xyXG4gICAgICAgICAgICAgICAgc2VsZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0oaSsxKSArIFwiXCI7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGkgPT0gKHRhcmdldC5saXN0RGF0YS5sZW5ndGgtMSkgJiYgc2VsZiA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCI5OStcIjsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZEYXRhLm5pY2tOYW1lID0gY2MuZnguR2FtZVRvb2wuc3ViTmFtZSh0YXJnZXQuc2VsZkRhdGEubmlja05hbWUsbmFtZUxlbmd0aCk7XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRhcmdldC5zZWxmRGF0YS5uaWNrTmFtZTtcclxuICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRhcmdldC5zZWxmRGF0YS5zY29yZTtcclxuICAgICAgICBsZXQgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lU2hlbk5vbmcodGFyZ2V0LnNlbGZEYXRhLnRvdGxlVGltZXMpO1xyXG4gICAgICAgIC8vIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcCArIFwiXCI7XHJcbiAgICAgICAgc3dpdGNoKHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcpe1xyXG4gICAgICAgICAgICBjYXNlIFwiMVwiOlxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCIyXCI6XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIjNcIjpcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWkp+aOkuihjFxyXG4gICAgICAgIGlmKG5hbWVMZW5ndGggPT0gNil7XHJcbiAgICAgICAgICAgIHRhcmdldC5yYW5rTGlzdC5zZXREYXRhKHJhbmtEYXRhKTtcclxuICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgIGlmKHRhcmdldC5zZWxmRGF0YS50b3RhbFN1bkNvdW50ID09IDApIHRhcmdldC5zZWxmTm9kZS5vcGFjaXR5ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFNlZWRSYW5kb206IGZ1bmN0aW9uIChtaW4sIG1heCkgey8v5YyF5ZCrbWluIOS4jeWMheWQq21heFxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6ZqP5py65pWwOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCk7XHJcbiAgICAgICAgbWF4ID0gbWF4IHx8IDE7XHJcbiAgICAgICAgbWluID0gbWluIHx8IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1cnJTZWVkID0gKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCAqIDkzMDEgKyA0OTI5NykgJSAyMzMyODA7XHJcbiAgICAgICAgbGV0IHJuZCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCAgLyAyMzMyODAuMDtcclxuICAgICAgICBsZXQgdG1wID0gbWluICsgcm5kICogKG1heCAtIG1pbik7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRtcCk7XHJcbiAgICB9LFxyXG4gICAgLy/ojrflj5blhbPljaHphY3nva7nmoTpgqPkuKrlhbPljaHmlbBcclxuICAgIGdldEN1c3RvbSh0eXBlKXtcclxuICAgICAgICBsZXQgY3VzdG9tID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShjYy5meC5zdG9yYWdlVHlwZS5zdG9yYWdlVHlwZUN1c3RvbSk7XHJcbiAgICAgICAgaWYoY3VzdG9tID09IFwidW5kaWZlbmRcIiB8fCBjdXN0b209PW51bGwgfHwgY3VzdG9tID09IFwiXCIpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1c3RvbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk9fU0VUKFwiY3VzdG9tXCIsY3VzdG9tWzBdKTtcclxuICAgICAgICAgICAgaWYoY3VzdG9tWzBdICE9IDAgfHwgdHlwZSA9PSAgdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBjdXN0b20uc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgIGlmKGN1c3RvbS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDdXN0b20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShjYy5meC5zdG9yYWdlVHlwZS5zdG9yYWdlVHlwZUN1c3RvbSxjdXN0b20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8v5pys5Zyw5rKh5pyJ5a2Y5YKo5Yiw6YWN572u77yM5oiW6ICF6YWN572u55So5a6M77yM6YeN5paw5Yib5bu66YWN572uXHJcbiAgICBzZXRDdXN0b20oKXtcclxuICAgICAgICBsZXQgYXJyYXlMZW5ndGggPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk8ubGVuZ3RoO1xyXG4gICAgICAgIGxldCBhcnJheUxpc3QgPSBbXTtcclxuICAgICAgICBmb3IobGV0IGk9MTsgaTxhcnJheUxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBhcnJheUxpc3QucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJyYXlMaXN0LnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XHJcbiAgICAgICAgYXJyYXlMaXN0LnVuc2hpZnQoMClcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk9fU0VUKFwiY3VzdG9tXCIsYXJyYXlMaXN0WzBdKTtcclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKGNjLmZ4LnN0b3JhZ2VUeXBlLnN0b3JhZ2VUeXBlQ3VzdG9tLGFycmF5TGlzdCk7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICBnZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBzaXplID0gY2Mud2luU2l6ZTtcclxuICAgICAgICBsZXQgd2lkdGggPSBzaXplLndpZHRoO1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSBzaXplLmhlaWdodDtcclxuICAgICAgICBpZiAoKGhlaWdodCAvIHdpZHRoKSA+ICgxNi4yIC8gOSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICAvL+WIpOaWreWFqOmdouWxj+mAgumFjVxyXG4gICAgc2V0Rml0OiBmdW5jdGlvbiAoY2FudmFzKSB7XHJcbiAgICAgICAgbGV0IGZsYWcgPSAgY2MuZnguR2FtZVRvb2wuZ2V0U2V0U2NyZWVuUmVzb2x1dGlvbkZsYWcoKTtcclxuICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIFx0Ly8gY29uc29sZS5sb2coXCLkuI3mmK/lhajpnaLlsY9cIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICBcdC8vIGNvbnNvbGUubG9nKFwi5piv5YWo6Z2i5bGPXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmxhZztcclxuICAgIH0sXHJcbiAgICAvL+iOt+WPlua4uOaIj+S/oeaBr1xyXG4gICAgZ2V0R2FtZUluZm86IGZ1bmN0aW9uKG5vZGUpe1xyXG4gICAgICAgIHZhciBqZyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH0sXHJcbiAgICAvL+iuvue9rua4uOaIj+S/oeaBr1xyXG4gICAgc2V0R2FtZUluZm86IGZ1bmN0aW9uKHBkKXtcclxuICAgXHJcbiAgICB9LFxyXG5cclxuICAgIC8v5omT5a2X5py65pWI5p6cXHJcbiAgICB0eXBpbmdBbmkobGFiZWwsdGV4dCxjYix0YXJnZXQpe1xyXG4gICAgICAgIHZhciBzZWxmID0gdGFyZ2V0O1xyXG4gICAgICAgIHZhciBodG1sID0gJyc7XHJcbiAgICAgICAgdmFyIGFyciA9IHRleHQuc3BsaXQoJycpO1xyXG4gICAgICAgIHZhciBsZW4gPSBhcnIubGVuZ3RoO1xyXG4gICAgICAgIHZhciBzdGVwID0gMDtcclxuICAgICAgICBzZWxmLmZ1bmMgPSAoKT0+e1xyXG4gICAgICAgICAgICBodG1sICs9IGFycltzdGVwXTtcclxuICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gaHRtbDtcclxuICAgICAgICAgICAgaWYgKCsrc3RlcCA9PSBsZW4pIHtcclxuICAgICAgICAgICAgICAgIHNlbGYudW5zY2hlZHVsZShzZWxmLmZ1bmMpO1xyXG4gICAgICAgICAgICAgICAgY2IgJiYgY2IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZWxmLnNjaGVkdWxlKHNlbGYuZnVuYywwLjEsIGNjLm1hY3JvLlJFUEVBVF9GT1JFVkVSLCAwKVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVNYXJnaW46KHNlY29uZCkgPT4ge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdG90YWwgPSBzZWNvbmQ7XHJcbiAgICAgICAgbGV0IGhvdXIgPSAwO1xyXG4gICAgICAgIGhvdXIgPSBwYXJzZUludCgodG90YWwgLyAzNjAwKSArIFwiXCIpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQoKGFmdGVySG91ciAvIDYwKStcIlwiKTsvL+iuoeeul+aVtOaVsOWIhlxyXG4gICAgICAgIGxldCBtID0gXCJcIiArIG1pbjsgIFxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtID0gXCIwXCIrbWluO1xyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIlwiO1xyXG4gICAgICAgIGlmKGFmdGVyTWluIDwgMTApIG1pYW8gPSBcIjBcIiArIGFmdGVyTWluO1xyXG4gICAgICAgIHJldHVybiBtICsgJzonICsgbWlhb1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVTaGVuTm9uZzooc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgc2Vjb25kID0gcGFyc2VJbnQoc2Vjb25kLzEwMDArXCJcIik7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0b3RhbCA9IHNlY29uZDtcclxuICAgICAgICBsZXQgbWluID0gMDtcclxuICAgICAgICBpZih0b3RhbCA+IDYwKXtcclxuICAgICAgICAgICAgbWluID0gcGFyc2VJbnQoKHRvdGFsIC8gNjApK1wiXCIpOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBtID0gIG1pbiArIFwiJ1wiOyAgXHJcblxyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWlhbyA9IGFmdGVyTWluICsgXCInJ1wiO1xyXG4gICAgICAgIHJldHVybiBtICsgbWlhb1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+aJk+S5seaVsOe7hFxyXG4gICAgc2h1ZmZsZUFycmF5OiBmdW5jdGlvbiAoYXJyYXkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xyXG4gICAgICAgICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7XHJcbiAgICAgICAgICAgIFthcnJheVtpXSwgYXJyYXlbal1dID0gW2FycmF5W2pdLCBhcnJheVtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnJheTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8v5aKe5Yqg5YWz5Y2h5pWwXHJcbiAgICBhZGRMZXZlbCh0aW1lMSx0aW1lMil7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICs9IDE7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMTU2KXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMTU2OyBcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgbGV2ZWxJbmZvID0ge1xyXG4gICAgICAgICAgICBsZXZlbDpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDp0aW1lc3RhbXAsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiNTU1NTXlrZjlgqjlhbPljaHmlbDmja46XCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgIGlmKHRpbWUxICYmIHRpbWUyKXtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICB0aW1lOnRpbWUxLFxyXG4gICAgICAgICAgICAgICAgYWRkX1RpbWU6dGltZTIsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6XCJzdWNjZXNzXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJmaW5pc2hfc3RhZ2VcIixkYXRhKTtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlrZjlgqjnu5Pmnpw6XCIsZGF0YSk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsZGF0YSk7XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcblxyXG4gICAgLy/mlLnlj5jph5HluIHkv6Hmga9cclxuICAgIGNoYW5nZUNvaW4oY29pbil7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJjaGFuZ2VDb2luXCIsY29pbik7XHJcbiAgICAgICAgaWYoY29pbiA9PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBpZihjb2luIDwgMCAmJiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IC1jb2luKXtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLph5HluIHkuI3otrNcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwtY29pbik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gKz0gY29pbjtcclxuXHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAwKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaUueWPmOeahOmHkeW4gTpcIixjb2luKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuiHqui6q+mHkeW4geS/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgY29pbkluZm8gPSB7XHJcbiAgICAgICAgICAgIGNvaW46Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDp0aW1lc3RhbXAsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfU2V0U3VwZXJQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImNvaW5cIixjb2luSW5mbyk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlrZjlgqjph5HluIHmlbDmja46XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sY29pbkluZm8pO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS8oFwiLGRhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIC8v6I635Y+W55So5oi36YeR5biB5pWw6YePXHJcbiAgICBnZXRVc2VyQ29pbihjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6ICd1c2VyQ29pbicsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn6K+75Y+W55So5oi36YeR5biB5pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/mlLnlj5jnlKjmiLfph5HluIFcclxuICAgIHNldFVzZXJDb2luKGNhbGxiYWNrKXtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPD0gMCB8fCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLph5HluIHkuIrkvKDlpLHotKVcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAvLyBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuS4iuS8oOeahOmHkeW4geaVsOmHjzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckNvaW4nLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJyxcclxuICAgICAgICAgICAgICAgIGNvaW5BbW91bnQ6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5LqR5Ye95pWw6L+U5Zue57uT5p6cOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo6YeR5biB5pWw5o2u5oiQ5YqfJyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOmHkeW4geaVsOaNruWksei0pScpXHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WtmOWCqOeUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8v6I635Y+W55So5oi35YWz5Y2h5pWwXHJcbiAgICBnZXRVc2VyTGV2ZWwoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckxldmVsJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/ov5vmuLjmiI/lpITnkIYg5L2T5Yqb5YC85oOF5Ya1XHJcbiAgICBnZXRIZWFsdGgoY2FsbGJhY2s6IEZ1bmN0aW9uKXtcclxuICAgICAgICBsZXQgaGVhbHRoID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImhlYWx0aFwiKTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDU7XHJcbiAgICAgICAgLy/msqHmnInlrZjlgqjov4fkvZPlipvlgLxcclxuICAgICAgICBpZihoZWFsdGggPT0gbnVsbCB8fCBoZWFsdGggPT0gdW5kZWZpbmVkIHx8IGhlYWx0aCA9PSBcIlwiKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHlrZjlgqjov4fkvZPlipvlgLzvvIzliJ3ov5tcIik7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDU7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJIZWFsdGgoKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+aOpeWPo+i/lOWbnue7k+aenFwiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IGRhdGEucmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lID0gZGF0YS5yZXN1bHQudGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWFsdGhJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlYWx0aFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjpkYXRhLnJlc3VsdC50aW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiaGVhbHRoXCIsaGVhbHRoSW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDkvZPlipvmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgwLCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjaykgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInlrZjlgqjov4fkvZPlipvlgLw6XCIsaGVhbHRoKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwID0gaGVhbHRoLmhlYWx0aDtcclxuICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkvZPlipvlgLzor7vlj5blrozmr5VcIik7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBpZihoZWFsdGguaGVhbHRoIDwgMCl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+WAvOW8guW4uO+8jOW9kumbtlwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDA7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VySGVhbHRoKDAsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICBpZihjYWxsYmFjaykgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoaGVhbHRoLmhlYWx0aCA8IDUpe1xyXG4gICAgICAgICAgICAgICAgLy8gMzDliIbpkp/nmoTmr6vnp5LmlbBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRoaXJ0eU1pbnV0ZXMgPSAzMCAqIDYwICogMTAwMDsgXHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbGFwc2VkVGltZSA9IHRpbWVzdGFtcCAtIGhlYWx0aC50aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAvLyDorqHnrpfmgaLlpI3nmoTkvZPlipvlgLxcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY292ZXJlZEhlYWx0aCA9IE1hdGgubWluKDUgLSBoZWFsdGguaGVhbHRoLCBNYXRoLmZsb29yKGVsYXBzZWRUaW1lIC8gdGhpcnR5TWludXRlcykpOyBcclxuICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyZWRIZWFsdGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhbHRoLmhlYWx0aCArPSByZWNvdmVyZWRIZWFsdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aChyZWNvdmVyZWRIZWFsdGgsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGDkvZPlipvlgLzmgaLlpI0gJHtyZWNvdmVyZWRIZWFsdGh9IOeCue+8jOW9k+WJjeS9k+WKm+WAvDogJHtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHB9YCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuoeeul+i3neemu+S4i+S4gOasoeaBouWkjeeahOWJqeS9meaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSBNYXRoLmNlaWwoKHRoaXJ0eU1pbnV0ZXMgLSAoZWxhcHNlZFRpbWUgJSB0aGlydHlNaW51dGVzKSkgLyAxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhg5L2T5Yqb5YC85pyq5ruh77yM5b6F5oGi5aSN77yM6Led56a75LiL5LiA5qyh5oGi5aSN6L+Y5YmpICR7cmVtYWluaW5nVGltZX0g56eSYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lID0gcmVtYWluaW5nVGltZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/ojrflj5bnlKjmiLfkvZPlipvlgLxcclxuICAgIGdldFVzZXJIZWFsdGgoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Y2z5bCG6L+b5YWl5L2T5Yqb6I635Y+W5o6l5Y+jXCIpO1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VzZXJIZWFsdGgnLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWFkJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkvZPlipvojrflj5bmiJDlip9cIixyZXMpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzKTsgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkvZPlipvojrflj5blpLHotKVcIixlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8v6K6+572u55So5oi35L2T5Yqb5YC8ICDmnInlj6/og73liqDvvIzmnInlj6/og73lrprml7blmajlh49cclxuICAgIHNldFVzZXJIZWFsdGgoaGVhbHRoLGNhbGxiYWNrKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAgKz0gaGVhbHRoO1xyXG4gICAgICAgIC8vIGlmKGhlYWx0aCA8IDApIHtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85oGi5aSNXCIpO1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgbGV0IGhlYWx0aEluZm8gPXt9XHJcbiBcclxuICAgICAgICAvL+WmguaenOa2iOiAl+S5i+WJjeS4jeaYr+a7oeS9k+WKm++8jOivtOaYjuW3sue7j+WcqOaBouWkjeacn++8jOW5tuS4jeeUqOS/ruaUueaXtumXtFxyXG4gICAgICAgIGlmKGhlYWx0aCA8IDAgJiYgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwICE9IDQpIHtcclxuICAgICAgICAgICAgbGV0IG9sZFRpbWUgPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwiaGVhbHRoXCIpLnRpbWVzdGFtcDtcclxuICAgICAgICAgICAgaGVhbHRoSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIFwiaGVhbHRoXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLFxyXG4gICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjpvbGRUaW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaGVhbHRoSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIFwiaGVhbHRoXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLFxyXG4gICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiaGVhbHRoXCIsaGVhbHRoSW5mbyk7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAndXNlckhlYWx0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhbHRoQW1vdW50OiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOnRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcign5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/otK3kubDooYzkuLpcclxuICAgIGJ1eVJldmlldyhjb2luLGNhbGxiYWNrOiBGdW5jdGlvbil7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5a6e6ZmF5Y2z5bCG5raI6ICX6YeR5biBOlwiLGNvaW4pO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNoYW5nZUNvaW4oY29pbik7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+abtOaUueeUqOaIt+mBk+WFt+aVsFxyXG4gICAgYnV5UHJvcChwcm9waWQsY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmNoYW5nZUNvaW4oLTE1MDApO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcChwcm9waWQsMywoZGF0YSk9PntcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiAocHJvcGlkICsgXCJcIiksXHJcbiAgICAgICAgICAgICAgICBudW06M1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2dldFwiLGRhdGEpO1xyXG4gICAgICAgICAgICBsZXQgX2lkID0gXCJcIjtcclxuICAgICAgICAgICAgaWYocHJvcGlkID09IDIwMDEpIF9pZCA9IFwiZnJlZXplX2luX2dhbWVcIjtcclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMikgX2lkID0gXCJoYW1tZXJfaW5fZ2FtZVwiO1xyXG4gICAgICAgICAgICBlbHNlIGlmKHByb3BpZCA9PSAyMDAzKSBfaWQgPSBcIndhbmRfaW5fZ2FtZVwiO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgYnV5RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6X2lkLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9udW06MSxcclxuICAgICAgICAgICAgICAgIGl0ZW1fcHJpY2U6MTUwMCxcclxuICAgICAgICAgICAgICAgIGNvc3RfdHlwZTpcImdvbGRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiX19fX19fX19fX19f5Y2z5bCG5LiK5LygU2hvcF9idXlcIixidXlEYXRhKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwic2hvcF9idXlcIixidXlEYXRhKTtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvL+aUueWPmOeUqOaIt+WFs+WNoVxyXG4gICAgc2V0VXNlckxldmVsKGNhbGxiYWNrKXtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsIDw9IDAgfHwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuetiee6p+mHjee9ruS4ujBcIik7XHJcbiAgICAgICAgICAgIC8vICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAwO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y2z5bCG5LiK5Lyg55qE5YWz5Y2h5pWwOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckxldmVsJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXHJcbiAgICAgICAgICAgICAgICBsZXZlbEFtb3VudDogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5LqR5Ye95pWw6L+U5Zue57uT5p6cOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo5YWz5Y2h5pWw5o2u5oiQ5YqfJyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJylcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAgICAgLy/ojrflj5bnlKjmiLflhbPljaHmlbBcclxuICAgIGdldFVzZXJQcm9wKGNhbGxiYWNrOiBGdW5jdGlvbikge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VzZXJQcm9wJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfpgZPlhbfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5kYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSByZXMucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+aUueWPmOeUqOaIt+mBk+WFt1xyXG4gICAgc2V0VXNlclByb3AocHJvcGlkLGFtb3VudCxjYWxsYmFjayl7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdQcm9wRGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmKHByb3BpZCA9PSAwKXtcclxuICAgICAgICAgICAgICAgIG5ld1Byb3BEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZWV6ZTpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhbW1lcjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIG1hZ2ljX3dhbmQ6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYocHJvcGlkID09IDIwMDEpe1xyXG4gICAgICAgICAgICAgICAgbmV3UHJvcERhdGEgPSBhbW91bnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMil7XHJcbiAgICAgICAgICAgICAgICBuZXdQcm9wRGF0YSA9IGFtb3VudDsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMyl7XHJcbiAgICAgICAgICAgICAgICBuZXdQcm9wRGF0YSA9IGFtb3VudDsgXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlclByb3AnLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJyxcclxuICAgICAgICAgICAgICAgIHByb3BUeXBlOiBwcm9waWQsXHJcbiAgICAgICAgICAgICAgICBwcm9wRGF0YTogbmV3UHJvcERhdGFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfkupHlh73mlbDov5Tlm57nu5Pmnpw6JywgcmVzKTtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOmBk+WFt+aVsOaNruaIkOWKnycpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo6YGT5YW35pWw5o2u5aSx6LSlJylcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5a2Y5YKo6YGT5YW35pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvLyDmo4Dmn6XmmK/lkKbmnInotrPlpJ/nmoTnoazluIFcclxuICAgIGNvbnN1bWVDb2lucyhyZXF1aXJlZENvaW5zOiBudW1iZXIsIHByb3BOYW1lOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBjYWxsYmFjaykge1xyXG4gIFxyXG5cclxuICAgIH0sXHJcblxyXG4gICAgLy8g6K6+572u55So5oi35L+h5oGvXHJcbiAgICBzZXRVc2VySW5mbyhjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lID0gY2MuZnguR2FtZVRvb2wuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIGxldCB1c2VySW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDov5nph4zloavlhpnopoHlrZjlgqjnmoTnlKjmiLfmlbDmja5cclxuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lLCAgIC8v55So5oi35ZCN56ewXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlcmF2YXRhcjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIsICAgICAvL+eUqOaIt+WktOWDj1xyXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3RpbWU6IHRpbWVcclxuICAgICAgICAgICAgICAgIH1cclxuIFxyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NhdmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhOiB1c2VySW5mb1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOeUqOaIt+aVsOaNruaIkOWKnycpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soXCJmYWlsXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgIH0gXHJcbiAgICB9LFxyXG5cclxuICAgICBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgaG91cnMgPSBTdHJpbmcoZGF0ZS5nZXRIb3VycygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldFNlY29uZHMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBTdHJpbmcoZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSkucGFkU3RhcnQoMywgJzAnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fSAke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc30uJHttaWxsaXNlY29uZHN9YDtcclxuICAgIH0sXHJcbiAgICBcclxuICAgIC8v6I635Y+W5pe26Ze05oizXHJcbiAgICBnZXRUaW1lKCl7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gIChuZXcgRGF0ZSgpLmdldFRpbWUoKSlcclxuICAgICAgICByZXR1cm4gdGltZXN0YW1wO1xyXG4gICAgfSxcclxuICAgIHB1c2hMaXN0ZXI6ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuICAgIHJlbW92ZUFsbExpc3RlcjpmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG5cclxuICAgIHNodXNodV9UcmFjazogZnVuY3Rpb24obmFtZSxkYXRhKXtcclxuICAgICAgICBsZXQgZXZlbnREYXRhID0ge31cclxuICAgICAgICBzd2l0Y2gobmFtZSl7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyZWdpc3RlclwiOlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJlbnRlcl9zdGFnZVwiOlxyXG4gICAgICAgICAgICAgICAgZXZlbnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YWdlX2lkOiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZmluaXNoX3N0YWdlXCI6XHJcbiAgICAgICAgICAgICAgICBldmVudERhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2VfaWQ6IChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgKyAxKSxcclxuICAgICAgICAgICAgICAgICAgICBzdGFnZV9kdXJhdGlvbjogZGF0YS50aW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZGVkX3RpbWU6IGRhdGEuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBkYXRhLnJlc3VsdFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyZXNvdXJjZV9nZXRcIjpcclxuICAgICAgICAgICAgICAgIGV2ZW50RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfcmVhc29uOlwi6LSt5Lmw6YGT5YW3XCIsICAgLy/ojrflvpfmnaXmupBcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfbnVtOmRhdGEubnVtLCAgICAgICAvL+iOt+W+l+aVsOmHj1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlX2lkOmRhdGEuaWQgICAgICAgIC8v6YGT5YW3aWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwicmVzb3VyY2VfY29zdFwiOlxyXG4gICAgICAgICAgICAgICAgZXZlbnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZV9yZWFzb246XCLkvb/nlKjpgZPlhbdcIiwgICAvL+iOt+W+l+adpea6kFxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZV9udW06ZGF0YS5udW0sICAgICAgIC8v6I635b6X5pWw6YePXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VfaWQ6ZGF0YS5pZCAgICAgICAgLy/pgZPlhbdpZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7IFxyXG4gICAgICAgICAgICBjYXNlIFwic2hvcF9idXlcIjpcclxuICAgICAgICAgICAgICAgIGV2ZW50RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtX2lkOiBkYXRhLml0ZW1faWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9udW06IGRhdGEuaXRlbV9udW0sXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9wcmljZTogZGF0YS5pdGVtX3ByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvc3RfdHlwZTogZGF0YS5jb3N0X3R5cGUsICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaVsOaNrjpcIixldmVudERhdGEpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfVHJhY2sobmFtZSxldmVudERhdGEpO1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfVHJhY2sobmFtZSwgZXZlbnREYXRhKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0V2VjaGF0R2FtZVZlcnNpb246IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgY29uc3QgYWNjb3VudEluZm8gPSB3eC5nZXRBY2NvdW50SW5mb1N5bmMoKTtcclxuICAgICAgICBjb25zdCBtaW5pUHJvZ3JhbSA9IGFjY291bnRJbmZvLm1pbmlQcm9ncmFtO1xyXG4gICAgICAgIHN3aXRjaCAobWluaVByb2dyYW0uZW52VmVyc2lvbikge1xyXG4gICAgICAgICAgICBjYXNlICdkZXZlbG9wJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5byA5Y+R54mIJztcclxuICAgICAgICAgICAgY2FzZSAndHJpYWwnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICfkvZPpqozniYgnO1xyXG4gICAgICAgICAgICBjYXNlICdyZWxlYXNlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5q2j5byP54mIJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5pyq55+l54mI5pysJztcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxufTtcclxuZXhwb3J0IHsgR2FtZVRvb2wgfTsiXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/GameOver.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '805c6nf399HWZeuWnNB9CTH', 'GameOver'); -// Script/GameOver.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.count = null; - _this.time = null; - _this.selfNode = null; - _this.one = null; - _this.two = null; - _this.three = null; - _this.four = null; - _this.five = null; - return _this; - } - // onLoad () {} - NewClass.prototype.start = function () { - this.count.string = cc.fx.GameConfig.GM_INFO.score + ""; - var yes = 0; - var successList = cc.fx.GameConfig.GM_INFO.successList; - if (successList.length > 0) { - var success = 0; - for (var i = 0; i < successList.length; i++) { - if (successList[i] == true) - success += 1; - } - yes = success / successList.length; - } - yes = Math.floor(yes * 1000) / 10; - this.time.string = yes + "%"; - this.init(); - }; - //初始化数据 - NewClass.prototype.init = function () { - this.listData = []; - this.selfData = null; - this.one.active = false; - this.two.active = false; - this.three.active = false; - this.four.active = false; - this.five.active = false; - var urlNow = window.location.href; - if (this.containsTrain(urlNow)) { - this.node.getChildByName("again").active = false; - this.node.getChildByName("back").active = false; - this.node.getChildByName("finishi").active = true; - this.setLocalStorage(); - } - else { - this.setLocalStorage(); - this.node.getChildByName("again").active = true; - this.node.getChildByName("back").active = true; - this.node.getChildByName("finishi").active = false; - } - this.getRank(); - }; - NewClass.prototype.setLocalStorage = function () { - var timeData = cc.fx.GameConfig.TIME_INFO.totalTime; - var today = new Date().toLocaleDateString(); - var name = "success_" + today + "_" + cc.fx.GameConfig.GM_INFO.scode + "_" + cc.fx.GameConfig.GM_INFO.gameId; - localStorage.setItem(name, JSON.stringify({ success: true })); - }; - //打开排行榜 - NewClass.prototype.openRank = function () { - cc.director.loadScene("RankScene"); - }; - //重新开始玩 - NewClass.prototype.again = function () { - cc.fx.GameConfig.GM_INFO.round = 0; - cc.fx.GameConfig.GM_INFO.level = 0; - cc.fx.GameConfig.GM_INFO.stepTimeList = 0; - cc.fx.GameConfig.GM_INFO.successList = []; - cc.fx.GameConfig.GM_INFO.fen = 0; - cc.fx.GameConfig.GM_INFO.score = 0; - cc.fx.GameConfig.GM_INFO.min_Steps = 0; - cc.fx.GameConfig.GM_INFO.min_Time = 0; - cc.fx.GameConfig.TIME_INFO.totalTime = 120; - cc.director.loadScene("GameScene"); - }; - //判断来源 - NewClass.prototype.containsTrain = function (str) { - return /from=train/i.test(str); - }; - //获取排行榜 - NewClass.prototype.getRank = function () { - var _this = this; - //获取排行榜数据 所需数据量 - var dataFile = { - length: 5 - }; - cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); - }; - //打开排行榜 - NewClass.prototype.jumpFinishi = function () { - var url = "https://train.sparkus.cn/poster/game/" + cc.fx.GameConfig.GM_INFO.scode + "?suc=1"; - window.location.href = url; - }; - //设置排行信息 - NewClass.prototype.getRankData = function (data) { - if (data) { - cc.fx.GameTool.getRankData(data, this, 4); - cc.fx.GameTool.setPic(this.selfNode.getChildByName("pic").getChildByName("icon"), this.selfData.pic); - var length = this.listData.length - 1; - if (length > 4) - length = 4; - for (var i = 0; i <= length; i++) { - this.setRank(i, this.listData[i]); - } - } - }; - //根据内容填充排行榜 - NewClass.prototype.setRank = function (num, data) { - var _this = this; - if (!data) { - return; - } - var hitNode = null; - if (num == 0) { - hitNode = this.one; - } - else if (num == 1) { - hitNode = this.two; - } - else if (num == 2) { - hitNode = this.three; - } - else if (num == 3) { - hitNode = this.four; - } - else if (num == 4) { - hitNode = this.five; - } - var trun = num + 1; - for (var i = 0; i < trun; i++) { - if (this.listData[i] && this.listData[i].nickName == cc.fx.GameConfig.GM_INFO.nickName) { - trun = i + 1; - break; - } - else if (!this.listData[i] == null) { - trun = i * 2; - break; - } - this.node.color = cc.color(this.listData[0], this.listData[1], this.listData[2]); - cc.tween(this.node) - .to(0.5, { scale: 2 }) - .by(1, { opacity: 0 }) - .delay(0.5) - .call(function () { - _this.node.scale = 1; - _this.node.opacity = 255; - _this.node.color = cc.color(255, 255, 255); - }) - .start(); - } - hitNode.getChildByName("num").getComponent(cc.Label).string = num + ""; - cc.tween(hitNode.getChildByName("num").getComponent(cc.Label)) - .to(0.5, { string: trun + "" }) - .start(); - var record = cc.fx.GameConfi.GM_INFO.score; - if (data.score >= record) { - this.selfData = data; - this.selfNode.active = true; - } - if (hitNode) { - hitNode.active = true; - if (data.nickName.length >= 4) - data.nickName = cc.fx.GameTool.subName(data.nickName, 4); - hitNode.getChildByName("name").getComponent(cc.Label).string = data.nickName; - hitNode.getChildByName("total").getComponent(cc.Label).string = data.score; - cc.fx.GameTool.setPic(hitNode.getChildByName("pic").getChildByName("icon"), data.pic); - } - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "count", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "time", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "selfNode", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "one", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "two", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "three", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "four", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "five", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXFMQztRQW5MRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBRXZCLFVBQUksR0FBYSxJQUFJLENBQUM7UUFFdEIsY0FBUSxHQUFZLElBQUksQ0FBQztRQUV6QixTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUV0QixVQUFJLEdBQVksSUFBSSxDQUFDO1FBRXJCLFVBQUksR0FBWSxJQUFJLENBQUM7O0lBcUt6QixDQUFDO0lBbEtHLGVBQWU7SUFDZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDeEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2RCxJQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3RCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDbkMsSUFBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSTtvQkFBRSxPQUFPLElBQUksQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsR0FBRyxH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QUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MENBQ0c7SUFoQkosUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXFMNUI7SUFBRCxlQUFDO0NBckxELEFBcUxDLENBckxxQyxFQUFFLENBQUMsU0FBUyxHQXFMakQ7a0JBckxvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgY291bnQ6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIHRpbWU6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2VsZk5vZGU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBvbmU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0d286IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0aHJlZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZvdXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmaXZlOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIGxpc3REYXRhOiBhbnk7XHJcbiAgICBzZWxmRGF0YTogYW55O1xyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5jb3VudC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvcmUgKyBcIlwiO1xyXG4gICAgICAgIHZhciB5ZXMgPSAwO1xyXG4gICAgICAgIHZhciBzdWNjZXNzTGlzdCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zdWNjZXNzTGlzdDtcclxuICAgICAgICBpZihzdWNjZXNzTGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSAwO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxzdWNjZXNzTGlzdC5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBpZihzdWNjZXNzTGlzdFtpXSA9PSB0cnVlKSBzdWNjZXNzICs9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeWVzID0gc3VjY2Vzcy9zdWNjZXNzTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHllcyA9IE1hdGguZmxvb3IoeWVzICogMTAwMCkvMTA7XHJcbiAgICAgICAgdGhpcy50aW1lLnN0cmluZyA9ICAgeWVzICsgXCIlXCI7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICBcclxuICAgIH0gICBcclxuICAgIC8v5Yid5aeL5YyW5pWw5o2uXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZkRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMub25lLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudHdvLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGhyZWUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3VyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZml2ZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB2YXIgdXJsTm93ID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgaWYodGhpcy5jb250YWluc1RyYWluKHVybE5vdykpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmFja1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiZmluaXNoaVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiYWNrXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImZpbmlzaGlcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdldFJhbmsoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMb2NhbFN0b3JhZ2UoKXtcclxuICAgICAgICBsZXQgdGltZURhdGEgPSBjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy50b3RhbFRpbWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xyXG4gICAgICAgIHZhciBuYW1lID0gYHN1Y2Nlc3NfJHt0b2RheX1fJHtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvZGV9XyR7Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVJZH1gXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoe3N1Y2Nlc3M6dHJ1ZX0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+aJk+W8gOaOkuihjOamnFxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+mHjeaWsOW8gOWni+eOqVxyXG4gICAgYWdhaW4oKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucm91bmQgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN0ZXBUaW1lTGlzdCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN1Y2Nlc3NMaXN0ID0gW107XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZlbiA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjb3JlID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1N0ZXBzID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuVElNRV9JTkZPLnRvdGFsVGltZSA9IDEyMDtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+WIpOaWreadpea6kFxyXG4gICAgY29udGFpbnNUcmFpbihzdHIpIHtcclxuICAgICAgICByZXR1cm4gL2Zyb209dHJhaW4vaS50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluaOkuihjOamnFxyXG4gICAgZ2V0UmFuaygpe1xyXG4gICAgICAgIC8v6I635Y+W5o6S6KGM5qac5pWw5o2uICDmiYDpnIDmlbDmja7ph49cclxuICAgICAgICBsZXQgZGF0YUZpbGUgPSB7XHJcbiAgICAgICAgICAgIGxlbmd0aDo1XHJcbiAgICAgICAgfVxyXG4gICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rKGRhdGFGaWxlLGRhdGEgPT50aGlzLmdldFJhbmtEYXRhKGRhdGEpKTtcclxuICAgIH1cclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBqdW1wRmluaXNoaSgpe1xyXG4gICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vdHJhaW4uc3Bhcmt1cy5jbi9wb3N0ZXIvZ2FtZS9cIiArIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zY29kZSArIFwiP3N1Yz0xXCI7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICB9XHJcbiAgICAvL+iuvue9ruaOkuihjOS/oeaBr1xyXG4gICAgZ2V0UmFua0RhdGEoZGF0YSl7XHJcbiAgICAgICAgaWYoZGF0YSl7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rRGF0YShkYXRhLHRoaXMsNCk7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRQaWModGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGhpcy5zZWxmRGF0YS5waWMpO1xyXG4gICAgICAgICAgICB2YXIgbGVuZ3RoID0gdGhpcy5saXN0RGF0YS5sZW5ndGgtMTsgaWYobGVuZ3RoID4gNCkgbGVuZ3RoID0gNDtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTw9bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJhbmsoaSx0aGlzLmxpc3REYXRhW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5qC55o2u5YaF5a655aGr5YWF5o6S6KGM5qacXHJcbiAgICBzZXRSYW5rKG51bSxkYXRhKXtcclxuICAgICAgICBpZighZGF0YSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBoaXROb2RlID0gbnVsbDtcclxuICAgICAgICBpZihudW0gPT0gMCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMSl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnR3bztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMil7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnRocmVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAzKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMuZm91cjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gNCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLmZpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdHJ1biA9IG51bSArIDE7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8IHRydW47IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubGlzdERhdGFbaV0gJiYgdGhpcy5saXN0RGF0YVtpXS5uaWNrTmFtZSA9PSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubmlja05hbWUpe1xyXG4gICAgICAgICAgICAgICAgdHJ1biA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZighdGhpcy5saXN0RGF0YVtpXSA9PSBudWxsICl7XHJcbiAgICAgICAgICAgICAgICB0cnVuID0gaSAqIDI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuY29sb3IgPSBjYy5jb2xvcih0aGlzLmxpc3REYXRhWzBdLHRoaXMubGlzdERhdGFbMV0sdGhpcy5saXN0RGF0YVsyXSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAgICAgLnRvKDAuNSx7c2NhbGU6Mn0pXHJcbiAgICAgICAgICAgIC5ieSgxLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5jb2xvciA9IGNjLmNvbG9yKDI1NSwyNTUsMjU1KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gbnVtICsgXCJcIjtcclxuICAgICAgICBjYy50d2VlbihoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkpXHJcbiAgICAgICAgLnRvKDAuNSx7c3RyaW5nOnRydW4rXCJcIn0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGxldCByZWNvcmQgPSBjYy5meC5HYW1lQ29uZmkuR01fSU5GTy5zY29yZTtcclxuICAgICAgICBpZihkYXRhLnNjb3JlID49IHJlY29yZCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihoaXROb2RlKXtcclxuICAgICAgICAgICAgaGl0Tm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZihkYXRhLm5pY2tOYW1lLmxlbmd0aCA+PSA0KVxyXG4gICAgICAgICAgICAgICAgZGF0YS5uaWNrTmFtZSA9IGNjLmZ4LkdhbWVUb29sLnN1Yk5hbWUoZGF0YS5uaWNrTmFtZSw0KTtcclxuICAgICAgICAgICAgaGl0Tm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLnNjb3JlO1xyXG4gICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0UGljKGhpdE5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLGRhdGEucGljKTtcclxuICAgICAgICB9XHJcbiAgICB9ICAgXHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Load.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '454adgphRpA6oq5lB6Cg1fK', 'Load'); -// Script/Load.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.node1 = null; - _this.node2 = null; - _this.node3 = null; - _this.localTest = false; - _this.clientTestVersion = "1.0.0"; - _this.testVersion = null; - return _this; - // 3月17日 - 3月21日 工作完成内容 - // 1:游戏框架搭建 - // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) - // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 - // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 - // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 - // 6:方块的自动落点做完11个基础方块的(未做完还差11个) - // 3月24日 - 3月28日 预计完成目标 - // 1:完成全部方块的落点。 - // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 - // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 - // 4:出5关版本,配合小白备案审核。 - // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) - // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 - } - NewClass.prototype.onLoad = function () { - // cc.director.getPhysicsManager().enabled = true; - // cc.director.getPhysicsManager().debugDrawFlags = 1; - // cc.director.getPhysicsManager().enabledAccumulator = true; - // cc.PhysicsManager.VELOCITY_ITERATIONS = 20; - // cc.PhysicsManager.FIXED_TIME_STEP = 1 / 120; - // cc.PhysicsManager.POSITION_ITERATIONS = 20; - //@ts-ignore - cc.internal.inputManager._maxTouches = 1; - var manager = cc.director.getCollisionManager(); - manager.enabled = true; - this.setWX(); - cc.debug.setDisplayStats(false); - cc.tween(this.node1) - .delay(0 * 0.3) - .to(0.3, { scale: 1 }) - .to(0.3, { scale: 1.3 }) - .to(0.3, { scale: 1 }) - .union() - .repeatForever() - .start(); - cc.tween(this.node2) - .delay(1 * 0.3) - .to(0.3, { scale: 1 }) - .to(0.3, { scale: 1.3 }) - .to(0.3, { scale: 1 }) - .union() - .repeatForever() - .start(); - cc.tween(this.node3) - .delay(2 * 0.3) - .to(0.3, { scale: 1 }) - .to(0.3, { scale: 1.3 }) - .to(0.3, { scale: 1 }) - .union() - .repeatForever() - .start(); - }; - NewClass.prototype.setWX = function () { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 - wx.setPreferredFramesPerSecond(60); - // // 设置转发按钮点击后的回调 - // wx.onShareAppMessage(() => { - // return { - // title: '你想玩上怎样的游戏?', - // imageUrl: '', - // query: '' - // }; - // }); - wx.onShareAppMessage(function () { - // 用户点击了“转发”按钮 - return { - title: '你想玩上怎样的游戏?' - }; - }); - // 监听分享到朋友圈事件 - //@ts-ignore - wx.onShareTimeline(function () { - return { - title: '你想玩上怎样的游戏?' - }; - }); - wx.showShareMenu(function () { - return { - title: '你想玩上怎样的游戏?', - imageUrl: '', - query: '' - }; - }); - setTimeout(function () { - wx.showShareMenu({ - menus: ['shareAppMessage', 'shareTimeline'] - }); - }, 2000); - // 设置分享到朋友圈 - //@ts-ignore - // wx.updateShareMenu({ - // withShareTicket: true, - // success: (data) => { - // console.log('更新分享菜单成功', data); - // }, - // fail: (data) => { - // console.log('更新分享菜单失败', data); - // }, - // complete: (data) => { - // console.log('更新分享菜单完成', data); - // } - // }); - //@ts-ignore - } - }; - //判断来源 - NewClass.prototype.containsTrain = function (str) { - return /from=train/i.test(str); - }; - //开始游戏,跳转至引导页面 - NewClass.prototype.startGame = function () { - cc.director.loadScene("GameScene"); - // cc.director.loadScene("GuideScene"); - }; - //备用,用来测试跳转 指定关卡 - NewClass.prototype.clickBtn = function (event, data) { - cc.fx.GameConfig.GM_INFO.custom = parseInt(data); - cc.director.loadScene("GameScene"); - }; - //打开排行榜 - NewClass.prototype.openRank = function () { - cc.director.loadScene("RankScene"); - }; - NewClass.prototype.update = function (dt) { - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node1", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node2", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node3", void 0); - __decorate([ - property(false) - ], NewClass.prototype, "localTest", void 0); - __decorate([ - property("") - ], NewClass.prototype, "clientTestVersion", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "testVersion", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Iiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eSwgcmVxdWlyZUNvbXBvbmVudH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUxOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUzOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoZmFsc2UpXHJcbiAgICBsb2NhbFRlc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAcHJvcGVydHkoXCJcIilcclxuICAgIGNsaWVudFRlc3RWZXJzaW9uOiBzdHJpbmcgPSBcIjEuMC4wXCI7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0ZXN0VmVyc2lvbjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IuZ2V0UGh5c2ljc01hbmFnZXIoKS5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmRlYnVnRHJhd0ZsYWdzID0gMTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmVuYWJsZWRBY2N1bXVsYXRvciA9IHRydWU7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuVkVMT0NJVFlfSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vIGNjLlBoeXNpY3NNYW5hZ2VyLkZJWEVEX1RJTUVfU1RFUCA9IDEgLyAxMjA7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuUE9TSVRJT05fSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNjLmludGVybmFsLmlucHV0TWFuYWdlci5fbWF4VG91Y2hlcyA9IDFcclxuXHJcbiAgICAgICAgbGV0IG1hbmFnZXIgPSBjYy5kaXJlY3Rvci5nZXRDb2xsaXNpb25NYW5hZ2VyKCk7XHJcbiAgICAgICAgbWFuYWdlci5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldFdYKCk7XHJcblxyXG4gICAgICAgIGNjLmRlYnVnLnNldERpc3BsYXlTdGF0cyhmYWxzZSk7XHJcblxyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUxKVxyXG4gICAgICAgIC5kZWxheSgwICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUyKVxyXG4gICAgICAgIC5kZWxheSgxICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUzKVxyXG4gICAgICAgIC5kZWxheSgyICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRXWCgpe1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgIHd4LnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCg2MCk7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAvLyAvLyDorr7nva7ovazlj5HmjInpkq7ngrnlh7vlkI7nmoTlm57osINcclxuICAgICAgICAgICAgLy8gd3gub25TaGFyZUFwcE1lc3NhZ2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aXRsZTogJ+S9oOaDs+eOqeS4iuaAjuagt+eahOa4uOaIj++8nycsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgaW1hZ2VVcmw6ICcnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHF1ZXJ5OiAnJ1xyXG4gICAgICAgICAgICAvLyAgICAgfTtcclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgICAgICB3eC5vblNoYXJlQXBwTWVzc2FnZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIC8vIOeUqOaIt+eCueWHu+S6huKAnOi9rOWPkeKAneaMiemSrlxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuXHJcblxyXG4gICAgICAgICAgICAvLyDnm5HlkKzliIbkuqvliLDmnIvlj4vlnIjkuovku7ZcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uU2hhcmVUaW1lbGluZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5L2g5oOz546p5LiK5oCO5qC355qE5ri45oiP77yfJ1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICB3eC5zaG93U2hhcmVNZW51KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogJydcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgd3guc2hvd1NoYXJlTWVudSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudXM6IFsnc2hhcmVBcHBNZXNzYWdlJywgJ3NoYXJlVGltZWxpbmUnXVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vIOiuvue9ruWIhuS6q+WIsOaci+WPi+WciFxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgLy8gd3gudXBkYXRlU2hhcmVNZW51KHtcclxuICAgICAgICAgICAgLy8gICAgIHdpdGhTaGFyZVRpY2tldDogdHJ1ZSxcclxuICAgICAgICAgICAgLy8gICAgIHN1Y2Nlc3M6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleaIkOWKnycsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGZhaWw6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleWksei0pScsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGNvbXBsZXRlOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCfmm7TmlrDliIbkuqvoj5zljZXlrozmiJAnLCBkYXRhKTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5p2l5rqQXHJcbiAgICBjb250YWluc1RyYWluKHN0cikge1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIC9mcm9tPXRyYWluL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5ri45oiP77yM6Lez6L2s6Iez5byV5a+86aG16Z2iXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5aSH55So77yM55So5p2l5rWL6K+V6Lez6L2sIOaMh+WumuWFs+WNoVxyXG4gICAgY2xpY2tCdG4oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1c3RvbSA9IHBhcnNlSW50KGRhdGEpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH0gICBcclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBvcGVuUmFuaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIlJhbmtTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG4gICAgXHJcbi8vICAgICAz5pyIMTfml6UgLSAz5pyIMjHml6Ug5bel5L2c5a6M5oiQ5YaF5a65XHJcblxyXG4vLyAx77ya5ri45oiP5qGG5p625pCt5bu6XHJcbi8vIDLvvJrliLbkvZwxOOS4quWfuuehgOaWueWdl+mihOWItuS9kyAo5pa55Z2X5Y+v57yW6L6R6aKc6Imy5LiO6YGT5YW35ZKM54q25oCBKVxyXG4vLyAz77ya5a6M5oiQ5Zyw5Zu+55qE5pCt5bu677yM5Y+v6YWN572uOCo45Lul5YaF77yM5Lu75oSP57uE5ZCI77yM5YyF5ous5Y+v57y65Y+j5ZKM6Zqc56KN54mp6YWN572uXHJcbi8vIDTvvJrlrozmiJDlnLDlm77lopnpnaLlu7rnq4vvvIzmoLnmja4g4oaRM+S4iumdouaehOW7uueahOWcsOWbvuiHquWKqOeUn+aIkOWimeS9k+OAglxyXG4vLyA177ya5YGa5a6M5pa55Z2X55qE5Z+656GA56e75Yqo77yM6Lef6ZqP5omL5oyH77yM6YGH5Yiw5pa55Z2X5oiW6ICF5aKZ5aOB5oiW6ICF6Zqc56KN54mp6Zi756KN56e75Yqo44CCXHJcbi8vIDbvvJrmlrnlnZfnmoToh6rliqjokL3ngrnlgZrlrowxMeS4quWfuuehgOaWueWdl+eahO+8iOacquWBmuWujOi/mOW3rjEx5Liq77yJXHJcblxyXG4vLyAz5pyIMjTml6UgLSAz5pyIMjjml6Ug6aKE6K6h5a6M5oiQ55uu5qCHXHJcblxyXG4vLyAx77ya5a6M5oiQ5YWo6YOo5pa55Z2X55qE6JC954K544CCXHJcbi8vIDLvvJrlrozmiJDpl6jnmoTmkK3lu7rvvIzpl6jlj6/pgInpopzoibLvvIzlj6/pgInlvIDlhbPmiJbogIXmmJ/mmJ/nrYnnibnmrornirbmgIFcclxuLy8gM++8muWujOaIkOaWueWdl+mAmui/h+mXqOeahOa4uOaIj+mAu+i+ke+8jOS9v+a4uOaIj+WPr+S7peacgOWfuuehgOi/kOihjOeOqei1t+adpVxyXG4vLyA077ya5Ye6NeWFs+eJiOacrO+8jOmFjeWQiOWwj+eZveWkh+ahiOWuoeaguOOAglxyXG4vLyA177ya5qC55o2u5pa55Z2X77yM5Zyw5Zu+77yM5Lul5Y+K6YGT5YW377yM5Yi25L2c5Zyw5Zu+57yW6L6R5ZmoICjmlrnlnZflkozlnLDlm77liLbkvZznmoTml7blgJnpg73lt7Lnu4/ogIPomZHliLDnvJbovpHlmajnmoTpnIDmsYLkuoYpIFxyXG4vLyBcdOS8mOWFiOWItuS9nO+8jOWQjue7reW8gOWPkeaLk+WxleeOqeazleWKn+iDveaXtu+8jOWwj+eZveWPr+WQjOatpei/m+ihjOWItuS9nOWFs+WNoeOAglxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/JiaZai.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '1dc93b4fehOrpGgTkihBH4g', 'JiaZai'); -// Script/JiaZai.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var GameManager_1 = require("./GameManager"); -var NumberToImage_1 = require("./NumberToImage"); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var lq_collide_system_1 = require("./lq_collide_system/lq_collide_system"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.node1 = null; - _this.node2 = null; - _this.node3 = null; - _this.Block_Color = []; - _this.custom = null; - _this.level = null; - _this.coin = null; - _this.Stamina = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - NewClass.prototype.onLoad = function () { - cc.game.setFrameRate(63); - lq_collide_system_1.LQCollideSystem.is_enable = true; - // console.log("加载关卡配置2"); - // window.initMgr(); - GameManager_1.default._instance.Block_Color = this.Block_Color; - if (cc.fx.GameConfig.GM_INFO.first) { - console.log("————————准备注册事件", cc.fx.GameConfig.GM_INFO.openid); - if (cc.fx.GameConfig.GM_INFO.openid != "") { - console.log("————————发送注册事件"); - cc.fx.GameTool.shushu_Track("register"); - } - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.getChildByName("zhuanchang").active = true; - this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - setTimeout(function () { - cc.fx.GameConfig.GM_INFO.first = false; - cc.director.loadScene("GameScene"); - }, 1000); - } - }; - NewClass.prototype.start = function () { - // console.log("已经进入Home界面"); - // console.log("金币",cc.fx.GameConfig.GM_INFO.coin); - // console.log("关卡",cc.fx.GameConfig.GM_INFO.level+1); - var _this = this; - cc.fx.GameTool.getHealth(null); - // cc.fx.GameConfig.LEVEL_INFO_init(false,0); - setTimeout(function () { - NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 25, 15, "big_", _this.level, false); - NumberToImage_1.default.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", _this.coin, true); - _this.setHealthInfo(); - }, 0); - if (cc.fx.GameConfig.GM_INFO.gameState) { - this.node.getChildByName("zhuanchang").active = true; - setTimeout(function () { - cc.fx.AudioManager._instance.playEffect("zhuan2", null); - _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false); - _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener(function (entry) { - if (entry.animation.name === "down" && !cc.fx.GameConfig.GM_INFO.first) { - // 动画播放结束后执行的逻辑 - _this.node.getChildByName("zhuanchang").active = false; - } - }); - }, 500); - } - else { - if (!cc.fx.GameConfig.GM_INFO.first) - this.node.getChildByName("zhuanchang").active = false; - } - }; - //开始倒计时 - NewClass.prototype.startTimeCutDown = function () { - this.scheduleCallback = function () { - var _this = this; - if (this.pause) - return; - if (cc.fx.GameConfig.GM_INFO.min_Time <= 0) { - this.stopTimeCutDown(); - var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); - this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; - cc.fx.GameTool.setUserHealth(1, function (data) { - cc.fx.GameTool.getHealth(null); - _this.setHealthInfo(); - }); - } - else { - cc.fx.GameConfig.GM_INFO.min_Time -= 1; - var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); - this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; - } - }.bind(this); - this.schedule(this.scheduleCallback, 1); - }; - // 停止倒计时 - NewClass.prototype.stopTimeCutDown = function () { - if (this.scheduleCallback) { - this.unschedule(this.scheduleCallback); - } - }; - NewClass.prototype.setHealthInfo = function () { - if (cc.fx.GameConfig.GM_INFO.hp == 5) { - this.Stamina.getChildByName("man").active = true; - this.Stamina.getChildByName("health").active = false; - this.Stamina.getChildByName("time").active = false; - } - else { - this.Stamina.getChildByName("man").active = false; - this.Stamina.getChildByName("health").active = true; - NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.hp), 25, 15, "coin_", this.Stamina.getChildByName("health"), false); - this.Stamina.getChildByName("time").active = true; - if (cc.fx.GameConfig.GM_INFO.min_Time != 0) { - var time = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); - this.Stamina.getChildByName("time").getComponent(cc.Label).string = time; - this.startTimeCutDown(); - } - } - }; - NewClass.prototype.startGame = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (cc.fx.GameConfig.GM_INFO.hp < 1) { - MiniGameSdk_1.MiniGameSdk.API.showToast("体力值不足"); - return; - } - if (this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl")._touch) { - this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl").setTouch(false); - // if(this.custom.string != ""){ - // cc.fx.GameConfig.GM_INFO.level = parseInt(this.custom.string) - 1; - // // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); - // cc.fx.GameConfig.LEVEL_INFO_init(true); - // } - // else{ - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.getChildByName("zhuanchang").active = true; - this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - cc.fx.GameConfig.LEVEL_INFO_init(true, 1000); - // } - } - }; - //打开商店 - NewClass.prototype.openShop = function () { - var _this = this; - // 加载 shop bundle - cc.assetManager.loadBundle('shop', function (err, bundle) { - bundle.load('prefab/shop', cc.Prefab, function (err, prefab) { - if (err) { - cc.error(err.message || err); - return; - } - if (prefab) { - var shopNode = cc.instantiate(prefab); - _this.node.addChild(shopNode); - console.log("shopNode parent:", shopNode.parent); - } - }); - }); - }; - NewClass.prototype.closeRank = function () { - this.node.getChildByName("Rank").active = false; - }; - NewClass.prototype.openRank = function () { - this.node.getChildByName("Rank").active = true; - }; - NewClass.prototype.openReward = function () { - this.node.getChildByName("Reward").active = true; - }; - NewClass.prototype.clickShop = function () { - // 假设已经获取到了 userId 和 productId - var userId = cc.fx.GameConfig.GM_INFO.openid; - var productId = '1'; - console.log("即将创建createorder"); - //@ts-ignore - wx.cloud.callFunction({ - name: "createOrder", - data: { - "userId": userId, - "productId": productId, - }, - success: function (res) { - // 取得云函数返回的订单信息 - console.log("createOrder结果:", res.result); - var payment = res.result.paymentResult.payment; - console.log("payment:", payment); - // 调起微信客户端支付 - //@ts-ignore - // 调起微信客户端支付 - //@ts-ignore - wx.requestPayment({ - // 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 - timeStamp: payment.timeStamp, - // 随机字符串,长度为32个字符以下 - nonceStr: payment.nonceStr, - // 统一下单接口返回的 prepay_id 参数值 - package: payment.package, - // 签名算法,暂支持 MD5、HMAC-SHA256 - signType: payment.signType || 'MD5', - // 支付签名 - paySign: payment.paySign, - success: function (res) { - /* 成功回调 */ - console.log("支付成功", res); - }, - fail: function (res) { - /* 失败回调 */ - console.log("支付失败", res); - }, - complete: function (res) { - console.log("支付完成", res); - } - }); - }, - }); - }; - NewClass.prototype.openPause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - console.log(cc.fx.GameConfig.GM_INFO); - if (cc.fx.GameConfig.GM_INFO.openid == undefined) { - console.log(cc.fx.GameConfig.GM_INFO.openid); - cc.fx.GameConfig.GM_INFO.openid = ""; - } - this.node.getChildByName("Pause").active = true; - this.node.getChildByName("Pause").getChildByName("openID").getComponent(cc.Label).string = cc.fx.GameConfig.GM_INFO.openid; - }; - NewClass.prototype.closePause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - this.node.getChildByName("Pause").active = false; - }; - NewClass.prototype.closeReward = function () { - this.node.getChildByName("Reward").active = false; - }; - NewClass.prototype.openStamina = function () { - this.node.getChildByName("Stamina").active = true; - }; - NewClass.prototype.closeStamina = function () { - this.node.getChildByName("Stamina").active = false; - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node1", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node2", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node3", void 0); - __decorate([ - property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) - ], NewClass.prototype, "Block_Color", void 0); - __decorate([ - property(cc.EditBox) - ], NewClass.prototype, "custom", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "level", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "coin", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "Stamina", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxKaWFaYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkNBQXdDO0FBQ3hDLGlEQUE0QztBQUM1QyxpREFBZ0Q7QUFDaEQsMkVBQXdFO0FBQ2xFLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBaVJDO1FBOVFHLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixXQUFLLEdBQVksSUFBSSxDQUFDO1FBS3RCLGlCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQUd4QyxZQUFNLEdBQWUsSUFBSSxDQUFDO1FBSzFCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsVUFBSSxHQUFZLElBQUksQ0FBQztRQUdyQixhQUFPLEdBQVksSUFBSSxDQUFDOztRQW9QeEIsaUJBQWlCO0lBQ3JCLENBQUM7SUFsUEcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47UUFDSSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixtQ0FBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakMsMEJBQTBCO1FBQzFCLG9CQUFvQjtRQUNwQixxQkFBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyRCxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFD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R0FBRyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELDhCQUFXLEdBQVg7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRCwrQkFBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBMVFEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUd0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNJO0lBS3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztpREFDZDtJQUd4QztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDOzRDQUNLO0lBSzFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDRztJQUdyQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzZDQUNNO0lBNUJQLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FpUjVCO0lBQUQsZUFBQztDQWpSRCxBQWlSQyxDQWpScUMsRUFBRSxDQUFDLFNBQVMsR0FpUmpEO2tCQWpSb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBHYW1lTWFuYWdlciBmcm9tIFwiLi9HYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi9OdW1iZXJUb0ltYWdlXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcbmltcG9ydCB7IExRQ29sbGlkZVN5c3RlbSB9IGZyb20gXCIuL2xxX2NvbGxpZGVfc3lzdGVtL2xxX2NvbGxpZGVfc3lzdGVtXCI7XHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkVkaXRCb3gpXHJcbiAgICBjdXN0b206IGNjLkVkaXRCb3ggPSBudWxsO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBsZXZlbDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBjb2luOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIFN0YW1pbmE6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgc2NoZWR1bGVDYWxsYmFjazogYW55O1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICBjYy5nYW1lLnNldEZyYW1lUmF0ZSg2Myk7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLmlzX2VuYWJsZSA9IHRydWU7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLliqDovb3lhbPljaHphY3nva4yXCIpO1xyXG4gICAgICAgIC8vIHdpbmRvdy5pbml0TWdyKCk7XHJcbiAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLkJsb2NrX0NvbG9yID0gdGhpcy5CbG9ja19Db2xvcjtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZpcnN0KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU5YeG5aSH5rOo5YaM5LqL5Lu2XCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOWPkemAgeazqOWGjOS6i+S7tlwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlZ2lzdGVyXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bey57uP6L+b5YWlSG9tZeeVjOmdolwiKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIumHkeW4gVwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWFs+WNoVwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCsxKTtcclxuXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0SGVhbHRoKG51bGwpO1xyXG4gICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLDApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2RlcygoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSksIDI1LCAxNSwgXCJiaWdfXCIsIHRoaXMubGV2ZWwsIGZhbHNlKTtcclxuICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5udW1iZXJUb0ltYWdlTm9kZXMoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sIDMwLCAxNSwgXCJjb2luX1wiLCB0aGlzLmNvaW4sIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEhlYWx0aEluZm8oKTtcclxuICAgICAgICB9LCAwKTtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVTdGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4yXCIsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLCBcImRvd25cIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcImRvd25cIiAmJiAhY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+WAkuiuoeaXtlxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhdXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRIZWFsdGhJbmZvKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lIC09IDE7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5taW5fVGltZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlN0YW1pbmEuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGltZVRlbXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2ssIDEpO1xyXG4gICAgfVxyXG4gICAgLy8g5YGc5q2i5YCS6K6h5pe2XHJcbiAgICBzdG9wVGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2NoZWR1bGVDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SGVhbHRoSW5mbygpIHtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwID09IDUpIHtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwibWFuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcImhlYWx0aFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcIm1hblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwiaGVhbHRoXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHApLCAyNSwgMTUsIFwiY29pbl9cIiwgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwiaGVhbHRoXCIpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5taW5fVGltZSAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGltZSA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXJ0R2FtZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA8IDEpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIuS9k+WKm+WAvOS4jei2s1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTG9hZFwiKS5nZXRDaGlsZEJ5TmFtZShcInN0YXJ0QnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxvYWRcIikuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydEJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gaWYodGhpcy5jdXN0b20uc3RyaW5nICE9IFwiXCIpe1xyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gcGFyc2VJbnQodGhpcy5jdXN0b20uc3RyaW5nKSAtIDE7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwudG9TdHJpbmcoKSk7IFxyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsIDEwMDApO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5omT5byA5ZWG5bqXXHJcbiAgICBvcGVuU2hvcCgpIHtcclxuICAgICAgICAvLyDliqDovb0gc2hvcCAgYnVuZGxlXHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRCdW5kbGUoJ3Nob3AnLCAoZXJyOiBFcnJvciwgYnVuZGxlOiBjYy5Bc3NldE1hbmFnZXIuQnVuZGxlKSA9PiB7XHJcbiAgICAgICAgICAgIGJ1bmRsZS5sb2FkKCdwcmVmYWIvc2hvcCcsIGNjLlByZWZhYiwgKGVycjogRXJyb3IsIHByZWZhYjogY2MuUHJlZmFiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocHJlZmFiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcE5vZGUgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5hZGRDaGlsZChzaG9wTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzaG9wTm9kZSBwYXJlbnQ6XCIsIHNob3BOb2RlLnBhcmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUmFuaygpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5SYW5rKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJhbmtcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUmV3YXJkKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJld2FyZFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrU2hvcCgpIHtcclxuICAgICAgICAvLyDlgYforr7lt7Lnu4/ojrflj5bliLDkuoYgdXNlcklkIOWSjCBwcm9kdWN0SWRcclxuICAgICAgICBjb25zdCB1c2VySWQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkO1xyXG4gICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9ICcxJztcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuWIm+W7umNyZWF0ZW9yZGVyXCIpO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiY3JlYXRlT3JkZXJcIixcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgXCJ1c2VySWRcIjogdXNlcklkLFxyXG4gICAgICAgICAgICAgICAgXCJwcm9kdWN0SWRcIjogcHJvZHVjdElkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWNjZXNzOiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyDlj5blvpfkupHlh73mlbDov5Tlm57nmoTorqLljZXkv6Hmga9cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY3JlYXRlT3JkZXLnu5Pmnpw6XCIsIHJlcy5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bWVudCA9IHJlcy5yZXN1bHQucGF5bWVudFJlc3VsdC5wYXltZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJwYXltZW50OlwiLCBwYXltZW50KTtcclxuICAgICAgICAgICAgICAgIC8vIOiwg+i1t+W+ruS/oeWuouaIt+err+aUr+S7mFxyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAvLyDosIPotbflvq7kv6HlrqLmiLfnq6/mlK/ku5hcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3gucmVxdWVzdFBheW1lbnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOaXtumXtOaIs++8jOS7jiAxOTcwIOW5tCAxIOaciCAxIOaXpSAwMDowMDowMCDoh7Pku4rnmoTnp5LmlbDvvIzljbPlvZPliY3nmoTml7bpl7RcclxuICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6IHBheW1lbnQudGltZVN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOmaj+acuuWtl+espuS4su+8jOmVv+W6puS4ujMy5Liq5a2X56ym5Lul5LiLXHJcbiAgICAgICAgICAgICAgICAgICAgbm9uY2VTdHI6IHBheW1lbnQubm9uY2VTdHIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g57uf5LiA5LiL5Y2V5o6l5Y+j6L+U5Zue55qEIHByZXBheV9pZCDlj4LmlbDlgLxcclxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlOiBwYXltZW50LnBhY2thZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g562+5ZCN566X5rOV77yM5pqC5pSv5oyBIE1ENeOAgUhNQUMtU0hBMjU2XHJcbiAgICAgICAgICAgICAgICAgICAgc2lnblR5cGU6IHBheW1lbnQuc2lnblR5cGUgfHwgJ01ENScsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pSv5LuY562+5ZCNXHJcbiAgICAgICAgICAgICAgICAgICAgcGF5U2lnbjogcGF5bWVudC5wYXlTaWduLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIOaIkOWKn+WbnuiwgyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaUr+S7mOaIkOWKn1wiLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbChyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyog5aSx6LSl5Zue6LCDICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pSv5LuY5aSx6LSlXCIsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZShyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmlK/ku5jlrozmiJBcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb3BlblBhdXNlKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLCBudWxsKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8pO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvcGVuSURcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUGF1c2UoKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfbGl0dGxlXCIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVJld2FyZCgpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSZXdhcmRcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblN0YW1pbmEoKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiU3RhbWluYVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU3RhbWluYSgpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJTdGFtaW5hXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/ControlManager.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'e35abcX5VRAoItO6mgFcYyX', 'ControlManager'); -// Script/ControlManager.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Map = null; - _this.tip = null; - _this.reinforce = null; - _this.soil = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - NewClass.prototype.start = function () { - this.tipArray = []; - this.controlArray = []; - this.canTouch = true; - this.Reinforce = false; - this.Soil = false; - this.mapHeight = 0; - }; - NewClass.prototype.setPosition = function (tip) { - tip.setPosition(30, -25); - if (this.tipArray.length > 0) { - var length = this.tipArray.length + 1; - var posY = Math.ceil(length / 8) - 1; - var posX = length - Math.floor(posY) * 8 - 1; - tip.setPosition(30 + 48 * posX, -25 - 48 * posY + this.mapHeight); - } - }; - //清空所有 - NewClass.prototype.removeAllTip = function () { - if (!this.canTouch) - return; - if (this.tipArray.length > 0) { - cc.fx.AudioManager._instance.playEffect("qingkong", null); - for (var i = 0; i < this.tipArray.length; i++) { - var tip = this.tipArray[i]; - tip.active = false; - tip.removeFromParent(this.Map); - tip = null; - } - this.tipArray = []; - this.controlArray = []; - var drawingReset = cc.fx.GameConfig.CLICK_DATA.drawingReset + 1; - cc.fx.GameConfig.CLICK_SET("drawingReset", drawingReset); - cc.fx.Notifications.emit(cc.fx.Message.removeTip, "remove"); - this.mapHeight = 0; - } - }; - //撤回一步 - NewClass.prototype.back_Click = function () { - if (!this.canTouch) - return; - if (this.tipArray.length > 0) { - cc.fx.AudioManager._instance.playEffect("chehui", null); - var tip = this.tipArray[this.tipArray.length - 1]; - tip.active = false; - tip.removeFromParent(this.Map); - tip = null; - this.tipArray.pop(); - this.controlArray.pop(); - var drawingBack = cc.fx.GameConfig.CLICK_DATA.drawingBack + 1; - cc.fx.GameConfig.CLICK_SET("drawingBack", drawingBack); - cc.fx.Notifications.emit(cc.fx.Message.removeTip, "back"); - if (this.tipArray.length >= 24) { - if ((this.tipArray.length) % 8 == 0) { - this.mapMove(false); - } - } - } - }; - //点击事件 - NewClass.prototype.btn_Click = function (target, data) { - var GameManager = this.node.parent.getComponent("GameManager"); - if (GameManager.btnClick == true) { - GameManager.btnClick = false; - cc.fx.Notifications.emit(cc.fx.Message.guideNext); - } - cc.fx.Notifications.emit(cc.fx.Message.control, data); - if (!this.canTouch) - return; - var prefab = this.tip; - if (data == "reinforce" || data == "soil") { - prefab = this[data]; - if (data == "reinforce") { - if (this.Reinforce) { - this.Reinforce = false; - this.back_Click(); - return; - } - else { - cc.fx.AudioManager._instance.playEffect("jineng", null); - this.Reinforce = true; - this.Soil = false; - } - } - else if (data == "soil") { - if (this.Soil) { - this.Soil = false; - this.back_Click(); - return; - } - else { - cc.fx.AudioManager._instance.playEffect("jineng", null); - this.Soil = true; - this.Reinforce = false; - } - } - } - else { - cc.fx.AudioManager._instance.playEffect("fangxiang", null); - this.Reinforce = false; - this.Soil = false; - } - var tip = cc.instantiate(prefab); - if (data == "up") - tip.angle = 180; - if (data == "left") - tip.angle = -90; - if (data == "right") - tip.angle = 90; - tip.parent = this.Map; - if (this.controlArray[this.controlArray.length - 1] == "reinforce" || - this.controlArray[this.controlArray.length - 1] == "soil") { - if (data == "reinforce" || data == "soil") { - this.tipArray[this.tipArray.length - 1].removeFromParent(); - this.tipArray[this.tipArray.length - 1] = null; - this.tipArray.pop(); - this.controlArray.pop(); - } - } - this.setPosition(tip); - this.tipArray.push(tip); - this.controlArray.push(data); - if (this.tipArray.length >= 25) { - if ((this.tipArray.length - 1) % 8 == 0) { - this.mapMove(true); - } - } - }; - //地图放不下了上下移动 - NewClass.prototype.mapMove = function (type) { - if (type) - this.mapHeight += 48; - else - this.mapHeight -= 48; - for (var i = 0; i < this.tipArray.length; i++) { - var tip = this.tipArray[i]; - if (type) - tip.y += 48; - else - tip.y -= 48; - } - }; - //点击开始 创建河道 - NewClass.prototype.start_Click = function () { - if (!this.canTouch) - return; - this.canTouch = false; - cc.fx.AudioManager._instance.playEffect("build", null); - cc.fx.Notifications.emit(cc.fx.Message.startGame, this.controlArray); - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "Map", void 0); - __decorate([ - property(cc.Prefab) - ], NewClass.prototype, "tip", void 0); - __decorate([ - property(cc.Prefab) - ], NewClass.prototype, "reinforce", void 0); - __decorate([ - property(cc.Prefab) - ], NewClass.prototype, "soil", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDb250cm9sTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVLQztRQXBLRyxTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBYyxJQUFJLENBQUM7UUFFdEIsZUFBUyxHQUFjLElBQUksQ0FBQztRQUU1QixVQUFJLEdBQWMsSUFBSSxDQUFDOztRQTZKdkIsaUJBQWlCO0lBQ3JCLENBQUM7SUFySkcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELDhCQUFXLEdBQVgsVUFBWSxHQUFHO1FBQ1gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7WUFDcEMsSUFB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QUFDOzBDQUNHO0lBVE4sUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXVLNUI7SUFBRCxlQUFDO0NBdktELEFBdUtDLENBdktxQyxFQUFFLENBQUMsU0FBUyxHQXVLakQ7a0JBdktvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBNYXA6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHRpcDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICByZWluZm9yY2U6IGNjLlByZWZhYiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgc29pbDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIFxyXG5cclxuICAgIHRpcEFycmF5OmFueTtcclxuICAgIGNvbnRyb2xBcnJheTphbnk7XHJcbiAgICBjYW5Ub3VjaDpib29sZWFuO1xyXG4gICAgUmVpbmZvcmNlOmJvb2xlYW47XHJcbiAgICBTb2lsOmJvb2xlYW47XHJcbiAgICBtYXBIZWlnaHQ6bnVtYmVyO1xyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMudGlwQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2FuVG91Y2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuUmVpbmZvcmNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYXBIZWlnaHQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBvc2l0aW9uKHRpcCl7XHJcbiAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwLC0yNSk7XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMudGlwQXJyYXkubGVuZ3RoKzE7XHJcbiAgICAgICAgICAgIGxldCBwb3NZID0gTWF0aC5jZWlsKGxlbmd0aC84KSAtIDE7XHJcbiAgICAgICAgICAgIGxldCBwb3NYID0gbGVuZ3RoIC0gTWF0aC5mbG9vcihwb3NZKSo4IC0gMTtcclxuICAgICAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwICsgNDgqcG9zWCwtMjUgLTQ4KnBvc1kgKyB0aGlzLm1hcEhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/muIXnqbrmiYDmnIlcclxuICAgIHJlbW92ZUFsbFRpcCgpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwicWluZ2tvbmdcIixudWxsKTtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy50aXBBcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICAgICAgdGlwLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGlwLnJlbW92ZUZyb21QYXJlbnQodGhpcy5NYXApO1xyXG4gICAgICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRpcEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nUmVzZXQgPSBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX0RBVEEuZHJhd2luZ1Jlc2V0ICsgMTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJkcmF3aW5nUmVzZXRcIixkcmF3aW5nUmVzZXQpO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5yZW1vdmVUaXAsXCJyZW1vdmVcIik7XHJcbiAgICAgICAgICAgIHRoaXMubWFwSGVpZ2h0ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+aSpOWbnuS4gOatpVxyXG4gICAgYmFja19DbGljaygpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiY2hlaHVpXCIsbnVsbCk7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdO1xyXG4gICAgICAgICAgICB0aXAuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRpcC5yZW1vdmVGcm9tUGFyZW50KHRoaXMuTWFwKTtcclxuICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy50aXBBcnJheS5wb3AoKTtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXkucG9wKCk7XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nQmFjayA9IGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfREFUQS5kcmF3aW5nQmFjayArIDE7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwiZHJhd2luZ0JhY2tcIixkcmF3aW5nQmFjayk7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnJlbW92ZVRpcCxcImJhY2tcIik7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudGlwQXJyYXkubGVuZ3RoID49IDI0KXtcclxuICAgICAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCApJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb3ZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+S6i+S7tlxyXG4gICAgYnRuX0NsaWNrKHRhcmdldCxkYXRhKXtcclxuICAgICAgICB2YXIgR2FtZU1hbmFnZXIgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkdhbWVNYW5hZ2VyXCIpO1xyXG4gICAgICAgIGlmKEdhbWVNYW5hZ2VyLmJ0bkNsaWNrID09IHRydWUpe1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5ndWlkZU5leHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5jb250cm9sLGRhdGEpO1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgbGV0IHByZWZhYiA9IHRoaXMudGlwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgcHJlZmFiID0gdGhpc1tkYXRhXTtcclxuICAgICAgICAgICAgaWYoZGF0YSA9PSBcInJlaW5mb3JjZVwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuUmVpbmZvcmNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja19DbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImppbmVuZ1wiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVpbmZvcmNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNvaWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSBpZihkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuU29pbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrX0NsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiamluZW5nXCIsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJmYW5neGlhbmdcIixudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5SZWluZm9yY2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0aXAgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJ1cFwiKSB0aXAuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgaWYoZGF0YSA9PSBcImxlZnRcIikgdGlwLmFuZ2xlID0gLTkwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyaWdodFwiKSB0aXAuYW5nbGUgPSA5MDtcclxuICAgICAgICB0aXAucGFyZW50ID0gdGhpcy5NYXA7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLmNvbnRyb2xBcnJheVt0aGlzLmNvbnRyb2xBcnJheS5sZW5ndGgtMV0gPT0gXCJyZWluZm9yY2VcIiB8fCBcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXlbdGhpcy5jb250cm9sQXJyYXkubGVuZ3RoLTFdID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKHRpcCk7XHJcblxyXG4gICAgICAgIHRoaXMudGlwQXJyYXkucHVzaCh0aXApO1xyXG4gICAgICAgIHRoaXMuY29udHJvbEFycmF5LnB1c2goZGF0YSk7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLnRpcEFycmF5Lmxlbmd0aCA+PSAyNSl7XHJcbiAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCAtIDEpJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcE1vdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+WcsOWbvuaUvuS4jeS4i+S6huS4iuS4i+enu+WKqFxyXG4gICAgbWFwTW92ZSh0eXBlKXtcclxuICAgICAgICBpZih0eXBlKSB0aGlzLm1hcEhlaWdodCArPSA0ODtcclxuICAgICAgICBlbHNlIHRoaXMubWFwSGVpZ2h0IC09IDQ4O1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMudGlwQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICBpZih0eXBlKXRpcC55ICs9IDQ4O1xyXG4gICAgICAgICAgICBlbHNlIHRpcC55IC09IDQ4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+W8gOWniyDliJvlu7rmsrPpgZNcclxuICAgIHN0YXJ0X0NsaWNrKCl7XHJcbiAgICAgICAgaWYoIXRoaXMuY2FuVG91Y2gpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhblRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYnVpbGRcIixudWxsKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zdGFydEdhbWUsdGhpcy5jb250cm9sQXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/GameScene.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'e8b235WjRBErajwLmN8xFUz', 'GameScene'); -// Script/GameScene.js - - -// cc.Class({ -// extends: cc.Component, -// properties: { -// localTest: { -// default: false, -// tooltip: '本地测试时勾选,避免tz_url和Configure报错,提交前勾掉' -// }, -// clientTest: { -// default: false, -// tooltip: '客户端测试时勾选,展示版本标记方便测试区分,上线前勾掉' -// }, -// clientTestVersion: { -// default: '', -// tooltip: '版本标记' -// }, -// testVersion: cc.Label, -// score: cc.Label, -// double_hit: cc.Node, -// add: cc.Node, -// add2: cc.Node, -// double_title: cc.Node, -// count_time: cc.Node, -// beginNode: cc.Node, -// ball_nomal: [cc.SpriteFrame], -// bg_nomal: [cc.SpriteFrame], -// ball_light: [cc.SpriteFrame], -// kuang_Frame: [cc.SpriteFrame], -// daojishi: cc.Label, -// pause_anniu: cc.Sprite, -// mask: cc.Node, - -// flashUI: { -// default: null, -// type: cc.SpriteAtlas -// }, -// }, - -// onLoad() { - -// }, - -// update(dt) { - -// }, - -// }); -"use strict"; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lU2NlbmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUdBOztBQUVBOztBQUVBOztBQUVBO0FBQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBjYy5DbGFzcyh7XHJcbi8vICAgICBleHRlbmRzOiBjYy5Db21wb25lbnQsXHJcbi8vICAgICBwcm9wZXJ0aWVzOiB7XHJcbi8vICAgICAgICAgbG9jYWxUZXN0OiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn5pys5Zyw5rWL6K+V5pe25Yu+6YCJ77yM6YG/5YWNdHpfdXJs5ZKMQ29uZmlndXJl5oql6ZSZ77yM5o+Q5Lqk5YmN5Yu+5o6JJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgY2xpZW50VGVzdDoge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcclxuLy8gICAgICAgICAgICAgdG9vbHRpcDogJ+WuouaIt+err+a1i+ivleaXtuWLvumAie+8jOWxleekuueJiOacrOagh+iusOaWueS+v+a1i+ivleWMuuWIhu+8jOS4iue6v+WJjeWLvuaOiSdcclxuLy8gICAgICAgICB9LFxyXG4vLyAgICAgICAgIGNsaWVudFRlc3RWZXJzaW9uOiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn54mI5pys5qCH6K6wJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgdGVzdFZlcnNpb246IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHNjb3JlOiBjYy5MYWJlbCxcclxuLy8gICAgICAgICBkb3VibGVfaGl0OiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGFkZDogY2MuTm9kZSxcclxuLy8gICAgICAgICBhZGQyOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGRvdWJsZV90aXRsZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBjb3VudF90aW1lOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGJlZ2luTm9kZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBiYWxsX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJnX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJhbGxfbGlnaHQ6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAga3VhbmdfRnJhbWU6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAgZGFvamlzaGk6IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHBhdXNlX2Fubml1OiBjYy5TcHJpdGUsXHJcbi8vICAgICAgICAgbWFzazogY2MuTm9kZSxcclxuXHJcbi8vICAgICAgICAgZmxhc2hVSToge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxyXG4vLyAgICAgICAgICAgICB0eXBlOiBjYy5TcHJpdGVBdGxhc1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICB9LFxyXG5cclxuLy8gICAgIG9uTG9hZCgpIHtcclxuXHJcblxyXG4vLyAgICAgfSxcclxuXHJcbi8vICAgICB1cGRhdGUoZHQpIHtcclxuXHJcbi8vICAgICB9LFxyXG5cclxuLy8gfSk7Il19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/GameManager.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'df248lSLllOZpCHwGqQ5Ye3', 'GameManager'); -// Script/GameManager.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var GameManager = /** @class */ (function (_super) { - __extends(GameManager, _super); - function GameManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - _this.Block_Array = []; - _this.Wall_Prefab = []; - _this.Block_Color = []; - // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) - // particleEffects : Array = []; - _this.load1 = false; - _this.load2 = false; - _this.load3 = false; - _this.load4 = false; - _this.load5 = false; - return _this; - } - GameManager_1 = GameManager; - // LIFE-CYCLE CALLBACKS: - GameManager.prototype.onLoad = function () { - var _this = this; - window.initMgr(); - this.timeNumber = 1; - this.startTimeCutDown(); - cc.fx.GameConfig.init(true); - cc.fx.GameConfig.GM_INFO.gameState = false; - this.readMusicConfig(); - this.load1 = this.load2 = this.load3 = this.load4 = this.load5 = false; - setTimeout(function () { - _this.readUserData(); - }, 200); - if (GameManager_1._instance == null) { - GameManager_1._instance = this; - cc.game.addPersistRootNode(this.node); - } - else { - return; - } - var path = 'prefab/block'; - var path2 = 'prefab/wall'; - cc.resources.loadDir(path, cc.Prefab, function (err, assets) { - if (err) { - console.log('动态加载 block 失败:', err); - cc.director.loadScene("LoadScene"); - return; - } - // 将加载的 Prefab 赋值给 Block_Array - _this.Block_Array = assets; - console.log('方块加载成功,共加载了', _this.Block_Array.length, '个方块'); - _this.setSort(); - _this.load1 = true; - }); - cc.resources.loadDir(path2, cc.Prefab, function (err, assets) { - if (err) { - console.log('动态加载 wall 失败:', err); - cc.director.loadScene("LoadScene"); - return; - } - // 将加载的 Prefab 赋值给 Block_Array - _this.Wall_Prefab = assets; - _this.load2 = true; - console.log('墙加载成功,共加载了', _this.Wall_Prefab.length, '个墙'); - _this.setWallPrefabSort(); - }); - // 检测微信小游戏切到后台 - if (cc.sys.platform === cc.sys.WECHAT_GAME) { - //@ts-ignore - wx.onHide(function () { - _this.onHide(); - }); - // 检测微信小游戏回到前台 - //@ts-ignore - wx.onShow(function () { - _this.onShow(); - }); - } - }; - GameManager.prototype.onHide = function () { - cc.audioEngine.stopMusic(); - cc.game.pause(); - }; - GameManager.prototype.onShow = function () { - cc.audioEngine.resumeMusic(); - cc.game.resume(); - }; - GameManager.prototype.loadParticleEffects = function () { - }; - GameManager.prototype.setWallPrefabSort = function () { - var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; - this.Wall_Prefab.sort(function (a, b) { - var indexA = order.indexOf(a.name); - var indexB = order.indexOf(b.name); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - GameManager.prototype.setParticleSort = function () { - var order = ['top', 'bot', 'rig', 'lef']; - this.particleEffects.sort(function (a, b) { - var indexA = order.indexOf(a.name.substr(0, 3)); - var indexB = order.indexOf(b.name.substr(0, 3)); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - GameManager.prototype.setSort = function () { - this.Block_Array.sort(function (a, b) { - var _a, _b; - // 从名称中提取数字部分 - var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); - var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); - return numberA - numberB; - }); - }; - GameManager.prototype.start = function () { - }; - GameManager.prototype.startGame = function () { - console.log("进入场景之前_____________", cc.fx.GameConfig.GM_INFO.first); - // 加载 music bundle - cc.assetManager.loadBundle('music', function (err, bundle) { - if (err) { - console.error('加载 music bundle 失败:', err); - // 加载失败时仍尝试进入 HomeScene - cc.director.loadScene("HomeScene"); - } - else { - console.log('music bundle 加载成功'); - // 加载成功后进入 HomeScene - cc.director.loadScene("HomeScene"); - } - }); - }; - GameManager.prototype.returnHome = function () { - cc.tween(this.node.getChildByName("Game")) - .to(0.5, { opacity: 100 }) - .call(function () { - // 预加载成功后加载场景 - cc.director.loadScene("HomeScene", function (err) { - if (err) { - console.error('加载 HomeScene 场景失败:', err); - } - else { - cc.director.loadScene("HomeScene"); - } - }); - }) - .start(); - cc.tween(this.node.getChildByName("mask")) - .to(0.5, { opacity: 255 }) - .start(); - // cc.loader.releaseAll(); - // 预加载 HomeScene 场景 - }; - GameManager.prototype.readUserData = function (retryCount) { - var _this = this; - if (retryCount === void 0) { retryCount = 0; } - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { - MiniGameSdk_1.MiniGameSdk.API.shushu_Init(); - var levelInfo = cc.fx.StorageMessage.getStorage("level"); - //旧的读取数据设置数据方法,以强联网为主 - if (levelInfo == undefined || levelInfo == "" || levelInfo == null) { - this.oldReadData(retryCount); - } - //新的读取数据设置方法,以本地为主 - else { - this.newReadData(); - } - console.log("即将读取体力值"); - cc.fx.GameTool.getHealth(function (data) { - console.log("体力值完成进入游戏"); - _this.load5 = true; - }); - } - else { - this.load3 = true; - this.load4 = true; - this.load5 = true; - cc.fx.GameTool.getHealth(null); - } - // 存储用户数据 - }; - GameManager.prototype.readMusicConfig = function () { - var audioInfo = cc.fx.StorageMessage.getStorage("music"); - if (audioInfo == undefined || audioInfo == "" || audioInfo == null) { - audioInfo = { - "musicOpen": true, - "effectOpen": true, - "vibrateOpen": true, - }; - cc.fx.StorageMessage.setStorage("music", audioInfo); - } - else { - cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen; - cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen; - cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen; - } - }; - //新用户,有本地缓存读取配置 - GameManager.prototype.newReadData = function () { - var _this = this; - console.log("读取新信息"); - var openid = cc.fx.StorageMessage.getStorage("openid"); - if (openid == null || openid == "" || openid == undefined) { - console.log("没有openid"); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: function (res) { - console.log('读取用户数据成功', res.result); - if (res.result.code == 404 && res.result.message == "未找到用户数据") { - } - else if (res.result.code == 200) { - if (res.result.data) { - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - cc.fx.GameConfig.GM_INFO.username = res.result.data.username; - cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; - var register_time = res.result.data.register_time; - MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); - cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); - } - } - }, - fail: function (err) { - console.error('读取用户数据失败', err); - } - }); - } - else { - if (openid) - cc.fx.GameConfig.GM_INFO.openid = openid; - } - //等级信息 - cc.fx.GameTool.getUserLevel(function (data) { - var timestamp = Date.now(); - var levelInfo = cc.fx.StorageMessage.getStorage("level"); - if (data.result.code == 404 && data.result.message == "未找到关卡数据") { - // console.log("没有等级信息,从用户接口拿到数据"); - if (levelInfo.level) { - cc.fx.GameConfig.GM_INFO.level = levelInfo.level; - } - _this.load4 = true; - cc.fx.GameTool.setUserLevel(function (data) { - }); - } - else if (data.result.code == 200) { - // console.log("有等级信息,从关卡接口拿到数据",data.result.data); - //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 - var temp = data.result.timestamp - levelInfo.timestamp; - console.log("等级时间差:", temp); - if ((data.result.timestamp - levelInfo.timestamp) < 10000) { - if (levelInfo.level) { - console.log("以游戏前端等级为准", data.result.data); - cc.fx.GameConfig.GM_INFO.level = levelInfo.level; - // console.log("等级为:",cc.fx.GameConfig.GM_INFO.level); - cc.fx.GameTool.setUserLevel(function (data) { - }); - } - } - //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 - else { - console.log("以服务器等级为准", data.result.data); - cc.fx.GameConfig.GM_INFO.level = data.result.data; - levelInfo.level = cc.fx.GameConfig.GM_INFO.level; - levelInfo.timestamp = timestamp; - // console.log("1111111存储关卡数据:",cc.fx.GameConfig.GM_INFO.level); - cc.fx.StorageMessage.setStorage("level", levelInfo); - } - _this.load4 = true; - } - }); - //金币信息 - cc.fx.GameTool.getUserCoin(function (data) { - var timestamp = Date.now(); - var coinInfo = cc.fx.StorageMessage.getStorage("coin"); - if (data.result.code == 404 && data.result.message == "未找到金币数据") { - if (coinInfo.coin) - cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; - console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); - _this.load3 = true; - cc.fx.GameTool.setUserCoin(function (data) { - }); - } - else if (data.result.code == 200) { - // console.log("有金币信息,从金币接口拿到数据",data.result.data); - //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 - var temp = data.result.timestamp - coinInfo.timestamp; - console.log("金币时间差:", temp); - if ((data.result.timestamp - coinInfo.timestamp) < 10000) { - console.log("以前端金幣为准:", coinInfo); - if (coinInfo.coin) - cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; - else { - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; - coinInfo.timestamp = timestamp; - console.log("11111111111"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - } - console.log("改变后金币:", cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(function (data) { - }); - } - //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 - else { - console.log("以服务器金幣为准:", data.result.data); - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; - coinInfo.timestamp = timestamp; - console.log("2222222222"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - } - _this.load3 = true; - } - }); - //道具信息 - cc.fx.GameTool.getUserProp(function (data) { - var timestamp = Date.now(); - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - if (data.result.code == 404 && data.result.message == "未找到道具数据") { - console.log("没有道具信息,从用户接口拿到数据", propInfo); - if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { - console.log("2222222道具数据异常"); - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmoun = 0; - var propInfoNew = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmoun, - "timestamp": timestamp - }; - console.log("1111111上传道具信息:", propInfoNew); - cc.fx.StorageMessage.setStorage("prop", propInfoNew); - } - else { - // cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; - // cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; - // cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; - cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - } - // cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; - // cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; - // cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - cc.fx.GameTool.setUserProp(0, 0, function (data) { - }); - } - else if (data.result.code == 200) { - // console.log("本地时间戳",propInfo.timestamp,"服务器时间戳",data.result.timestamp); - if ((data.result.timestamp - propInfo.timestamp) < 10000) { - console.log("以前端道具为主:", propInfo); - if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { - console.log("111111道具数据异常", data.result.data); - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; - var propInfoNew = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp": timestamp - }; - console.log("333333上传道具信息:", propInfoNew); - cc.fx.StorageMessage.setStorage("prop", propInfoNew); - } - else { - console.log("道具数据正常"); - cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; - cc.fx.GameTool.setUserProp(0, 0, function (data) { - }); - } - } - else { - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; - var propInfoNew = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp": timestamp - }; - console.log("22222222上传道具信息:", propInfoNew, data.result); - cc.fx.StorageMessage.setStorage("prop", propInfoNew); - } - } - }); - }; - //旧用户,无本地缓存读取配置 - GameManager.prototype.oldReadData = function (retryCount) { - var _this = this; - console.log("读取旧信息"); - var MAX_RETRIES = 15; - var timestamp = Date.now(); - // 读取用户数据 - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: function (res) { - console.log('读取用户数据成功', res.result); - if (res.result.code == 404 && res.result.message == "未找到用户数据") { - if (res.result.openid) { - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - } - cc.fx.GameConfig.GM_INFO.first = true; - _this.load3 = true; - _this.load4 = true; - var levelInfo = { "level": 0, "timestamp": timestamp }; - cc.fx.StorageMessage.setStorage("level", levelInfo); - var coinInfo = { "coin": 0, "timestamp": timestamp }; - console.log("33333333333"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - var propInfo = { - "freezeAmount": 0, - "hammerAmount": 0, - "magicAmount": 0, - "timestamp": timestamp, - }; - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserInfo(function (data) { - if (data.result.code == 200) { - console.log("上传用户信息成功", data); - //@ts-ignore - wx.cloud.callFunction({ - name: 'userData', - data: { - action: 'read' - }, - success: function (res) { - console.log("上传后,读取用户信息,为上报注册时间"); - if (res.result.code == 200) { - var time = res.result.data.register_time; - MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(time); - } - } - }); - } - }); - console.log("服务器也没有金币信息", cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin, function (data) { - }); - cc.fx.GameTool.setUserLevel(function (data) { - }); - setTimeout(function () { - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - cc.fx.GameTool.setUserProp(0, 0, function (data) { - if (data.result.code == 200) { - console.log("上传道具信息成功", data); - } - else { - MiniGameSdk_1.MiniGameSdk.API.showToast("网络异常,正在努力加载"); - setTimeout(function () { - _this.oldReadData(0); - }, 1000); - } - }); - }, 0); - } - else if (res.result.code == 200) { - if (res.result.data) { - cc.fx.GameConfig.GM_INFO.openid = res.result.openid; - cc.fx.GameConfig.GM_INFO.level = res.result.data.level; - cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount; - cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount; - cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount; - cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount; - cc.fx.GameConfig.GM_INFO.username = res.result.data.username; - cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; - cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); - var register_time = res.result.data.register_time; - MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); - } - setTimeout(function () { - cc.fx.GameTool.getUserCoin(function (data) { - if (data.result.code == 404 && data.result.message == "未找到金币数据") { - var coinInfo = { "coin": 0, "timestamp": timestamp }; - cc.fx.GameConfig.GM_INFO.coin = 0; - cc.fx.StorageMessage.setStorage("coin", coinInfo); - console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); - cc.fx.GameTool.setUserCoin(function (data) { - // console.log("上传",data); - _this.load3 = true; - }); - } - else if (data.result.code == 200) { - // console.log("有金币信息,从金币接口拿到数据",data.result.data); - cc.fx.GameConfig.GM_INFO.coin = data.result.data; - var coinInfo = { "coin": cc.fx.GameConfig.GM_INFO.coin, "timestamp": timestamp }; - console.log("存储金币信息:", cc.fx.GameConfig.GM_INFO.coin); - console.log("4444444444"); - cc.fx.StorageMessage.setStorage("coin", coinInfo); - _this.load3 = true; - } - }); - }, 500); - cc.fx.GameTool.getUserLevel(function (data) { - if (data.result.code == 404 && data.result.message == "未找到关卡数据") { - console.log("没有等级信息,从用户接口拿到数据"); - var levelInfo = { "level": 0, "timestamp": timestamp }; - // console.log("333333存储关卡数据:",levelInfo); - cc.fx.GameConfig.GM_INFO.level = 0; - cc.fx.StorageMessage.setStorage("level", levelInfo); - cc.fx.GameTool.setUserLevel(function (data) { - console.log("拿到的数据", data); - _this.load4 = true; - }); - } - else if (data.result.code == 200) { - console.log("有等级信息,从关卡接口拿到数据", data.result.data); - cc.fx.GameConfig.GM_INFO.level = data.result.data; - var levelInfo = { "level": cc.fx.GameConfig.GM_INFO.level, "timestamp": timestamp }; - // console.log("444444存储关卡信息:",levelInfo); - cc.fx.StorageMessage.setStorage("level", levelInfo); - _this.load4 = true; - } - }); - setTimeout(function () { - cc.fx.GameTool.getUserProp(function (data) { - if (data.result.code == 404 && data.result.message == "未找到道具数据") { - console.log("没有道具信息,从用户接口拿到数据"); - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - var propInfo = { - "freezeAmount": 0, - "hammerAmount": 0, - "magicAmount": 0, - "timestamp": timestamp, - }; - console.log("上传道具信息:", propInfo); - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserProp(0, 0, function (data) { - }); - } - else if (data.result.code == 200) { - console.log("有道具信息,从道具接口拿到数据", data.result.data); - cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0; - cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0; - cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0; - var propInfo = { - "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, - "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, - "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, - "timestamp": timestamp, - }; - console.log("上传道具信息:", propInfo); - cc.fx.StorageMessage.setStorage("prop", propInfo); - } - }); - }, 0); - } - }, - fail: function (err) { - console.error('读取用户数据失败', err); - if (retryCount < MAX_RETRIES) { - console.error("\u8BFB\u53D6\u7528\u6237\u6570\u636E\u5931\u8D25\uFF0C\u7B2C " + (retryCount + 1) + " \u6B21\u91CD\u8BD5\uFF0C\u9519\u8BEF\u4FE1\u606F:", err); - // 延迟 2 秒后重试 - setTimeout(function () { - _this.readUserData(retryCount + 1); - }, 2000); - } - else { - console.error('读取用户数据失败,达到最大重试次数,退出游戏', err); - // 退出游戏 - cc.game.end(); - } - } - }); - }; - GameManager.prototype.setUserData = function () { - cc.fx.GameConfig.GameTool(function (data) { - console.log("上传", data); - }); - }; - GameManager.prototype.startTimeCutDown = function () { - this.scheduleCallback = function () { - if (this.timeNumber <= 0) { - this.stopTimeCutDown(); - } - else { - this.timeNumber -= 1; - } - }.bind(this); - this.schedule(this.scheduleCallback, 1); - }; - GameManager.prototype.stopTimeCutDown = function () { - if (this.scheduleCallback) { - this.unschedule(this.scheduleCallback); - } - }; - GameManager.prototype.update = function (dt) { - if (this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0) { - this.load1 = this.load2 = false; - MiniGameSdk_1.MiniGameSdk.API.shushu_Login(); - this.startGame(); - } - }; - var GameManager_1; - GameManager._instance = null; - __decorate([ - property(cc.Label) - ], GameManager.prototype, "label", void 0); - __decorate([ - property - ], GameManager.prototype, "text", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块数组" }) - ], GameManager.prototype, "Block_Array", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "墙壁数组" }) - ], GameManager.prototype, "Wall_Prefab", void 0); - __decorate([ - property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) - ], GameManager.prototype, "Block_Color", void 0); - GameManager = GameManager_1 = __decorate([ - ccclass - ], GameManager); - return GameManager; -}(cc.Component)); -exports.default = GameManager; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdsRixpREFBZ0Q7QUFFMUMsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFHNUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUE0cEJDO1FBenBCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFJdkIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyxpQkFBVyxHQUEwQixFQUFFLENBQUM7UUFHeEMseURBQXlEO1FBQ3pELG1EQUFtRDtRQUVuRCxXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7O0lBa29CM0IsQ0FBQztvQkE1cEJvQixXQUFXO0lBK0I1Qix3QkFBd0I7SUFFeEIsNEJBQU0sR0FBTjtRQUFBLGlCQWtFQztRQWhFRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxD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OztJQXBwQk0scUJBQVMsR0FBZ0IsSUFBSSxDQUFDO0lBSnJDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7OENBQ0k7SUFHdkI7UUFEQyxRQUFROzZDQUNjO0lBSXZCO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztvREFDZDtJQUduQztRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7b0RBQ2Q7SUFHbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO29EQUNkO0lBaEJ2QixXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBNHBCL0I7SUFBRCxrQkFBQztDQTVwQkQsQUE0cEJDLENBNXBCd0MsRUFBRSxDQUFDLFNBQVMsR0E0cEJwRDtrQkE1cEJvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IHsgTWluaUdhbWVNYW5hZ2VyIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IEdhbWVNYW5hZ2VyID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLlopnlo4HmlbDnu4RcIiB9KVxyXG4gICAgV2FsbF9QcmVmYWI6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG4gICAgcGFydGljbGVFZmZlY3RzOiBjYy5QYXJ0aWNsZUFzc2V0W107XHJcbiAgICAvLyBAcHJvcGVydHkoe3R5cGU6IFtjYy5QYXJ0aWNsZVN5c3RlbV0sIHRvb2x0aXA6XCLnspLlrZDmlbDnu4RcIn0pXHJcbiAgICAvLyBwYXJ0aWNsZUVmZmVjdHMgOiBBcnJheTxjYy5QYXJ0aWNsZVN5c3RlbT4gPSBbXTtcclxuXHJcbiAgICBsb2FkMTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkNDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNjaGVkdWxlQ2FsbGJhY2s6IGFueTtcclxuICAgIHRpbWVOdW1iZXI6IG51bWJlcjtcclxuXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG5cclxuICAgICAgICB3aW5kb3cuaW5pdE1ncigpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IDE7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5pbml0KHRydWUpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlYWRNdXNpY0NvbmZpZygpO1xyXG5cclxuXHJcbiAgICAgICAgdGhpcy5sb2FkMSA9IHRoaXMubG9hZDIgPSB0aGlzLmxvYWQzID0gdGhpcy5sb2FkNCA9IHRoaXMubG9hZDUgPSBmYWxzZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWFkVXNlckRhdGEoKTtcclxuICAgICAgICB9LCAyMDApO1xyXG5cclxuXHJcbiAgICAgICAgaWYgKEdhbWVNYW5hZ2VyLl9pbnN0YW5jZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIEdhbWVNYW5hZ2VyLl9pbnN0YW5jZSA9IHRoaXM7XHJcbiAgICAgICAgICAgIGNjLmdhbWUuYWRkUGVyc2lzdFJvb3ROb2RlKHRoaXMubm9kZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBwYXRoID0gJ3ByZWZhYi9ibG9jayc7XHJcbiAgICAgICAgY29uc3QgcGF0aDIgPSAncHJlZmFiL3dhbGwnO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkRGlyKHBhdGgsIGNjLlByZWZhYiwgKGVyciwgYXNzZXRzOiBjYy5QcmVmYWJbXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5Yqo5oCB5Yqg6L29IGJsb2NrIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiTG9hZFNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOWwhuWKoOi9veeahCBQcmVmYWIg6LWL5YC857uZIEJsb2NrX0FycmF5XHJcbiAgICAgICAgICAgIHRoaXMuQmxvY2tfQXJyYXkgPSBhc3NldHM7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmlrnlnZfliqDovb3miJDlip/vvIzlhbHliqDovb3kuoYnLCB0aGlzLkJsb2NrX0FycmF5Lmxlbmd0aCwgJ+S4quaWueWdlycpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFNvcnQoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkMSA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkRGlyKHBhdGgyLCBjYy5QcmVmYWIsIChlcnIsIGFzc2V0czogY2MuUHJlZmFiW10pID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WKqOaAgeWKoOi9vSB3YWxsIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiTG9hZFNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOWwhuWKoOi9veeahCBQcmVmYWIg6LWL5YC857uZIEJsb2NrX0FycmF5XHJcbiAgICAgICAgICAgIHRoaXMuV2FsbF9QcmVmYWIgPSBhc3NldHM7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDIgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygn5aKZ5Yqg6L295oiQ5Yqf77yM5YWx5Yqg6L295LqGJywgdGhpcy5XYWxsX1ByZWZhYi5sZW5ndGgsICfkuKrlopknKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRXYWxsUHJlZmFiU29ydCgpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgLy8g5qOA5rWL5b6u5L+h5bCP5ri45oiP5YiH5Yiw5ZCO5Y+wXHJcbiAgICAgICAgaWYgKGNjLnN5cy5wbGF0Zm9ybSA9PT0gY2Muc3lzLldFQ0hBVF9HQU1FKSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5vbkhpZGUoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vbkhpZGUoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIC8vIOajgOa1i+W+ruS/oeWwj+a4uOaIj+WbnuWIsOWJjeWPsFxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3gub25TaG93KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TaG93KCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgb25IaWRlKCkge1xyXG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIGNjLmdhbWUucGF1c2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNob3coKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucmVzdW1lTXVzaWMoKTtcclxuICAgICAgICBjYy5nYW1lLnJlc3VtZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvYWRQYXJ0aWNsZUVmZmVjdHMoKSB7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgc2V0V2FsbFByZWZhYlNvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ2Rvd24nLCAnZG93bkxlZnQnLCAnZG93blJpZ2h0JywgJ2xlZnQnLCAncmlnaHQnLCAndXAnLCAndXBMZWZ0JywgJ3VwUmlnaHQnXTtcclxuICAgICAgICB0aGlzLldhbGxfUHJlZmFiLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUpO1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEIgPSBvcmRlci5pbmRleE9mKGIubmFtZSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEEgPT09IC0xKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QiA9PT0gLTEpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc2V0UGFydGljbGVTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWyd0b3AnLCAnYm90JywgJ3JpZycsICdsZWYnXTtcclxuICAgICAgICB0aGlzLnBhcnRpY2xlRWZmZWN0cy5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lLnN1YnN0cigwLCAzKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lLnN1YnN0cigwLCAzKSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEEgPT09IC0xKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QiA9PT0gLTEpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTb3J0KCkge1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQXJyYXkuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyDku47lkI3np7DkuK3mj5Dlj5bmlbDlrZfpg6jliIZcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQSA9IHBhcnNlSW50KGEubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG51bWJlckIgPSBwYXJzZUludChiLm5hbWUubWF0Y2goL1xcZCsvKT8uWzBdIHx8ICcwJywgMTApO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyQSAtIG51bWJlckI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0R2FtZSgpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIui/m+WFpeWcuuaZr+S5i+WJjV9fX19fX19fX19fX19cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZpcnN0KTtcclxuICAgICAgICAvLyDliqDovb0gbXVzaWMgYnVuZGxlXHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRCdW5kbGUoJ211c2ljJywgKGVyciwgYnVuZGxlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBtdXNpYyBidW5kbGUg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAvLyDliqDovb3lpLHotKXml7bku43lsJ3or5Xov5vlhaUgSG9tZVNjZW5lXHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbXVzaWMgYnVuZGxlIOWKoOi9veaIkOWKnycpO1xyXG4gICAgICAgICAgICAgICAgLy8g5Yqg6L295oiQ5Yqf5ZCO6L+b5YWlIEhvbWVTY2VuZVxyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuSG9tZSgpIHtcclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpKVxyXG4gICAgICAgICAgICAudG8oMC41LCB7IG9wYWNpdHk6IDEwMCB9KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgLy8g6aKE5Yqg6L295oiQ5Yqf5ZCO5Yqg6L295Zy65pmvXHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqg6L29IEhvbWVTY2VuZSDlnLrmma/lpLHotKU6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJtYXNrXCIpKVxyXG4gICAgICAgICAgICAudG8oMC41LCB7IG9wYWNpdHk6IDI1NSB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuXHJcbiAgICAgICAgLy8gY2MubG9hZGVyLnJlbGVhc2VBbGwoKTtcclxuICAgICAgICAvLyDpooTliqDovb0gSG9tZVNjZW5lIOWcuuaZr1xyXG5cclxuXHJcbiAgICB9XHJcblxyXG5cclxuICAgIHJlYWRVc2VyRGF0YShyZXRyeUNvdW50ID0gMCkge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIGlmICh0eXBlb2Ygd3ggIT09ICd1bmRlZmluZWQnICYmIHd4ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfSW5pdCgpO1xyXG4gICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImxldmVsXCIpO1xyXG4gICAgICAgICAgICAvL+aXp+eahOivu+WPluaVsOaNruiuvue9ruaVsOaNruaWueazlSzku6XlvLrogZTnvZHkuLrkuLtcclxuICAgICAgICAgICAgaWYgKGxldmVsSW5mbyA9PSB1bmRlZmluZWQgfHwgbGV2ZWxJbmZvID09IFwiXCIgfHwgbGV2ZWxJbmZvID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMub2xkUmVhZERhdGEocmV0cnlDb3VudCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy/mlrDnmoTor7vlj5bmlbDmja7orr7nva7mlrnms5XvvIzku6XmnKzlnLDkuLrkuLtcclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5ld1JlYWREYXRhKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLljbPlsIbor7vlj5bkvZPlipvlgLxcIik7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldEhlYWx0aCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkvZPlipvlgLzlrozmiJDov5vlhaXmuLjmiI9cIik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQ1ID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQ1ID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0SGVhbHRoKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlrZjlgqjnlKjmiLfmlbDmja5cclxuICAgIH1cclxuXHJcbiAgICByZWFkTXVzaWNDb25maWcoKSB7XHJcbiAgICAgICAgbGV0IGF1ZGlvSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJtdXNpY1wiKTtcclxuICAgICAgICBpZiAoYXVkaW9JbmZvID09IHVuZGVmaW5lZCB8fCBhdWRpb0luZm8gPT0gXCJcIiB8fCBhdWRpb0luZm8gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBhdWRpb0luZm8gPSB7XHJcbiAgICAgICAgICAgICAgICBcIm11c2ljT3BlblwiOiB0cnVlLCAgICAgICAgICAgICAvL+mfs+S5kFxyXG4gICAgICAgICAgICAgICAgXCJlZmZlY3RPcGVuXCI6IHRydWUsICAgICAgICAgICAgLy/pn7PmlYhcclxuICAgICAgICAgICAgICAgIFwidmlicmF0ZU9wZW5cIjogdHJ1ZSwgICAgICAgICAgIC8v6ZyH5YqoXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcIm11c2ljXCIsIGF1ZGlvSW5mbyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gYXVkaW9JbmZvLm11c2ljT3BlbjtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmVmZmVjdE9wZW4gPSBhdWRpb0luZm8uZWZmZWN0T3BlbjtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gYXVkaW9JbmZvLnZpYnJhdGVPcGVuO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+aWsOeUqOaIt++8jOacieacrOWcsOe8k+WtmOivu+WPlumFjee9rlxyXG4gICAgbmV3UmVhZERhdGEoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLor7vlj5bmlrDkv6Hmga9cIik7XHJcbiAgICAgICAgbGV0IG9wZW5pZCA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJvcGVuaWRcIik7XHJcbiAgICAgICAgaWYgKG9wZW5pZCA9PSBudWxsIHx8IG9wZW5pZCA9PSBcIlwiIHx8IG9wZW5pZCA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnIlvcGVuaWRcIik7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICAgICAgbmFtZTogJ3VzZXJEYXRhJyxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWFkJ1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+ivu+WPlueUqOaIt+aVsOaNruaIkOWKnycsIHJlcy5yZXN1bHQpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQuY29kZSA9PSA0MDQgJiYgcmVzLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw55So5oi35pWw5o2uXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzLnJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3VsdC5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkID0gcmVzLnJlc3VsdC5vcGVuaWQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcm5hbWUgPSByZXMucmVzdWx0LmRhdGEudXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcmF2YXRhciA9IHJlcy5yZXN1bHQuZGF0YS51c2VyYXZhdGFyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVnaXN0ZXJfdGltZSA9IHJlcy5yZXN1bHQuZGF0YS5yZWdpc3Rlcl90aW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV91c2VyU2V0KHJlZ2lzdGVyX3RpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcIm9wZW5pZFwiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivu+WPlueUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChvcGVuaWQpXHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkID0gb3BlbmlkO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgICAvL+etiee6p+S/oeaBr1xyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJMZXZlbCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImxldmVsXCIpO1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOWFs+WNoeaVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuayoeacieetiee6p+S/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChsZXZlbEluZm8ubGV2ZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBsZXZlbEluZm8ubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pyJ562J57qn5L+h5oGv77yM5LuO5YWz5Y2h5o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAvL+a4uOaIj+WJjeerr+WtmOWCqCDmlrDkuo7mnI3liqHlmajnq68s5Lul5ri45oiP5YmN56uv5L+h5oGv5Li65Li777yM5pS+5pyN5Yqh5Zmo5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIGxldmVsSW5mby50aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuetiee6p+aXtumXtOW3rjpcIiwgdGVtcCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoKGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIGxldmVsSW5mby50aW1lc3RhbXApIDwgMTAwMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobGV2ZWxJbmZvLmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Lul5ri45oiP5YmN56uv562J57qn5Li65YeGXCIsIGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBsZXZlbEluZm8ubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi562J57qn5Li6OlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy/mnI3liqHlmajnq6/lrZjlgqjml7bpl7TmlrDkuo7muLjmiI/nq6/vvIzku6XmnI3liqHlmajnq6/kuLrkuLss5b6A5YmN56uv5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peacjeWKoeWZqOetiee6p+S4uuWHhlwiLCBkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldmVsSW5mby5sZXZlbCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbDtcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbEluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMTExMTExMeWtmOWCqOWFs+WNoeaVsOaNrjpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLCBsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICAvL+mHkeW4geS/oeaBr1xyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJDb2luKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJjb2luXCIpO1xyXG4gICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmHkeW4geaVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29pbkluZm8uY29pbilcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGNvaW5JbmZvLmNvaW47XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeaciemHkeW4geS/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnInph5HluIHkv6Hmga/vvIzku47ph5HluIHmjqXlj6Pmi7/liLDmlbDmja5cIixkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgIC8v5ri45oiP5YmN56uv5a2Y5YKoIOaWsOS6juacjeWKoeWZqOerryzku6XmuLjmiI/liY3nq6/kv6Hmga/kuLrkuLvvvIzmlL7mnI3liqHlmajlrZjlgqhcclxuICAgICAgICAgICAgICAgIGxldCB0ZW1wID0gZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gY29pbkluZm8udGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLph5HluIHml7bpl7Tlt646XCIsIHRlbXApO1xyXG4gICAgICAgICAgICAgICAgaWYgKChkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBjb2luSW5mby50aW1lc3RhbXApIDwgMTAwMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peWJjeerr+mHkeW5o+S4uuWHhjpcIiwgY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2luSW5mby5jb2luKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGNvaW5JbmZvLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29pbkluZm8uY29pbiA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2luSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMTExMTExMTExMTFcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsIGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmlLnlj5jlkI7ph5HluIE6XCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy/mnI3liqHlmajnq6/lrZjlgqjml7bpl7TmlrDkuo7muLjmiI/nq6/vvIzku6XmnI3liqHlmajnq6/kuLrkuLss5b6A5YmN56uv5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peacjeWKoeWZqOmHkeW5o+S4uuWHhjpcIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvLmNvaW4gPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbjtcclxuICAgICAgICAgICAgICAgICAgICBjb2luSW5mby50aW1lc3RhbXAgPSB0aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIyMjIyXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsIGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy/pgZPlhbfkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyUHJvcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgcHJvcEluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwicHJvcFwiKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDpgZPlhbfmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInpgZPlhbfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgaWYgKHByb3BJbmZvLmZyZWV6ZUFtb3VudCA9PSB1bmRlZmluZWQgfHwgcHJvcEluZm8uaGFtbWVyQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5tYWdpY0Ftb3VudCA9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjIyMjIyMjLpgZPlhbfmlbDmja7lvILluLhcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW4gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9wSW5mb05ldyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtYWdpY0Ftb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bixcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMTExMTExMeS4iuS8oOmBk+WFt+S/oeaBrzpcIiwgcHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBwcm9wSW5mby5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHByb3BJbmZvLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBwcm9wSW5mby5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IHByb3BJbmZvLmZyZWV6ZUFtb3VudDtcclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBwcm9wSW5mby5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBwcm9wSW5mby5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDAsIDAsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmnKzlnLDml7bpl7TmiLNcIixwcm9wSW5mby50aW1lc3RhbXAsXCLmnI3liqHlmajml7bpl7TmiLNcIixkYXRhLnJlc3VsdC50aW1lc3RhbXApO1xyXG4gICAgICAgICAgICAgICAgaWYgKChkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBwcm9wSW5mby50aW1lc3RhbXApIDwgMTAwMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7peWJjeerr+mBk+WFt+S4uuS4uzpcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9wSW5mby5mcmVlemVBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLmhhbW1lckFtb3VudCA9PSB1bmRlZmluZWQgfHwgcHJvcEluZm8ubWFnaWNBbW91bnQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMTExMTEx6YGT5YW35pWw5o2u5byC5bi4XCIsIGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm9OZXcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJoYW1tZXJBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIzMzMzMzPkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLpgZPlhbfmlbDmja7mraPluLhcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBwcm9wSW5mby5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBwcm9wSW5mby5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IHByb3BJbmZvLm1hZ2ljQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLCAwLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemU7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm9OZXcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRpbWVzdGFtcFwiOiB0aW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIyMuS4iuS8oOmBk+WFt+S/oeaBrzpcIiwgcHJvcEluZm9OZXcsIGRhdGEucmVzdWx0KTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8v5pen55So5oi377yM5peg5pys5Zyw57yT5a2Y6K+75Y+W6YWN572uXHJcbiAgICBvbGRSZWFkRGF0YShyZXRyeUNvdW50OiBudW1iZXIpIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuivu+WPluaXp+S/oeaBr1wiKTtcclxuICAgICAgICBjb25zdCBNQVhfUkVUUklFUyA9IDE1O1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgLy8g6K+75Y+W55So5oi35pWw5o2uXHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VzZXJEYXRhJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQuY29kZSA9PSA0MDQgJiYgcmVzLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw55So5oi35pWw5o2uXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3VsdC5vcGVuaWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IHsgXCJsZXZlbFwiOiAwLCBcInRpbWVzdGFtcFwiOiB0aW1lc3RhbXAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIiwgbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29pbkluZm8gPSB7IFwiY29pblwiOiAwLCBcInRpbWVzdGFtcFwiOiB0aW1lc3RhbXAgfTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjMzMzMzMzMzMzMzXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsIGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VySW5mbygoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg55So5oi35L+h5oGv5oiQ5YqfXCIsIGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWFkJ1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDlkI7vvIzor7vlj5bnlKjmiLfkv6Hmga/vvIzkuLrkuIrmiqXms6jlhozml7bpl7RcIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldCh0aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuacjeWKoeWZqOS5n+ayoeaciemHkeW4geS/oeaBr1wiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sIChkYXRhKSA9PiB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJQcm9wKDAsIDAsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOmBk+WFt+S/oeaBr+aIkOWKn1wiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLnvZHnu5zlvILluLjvvIzmraPlnKjliqrlipvliqDovb1cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2xkUmVhZERhdGEoMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIDApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzLnJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSByZXMucmVzdWx0LmRhdGEubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gcmVzLnJlc3VsdC5kYXRhLmNvaW5BbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSByZXMucmVzdWx0LmRhdGEuZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmhhbW1lckFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLm1hZ2ljQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcm5hbWUgPSByZXMucmVzdWx0LmRhdGEudXNlcm5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VyYXZhdGFyID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJhdmF0YXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJvcGVuaWRcIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyX3RpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV91c2VyU2V0KHJlZ2lzdGVyX3RpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlckNvaW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YeR5biB5pWw5o2uXCIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvaW5JbmZvID0geyBcImNvaW5cIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJjb2luXCIsIGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeaciemHkeW4geS/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIrkvKBcIixkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pyJ6YeR5biB5L+h5oGv77yM5LuO6YeR5biB5o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHsgXCJjb2luXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLCBcInRpbWVzdGFtcFwiOiB0aW1lc3RhbXAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWtmOWCqOmHkeW4geS/oeaBrzpcIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiNDQ0NDQ0NDQ0NFwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSwgNTAwKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlckxldmVsKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw5YWz5Y2h5pWw5o2uXCIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ562J57qn5L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IHsgXCJsZXZlbFwiOiAwLCBcInRpbWVzdGFtcFwiOiB0aW1lc3RhbXAgfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiMzMzMzMz5a2Y5YKo5YWz5Y2h5pWw5o2uOlwiLGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsIGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaLv+WIsOeahOaVsOaNrlwiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuacieetiee6p+S/oeaBr++8jOS7juWFs+WNoeaOpeWPo+aLv+WIsOaVsOaNrlwiLCBkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IGRhdGEucmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGV2ZWxJbmZvID0geyBcImxldmVsXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjQ0NDQ0NOWtmOWCqOWFs+WNoeS/oeaBrzpcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsIGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJQcm9wKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmBk+WFt+aVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInpgZPlhbfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjogMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOmBk+WFt+S/oeaBrzpcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLCAwLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaciemBk+WFt+S/oeaBr++8jOS7jumBk+WFt+aOpeWPo+aLv+WIsOaVsOaNrlwiLCBkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemUgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXIgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLm1hZ2ljX3dhbmQgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm8gPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcInRpbWVzdGFtcFwiOiB0aW1lc3RhbXAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg6YGT5YW35L+h5oGvOlwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICB9LCAwKTtcclxuXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6K+75Y+W55So5oi35pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICAgICAgaWYgKHJldHJ5Q291bnQgPCBNQVhfUkVUUklFUykge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYOivu+WPlueUqOaIt+aVsOaNruWksei0pe+8jOesrCAke3JldHJ5Q291bnQgKyAxfSDmrKHph43or5XvvIzplJnor6/kv6Hmga86YCwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDlu7bov58gMiDnp5LlkI7ph43or5VcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkVXNlckRhdGEocmV0cnlDb3VudCArIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIDIwMDApO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfor7vlj5bnlKjmiLfmlbDmja7lpLHotKXvvIzovr7liLDmnIDlpKfph43or5XmrKHmlbDvvIzpgIDlh7rmuLjmiI8nLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOmAgOWHuua4uOaIj1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmdhbWUuZW5kKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuICAgIHNldFVzZXJEYXRhKCkge1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR2FtZVRvb2woKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKBcIiwgZGF0YSk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzdGFydFRpbWVDdXREb3duKCkge1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGVDYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudGltZU51bWJlciA8PSAwKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3BUaW1lQ3V0RG93bigpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50aW1lTnVtYmVyIC09IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2ssIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0b3BUaW1lQ3V0RG93bigpIHtcclxuICAgICAgICBpZiAodGhpcy5zY2hlZHVsZUNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2spO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuICAgICAgICBpZiAodGhpcy5sb2FkMSAmJiB0aGlzLmxvYWQyICYmIHRoaXMubG9hZDMgJiYgdGhpcy5sb2FkNCAmJiB0aGlzLmxvYWQ1ICYmIHRoaXMudGltZU51bWJlciA8PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDEgPSB0aGlzLmxvYWQyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfTG9naW4oKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydEdhbWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Config/GameConfig.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'c5692vnhwNF5J9nI7VNKQNW', 'GameConfig'); -// Script/module/Config/GameConfig.ts - -"use strict"; -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.GameConfig = void 0; -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var GameConfig = /** @class */ (function () { - function GameConfig() { - } - GameConfig_1 = GameConfig; - Object.defineProperty(GameConfig, "Instance", { - //游戏内信息 - get: function () { - if (this._instance == null) { - this._instance = new GameConfig_1(); - } - return this._instance; - }, - enumerable: false, - configurable: true - }); - //getSeedRandom - GameConfig.init = function (Authentication) { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { - //@ts-ignore - wx.cloud.init(); - } - this.TA = null; - this.CLICK_init(); - this.GM_INFO_init(); - this.LEVEL_INFO_init(false, 0); - var self = this; - //GAME_DATA 废弃了,暂时不删除以防后面修改回 一整局传一次 - this.GAME_DATA = []; - // if(!Authentication) self.Authentication(); - }; - GameConfig.generateUUID = function () { - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { - var r = Math.random() * 16 | 0; - var v = c === 'x' ? r : (r & 0x3 | 0x8); - return v.toString(16); - }); - }; - // 版本比较函数 - GameConfig.compareVersion = function (v1, v2) { - var arr1 = v1.split('.'); - var arr2 = v2.split('.'); - var len = Math.max(arr1.length, arr2.length); - for (var i = 0; i < len; i++) { - var num1 = parseInt(arr1[i] || '0', 10); - var num2 = parseInt(arr2[i] || '0', 10); - if (num1 > num2) { - return 1; - } - else if (num1 < num2) { - return -1; - } - } - return 0; - }; - GameConfig.GM_INFO_SET = function (key, value) { - this.GM_INFO[key] = value; - }; - GameConfig.CLICK_init = function () { - this.CLICK_DATA = - { - type: 1, - success: false, - round: 0, - getScore: 0, - cumulativeScore: 0, - mapId: "", - difficulty: 0, - optimizedSteps: 0, - usedSteps: 0, - stepList: [], - startTime: -1, - submitTime: -1, - duration: 0, - drawingBack: 0, - drawingReset: 0, - timer: 0 //测评倒计时剩余时间 去秒 - }; - }; - GameConfig.CLICK_SET = function (key, value) { - this.CLICK_DATA[key] = value; - }; - //数据备用 - GameConfig.GM_INFO_init = function () { - var _this = this; - this.GM_INFO = { - // isEnd: false, - mean_Time: 0, - hp: 5, - review: 0, - currSeed: 200000, - openid: "", - gameId: "100001", - userId: 0, - scode: "", - username: "user", - useravatar: "", - guide: true, - url: "https://api.sparkus.cn", - coin: 0, - success: false, - matchId: null, - gameState: false, - custom: 0, - round: 0, - level: 0, - stepTimeList: 0, - successList: [], - first: false, - score: 0, - scale: 1, - min_Steps: 0, - min_Time: 0, - freezeAmount: 0, - hammerAmount: 0, - magicAmount: 0, - musicOpen: true, - effectOpen: true, - vibrateOpen: true, - }; - // this.setCode(this.getKey("scode")); - // this.GM_INFO.level = 0; - cc.resources.load("Json/NEW_LEVEL", function (err, res) { - if (err) { - console.error("加载 NEW_LEVEL.JSON 失败:", err); - return; - } - var newLevelData = res.json; - _this.NEW_LEVEL = newLevelData.NEW_LEVEL; - // 可以根据需求对 newLevelData 进行处理 - // //console.log("NEW_LEVEL.JSON 加载成功:", newLevelData); - }); - }; - GameConfig.LEVEL_INFO_init = function (type, time) { - // 示例 围墙会根据缺的地块自动生成 - // 带缺口 {"id":"1006","map":[10,11],"gap":[cc.v2(4,9),cc.v2(5,9)]}, - // 带升降地块 {"id":"1004","map":[7,8],"risefall":[{pos:cc.v2(5,4),color:2},{pos:cc.v2(5,5),color:5}]}, - // 如果普通的就 {"id":"1001","map":[6,7]}, 这个样子就可以了 - var self = this; - if ((cc.fx.GameConfig.GM_INFO.level) > 156) { - cc.fx.GameConfig.GM_INFO.level = 156; - } - var name = "Json/level" + (cc.fx.GameConfig.GM_INFO.level + 1); - // //console.log("关卡名称:",name); - // name = "Json/level" + 68; - // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); - cc.resources.load(name, function (err, res) { - if (err) { - cc.fx.GameTool.addLevel(); - self.LEVEL_INFO_init(type, time); - return; - } - var jsonData = res.json; - self.BLOCK_INFO = jsonData["BLOCK_INFO"]; - self.LEVEL_INFO = jsonData["LEVEL_INFO"]; - self.WALL_INFO = jsonData["WALL_INFO"]; - // //console.log("配置加载完成"); - if (type) { - cc.director.preloadScene("GameScene", function () { - if (time == 0) - cc.director.loadScene("GameScene"); - else { - setTimeout(function () { - cc.director.loadScene("GameScene"); - }, time); - } - }); - } - }); - //道具位置信息 - this.PROP_INFO = [ - { - "pos1": { "x": -66, "y": 60, "z": 0 }, - "pos2": { "x": -19, "y": 36, "z": 0 }, - "pos3": { "x": -34.362, "y": 13.246, "z": 0 }, - "pos4": { "x": -17, "y": 12, "z": 0 }, - "pos5": { "x": -85, "y": 70, "z": 0 }, - "pos6": { "x": -5, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": -126, "y": 61, "z": 0 }, - "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, - "pos3": { "x": -94.792, "y": 21.675, "z": 0 }, - "pos4": { "x": -20, "y": 13, "z": 0 }, - "pos5": { "x": -140, "y": 68, "z": 0 }, - "pos6": { "x": -2, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -67, "y": 122, "z": 0 }, - "pos2": { "x": -20, "y": 94, "z": 0 }, - "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, - "pos4": { "x": -14, "y": 24, "z": 0 }, - "pos5": { "x": -84, "y": 128, "z": 0 }, - "pos6": { "x": -5, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": -178, "y": 61, "z": 0 }, - "pos2": { "x": -34.792, "y": 37.675, "z": 0 }, - "pos3": { "x": -150, "y": 23.675, "z": 0 }, - "pos4": { "x": -22, "y": 16, "z": 0 }, - "pos5": { "x": -200, "y": 67, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -63, "y": 178, "z": 0 }, - "pos2": { "x": -17.792, "y": 166.675, "z": 0 }, - "pos3": { "x": -31.792, "y": 33.675, "z": 0 }, - "pos4": { "x": -14, "y": 37, "z": 0 }, - "pos5": { "x": -78, "y": 182, "z": 0 }, - "pos6": { "x": 0, "y": 2, "z": 0 }, - }, - { - "pos1": { "x": -123, "y": 124, "z": 0 }, - "pos2": { "x": -25.792, "y": 99.675, "z": 0 }, - "pos3": { "x": -97.792, "y": 27.675, "z": 0 }, - "pos4": { "x": -27, "y": 19, "z": 0 }, - "pos5": { "x": -135, "y": 127, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -64, "y": 178, "z": 0 }, - "pos2": { "x": -24.792, "y": 275.675, "z": 0 }, - "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, - "pos4": { "x": -7, "y": 39, "z": 0 }, - "pos5": { "x": -77, "y": 188, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -178, "y": 186, "z": 0 }, - "pos2": { "x": -31.792, "y": 163.675, "z": 0 }, - "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, - "pos4": { "x": -18, "y": 30, "z": 0 }, - "pos5": { "x": -200, "y": 192, "z": 0 }, - "pos6": { "x": 0, "y": 5, "z": 0 }, - }, - { - "pos1": { "x": -186, "y": 178, "z": 0 }, - "pos2": { "x": -25.792, "y": 38.675, "z": 0 }, - "pos3": { "x": -153.792, "y": 34.675, "z": 0 }, - "pos4": { "x": -23, "y": 14, "z": 0 }, - "pos5": { "x": -200, "y": 185, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -183, "y": 64, "z": 0 }, - "pos2": { "x": -37.792, "y": 37.675, "z": 0 }, - "pos3": { "x": -36.792, "y": 26.675, "z": 0 }, - "pos4": { "x": -24, "y": 17, "z": 0 }, - "pos5": { "x": -212, "y": 74, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -65, "y": 177, "z": 0 }, - "pos2": { "x": 93.208, "y": 276.675, "z": 0 }, - "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, - "pos4": { "x": 3, "y": 31, "z": 0 }, - "pos5": { "x": -80, "y": 190, "z": 0 }, - "pos6": { "x": 0, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": 58, "y": 179, "z": 0 }, - "pos2": { "x": 205.225, "y": 154.034, "z": 0 }, - "pos3": { "x": -29.642, "y": 25.691, "z": 0 }, - "pos4": { "x": 7.218, "y": 29.765, "z": 0 }, - "pos5": { "x": 45, "y": 185, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -68, "y": 182, "z": 0 }, - "pos2": { "x": -25.792, "y": 37.675, "z": 0 }, - "pos3": { "x": -35.792, "y": 33.675, "z": 0 }, - "pos4": { "x": -14, "y": 12, "z": 0 }, - "pos5": { "x": -82, "y": 190, "z": 0 }, - "pos6": { "x": -2, "y": 1, "z": 0 }, - }, - { - "pos1": { "x": -184, "y": 62, "z": 0 }, - "pos2": { "x": -35.792, "y": 36.675, "z": 0 }, - "pos3": { "x": -271.792, "y": 24.675, "z": 0 }, - "pos4": { "x": -17, "y": 20, "z": 0 }, - "pos5": { "x": -200, "y": 72, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -62, "y": 175, "z": 0 }, - "pos2": { "x": 87.208, "y": 164.675, "z": 0 }, - "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, - "pos4": { "x": -6, "y": 24, "z": 0 }, - "pos5": { "x": -79, "y": 172, "z": 0 }, - "pos6": { "x": 0, "y": 5, "z": 0 }, - }, - { - "pos1": { "x": -184, "y": 72, "z": 0 }, - "pos2": { "x": -33.792, "y": 38.675, "z": 0 }, - "pos3": { "x": -154.792, "y": 29.675, "z": 0 }, - "pos4": { "x": -29, "y": 16, "z": 0 }, - "pos5": { "x": -201, "y": 85, "z": 0 }, - "pos6": { "x": -1, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": -64, "y": 181, "z": 0 }, - "pos2": { "x": 95.208, "y": 155.675, "z": 0 }, - "pos3": { "x": -30.792, "y": 36.675, "z": 0 }, - "pos4": { "x": -12, "y": 32, "z": 0 }, - "pos5": { "x": -78, "y": 190, "z": 0 }, - "pos6": { "x": 0, "y": 3, "z": 0 }, - }, - { - "pos1": { "x": -65, "y": 178, "z": 0 }, - "pos2": { "x": -21.792, "y": 156.675, "z": 0 }, - "pos3": { "x": -31.792, "y": 37.675, "z": 0 }, - "pos4": { "x": -12, "y": 32, "z": 0 }, - "pos5": { "x": -78, "y": 188, "z": 0 }, - "pos6": { "x": 0, "y": 2, "z": 0 }, - }, - { - "pos1": { "x": -62, "y": 183, "z": 0 }, - "pos2": { "x": 88.208, "y": 162.675, "z": 0 }, - "pos3": { "x": -29.792, "y": 41.675, "z": 0 }, - "pos4": { "x": -12, "y": 18, "z": 0 }, - "pos5": { "x": -80, "y": 188, "z": 0 }, - "pos6": { "x": -4, "y": 2, "z": 0 }, - }, - { - "pos1": { "x": -67, "y": 80, "z": 0 }, - "pos2": { "x": -26.792, "y": 32.675, "z": 0 }, - "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, - "pos4": { "x": -12, "y": 18, "z": 0 }, - "pos5": { "x": -84, "y": 90, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -184, "y": 80, "z": 0 }, - "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, - "pos3": { "x": -155.792, "y": 25.675, "z": 0 }, - "pos4": { "x": -18, "y": 26, "z": 0 }, - "pos5": { "x": -196, "y": 96, "z": 0 }, - "pos6": { "x": 0, "y": 0, "z": 0 }, - }, - { - "pos1": { "x": -62, "y": 160, "z": 0 }, - "pos2": { "x": 95.208, "y": 158.675, "z": 0 }, - "pos3": { "x": -33.792, "y": 29.675, "z": 0 }, - "pos4": { "x": -18, "y": 26, "z": 0 }, - "pos5": { "x": -78, "y": 170, "z": 0 }, - "pos6": { "x": 0, "y": 2, "z": 0 }, - }, - { - "pos1": { "x": -68, "y": 160, "z": 0 }, - "pos2": { "x": -25.792, "y": 156.675, "z": 0 }, - "pos3": { "x": -35.792, "y": 27.675, "z": 0 }, - "pos4": { "x": -25, "y": 40, "z": 0 }, - "pos5": { "x": -82, "y": 170, "z": 0 }, - "pos6": { "x": -2, "y": 2, "z": 0 }, - } - ]; - // this.PROP_INFO = [{"pos1": {"x": -60,"y": 60,"z": 0},"pos2": {"x": -16.442,"y": 30,"z": 0},"pos3": {"x": -34.362,"y": 13.246,"z": 0},"pos4": {"x": -17,"y": 12,"z": 0}},{"pos1": {"x": -126,"y": 63,"z": 0},"pos2": {"x": -25.792,"y": 34.675,"z": 0},"pos3": {"x": -94.792,"y": 21.675,"z": 0},"pos4": {"x": -20,"y": 13,"z": 0}},{"pos1": {"x": -60,"y": 125,"z": 0},"pos2": {"x": -12.792,"y": 92.675,"z": 0},"pos3": {"x": -34.792,"y": 23.675,"z": 0},"pos4": {"x": -14,"y": 24,"z": 0}},{"pos1": {"x": -185,"y": 63,"z": 0},"pos2": {"x": -34.792,"y": 37.675,"z": 0},"pos3": {"x": -154.792,"y": 23.675,"z": 0},"pos4": {"x": -22,"y": 16,"z": 0}},{"pos1": {"x": -57,"y": 178,"z": 0},"pos2": {"x": -17.792,"y": 166.675,"z": 0},"pos3": {"x": -31.792,"y": 33.675,"z": 0},"pos4": {"x": -14,"y": 37,"z": 0}},{"pos1": {"x": -123,"y": 127,"z": 0},"pos2": {"x": -25.792,"y": 99.675,"z": 0},"pos3": {"x": -97.792,"y": 27.675,"z": 0},"pos4": {"x": -27,"y": 19,"z": 0}},{"pos1": {"x": -62,"y": 181,"z": 0},"pos2": {"x": -24.792,"y": 275.675,"z": 0},"pos3": {"x": -31.792,"y": 35.675,"z": 0},"pos4": {"x": -7,"y": 39,"z": 0}},{"pos1": {"x": -181,"y": 180,"z": 0},"pos2": {"x": -31.792,"y": 163.675,"z": 0},"pos3": {"x": -33.792,"y": 34.675,"z": 0},"pos4": {"x": -18,"y": 30,"z": 0}},{"pos1": {"x": -182,"y": 182,"z": 0},"pos2": {"x": -25.792,"y": 38.675,"z": 0},"pos3": {"x": -153.792,"y": 34.675,"z": 0},"pos4": {"x": -23,"y": 14,"z": 0}},{"pos1": {"x": -186,"y": 61,"z": 0},"pos2": {"x": -37.792,"y": 37.675,"z": 0},"pos3": {"x": -36.792,"y": 26.675,"z": 0},"pos4": {"x": -24,"y": 17,"z": 0}},{"pos1": {"x": -62,"y": 177,"z": 0},"pos2": {"x": 93.208,"y": 276.675,"z": 0},"pos3": {"x": -33.792,"y": 34.675,"z": 0},"pos4": {"x": 3,"y": 31,"z": 0}},{"pos1": {"x": 58,"y": 179,"z": 0},"pos2": {"x": 205.225,"y": 154.034,"z": 0},"pos3": {"x": -29.642,"y": 25.691,"z": 0},"pos4": {"x": 7.218,"y": 29.765,"z": 0}},{"pos1": {"x": -57,"y": 182,"z": 0},"pos2": {"x": -25.792,"y": 37.675,"z": 0},"pos3": {"x": -35.792,"y": 33.675,"z": 0},"pos4": {"x": -14,"y": 12,"z": 0}},{"pos1": {"x": -180,"y": 62,"z": 0},"pos2": {"x": -35.792,"y": 36.675,"z": 0},"pos3": {"x": -271.792,"y": 24.675,"z": 0},"pos4": {"x": -17,"y": 20,"z": 0}},{"pos1": {"x": -62,"y": 178,"z": 0},"pos2": {"x": 87.208,"y": 164.675,"z": 0},"pos3": {"x": -31.792,"y": 35.675,"z": 0},"pos4": {"x": -6,"y": 24,"z": 0}},{"pos1": {"x": -176,"y": 60,"z": 0},"pos2": {"x": -33.792,"y": 38.675,"z": 0},"pos3": {"x": -154.792,"y": 29.675,"z": 0},"pos4": {"x": -29,"y": 16,"z": 0}},{"pos1": {"x": -60,"y": 181,"z": 0},"pos2": {"x": 95.208,"y": 155.675,"z": 0},"pos3": {"x": -30.792,"y": 36.675,"z": 0},"pos4": {"x": -12,"y": 32,"z": 0}},{"pos1": {"x": -63,"y": 178,"z": 0},"pos2": {"x": -21.792,"y": 156.675,"z": 0},"pos3": {"x": -31.792,"y": 37.675,"z": 0},"pos4": {"x": -12,"y": 32,"z": 0}},{"pos1": {"x": -60,"y": 183,"z": 0},"pos2": {"x": 88.208,"y": 162.675,"z": 0},"pos3": {"x": -29.792,"y": 41.675,"z": 0},"pos4": {"x": -12,"y": 18,"z": 0}},{"pos1": {"x": -64,"y": 58,"z": 0},"pos2": {"x": -26.792,"y": 32.675,"z": 0},"pos3": {"x": -34.792,"y": 23.675,"z": 0},"pos4": {"x": -12,"y": 18,"z": 0}},{"pos1": {"x": -184,"y": 62,"z": 0},"pos2": {"x": -25.792,"y": 34.675,"z": 0},"pos3": {"x": -155.792,"y": 25.675,"z": 0},"pos4": {"x": -18,"y": 26,"z": 0}},{"pos1": {"x": -57,"y": 190,"z": 0},"pos2": {"x": 95.208,"y": 158.675,"z": 0},"pos3": {"x": -33.792,"y": 29.675,"z": 0},"pos4": {"x": -18,"y": 26,"z": 0}},{"pos1": {"x": -71,"y": 184,"z": 0},"pos2": {"x": -25.792,"y": 156.675,"z": 0},"pos3": {"x": -35.792,"y": 27.675,"z": 0},"pos4": {"x": -25,"y": 40,"z": 0}}]; - }; - GameConfig.setCode = function (code) { - this.GM_INFO.scode = code; - }; - GameConfig.getKey = function (key) { - // var reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i'); - // var r = window.location.search.substring(1).match(reg); - // if (r != null) { - // return unescape(r[2]); - // } - return ""; - }; - GameConfig.Authentication = function () { - cc.fx.GameTool.Authentication(); - }; - var GameConfig_1; - //所有控制信息都通过GameAppStart内控制 - GameConfig._instance = null; - GameConfig = GameConfig_1 = __decorate([ - ccclass('GameConfig') - ], GameConfig); - return GameConfig; -}()); -exports.GameConfig = GameConfig; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENvbmZpZ1xcR2FtZUNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJTSxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUU1QztJQUFBO0lBb2VBLENBQUM7bUJBcGVZLFVBQVU7SUF3Rm5CLHNCQUFXLHNCQUFRO1FBRm5CLE9BQU87YUFFUDtZQUVJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQzFCO2dCQUNJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxZQUFVLEVBQUUsQ0FBQzthQUNyQztZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQixDQUFDOzs7T0FBQTtJQUNELGVBQWU7SUFDUixlQUFJLEdBQVgsVUFBWSxjQUFjO1FBQ2YsWUFBWTtRQUNuQixJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFDLFlBQVk7WUFDWixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBR25CO1FBRUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUNoQixDQUFBO1FBR0QsNkNBQTZDO0lBQ2pELENBQUM7SUFJTSx1QkFBWSxHQUFuQjtRQUNJLE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7WUFDckUsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDakMsSUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDMUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVM7SUFDRix5QkFBYyxHQUFyQixVQUFzQixFQUFVLEVBQUUsRUFBVTtRQUN4QyxJQUFNLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLElBQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQUksSUFBSSxHQUFHLElBQUksRUFBRTtnQkFDYixPQUFPLENBQUMsQ0FBQzthQUNaO2lCQUFNLElBQUksSUFBSSxHQUFHLElBQUksRUFBRTtnQkFDcEIsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNiO1NBQ0o7UUFFRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFTSxzQkFBVyxHQUFsQixVQUFtQixHQUFHLEVBQUMsS0FBSztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBQ00scUJBQVUsR0FBakI7UUFDSSxJQUFJLENBQUMsVUFBVTtZQUNmO2dCQUNJLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxDQUFDO2dCQUNSLFFBQVEsRUFBRSxDQUFDO2dCQUNYLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixLQUFLLEVBQUUsRUFBRTtnQkFDVCxVQUFVLEVBQUUsQ0FBQztnQkFDYixjQUFjLEVBQUUsQ0FBQztnQkFDakIsU0FBUyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxFQUFFLEVBQUU7Z0JBQ1osU0FBUyxFQUFDLENBQUMsQ0FBQztnQkFDWixVQUFVLEVBQUMsQ0FBQyxDQUFDO2dCQUNiLFFBQVEsRUFBQyxDQUFDO2dCQUNWLFdBQVcsRUFBQyxDQUFDO2dCQUNiLFlBQVksRUFBQyxDQUFDO2dCQUNkLEtBQUssRUFBRSxDQUFDLENBQVcsY0FBYzthQUVwQyxDQUFBO0lBQ0wsQ0FBQztJQUVNLG9CQUFTLEdBQWhCLFVBQWlCLEdBQUcsRUFBQyxLQUFLO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNO0lBQ0MsdUJBQVksR0FBbkI7UUFBQSxpQkFtREM7UUFsREcsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNYLG9CQUFvQjtZQUNwQixTQUFTLEVBQUUsQ0FBQztZQUNaLEVBQUUsRUFBRSxDQUFDO1lBQ0wsTUFBTSxFQUFDLENBQUM7WUFDUixRQUFRLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUMsRUFBRTtZQUNULE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLEVBQUMsTUFBTTtZQUNmLFVBQVUsRUFBQyxFQUFFO1lBQ2IsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLEVBQUUsd0JBQXdCO1lBQzdCLElBQUksRUFBRSxDQUFDO1lBQ1AsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsSUFBSTtZQUNiLFNBQVMsRUFBQyxLQUFLO1lBQ2YsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUMsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsWUFBWSxFQUFDLENBQUM7WUFDZCxXQUFXLEVBQUMsRUFBRTtZQUNkLEtBQUssRUFBQyxLQUFLO1lBQ1gsS0FBSyxFQUFDLENBQUM7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsRUFBQyxDQUFDO1lBQ1gsUUFBUSxFQUFDLENBQUM7WUFDVixZQUFZLEVBQUMsQ0FBQztZQUNkLFlBQVksRUFBQyxDQUFDO1lBQ2QsV0FBVyxFQUFDLENBQUM7WUFDYixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxJQUFJO1NBRXBCLENBQUM7UUFDRixzQ0FBc0M7UUFDdEMsMEJBQTBCO1FBRzFCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFVBQUMsR0FBUSxFQUFFLEdBQWlCO1lBQzVELElBQUksR0FBRyxFQUFFO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzVDLE9BQU87YUFDVjtZQUNELElBQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDOUIsS0FBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQ3hDLDRCQUE0QjtZQUM1Qix1REFBdUQ7UUFDM0QsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBR00sMEJBQWUsR0FBdEIsVUFBdUIsSUFBSSxFQUFDLElBQUk7UUFDNUIsMkJBQTJCO1FBQzNCLHVFQUF1RTtRQUN2RSxvR0FBb0c7UUFDcEcsOENBQThDO1FBQzlDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUdoQixJQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBQztZQUN0QyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztTQUN4QztRQUNELElBQUksSUFBSSxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0QsK0JBQStCO1FBQy9CLDRCQUE0QjtRQUM1QixzRkFBc0Y7UUFDdEYsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQUMsR0FBUSxFQUFFLEdBQWlCO1lBQzVDLElBQUksR0FBRyxFQUFFO2dCQUNMLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsT0FBTzthQUNWO1lBQ0QsSUFBSSxRQUFRLEdBQVcsR0FBRyxDQUFDLElBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2Qyw0QkFBNEI7WUFDNUIsSUFBRyxJQUFJLEVBQUM7Z0JBQ0osRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFO29CQUNsQyxJQUFHLElBQUksSUFBSSxDQUFDO3dCQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO3lCQUM3Qzt3QkFDQSxVQUFVLENBQUM7NEJBQ1AsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ3ZDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDWjtnQkFDTCxDQUFDLENBQUMsQ0FBQTthQUNMO1FBRVQsQ0FBQyxDQUFDLENBQUE7UUFHSCxRQUFRO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNYO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3RDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUN0QztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3BDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNwQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3RDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7U0FDSixDQUFDO1FBQ0osNGdIQUE0Z0g7SUFDOWdILENBQUM7SUFJTSxrQkFBTyxHQUFkLFVBQWUsSUFBSTtRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRU0saUJBQU0sR0FBYixVQUFjLEdBQUc7UUFDYiw4REFBOEQ7UUFDOUQsMERBQTBEO1FBQzFELG1CQUFtQjtRQUNuQiw2QkFBNkI7UUFDN0IsSUFBSTtRQUNKLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUdNLHlCQUFjLEdBQXJCO1FBQ0ksRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7SUFsZUQsMEJBQTBCO0lBQ1gsb0JBQVMsR0FBZ0IsSUFBSSxDQUFDO0lBRnBDLFVBQVU7UUFEdEIsT0FBTyxDQUFDLFlBQVksQ0FBQztPQUNULFVBQVUsQ0FvZXRCO0lBQUQsaUJBQUM7Q0FwZUQsQUFvZUMsSUFBQTtBQXBlWSxnQ0FBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBHYW1lVG9vbCB9IGZyb20gXCIuLi9Ub29sL0dhbWVUb29sXCI7XHJcblxyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuQGNjY2xhc3MoJ0dhbWVDb25maWcnKVxyXG5leHBvcnQgY2xhc3MgR2FtZUNvbmZpZyAge1xyXG4gICAgLy/miYDmnInmjqfliLbkv6Hmga/pg73pgJrov4dHYW1lQXBwU3RhcnTlhoXmjqfliLZcclxuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZSA6IEdhbWVDb25maWcgPSBudWxsO1xyXG5cclxuICAgIHN0YXRpYyBHQU1FX0RBVEE6IGFueVtdO1xyXG4gICAgLy/lhbPljaHmlbDmja5cclxuICAgIC8v55So5oi36ZyA6KaB5a2Y5YKo5Zyo5pys5Zyw55qE5pWw5o2u77yMIOmHkeW4ge+8jOWFs+WNoeetiee6p++8jOS9k+WKm+WAvOS7peWPiuaBouWkje+8jOmBk+WFt+aVsOmHj+OAglxyXG4gICAgXHJcblxyXG4gICAgc3RhdGljIENVU1RPTV9JTkZPOiB7XHJcbiAgICAgICAgbW92ZVNwZWVkOiBudW1iZXI7IC8v5rSq5bOw56e75Yqo6YCf5bqmXHJcbiAgICAgICAgd2FpdFRpbWU6IG51bWJlcjsgLy/mtKrls7DlhrLlh7vlgJLorqHml7ZcclxuICAgICAgICBmYXN0UGF0aDogbnVtYmVyOyAvL+acgOefrei3r+W+hFxyXG4gICAgfVtdO1xyXG4gICAgc3RhdGljIFRJTUVfSU5GTzoge1xyXG4gICAgICAgIHdhdGVyU3BlZWQ6IG51bWJlcltdOyAvL+a0quWzsOmAn+W6plxyXG4gICAgICAgIHRvdGFsVGltZTogbnVtYmVyOyAvL+a4uOaIj+aAu+aXtumVv1xyXG4gICAgICAgIHdhdGVyVGltZTogbnVtYmVyW107IC8v5rSq5bOw5p2l55qE5YCS6K6h5pe2XHJcbiAgICAgICAgcm9hZFNwZWVkOiBudW1iZXI7IC8v5rKz6YGT5L+u562R6YCf5bqmXHJcbiAgICAgICAgUmVpbmZvcmNlU3BlZWQ6IG51bWJlcjsgLy/liqDlm7rml7bpl7TpgJ/luqZcclxuICAgICAgICBYaV9Tb2lsU3BlZWQ6IG51bWJlcjtcclxuICAgIH07XHJcbiAgICAvL+eUqOS6juebm+aUvuWfi+eCueaVsOaNruS4iuS8oO+8jOavj+asoeS4iuS8oOWQjua4heepulxyXG4gICAgc3RhdGljIENMSUNLX0RBVEE6IHtcclxuICAgICAgICB0eXBlOiBudW1iZXI7IC8v5LiK5Lyg5pWw5o2u57G75Z6LXHJcbiAgICAgICAgc3VjY2VzczogYm9vbGVhbjsgLy/mraTlsYDmuLjmiI/mraPnoa7kuI7lkKZcclxuICAgICAgICByb3VuZDogbnVtYmVyOyAvL+WbnuWQiOaVsOi9ruasoVxyXG4gICAgICAgIGdldFNjb3JlOiBudW1iZXI7IC8v5pys6L2u5b6X5YiG77yM5aSx6LSl5Li6MOWIhlxyXG4gICAgICAgIGN1bXVsYXRpdmVTY29yZTogbnVtYmVyOyAvL+acrOWJp+a4uOaIj+aAu+iuoeW+l+WIhlxyXG4gICAgICAgIG1hcElkOiBzdHJpbmc7IC8v5Zyw5Zu+SURcclxuICAgICAgICBkaWZmaWN1bHR5OiBudW1iZXI7IC8v5Zyw5Zu+6Zq+5bqmXHJcbiAgICAgICAgb3B0aW1pemVkU3RlcHM6IG51bWJlcjsgLy/lhbPljaHmnIDnn63mraXmlbBcclxuICAgICAgICB1c2VkU3RlcHM6IG51bWJlcjsgLy/njqnlrrbkv67lu7rmgLvmraXmlbBcclxuICAgICAgICBzdGVwTGlzdDogYW55W107IC8vVeOAgUTjgIFM44CBUiAgIFgg5oGv5aOkICAgRiDliqDlm7pcclxuICAgICAgICBzdGFydFRpbWU6IG51bWJlcjsgLy/ku47muLjmiI/lvIDlp4vliLDnjqnlrrbmk43kvZznmoTnrKzkuIDmraXmiKrmraLml7bpl7QgIOWNleS9jeavq+enklxyXG4gICAgICAgIHN1Ym1pdFRpbWU6IG51bWJlcjsgLy/ku47nrKzkuIDmraXmk43kvZzliLDmj5DkuqTml7bpl7TvvIzlpoLmnpzmnKrmj5DkuqTkuLotMSDljZXkvY3mr6vnp5JcclxuICAgICAgICBkdXJhdGlvbjogbnVtYmVyOyAvL+a4uOaIj+aAu+eUqOaXtu+8iOaIquatouWIsOaPkOS6pO+8iSDljZXkvY3mr6vnp5JcclxuICAgICAgICBkcmF3aW5nQmFjazogbnVtYmVyOyAvL+WQjumAgOasoeaVsFxyXG4gICAgICAgIGRyYXdpbmdSZXNldDogbnVtYmVyOyAvL+a4heepuuasoeaVsFxyXG4gICAgICAgIHRpbWVyOiBudW1iZXI7ICAvL+a4uOaIj+WAkuiuoeaXtuWJqeS9meaXtumVvyDnp5JcclxuICAgIH07XHJcblxyXG4gICAgc3RhdGljIFRJUF9FUlI6IHN0cmluZ1tdOyAgIC8v5L+u562R5aSx6LSl6ZSZ6K+v5o+Q56S6XHJcblxyXG4gICAgc3RhdGljIEJMT0NLX0lORk86IHt9W11bXTtcclxuICAgIC8vc3RhdGljIFdBTExfSU5GTzogKHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHR5cGU6IG51bWJlcjsgc3BlY2lhbDogbnVtYmVyOyBsZW5ndGg6IG51bWJlcjsgfVtdIHwgeyBpZDogbnVtYmVyOyBudW06IG51bWJlcjsgYmxvY2s6IG51bWJlcjsgY29sb3I6IG51bWJlcjsgdHlwZTogbnVtYmVyOyBzcGVjaWFsOiBudW1iZXI7IH1bXSlbXTtcclxuICAgIHN0YXRpYyBMRVZFTF9JTkZPOiAoeyBpZDogc3RyaW5nOyBtYXA6IG51bWJlcltdOyByaXNlZmFsbD86IHVuZGVmaW5lZDsgZ2FwPzogdW5kZWZpbmVkOyB9IHwgeyBpZDogc3RyaW5nOyBtYXA6IG51bWJlcltdOyByaXNlZmFsbDogeyBwb3M6IGNjLlZlYzI7IGNvbG9yOiBudW1iZXI7IH1bXTsgZ2FwPzogdW5kZWZpbmVkOyB9IHwgeyBpZDogc3RyaW5nOyBtYXA6IG51bWJlcltdOyBnYXA6IGNjLlZlYzJbXTsgcmlzZWZhbGw/OiB1bmRlZmluZWQ7IH0pW107XHJcbiAgICBzdGF0aWMgV0FMTF9JTkZPOiAoKHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHNwZWNpYWw6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGxvY2s/OiB1bmRlZmluZWQ7IH0gfCB7IGlkOiBudW1iZXI7IG51bTogbnVtYmVyOyBibG9jazogbnVtYmVyOyBjb2xvcjogbnVtYmVyOyBzcGVjaWFsOiBudW1iZXI7IGxlbmd0aDogbnVtYmVyOyBsb2NrOiBib29sZWFuOyB9KVtdIHwgKHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHNwZWNpYWw6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGZyZWV6ZT86IHVuZGVmaW5lZDsgfSB8IHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHNwZWNpYWw6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGZyZWV6ZTogbnVtYmVyOyB9KVtdKVtdO1xyXG4gICAgc3RhdGljIFBST1BfSU5GTzogKHsgcG9zMTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3MyOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTsgcG9zNDogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3M1OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczY6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTsgfSB8IHsgcG9zMTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3MyOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTsgcG9zNDogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3M1OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczY/OiB1bmRlZmluZWQ7IH0pW107XHJcbiAgICBzdGF0aWMgTkVXX0xFVkVMOiBhbnk7XHJcbiAgICBzdGF0aWMgVEE6IGFueTtcclxuICAgIHN0YXRpYyBHTV9JTkZPOiB7XHJcbiAgICAgICAgLy8gaXNFbmQ6IGZhbHNlLCAgICBcclxuICAgICAgICBtZWFuX1RpbWU6IG51bWJlcjsgLy/lubPlnYfmlL7nrq3pgJ/luqZcclxuICAgICAgICBocDogbnVtYmVyOyAvL+S9k+WKm+WAvFxyXG4gICAgICAgIHJldmlldzogbnVtYmVyOyAvL+Wkjea0u+asoeaVsFxyXG4gICAgICAgIC8v5aSN5rS75qyh5pWwXHJcbiAgICAgICAgY3VyclNlZWQ6IG51bWJlcjsgLy/nlKjkuo7pmo/mnLrmlbDnp43lrZBcclxuICAgICAgICBvcGVuaWQ6IHN0cmluZzsgLy/lvq7kv6HnlKjmiLfllK/kuIBpZFxyXG4gICAgICAgIGdhbWVJZDogc3RyaW5nOyAvL+a4uOaIj0lEXHJcbiAgICAgICAgdXNlcklkOiBudW1iZXI7IC8v55So5oi3SURcclxuICAgICAgICBzY29kZTogc3RyaW5nOyAvL+eUqOaIt2NvZGUs5LuO572R6aG15ZCO57yA6I635Y+WXHJcbiAgICAgICAgdXNlcm5hbWU6IHN0cmluZzsgLy/nlKjmiLflkI3np7BcclxuICAgICAgICB1c2VyYXZhdGFyOiBzdHJpbmc7IC8v55So5oi35aS05YOP5Zyw5Z2AXHJcbiAgICAgICAgZ3VpZGU6IGJvb2xlYW47IC8v5piv5ZCm5pyJ5byV5a+8XHJcbiAgICAgICAgdXJsOiBzdHJpbmc7IC8v6K6/6Zeu5Z+f5ZCNXHJcbiAgICAgICAgY29pbjogbnVtYmVyOyAvL+eUqOaIt+mHkeW4gVxyXG4gICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47IC8v55So5oi35ri45oiP5oiQ5Yqf5LiO5ZCmXHJcbiAgICAgICAgbWF0Y2hJZDogYW55OyAvL+eUqOS6juWfi+eCueS4iuS8oOeahElEXHJcbiAgICAgICAgZ2FtZVN0YXRlOiBib29sZWFuOyBjdXN0b206IG51bWJlcjsgLy/nlKjkuo7mtYvor5Xot7PlhbPljaFcclxuICAgICAgICByb3VuZDogbnVtYmVyOyAvL+WbnuWQiOaVsFxyXG4gICAgICAgIGxldmVsOiBudW1iZXI7IC8v5YW35L2T5ri45oiP5YaF6L+b6KGM5Yiw56ys5Yeg5q2lIFxyXG4gICAgICAgIHN0ZXBUaW1lTGlzdDogbnVtYmVyOyAvL+aVtOWxgOa4uOaIj+eUqOaXtu+8jOeUseS6jua2ieWPiuWcuuaZr+WIh+aNou+8jOaVsOaNrumcgOimgeS/neeVmVxyXG4gICAgICAgIHN1Y2Nlc3NMaXN0OiBhbnlbXTsgLy/mlbTlsYDog5zotJ9cclxuICAgICAgICBmaXJzdDogYm9vbGVhbjsgLy/mmK/lkKbpppbmrKHov5vlhaXmuLjmiI9cclxuICAgICAgICBzY29yZTogbnVtYmVyOyAvL+aAu+W+l+WIhlxyXG4gICAgICAgIHNjYWxlOiBudW1iZXI7IC8v546p5a625oC76K6h5oiQ5Yqf54K554Gr5pWwXHJcbiAgICAgICAgbWluX1N0ZXBzOiBudW1iZXI7IC8v5q+P5qyh5LiK5LiA5oqK5pyA5bCP5q2l5pWwXHJcbiAgICAgICAgbWluX1RpbWU6IG51bWJlcjsgLy/kvZPlipvmgaLlpI3nmoTliankvZnml7bpl7RcclxuICAgICAgICBmcmVlemVBbW91bnQ6IG51bWJlcjsgLy/lhrvnu5PpgZPlhbfmrKHmlbBcclxuICAgICAgICBoYW1tZXJBbW91bnQ6IG51bWJlcjsgLy/plKTlrZDpgZPlhbfmrKHmlbBcclxuICAgICAgICBtYWdpY0Ftb3VudDogbnVtYmVyOyAvL+mtlOazleajkumBk+WFt+asoeaVsFxyXG4gICAgICAgIG11c2ljT3BlbjogYm9vbGVhbjsgLy/pn7PkuZBcclxuICAgICAgICBlZmZlY3RPcGVuOiBib29sZWFuOyAvL+mfs+aViFxyXG4gICAgICAgIHZpYnJhdGVPcGVuOiBib29sZWFuO1xyXG4gICAgfTtcclxuICAgIC8v5ri45oiP5YaF5L+h5oGvXHJcblxyXG4gICAgc3RhdGljIGdldCBJbnN0YW5jZSgpXHJcbiAgICB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2luc3RhbmNlID09IG51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBHYW1lQ29uZmlnKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZTtcclxuICAgIH1cclxuICAgIC8vZ2V0U2VlZFJhbmRvbVxyXG4gICAgc3RhdGljIGluaXQoQXV0aGVudGljYXRpb24pe1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJyAmJiB3eCAhPT0gbnVsbCkgeyBcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmluaXQoKTtcclxuICAgICAgIFxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuVEEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuQ0xJQ0tfaW5pdCgpO1xyXG4gICAgICAgIHRoaXMuR01fSU5GT19pbml0KCk7XHJcbiAgICAgICAgdGhpcy5MRVZFTF9JTkZPX2luaXQoZmFsc2UsMCk7XHJcbiAgXHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOW6n+W8g+S6hu+8jOaaguaXtuS4jeWIoOmZpOS7pemYsuWQjumdouS/ruaUueWbniDkuIDmlbTlsYDkvKDkuIDmrKFcclxuICAgICAgICB0aGlzLkdBTUVfREFUQSA9IFtcclxuICAgICAgICBdXHJcbiAgIFxyXG5cclxuICAgICAgICAvLyBpZighQXV0aGVudGljYXRpb24pIHNlbGYuQXV0aGVudGljYXRpb24oKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHN0YXRpYyBnZW5lcmF0ZVVVSUQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbihjKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwO1xyXG4gICAgICAgICAgICBjb25zdCB2ID0gYyA9PT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KTtcclxuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOeJiOacrOavlOi+g+WHveaVsFxyXG4gICAgc3RhdGljIGNvbXBhcmVWZXJzaW9uKHYxOiBzdHJpbmcsIHYyOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IGFycjEgPSB2MS5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IGFycjIgPSB2Mi5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IGxlbiA9IE1hdGgubWF4KGFycjEubGVuZ3RoLCBhcnIyLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgbnVtMSA9IHBhcnNlSW50KGFycjFbaV0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG51bTIgPSBwYXJzZUludChhcnIyW2ldIHx8ICcwJywgMTApO1xyXG4gICAgICAgICAgICBpZiAobnVtMSA+IG51bTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG51bTEgPCBudW0yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBHTV9JTkZPX1NFVChrZXksdmFsdWUpIHtcclxuICAgICAgICB0aGlzLkdNX0lORk9ba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIENMSUNLX2luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5DTElDS19EQVRBID1cclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IDEsICAgICAgICAgICAgLy/kuIrkvKDmlbDmja7nsbvlnotcclxuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsICAgICAvL+atpOWxgOa4uOaIj+ato+ehruS4juWQplxyXG4gICAgICAgICAgICByb3VuZDogMCwgICAgICAgICAgIC8v5Zue5ZCI5pWw6L2u5qyhXHJcbiAgICAgICAgICAgIGdldFNjb3JlOiAwLCAgICAgICAgLy/mnKzova7lvpfliIbvvIzlpLHotKXkuLow5YiGXHJcbiAgICAgICAgICAgIGN1bXVsYXRpdmVTY29yZTogMCwgLy/mnKzliafmuLjmiI/mgLvorqHlvpfliIZcclxuICAgICAgICAgICAgbWFwSWQ6IFwiXCIsICAgICAgICAgIC8v5Zyw5Zu+SURcclxuICAgICAgICAgICAgZGlmZmljdWx0eTogMCwgICAgICAvL+WcsOWbvumavuW6plxyXG4gICAgICAgICAgICBvcHRpbWl6ZWRTdGVwczogMCwgIC8v5YWz5Y2h5pyA55+t5q2l5pWwXHJcbiAgICAgICAgICAgIHVzZWRTdGVwczogMCwgICAgICAgLy/njqnlrrbkv67lu7rmgLvmraXmlbBcclxuICAgICAgICAgICAgc3RlcExpc3Q6IFtdLCAgICAgICAvL1XjgIFE44CBTOOAgVIgICBYIOaBr+WjpCAgIEYg5Yqg5Zu6XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTotMSwgICAgICAgIC8v5LuO5ri45oiP5byA5aeL5Yiw546p5a625pON5L2c55qE56ys5LiA5q2l5oiq5q2i5pe26Ze0ICDljZXkvY3mr6vnp5JcclxuICAgICAgICAgICAgc3VibWl0VGltZTotMSwgICAgICAgLy/ku47nrKzkuIDmraXmk43kvZzliLDmj5DkuqTml7bpl7TvvIzlpoLmnpzmnKrmj5DkuqTkuLotMSDljZXkvY3mr6vnp5JcclxuICAgICAgICAgICAgZHVyYXRpb246MCwgICAgICAgICAvL+a4uOaIj+aAu+eUqOaXtu+8iOaIquatouWIsOaPkOS6pO+8iSDljZXkvY3mr6vnp5Ig5aaC5p6c5pyq5LuW56e75Lqk5YiZ5Li65pe26Ze05LiK6ZmQXHJcbiAgICAgICAgICAgIGRyYXdpbmdCYWNrOjAsICAgICAgLy/lkI7pgIDmrKHmlbBcclxuICAgICAgICAgICAgZHJhd2luZ1Jlc2V0OjAsICAgICAvL+a4heepuuasoeaVsFxyXG4gICAgICAgICAgICB0aW1lcjogMCAgICAgICAgICAgLy/mtYvor4TlgJLorqHml7bliankvZnml7bpl7Qg5Y6756eSXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgQ0xJQ0tfU0VUKGtleSx2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuQ0xJQ0tfREFUQVtrZXldID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy/mlbDmja7lpIfnlKhcclxuICAgIHN0YXRpYyBHTV9JTkZPX2luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5HTV9JTkZPID0ge1xyXG4gICAgICAgICAgICAvLyBpc0VuZDogZmFsc2UsICAgIFxyXG4gICAgICAgICAgICBtZWFuX1RpbWU6IDAsICAgICAgICAgICAgICAgLy/lubPlnYfmlL7nrq3pgJ/luqZcclxuICAgICAgICAgICAgaHA6IDUsICAgICAgICAgICAgICAgICAgICAgIC8v5L2T5Yqb5YC8XHJcbiAgICAgICAgICAgIHJldmlldzowLCAgICAgICAgICAgICAgICAgICAgLy/lpI3mtLvmrKHmlbBcclxuICAgICAgICAgICAgY3VyclNlZWQ6IDIwMDAwMCwgICAgICAgICAgIC8v55So5LqO6ZqP5py65pWw56eN5a2QXHJcbiAgICAgICAgICAgIG9wZW5pZDpcIlwiLCAgICAgICAgICAgICAgICAgIC8v5b6u5L+h55So5oi35ZSv5LiAaWRcclxuICAgICAgICAgICAgZ2FtZUlkOiBcIjEwMDAwMVwiLCAgICAgICAgICAgLy/muLjmiI9JRFxyXG4gICAgICAgICAgICB1c2VySWQ6IDAsICAgICAgICAgICAgICAgICAgLy/nlKjmiLdJRFxyXG4gICAgICAgICAgICBzY29kZTogXCJcIiwgICAgICAgICAgICAgICAgICAvL+eUqOaIt2NvZGUs5LuO572R6aG15ZCO57yA6I635Y+WXHJcbiAgICAgICAgICAgIHVzZXJuYW1lOlwidXNlclwiLCAgICAgICAgICAgICAgICAvL+eUqOaIt+WQjeensFxyXG4gICAgICAgICAgICB1c2VyYXZhdGFyOlwiXCIsICAgICAgICAgICAgICAvL+eUqOaIt+WktOWDj+WcsOWdgFxyXG4gICAgICAgICAgICBndWlkZTogdHJ1ZSwgICAgICAgICAgICAgICAgIC8v5piv5ZCm5pyJ5byV5a+8XHJcbiAgICAgICAgICAgIHVybDogXCJodHRwczovL2FwaS5zcGFya3VzLmNuXCIsLy/orr/pl67ln5/lkI1cclxuICAgICAgICAgICAgY29pbjogMCwgICAgICAgICAgICAgICAgICAgIC8v55So5oi36YeR5biBXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLCAgICAgICAgICAgICAvL+eUqOaIt+a4uOaIj+aIkOWKn+S4juWQplxyXG4gICAgICAgICAgICBtYXRjaElkOiBudWxsLCAgICAgICAgICAgICAgLy/nlKjkuo7ln4vngrnkuIrkvKDnmoRJRFxyXG4gICAgICAgICAgICBnYW1lU3RhdGU6ZmFsc2UsXHJcbiAgICAgICAgICAgIGN1c3RvbTogMCwgICAgICAgICAgICAgICAgICAvL+eUqOS6jua1i+ivlei3s+WFs+WNoVxyXG4gICAgICAgICAgICByb3VuZDowLCAgICAgICAgICAgICAgICAgICAgLy/lm57lkIjmlbBcclxuICAgICAgICAgICAgbGV2ZWw6IDAsICAgICAgICAgICAgICAgICAgICAvL+WFt+S9k+a4uOaIj+WGhei/m+ihjOWIsOesrOWHoOatpSBcclxuICAgICAgICAgICAgc3RlcFRpbWVMaXN0OjAsICAgICAgICAgICAgIC8v5pW05bGA5ri45oiP55So5pe277yM55Sx5LqO5raJ5Y+K5Zy65pmv5YiH5o2i77yM5pWw5o2u6ZyA6KaB5L+d55WZXHJcbiAgICAgICAgICAgIHN1Y2Nlc3NMaXN0OltdLCAgICAgICAgICAgICAgLy/mlbTlsYDog5zotJ9cclxuICAgICAgICAgICAgZmlyc3Q6ZmFsc2UsICAgICAgICAgICAgICAgICAgICAgIC8v5piv5ZCm6aaW5qyh6L+b5YWl5ri45oiPXHJcbiAgICAgICAgICAgIHNjb3JlOjAsICAgICAgICAgICAgICAgICAgICAvL+aAu+W+l+WIhlxyXG4gICAgICAgICAgICBzY2FsZTogMSwgICAgICAgICAgICAgLy/njqnlrrbmgLvorqHmiJDlip/ngrnngavmlbBcclxuICAgICAgICAgICAgbWluX1N0ZXBzOjAsICAgICAgICAgICAgICAgIC8v5q+P5qyh5LiK5LiA5oqK5pyA5bCP5q2l5pWwXHJcbiAgICAgICAgICAgIG1pbl9UaW1lOjAsICAgICAgICAgICAgICAgICAgLy/kvZPlipvmgaLlpI3nmoTliankvZnml7bpl7RcclxuICAgICAgICAgICAgZnJlZXplQW1vdW50OjAsICAgICAgICAgICAgICAvL+WGu+e7k+mBk+WFt+asoeaVsFxyXG4gICAgICAgICAgICBoYW1tZXJBbW91bnQ6MCwgICAgICAgICAgICAgIC8v6ZSk5a2Q6YGT5YW35qyh5pWwXHJcbiAgICAgICAgICAgIG1hZ2ljQW1vdW50OjAsICAgICAgICAgICAgICAgLy/prZTms5Xmo5LpgZPlhbfmrKHmlbBcclxuICAgICAgICAgICAgbXVzaWNPcGVuOiB0cnVlLCAgICAgICAgICAgICAvL+mfs+S5kFxyXG4gICAgICAgICAgICBlZmZlY3RPcGVuOiB0cnVlLCAgICAgICAgICAgICAvL+mfs+aViFxyXG4gICAgICAgICAgICB2aWJyYXRlT3BlbjogdHJ1ZSwgICAgICAgICAgIC8v6ZyH5YqoXHJcblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gdGhpcy5zZXRDb2RlKHRoaXMuZ2V0S2V5KFwic2NvZGVcIikpO1xyXG4gICAgICAgIC8vIHRoaXMuR01fSU5GTy5sZXZlbCA9IDA7XHJcblxyXG5cclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChcIkpzb24vTkVXX0xFVkVMXCIsIChlcnI6IGFueSwgcmVzOiBjYy5Kc29uQXNzZXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIuWKoOi9vSBORVdfTEVWRUwuSlNPTiDlpLHotKU6XCIsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbmV3TGV2ZWxEYXRhID0gcmVzLmpzb247XHJcbiAgICAgICAgICAgIHRoaXMuTkVXX0xFVkVMID0gbmV3TGV2ZWxEYXRhLk5FV19MRVZFTDtcclxuICAgICAgICAgICAgLy8g5Y+v5Lul5qC55o2u6ZyA5rGC5a+5IG5ld0xldmVsRGF0YSDov5vooYzlpITnkIZcclxuICAgICAgICAgICAgLy8gLy9jb25zb2xlLmxvZyhcIk5FV19MRVZFTC5KU09OIOWKoOi9veaIkOWKnzpcIiwgbmV3TGV2ZWxEYXRhKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGF0aWMgTEVWRUxfSU5GT19pbml0KHR5cGUsdGltZSkgeyBcclxuICAgICAgICAvLyDnpLrkvosgICAgICAgICDlm7TlopnkvJrmoLnmja7nvLrnmoTlnLDlnZfoh6rliqjnlJ/miJBcclxuICAgICAgICAvLyDluKbnvLrlj6MgICAgICAge1wiaWRcIjpcIjEwMDZcIixcIm1hcFwiOlsxMCwxMV0sXCJnYXBcIjpbY2MudjIoNCw5KSxjYy52Mig1LDkpXX0sXHJcbiAgICAgICAgLy8g5bim5Y2H6ZmN5Zyw5Z2XICAge1wiaWRcIjpcIjEwMDRcIixcIm1hcFwiOls3LDhdLFwicmlzZWZhbGxcIjpbe3BvczpjYy52Mig1LDQpLGNvbG9yOjJ9LHtwb3M6Y2MudjIoNSw1KSxjb2xvcjo1fV19LFxyXG4gICAgICAgIC8vIOWmguaenOaZrumAmueahOWwsSAge1wiaWRcIjpcIjEwMDFcIixcIm1hcFwiOls2LDddfSwg6L+Z5Liq5qC35a2Q5bCx5Y+v5Lul5LqGXHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuXHJcbiAgICAgICAgaWYoKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCkgPiAxNTYpe1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAxNTY7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuYW1lID0gXCJKc29uL2xldmVsXCIgKyAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpO1xyXG5cclxuICAgICAgICAvLyAvL2NvbnNvbGUubG9nKFwi5YWz5Y2h5ZCN56ewOlwiLG5hbWUpO1xyXG4gICAgICAgIC8vIG5hbWUgPSBcIkpzb24vbGV2ZWxcIiArIDY4O1xyXG4gICAgICAgIC8vIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbC50b1N0cmluZygpKTtcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChuYW1lLCAoZXJyOiBhbnksIHJlczogY2MuSnNvbkFzc2V0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuYWRkTGV2ZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLkxFVkVMX0lORk9faW5pdCh0eXBlLHRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBqc29uRGF0YTogb2JqZWN0ID0gcmVzLmpzb24hO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5CTE9DS19JTkZPID0ganNvbkRhdGFbXCJCTE9DS19JTkZPXCJdO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5MRVZFTF9JTkZPID0ganNvbkRhdGFbXCJMRVZFTF9JTkZPXCJdO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5XQUxMX0lORk8gPSBqc29uRGF0YVtcIldBTExfSU5GT1wiXTtcclxuICAgICAgICAgICAgICAgIC8vIC8vY29uc29sZS5sb2coXCLphY3nva7liqDovb3lrozmiJBcIik7IFxyXG4gICAgICAgICAgICAgICAgaWYodHlwZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIsICgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRpbWUgPT0gMCkgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcblxyXG5cclxuICAgICAgIC8v6YGT5YW35L2N572u5L+h5oGvXHJcbiAgICAgIHRoaXMuUFJPUF9JTkZPID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY2LCBcInlcIjogNjAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTE5LCBcInlcIjogMzYsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM0LjM2MiwgXCJ5XCI6IDEzLjI0NiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTcsIFwieVwiOiAxMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODUsIFwieVwiOiA3MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAtNSwgXCJ5XCI6IDMsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtMTI2LCBcInlcIjogNjEsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTI1Ljc5MiwgXCJ5XCI6IDM0LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtOTQuNzkyLCBcInlcIjogMjEuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0yMCwgXCJ5XCI6IDEzLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC0xNDAsIFwieVwiOiA2OCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAtMiwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjcsIFwieVwiOiAxMjIsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTIwLCBcInlcIjogOTQsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM0Ljc5MiwgXCJ5XCI6IDIzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTQsIFwieVwiOiAyNCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODQsIFwieVwiOiAxMjgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogLTUsIFwieVwiOiAzLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTE3OCwgXCJ5XCI6IDYxLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zNC43OTIsIFwieVwiOiAzNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTE1MCwgXCJ5XCI6IDIzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjIsIFwieVwiOiAxNiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMjAwLCBcInlcIjogNjcsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjMsIFwieVwiOiAxNzgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTE3Ljc5MiwgXCJ5XCI6IDE2Ni42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTMxLjc5MiwgXCJ5XCI6IDMzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTQsIFwieVwiOiAzNywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtNzgsIFwieVwiOiAxODIsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDIsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtMTIzLCBcInlcIjogMTI0LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNS43OTIsIFwieVwiOiA5OS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTk3Ljc5MiwgXCJ5XCI6IDI3LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjcsIFwieVwiOiAxOSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMTM1LCBcInlcIjogMTI3LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY0LCBcInlcIjogMTc4LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNC43OTIsIFwieVwiOiAyNzUuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zMS43OTIsIFwieVwiOiAzNS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTcsIFwieVwiOiAzOSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtNzcsIFwieVwiOiAxODgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtMTc4LCBcInlcIjogMTg2LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zMS43OTIsIFwieVwiOiAxNjMuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zMy43OTIsIFwieVwiOiAzNC42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTE4LCBcInlcIjogMzAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTIwMCwgXCJ5XCI6IDE5MiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogNSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC0xODYsIFwieVwiOiAxNzgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTI1Ljc5MiwgXCJ5XCI6IDM4LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMTUzLjc5MiwgXCJ5XCI6IDM0LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjMsIFwieVwiOiAxNCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMjAwLCBcInlcIjogMTg1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTE4MywgXCJ5XCI6IDY0LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zNy43OTIsIFwieVwiOiAzNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM2Ljc5MiwgXCJ5XCI6IDI2LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjQsIFwieVwiOiAxNywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMjEyLCBcInlcIjogNzQsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjUsIFwieVwiOiAxNzcsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogOTMuMjA4LCBcInlcIjogMjc2LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMzMuNzkyLCBcInlcIjogMzQuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IDMsIFwieVwiOiAzMSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODAsIFwieVwiOiAxOTAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDMsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiA1OCwgXCJ5XCI6IDE3OSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAyMDUuMjI1LCBcInlcIjogMTU0LjAzNCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMjkuNjQyLCBcInlcIjogMjUuNjkxLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IDcuMjE4LCBcInlcIjogMjkuNzY1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IDQ1LCBcInlcIjogMTg1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY4LCBcInlcIjogMTgyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNS43OTIsIFwieVwiOiAzNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM1Ljc5MiwgXCJ5XCI6IDMzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTQsIFwieVwiOiAxMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODIsIFwieVwiOiAxOTAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogLTIsIFwieVwiOiAxLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTE4NCwgXCJ5XCI6IDYyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zNS43OTIsIFwieVwiOiAzNi42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTI3MS43OTIsIFwieVwiOiAyNC42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTE3LCBcInlcIjogMjAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTIwMCwgXCJ5XCI6IDcyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTYyLCBcInlcIjogMTc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IDg3LjIwOCwgXCJ5XCI6IDE2NC42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTMxLjc5MiwgXCJ5XCI6IDM1LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtNiwgXCJ5XCI6IDI0LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC03OSwgXCJ5XCI6IDE3MiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogNSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC0xODQsIFwieVwiOiA3MiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAtMzMuNzkyLCBcInlcIjogMzguNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0xNTQuNzkyLCBcInlcIjogMjkuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0yOSwgXCJ5XCI6IDE2LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC0yMDEsIFwieVwiOiA4NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAtMSwgXCJ5XCI6IDMsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjQsIFwieVwiOiAxODEsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogOTUuMjA4LCBcInlcIjogMTU1LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMzAuNzkyLCBcInlcIjogMzYuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0xMiwgXCJ5XCI6IDMyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC03OCwgXCJ5XCI6IDE5MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02NSwgXCJ5XCI6IDE3OCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAtMjEuNzkyLCBcInlcIjogMTU2LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMzEuNzkyLCBcInlcIjogMzcuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0xMiwgXCJ5XCI6IDMyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC03OCwgXCJ5XCI6IDE4OCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02MiwgXCJ5XCI6IDE4MywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiA4OC4yMDgsIFwieVwiOiAxNjIuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0yOS43OTIsIFwieVwiOiA0MS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTEyLCBcInlcIjogMTgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTgwLCBcInlcIjogMTg4LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IC00LCBcInlcIjogMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02NywgXCJ5XCI6IDgwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNi43OTIsIFwieVwiOiAzMi42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM0Ljc5MiwgXCJ5XCI6IDIzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTIsIFwieVwiOiAxOCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODQsIFwieVwiOiA5MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC0xODQsIFwieVwiOiA4MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAtMjUuNzkyLCBcInlcIjogMzQuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0xNTUuNzkyLCBcInlcIjogMjUuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0xOCwgXCJ5XCI6IDI2LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC0xOTYsIFwieVwiOiA5NiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02MiwgXCJ5XCI6IDE2MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiA5NS4yMDgsIFwieVwiOiAxNTguNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zMy43OTIsIFwieVwiOiAyOS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTE4LCBcInlcIjogMjYsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTc4LCBcInlcIjogMTcwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY4LCBcInlcIjogMTYwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNS43OTIsIFwieVwiOiAxNTYuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zNS43OTIsIFwieVwiOiAyNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTI1LCBcInlcIjogNDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTgyLCBcInlcIjogMTcwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IC0yLCBcInlcIjogMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF07XHJcbiAgICAgIC8vIHRoaXMuUFJPUF9JTkZPID0gW3tcInBvczFcIjoge1wieFwiOiAtNjAsXCJ5XCI6IDYwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMTYuNDQyLFwieVwiOiAzMCxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM0LjM2MixcInlcIjogMTMuMjQ2LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTcsXCJ5XCI6IDEyLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xMjYsXCJ5XCI6IDYzLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC05NC43OTIsXCJ5XCI6IDIxLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTIwLFwieVwiOiAxMyxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjAsXCJ5XCI6IDEyNSxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTEyLjc5MixcInlcIjogOTIuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzQuNzkyLFwieVwiOiAyMy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNCxcInlcIjogMjQsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4NSxcInlcIjogNjMsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0zNC43OTIsXCJ5XCI6IDM3LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTE1NC43OTIsXCJ5XCI6IDIzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTIyLFwieVwiOiAxNixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNTcsXCJ5XCI6IDE3OCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTE3Ljc5MixcInlcIjogMTY2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMzMuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTQsXCJ5XCI6IDM3LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xMjMsXCJ5XCI6IDEyNyxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogOTkuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtOTcuNzkyLFwieVwiOiAyNy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yNyxcInlcIjogMTksXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTYyLFwieVwiOiAxODEsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0yNC43OTIsXCJ5XCI6IDI3NS42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMS43OTIsXCJ5XCI6IDM1LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTcsXCJ5XCI6IDM5LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODEsXCJ5XCI6IDE4MCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMTYzLjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMzLjc5MixcInlcIjogMzQuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTgsXCJ5XCI6IDMwLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODIsXCJ5XCI6IDE4MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMzguNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTUzLjc5MixcInlcIjogMzQuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjMsXCJ5XCI6IDE0LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODYsXCJ5XCI6IDYxLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMzcuNzkyLFwieVwiOiAzNy42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zNi43OTIsXCJ5XCI6IDI2LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTI0LFwieVwiOiAxNyxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjIsXCJ5XCI6IDE3NyxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogOTMuMjA4LFwieVwiOiAyNzYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzMuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IDMsXCJ5XCI6IDMxLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IDU4LFwieVwiOiAxNzksXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDIwNS4yMjUsXCJ5XCI6IDE1NC4wMzQsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0yOS42NDIsXCJ5XCI6IDI1LjY5MSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogNy4yMTgsXCJ5XCI6IDI5Ljc2NSxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNTcsXCJ5XCI6IDE4MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMzcuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzUuNzkyLFwieVwiOiAzMy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNCxcInlcIjogMTIsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4MCxcInlcIjogNjIsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0zNS43OTIsXCJ5XCI6IDM2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTI3MS43OTIsXCJ5XCI6IDI0LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE3LFwieVwiOiAyMCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjIsXCJ5XCI6IDE3OCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogODcuMjA4LFwieVwiOiAxNjQuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAzNS42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC02LFwieVwiOiAyNCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTc2LFwieVwiOiA2MCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTMzLjc5MixcInlcIjogMzguNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTU0Ljc5MixcInlcIjogMjkuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjksXCJ5XCI6IDE2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogMTgxLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA5NS4yMDgsXCJ5XCI6IDE1NS42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMC43OTIsXCJ5XCI6IDM2LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTEyLFwieVwiOiAzMixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjMsXCJ5XCI6IDE3OCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTIxLjc5MixcInlcIjogMTU2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMzcuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDMyLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogMTgzLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA4OC4yMDgsXCJ5XCI6IDE2Mi42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0yOS43OTIsXCJ5XCI6IDQxLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTEyLFwieVwiOiAxOCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjQsXCJ5XCI6IDU4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjYuNzkyLFwieVwiOiAzMi42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zNC43OTIsXCJ5XCI6IDIzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTEyLFwieVwiOiAxOCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTg0LFwieVwiOiA2MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMzQuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTU1Ljc5MixcInlcIjogMjUuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTgsXCJ5XCI6IDI2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC01NyxcInlcIjogMTkwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA5NS4yMDgsXCJ5XCI6IDE1OC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMy43OTIsXCJ5XCI6IDI5LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE4LFwieVwiOiAyNixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNzEsXCJ5XCI6IDE4NCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMTU2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM1Ljc5MixcInlcIjogMjcuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjUsXCJ5XCI6IDQwLFwielwiOiAwfX1dO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgc3RhdGljIHNldENvZGUoY29kZSl7XHJcbiAgICAgICAgdGhpcy5HTV9JTkZPLnNjb2RlID0gY29kZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgc3RhdGljIGdldEtleShrZXkpe1xyXG4gICAgICAgIC8vIHZhciByZWcgPSBuZXcgUmVnRXhwKCcoXnwmKScgKyBrZXkgKyAnPShbXiZdKikoJnwkKScsICdpJyk7XHJcbiAgICAgICAgLy8gdmFyIHIgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5tYXRjaChyZWcpO1xyXG4gICAgICAgIC8vIGlmIChyICE9IG51bGwpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHVuZXNjYXBlKHJbMl0pO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhdGljIEF1dGhlbnRpY2F0aW9uKCl7XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuQXV0aGVudGljYXRpb24oKTtcclxuICAgIH1cclxufVxyXG5cclxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vU3ByaXRlLmpzIl0sIm5hbWVzIjpbIl9UbW9Bc3NlbWJsZXIiLCJyZXF1aXJlIiwiX2RlZmF1bHQiLCJjYyIsIkNsYXNzIiwiU3ByaXRlIiwic2V0VGV4dHVyZUlkeCIsImlkeCIsIl90ZXh0dXJlSWR4Iiwic2V0VmVydHNEaXJ0eSIsIl9nZXREZWZhdWx0TWF0ZXJpYWwiLCJfZ2V0VGlsZWRNYXAiLCJnZXRPYmplY3RNYXRlcmlhbCIsIl91cGRhdGVNYXRlcmlhbCIsIm1hdGVyaWFsIiwiZ2V0TWF0ZXJpYWwiLCJnZXREZWZpbmUiLCJ1bmRlZmluZWQiLCJkZWZpbmUiLCJ1cGRhdGVIYXNoIiwibm9Db2xvciIsImlzTm9Db2xvciIsIkJsZW5kRnVuYyIsInByb3RvdHlwZSIsImNhbGwiLCJfcmVzZXRBc3NlbWJsZXIiLCJhc3NlbWJsZXIiLCJfYXNzZW1ibGVyIiwiVG1vQXNzZW1ibGVyIiwiaW5pdCIsIl91cGRhdGVDb2xvciIsIm5vZGUiLCJfdGlsZWRNYXAiLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsYUFBQSxHQUFBQyxPQUFBO0FBQThDLElBQUFDLFFBQUEsR0FFL0JDLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ3BCLFdBQVNELEVBQUUsQ0FBQ0UsTUFBTTtFQUVsQjtBQUNKO0FBQ0E7RUFDSUMsYUFBYSxXQUFBQSxjQUFDQyxHQUFHLEVBQUU7SUFDZixJQUFJLENBQUNDLFdBQVcsR0FBR0QsR0FBRztJQUN0QixJQUFJLENBQUNFLGFBQWEsRUFBRTtFQUN4QixDQUFDO0VBRURDLG1CQUFtQixXQUFBQSxvQkFBQSxFQUFHO0lBQ2xCO0lBQ0EsT0FBTyxJQUFJLENBQUNDLFlBQVksRUFBRSxDQUFDQyxpQkFBaUIsRUFBRTtFQUNsRCxDQUFDO0VBRURDLGVBQWUsV0FBQUEsZ0JBQUEsRUFBRztJQUNkO0lBQ0EsSUFBSUMsUUFBUSxHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJRCxRQUFRLEVBQUU7TUFDVixJQUFJQSxRQUFRLENBQUNFLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBS0MsU0FBUyxFQUFFO1FBQ2pESCxRQUFRLENBQUNJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDO01BQ3hDO01BQ0E7TUFDQUosUUFBUSxDQUFDSyxVQUFVLENBQUMsTUFBTSxDQUFDOztNQUUzQjtNQUNBLElBQUlDLE9BQU8sR0FBRyxJQUFJLENBQUNDLFNBQVMsRUFBRTtNQUM5QlAsUUFBUSxDQUFDSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUNFLE9BQU8sQ0FBQztJQUMzQztJQUVBakIsRUFBRSxDQUFDbUIsU0FBUyxDQUFDQyxTQUFTLENBQUNWLGVBQWUsQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQztFQUNyRCxDQUFDO0VBRURDLGVBQWUsV0FBQUEsZ0JBQUEsRUFBRztJQUNkO0lBQ0EsSUFBSUMsU0FBUyxHQUFHLElBQUksQ0FBQ0MsVUFBVSxHQUFHLElBQUlDLDBCQUFZLEVBQUU7SUFDcERGLFNBQVMsQ0FBQ0csSUFBSSxDQUFDLElBQUksQ0FBQztJQUVwQixJQUFJLENBQUNDLFlBQVksRUFBRTtJQUNuQixJQUFJLENBQUNyQixhQUFhLEVBQUU7RUFDeEIsQ0FBQztFQUVERSxZQUFZLFdBQUFBLGFBQUEsRUFBRztJQUNYLE9BQU8sSUFBSSxDQUFDb0IsSUFBSSxDQUFDQyxTQUFTO0VBQzlCLENBQUM7RUFFRFgsU0FBUyxXQUFBQSxVQUFBLEVBQUc7SUFDUixPQUFPLElBQUksQ0FBQ1YsWUFBWSxFQUFFLENBQUNVLFNBQVMsRUFBRTtFQUMxQztBQUNKLENBQUMsQ0FBQztBQUFBWSxPQUFBLGNBQUEvQixRQUFBO0FBQUFnQyxNQUFBLENBQUFELE9BQUEsR0FBQUEsT0FBQSIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG1vQXNzZW1ibGVyIH0gZnJvbSBcIi4vVG1vQXNzZW1ibGVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBjYy5TcHJpdGUsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva5UZXh0dXJlSW5kZXhcclxuICAgICAqL1xyXG4gICAgc2V0VGV4dHVyZUlkeChpZHgpIHtcclxuICAgICAgICB0aGlzLl90ZXh0dXJlSWR4ID0gaWR4XHJcbiAgICAgICAgdGhpcy5zZXRWZXJ0c0RpcnR5KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9nZXREZWZhdWx0TWF0ZXJpYWwoKSB7XHJcbiAgICAgICAgLy8g5LuOVGlsZWRNYXDlj5blvpfpu5jorqTnmoTmnZDotKhcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGlsZWRNYXAoKS5nZXRPYmplY3RNYXRlcmlhbCgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfdXBkYXRlTWF0ZXJpYWwoKSB7XHJcbiAgICAgICAgLy8gbWFrZSBzdXJlIG1hdGVyaWFsIGlzIGJlbG9uZyB0byBzZWxmLlxyXG4gICAgICAgIGxldCBtYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwoMCk7XHJcbiAgICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXRlcmlhbC5nZXREZWZpbmUoJ1VTRV9URVhUVVJFJykgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwuZGVmaW5lKCdVU0VfVEVYVFVSRScsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOaJi+WKqOiuvue9ruWTiOW4jOWAvO+8jOmBv+WFjeaXoOazleWQiOaJuVxyXG4gICAgICAgICAgICBtYXRlcmlhbC51cGRhdGVIYXNoKDk5OTk5OSk7XHJcblxyXG4gICAgICAgICAgICAvLyDlop7liqBXSVRIX0NPTE9S5a6P5a6a5LmJXHJcbiAgICAgICAgICAgIGxldCBub0NvbG9yID0gdGhpcy5pc05vQ29sb3IoKTtcclxuICAgICAgICAgICAgbWF0ZXJpYWwuZGVmaW5lKCdXSVRIX0NPTE9SJywgIW5vQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2MuQmxlbmRGdW5jLnByb3RvdHlwZS5fdXBkYXRlTWF0ZXJpYWwuY2FsbCh0aGlzKTtcclxuICAgIH0sXHJcblxyXG4gICAgX3Jlc2V0QXNzZW1ibGVyKCkge1xyXG4gICAgICAgIC8vIOS/ruaUuem7mOiupEFzc2VtYmxlclxyXG4gICAgICAgIGxldCBhc3NlbWJsZXIgPSB0aGlzLl9hc3NlbWJsZXIgPSBuZXcgVG1vQXNzZW1ibGVyKCk7XHJcbiAgICAgICAgYXNzZW1ibGVyLmluaXQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbG9yKCk7XHJcbiAgICAgICAgdGhpcy5zZXRWZXJ0c0RpcnR5KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9nZXRUaWxlZE1hcCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub2RlLl90aWxlZE1hcDtcclxuICAgIH0sXHJcblxyXG4gICAgaXNOb0NvbG9yKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRUaWxlZE1hcCgpLmlzTm9Db2xvcigpO1xyXG4gICAgfVxyXG59KTtcclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -6351,7 +529,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/MapBlock.js'; + var __filename = 'preview-scripts/assets/shop/script/item.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -6359,76 +537,66 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '52958xsurVAp54WMo+xFDo6', 'MapBlock'); -// Script/MapBlock.ts +cc._RF.push(module, 'de906iE/HVHpI6VO7IMvKaI', 'item'); +// shop/script/item.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.block_Id = ''; - // LIFE-CYCLE CALLBACKS: - _this.posX = 0; //地图块的X坐标 - _this.posY = 0; //地图块的Y坐标 - _this.direction = ""; //地图块的方向 - return _this; - // update (dt) {} - } - // onLoad () {} - NewClass.prototype.start = function () { - this.direction = ""; - this.block_Id = ""; - // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; - }; - NewClass.prototype.setDiraction = function (direction) { - this.direction = direction; - // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; - }; - NewClass.prototype.init = function (posX, posY) { - this.posX = posX; - this.posY = posY; - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "label", void 0); - __decorate([ - property - ], NewClass.prototype, "block_Id", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.text = 'hello'; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + // onLoad () {} + NewClass.prototype.start = function () { + }; + //购买商品道具 + NewClass.prototype.buyProp = function (propName) { + // if(cc.fx.GameConfig.GM_INFO.coin < 1500){ + // MiniGameSdk.API.showToast("金币不足,无法购买道具"); + // return; + // } + // let propWindow = this.node.parent.parent.getChildByName("propWindow"); + // propWindow.active = false; + // cc.fx.GameConfig.GM_INFO.coin -= 1500; + }; + __decorate([ + property(cc.Label) + ], NewClass.prototype, "label", void 0); + __decorate([ + property + ], NewClass.prototype, "text", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -6441,13 +609,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxNYXBCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQWdDQztRQTdCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLGNBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsd0JBQXdCO1FBRXhCLFVBQUksR0FBVyxDQUFDLENBQUMsQ0FBZSxTQUFTO1FBQ3pDLFVBQUksR0FBVyxDQUFDLENBQUMsQ0FBZSxTQUFTO1FBQ3pDLGVBQVMsR0FBVyxFQUFFLENBQUMsQ0FBVSxRQUFROztRQW1CekMsaUJBQWlCO0lBQ3JCLENBQUM7SUFuQkcsZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixrRkFBa0Y7SUFDdEYsQ0FBQztJQUVELCtCQUFZLEdBQVosVUFBYSxTQUFTO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLGtGQUFrRjtJQUN0RixDQUFDO0lBRUQsdUJBQUksR0FBSixVQUFLLElBQUksRUFBQyxJQUFJO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQTFCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTs4Q0FDYTtJQU5MLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FnQzVCO0lBQUQsZUFBQztDQWhDRCxBQWdDQyxDQWhDcUMsRUFBRSxDQUFDLFNBQVMsR0FnQ2pEO2tCQWhDb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5XHJcbiAgICBibG9ja19JZDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgcG9zWDogbnVtYmVyID0gMDsgICAgICAgICAgICAgICAvL+WcsOWbvuWdl+eahFjlnZDmoIdcclxuICAgIHBvc1k6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRZ5Z2Q5qCHXHJcbiAgICBkaXJlY3Rpb246IHN0cmluZyA9IFwiXCI7ICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qE5pa55ZCRXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuYmxvY2tfSWQgPSBcIlwiO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpcmFjdGlvbihkaXJlY3Rpb24pe1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uOyAgIFxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQocG9zWCxwb3NZKXtcclxuICAgICAgICB0aGlzLnBvc1ggPSBwb3NYO1xyXG4gICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxpdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBMkJDO1FBeEJHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQzs7UUFvQnZCLGlCQUFpQjtJQUNyQixDQUFDO0lBcEJHLHdCQUF3QjtJQUV4QixlQUFlO0lBRWYsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCxRQUFRO0lBQ1IsMEJBQU8sR0FBUCxVQUFRLFFBQVE7UUFDWiw0Q0FBNEM7UUFDNUMsZ0RBQWdEO1FBQ2hELGNBQWM7UUFDZCxJQUFJO1FBQ0oseUVBQXlFO1FBQ3pFLDZCQUE2QjtRQUM3Qix5Q0FBeUM7SUFDN0MsQ0FBQztJQXJCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyQjVCO0lBQUQsZUFBQztDQTNCRCxBQTJCQyxDQTNCcUMsRUFBRSxDQUFDLFNBQVMsR0EyQmpEO2tCQTNCb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5ld0NsYXNzIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIC8vIG9uTG9hZCAoKSB7fVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+i0reS5sOWVhuWTgemBk+WFt1xyXG4gICAgYnV5UHJvcChwcm9wTmFtZSkge1xyXG4gICAgICAgIC8vIGlmKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luIDwgMTUwMCl7XHJcbiAgICAgICAgLy8gICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoXCLph5HluIHkuI3otrPvvIzml6Dms5XotK3kubDpgZPlhbdcIik7XHJcbiAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gbGV0IHByb3BXaW5kb3cgPSB0aGlzLm5vZGUucGFyZW50LnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgLy8gcHJvcFdpbmRvdy5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiAtPSAxNTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/NumberToImage.js'; + var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -6455,150 +623,28 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '669f4SuSl9ORqawBcbwCNpG', 'NumberToImage'); -// Script/NumberToImage.ts +cc._RF.push(module, 'c9ad1iUTB1PyqJ3cmtMGJ31', 'use_v2.1-2.2.1_cc.Toggle_event_1'); +// migration/use_v2.1-2.2.1_cc.Toggle_event_1.js -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NumberToImage = /** @class */ (function (_super) { - __extends(NumberToImage, _super); - function NumberToImage() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.fontUI = null; - return _this; - // static calculateAndConvert(num1: number, num2: number, operator: '+' | '-' | '*' | '/', spriteFrames: SpriteFrame[]): Node[] { - // let result: number; - // switch (operator) { - // case '+': - // result = num1 + num2; - // break; - // case '-': - // result = num1 - num2; - // break; - // case '*': - // result = num1 * num2; - // break; - // case '/': - // result = num1 / num2; - // break; - // default: - // throw new Error('不支持的运算符'); - // } - // // 处理结果为小数的情况,这里简单取整 - // result = Math.floor(result); - // return this.numberToImageNodes(result, spriteFrames); - // } - // update (dt) {} - } - NumberToImage_1 = NumberToImage; - // LIFE-CYCLE CALLBACKS: - NumberToImage.prototype.onLoad = function () { - if (this.fontUI != null) { - NumberToImage_1.font = this.fontUI; - } - }; - //第一个参数 数字, 第二个参数 数字间距 第三个参数 占位宽度 第四个参数 目标节点 - NumberToImage.numberToImageNodes = function (number, width, posX, name, targetNode, middle) { - if (middle === void 0) { middle = false; } - var numStr = number.toString(); - var cha = 0; - if (number > 99) - cha = -posX; - else if (number < 10) - cha = posX; - if (targetNode.children.length > 0) - targetNode.removeAllChildren(); - for (var i = 0; i < numStr.length; i++) { - var digit = parseInt(numStr[i], 10); - var node = new cc.Node(); - var sprite = node.addComponent(cc.Sprite); - // debugger; - sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; - // 将节点添加到目标节点下 - node.x = i * width + cha; - node.parent = targetNode; - } - if (middle) { - targetNode.x = targetNode.x - targetNode.children.length * (width - 15) / 2; - } - }; - NumberToImage.getTimeMargin = function (number, width, name, targetNode) { - var timeArr = []; - var total = 0; - total = number; - var hour = 0; - hour = parseInt((total / 3600) + ""); //计算整数小时数 - var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数 - var min = parseInt((afterHour / 60) + ""); //计算整数分 - var m = "" + min; - if (min < 10) - m = "0" + min; - var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数 - var miao = afterMin + ""; - if (afterMin < 10) - miao = "0" + afterMin; - var result = m + miao; - for (var i = 0; i < result.length; i++) { - var digit = parseInt(result[i], 10); - timeArr.push(digit); - } - if (targetNode.children.length > 0) { - for (var i = 0; i < targetNode.children.length; i++) { - targetNode.children[i].getComponent(cc.Sprite).spriteFrame = this.font._spriteFrames[name + timeArr[i] + ""]; - } - } - else { - for (var i = 0; i < 4; i++) { - var node = new cc.Node(); - var sprite = node.addComponent(cc.Sprite); - var digit = timeArr[i]; - // debugger; - sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; - // 将节点添加到目标节点下 - node.x = i * width; - if (i > 1) - node.x += 35; - node.parent = targetNode; - } - } - }; - var NumberToImage_1; - NumberToImage.font = null; - __decorate([ - property(cc.SpriteAtlas) - ], NumberToImage.prototype, "fontUI", void 0); - NumberToImage = NumberToImage_1 = __decorate([ - ccclass - ], NumberToImage); - return NumberToImage; -}(cc.Component)); -exports.default = NumberToImage; +"use strict"; + +/* + * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. + * You do not need to manually add this script in any other project. + * If you don't use cc.Toggle in your project, you can delete this script directly. + * If your project is hosted in VCS such as git, submit this script together. + * + * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, + * 你无需在任何其它项目中手动添加此脚本。 + * 如果你的项目中没用到 Toggle,可直接删除该脚本。 + * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 + */ + +if (cc.Toggle) { + // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code + // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 + cc.Toggle._triggerEventInScript_isChecked = true; +} cc._RF.pop(); } @@ -6611,13 +657,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxOdW1iZXJUb0ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQTJDLGlDQUFZO0lBQXZEO1FBQUEscUVBeUdDO1FBdEdHLFlBQU0sR0FBbUIsSUFBSSxDQUFDOztRQTZFOUIsaUlBQWlJO1FBQ2pJLDBCQUEwQjtRQUMxQiwwQkFBMEI7UUFDMUIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsbUJBQW1CO1FBQ25CLDBDQUEwQztRQUMxQyxRQUFRO1FBRVIsMkJBQTJCO1FBQzNCLG1DQUFtQztRQUNuQyw0REFBNEQ7UUFDNUQsSUFBSTtRQUVKLGlCQUFpQjtJQUNyQixDQUFDO3NCQXpHb0IsYUFBYTtJQU05Qix3QkFBd0I7SUFFeEIsOEJBQU0sR0FBTjtRQUNJLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUM7WUFDbkIsZUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELGdEQUFnRDtJQUN6QyxnQ0FBa0IsR0FBekIsVUFBMEIsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQWtCLEVBQUMsTUFBc0I7UUFBdEIsdUJBQUEsRUFBQSxjQUFzQjtRQUMx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Q0FBQztJQUZ2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO2lEQUNLO0lBSGIsYUFBYTtRQURqQyxPQUFPO09BQ2EsYUFBYSxDQXlHakM7SUFBRCxvQkFBQztDQXpHRCxBQXlHQyxDQXpHMEMsRUFBRSxDQUFDLFNBQVMsR0F5R3REO2tCQXpHb0IsYUFBYSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVyVG9JbWFnZSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZUF0bGFzKVxyXG4gICAgZm9udFVJOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcblxyXG4gICAgc3RhdGljIGZvbnQ6YW55ID0gbnVsbDtcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgaWYodGhpcy5mb250VUkgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIE51bWJlclRvSW1hZ2UuZm9udCA9IHRoaXMuZm9udFVJO1xyXG4gICAgICAgIH0gXHJcbiAgICB9XHJcblxyXG4gICAgLy/nrKzkuIDkuKrlj4LmlbAgIOaVsOWtl++8jCDnrKzkuozkuKrlj4LmlbAgIOaVsOWtl+mXtOi3nSAg56ys5LiJ5Liq5Y+C5pWwIOWNoOS9jeWuveW6piAg56ys5Zub5Liq5Y+C5pWwIOebruagh+iKgueCuVxyXG4gICAgc3RhdGljIG51bWJlclRvSW1hZ2VOb2RlcyhudW1iZXIsIHdpZHRoLCBwb3NYLCBuYW1lICx0YXJnZXROb2RlOmNjLk5vZGUsbWlkZGxlOmJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IG51bVN0ciA9IG51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgIGxldCBjaGEgPSAwOyBcclxuICAgICAgICBpZihudW1iZXIgPiA5OSkgY2hhICA9IC1wb3NYXHJcbiAgICAgICAgZWxzZSBpZihudW1iZXIgPCAxMCkgY2hhICA9IHBvc1hcclxuICAgICAgICBpZih0YXJnZXROb2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHRhcmdldE5vZGUucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkaWdpdCA9IHBhcnNlSW50KG51bVN0cltpXSwgMTApO1xyXG4gICAgICAgICAgICBjb25zdCBub2RlID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICAgICAgY29uc3Qgc3ByaXRlID0gbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgLy8gZGVidWdnZXI7XHJcbiAgICAgICAgICAgIHNwcml0ZS5zcHJpdGVGcmFtZSA9IHRoaXMuZm9udC5fc3ByaXRlRnJhbWVzW25hbWUgKyBkaWdpdCArIFwiXCJdO1xyXG4gICAgICAgICAgICAvLyDlsIboioLngrnmt7vliqDliLDnm67moIfoioLngrnkuItcclxuICAgICAgICAgICAgbm9kZS54ID0gaSAqIHdpZHRoICsgY2hhO1xyXG4gICAgICAgICAgICBub2RlLnBhcmVudCA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG1pZGRsZSl7XHJcbiAgICAgICAgICAgIHRhcmdldE5vZGUueCA9IHRhcmdldE5vZGUueCAtIHRhcmdldE5vZGUuY2hpbGRyZW4ubGVuZ3RoICogKHdpZHRoLTE1KSAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUaW1lTWFyZ2luKG51bWJlciwgd2lkdGgsIG5hbWUgLHRhcmdldE5vZGU6Y2MuTm9kZSkge1xyXG4gICAgICAgIGxldCB0aW1lQXJyID0gW107XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0b3RhbCA9IG51bWJlcjtcclxuICAgICAgICBsZXQgaG91ciA9IDA7XHJcbiAgICAgICAgaG91ciA9IHBhcnNlSW50KCh0b3RhbCAvIDM2MDApICsgXCJcIik7Ly/orqHnrpfmlbTmlbDlsI/ml7bmlbBcclxuICAgICAgICBsZXQgYWZ0ZXJIb3VyID0gdG90YWwgLSBob3VyICogNjAgKiA2MDsvL+WPluW+l+eul+WHuuWwj+aXtuaVsOWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaW4gPSBwYXJzZUludCgoYWZ0ZXJIb3VyIC8gNjApK1wiXCIpOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgbGV0IG0gPSBcIlwiICsgbWluOyAgXHJcblxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtID0gXCIwXCIrbWluO1xyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIlwiO1xyXG5cclxuICAgICAgICBpZihhZnRlck1pbiA8IDEwKSBtaWFvID0gXCIwXCIgKyBhZnRlck1pbjtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IG0gKyBtaWFvO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZ2l0ID0gcGFyc2VJbnQocmVzdWx0W2ldLCAxMCk7XHJcbiAgICAgICAgICAgIHRpbWVBcnIucHVzaChkaWdpdCk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGlmKHRhcmdldE5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0Tm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Tm9kZS5jaGlsZHJlbltpXS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuZm9udC5fc3ByaXRlRnJhbWVzW25hbWUgKyB0aW1lQXJyW2ldICsgXCJcIl07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBuZXcgY2MuTm9kZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ByaXRlID0gbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRpZ2l0ID0gdGltZUFycltpXTtcclxuICAgICAgICAgICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgc3ByaXRlLnNwcml0ZUZyYW1lID0gdGhpcy5mb250Ll9zcHJpdGVGcmFtZXNbbmFtZSArIGRpZ2l0ICsgXCJcIl07XHJcbiAgICAgICAgICAgICAgICAvLyDlsIboioLngrnmt7vliqDliLDnm67moIfoioLngrnkuItcclxuICAgICAgICAgICAgICAgIG5vZGUueCA9IGkgKiB3aWR0aDtcclxuICAgICAgICAgICAgICAgIGlmKGkgPiAxKSBub2RlLnggKz0gMzU7XHJcbiAgICAgICAgICAgICAgICBub2RlLnBhcmVudCA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vIHN0YXRpYyBjYWxjdWxhdGVBbmRDb252ZXJ0KG51bTE6IG51bWJlciwgbnVtMjogbnVtYmVyLCBvcGVyYXRvcjogJysnIHwgJy0nIHwgJyonIHwgJy8nLCBzcHJpdGVGcmFtZXM6IFNwcml0ZUZyYW1lW10pOiBOb2RlW10ge1xyXG4gICAgLy8gICAgIGxldCByZXN1bHQ6IG51bWJlcjtcclxuICAgIC8vICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAvLyAgICAgICAgIGNhc2UgJysnOlxyXG4gICAgLy8gICAgICAgICAgICAgcmVzdWx0ID0gbnVtMSArIG51bTI7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgY2FzZSAnLSc6XHJcbiAgICAvLyAgICAgICAgICAgICByZXN1bHQgPSBudW0xIC0gbnVtMjtcclxuICAgIC8vICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgICBjYXNlICcqJzpcclxuICAgIC8vICAgICAgICAgICAgIHJlc3VsdCA9IG51bTEgKiBudW0yO1xyXG4gICAgLy8gICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgICAgIGNhc2UgJy8nOlxyXG4gICAgLy8gICAgICAgICAgICAgcmVzdWx0ID0gbnVtMSAvIG51bTI7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign5LiN5pSv5oyB55qE6L+Q566X56ymJyk7XHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICAvLyDlpITnkIbnu5PmnpzkuLrlsI/mlbDnmoTmg4XlhrXvvIzov5nph4znroDljZXlj5bmlbRcclxuICAgIC8vICAgICByZXN1bHQgPSBNYXRoLmZsb29yKHJlc3VsdCk7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMubnVtYmVyVG9JbWFnZU5vZGVzKHJlc3VsdCwgc3ByaXRlRnJhbWVzKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnRfMS5qcyJdLCJuYW1lcyI6WyJjYyIsIlRvZ2dsZSIsIl90cmlnZ2VyRXZlbnRJblNjcmlwdF9pc0NoZWNrZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJQSxFQUFFLENBQUNDLE1BQU0sRUFBRTtFQUNYO0VBQ0E7RUFDQUQsRUFBRSxDQUFDQyxNQUFNLENBQUNDLCtCQUErQixHQUFHLElBQUk7QUFDcEQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFRoaXMgc2NyaXB0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IENvY29zIENyZWF0b3IgYW5kIGlzIG9ubHkgdXNlZCBmb3IgcHJvamVjdHMgY29tcGF0aWJsZSB3aXRoIHRoZSB2Mi4xLjAg772eIDIuMi4xIHZlcnNpb24uXHJcbiAqIFlvdSBkbyBub3QgbmVlZCB0byBtYW51YWxseSBhZGQgdGhpcyBzY3JpcHQgaW4gYW55IG90aGVyIHByb2plY3QuXHJcbiAqIElmIHlvdSBkb24ndCB1c2UgY2MuVG9nZ2xlIGluIHlvdXIgcHJvamVjdCwgeW91IGNhbiBkZWxldGUgdGhpcyBzY3JpcHQgZGlyZWN0bHkuXHJcbiAqIElmIHlvdXIgcHJvamVjdCBpcyBob3N0ZWQgaW4gVkNTIHN1Y2ggYXMgZ2l0LCBzdWJtaXQgdGhpcyBzY3JpcHQgdG9nZXRoZXIuXHJcbiAqXHJcbiAqIOatpOiEmuacrOeUsSBDb2NvcyBDcmVhdG9yIOiHquWKqOeUn+aIkO+8jOS7heeUqOS6juWFvOWuuSB2Mi4xLjAgfiAyLjIuMSDniYjmnKznmoTlt6XnqIvvvIxcclxuICog5L2g5peg6ZyA5Zyo5Lu75L2V5YW25a6D6aG555uu5Lit5omL5Yqo5re75Yqg5q2k6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruS4reayoeeUqOWIsCBUb2dnbGXvvIzlj6/nm7TmjqXliKDpmaTor6XohJrmnKzjgIJcclxuICog5aaC5p6c5L2g55qE6aG555uu5pyJ5omY566h5LqOIGdpdCDnrYnniYjmnKzlupPvvIzor7flsIbmraTohJrmnKzkuIDlubbkuIrkvKDjgIJcclxuICovXHJcblxyXG5pZiAoY2MuVG9nZ2xlKSB7XHJcbiAgICAvLyBXaGV0aGVyIHRvIHRyaWdnZXIgJ3RvZ2dsZScgYW5kICdjaGVja0V2ZW50cycgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nICd0b2dnbGUuaXNDaGVja2VkJyBpbiB0aGUgY29kZVxyXG4gICAgLy8g5Zyo5Luj56CB5Lit5L+u5pS5ICd0b2dnbGUuaXNDaGVja2VkJyDml7bmmK/lkKbop6blj5EgJ3RvZ2dsZScg5LiOICdjaGVja0V2ZW50cycg5LqL5Lu2XHJcbiAgICBjYy5Ub2dnbGUuX3RyaWdnZXJFdmVudEluU2NyaXB0X2lzQ2hlY2tlZCA9IHRydWU7XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/SceneManager.js'; + var __filename = 'preview-scripts/assets/Script/prop/Lock.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -6625,311 +671,72 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '80998T1AYNNRZdRxsVvXR65', 'SceneManager'); -// Script/SceneManager.ts +cc._RF.push(module, '41cb8ugLSBH/5aNhnsJ5lX7', 'Lock'); +// Script/prop/Lock.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("./Map"); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var SceneManager = /** @class */ (function (_super) { - __extends(SceneManager, _super); - function SceneManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - _this.freeze = null; - _this.hammer = null; - _this.magic_wand = null; - _this.pause = null; - _this.Block_Array = []; - _this.Wall_Prefab = []; - // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) - // particleEffects : Array = []; - _this.load1 = false; - _this.load2 = false; - _this.load3 = false; - _this.btnName = ''; - return _this; - } - // LIFE-CYCLE CALLBACKS: - SceneManager.prototype.onLoad = function () { - cc.game.setFrameRate(63); - this.changeBg(); - setTimeout(function () { - cc.director.preloadScene("HomeScene", function (err) { - if (err) { - // console.error('预加载 HomeScene 场景失败:', err); - return; - } - // console.log('成功预加载 HomeScene 场景'); - }); - }, 1000); - }; - SceneManager.prototype.changeBg = function () { - var _this = this; - var number = Math.floor(Math.random() * 8) + 1; - var path = 'bg/bg' + number; - cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { - if (err) { - console.error('动态加载背景图失败:', err); - return; - } - _this.node.getChildByName("Game").getChildByName("bg").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }); - }; - SceneManager.prototype.loadParticleEffects = function () { - var _this = this; - var path = 'Particle'; - cc.resources.loadDir(path, cc.ParticleAsset, function (err, assets) { - if (err) { - console.error('动态加载粒子特效失败:', err); - return; - } - _this.particleEffects = assets; - _this.setParticleSort(); - _this.load3 = true; - //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效'); - }); - }; - SceneManager.prototype.setWallPrefabSort = function () { - var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; - this.Wall_Prefab.sort(function (a, b) { - var indexA = order.indexOf(a.name); - var indexB = order.indexOf(b.name); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - SceneManager.prototype.setParticleSort = function () { - var order = ['top', 'bot', 'rig', 'lef']; - this.particleEffects.sort(function (a, b) { - // console.log(a.name.substr(0,3),b.name.substr(0,3)); - var indexA = order.indexOf(a.name.substr(0, 3)); - var indexB = order.indexOf(b.name.substr(0, 3)); - if (indexA === -1) - return 1; - if (indexB === -1) - return -1; - return indexA - indexB; - }); - }; - SceneManager.prototype.setSort = function () { - this.Block_Array.sort(function (a, b) { - var _a, _b; - // 从名称中提取数字部分 - var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); - var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); - return numberA - numberB; - }); - }; - SceneManager.prototype.start = function () { - }; - SceneManager.prototype.startGame = function () { - cc.director.loadScene("HomeScene", function (err) { - if (err) { - console.error('加载 HomeScene 场景失败:', err); - } - else { - // console.log('成功切换到 HomeScene 场景'); - cc.director.loadScene("HomeScene"); - } - }); - }; - SceneManager.prototype.returnHome = function () { - if (this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl")._touch) { - if (Map_1.default._instance.gameStart == true) { - MiniGameSdk_1.MiniGameSdk.API.showToast("体力值减少"); - cc.fx.GameTool.setUserHealth(-1, function (data) { - }); - if (Map_1.default._instance.count_Time) { - var count_Time = Map_1.default._instance.count_Time; - var add_Time = Map_1.default._instance.add_Time; - var data = { - time: count_Time, - add_Time: add_Time, - result: "give_up" - }; - cc.fx.GameTool.shushu_Track("finish_stage", data); - } - } - this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl").setTouch(false); - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.getChildByName("zhuanchang").active = true; - this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - cc.director.preloadScene("HomeScene", function (err, asset) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - return; - } - }); - setTimeout(function () { - cc.director.loadScene("HomeScene"); - }, 1200); - } - }; - SceneManager.prototype.destroyNodesInFrames = function (nodes, callback) { - var _this = this; - var BATCH_SIZE = 10; // 每帧销毁的节点数量 - var index = 0; - var destroyBatch = function () { - var count = 0; - while (index < nodes.length && count < BATCH_SIZE) { - var node = nodes[index]; - if (node) { - node.active = false; - } - index++; - count++; - } - if (index < nodes.length) { - _this.scheduleOnce(destroyBatch, 6); - } - else { - callback(); - } - }; - destroyBatch(); - }; - // 改进后的切换场景方法 - SceneManager.prototype.switchToEmptyScene = function () { - var allNodes = cc.director.getScene().children; - this.destroyNodesInFrames(allNodes, function () { - cc.director.loadScene("HomeScene"); - }); - }; - SceneManager.prototype.openPause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - if (this.pause.getComponent("btnControl")._touch) { - this.pause.getComponent("btnControl").setTouch(false); - this.node.getChildByName("Pause").active = true; - Map_1.default._instance.pause = true; - } - }; - SceneManager.prototype.closePause = function () { - cc.fx.AudioManager._instance.playEffect("anniu_little", null); - this.pause.getComponent("btnControl").setTouch(true); - this.node.getChildByName("Pause").active = false; - if (Map_1.default._instance.node.parent.getChildByName("Ice").active == false) { - Map_1.default._instance.pause = false; - } - }; - SceneManager.prototype.openPropBuy = function (name) { - Map_1.default._instance.pause = true; - this.btnName = name; - var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); - propWindow.active = true; - propWindow.getChildByName("freeze").active = false; - propWindow.getChildByName("hammer").active = false; - propWindow.getChildByName("magic").active = false; - propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(true); - propWindow.getChildByName(name).active = true; - }; - SceneManager.prototype.clickBtn = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); - if (propWindow.getChildByName("buy_Btn").getComponent("btnControl")._touch) { - propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(false); - if (this.btnName == "freeze") - Map_1.default._instance.buyFreeze(); - else if (this.btnName == "hammer") - Map_1.default._instance.buyHammer(); - else if (this.btnName == "magic") - Map_1.default._instance.buyMagic(); - } - }; - //打开商店 - SceneManager.prototype.openShop = function () { - var _this = this; - // 加载 shop bundle - cc.assetManager.loadBundle('shop', function (err, bundle) { - bundle.load('prefab/shop', cc.Prefab, function (err, prefab) { - if (err) { - cc.error(err.message || err); - return; - } - if (prefab) { - var shopNode = cc.instantiate(prefab); - _this.node.addChild(shopNode); - console.log("shopNode parent:", shopNode.parent); - } - }); - }); - }; - SceneManager.prototype.closePropBuy = function () { - Map_1.default._instance.pause = false; - var freezeBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); - var hammerBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); - var magicBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); - if (this.btnName == "freeze") - freezeBtn.getComponent("btnControl").setTouch(true); - else if (this.btnName == "hammer") - hammerBtn.getComponent("btnControl").setTouch(true); - else if (this.btnName == "magic") - magicBtn.getComponent("btnControl").setTouch(true); - this.node.getChildByName("Game").getChildByName("propWindow").active = false; - }; - SceneManager.prototype.update = function (dt) { - }; - __decorate([ - property(cc.Label) - ], SceneManager.prototype, "label", void 0); - __decorate([ - property - ], SceneManager.prototype, "text", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "freeze", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "hammer", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "magic_wand", void 0); - __decorate([ - property(cc.Node) - ], SceneManager.prototype, "pause", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块数组" }) - ], SceneManager.prototype, "Block_Array", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "墙壁数组" }) - ], SceneManager.prototype, "Wall_Prefab", void 0); - SceneManager = __decorate([ - ccclass - ], SceneManager); - return SceneManager; -}(cc.Component)); -exports.default = SceneManager; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var NumberToImage_1 = require("../NumberToImage"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Lock = /** @class */ (function (_super) { + __extends(Lock, _super); + function Lock() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 0; + return _this; + // update (dt) {} + } + // mapInfo: number[][] = []; + Lock.prototype.onLoad = function () { + }; + Lock.prototype.start = function () { + }; + Lock.prototype.init = function (time) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); + }; + Lock.prototype.reduce = function () { + this.time -= 1; + NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); + if (this.time <= 0) { + this.node.parent.getComponent("Block").type = 0; + this.node.destroy(); + this.node.removeFromParent(); + } + }; + Lock = __decorate([ + ccclass + ], Lock); + return Lock; +}(cc.Component)); +exports.default = Lock; cc._RF.pop(); } @@ -6942,13 +749,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTY2VuZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkJBQWdDO0FBQ2hDLGlEQUFnRDtBQUUxQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUEwQyxnQ0FBWTtJQUF0RDtRQUFBLHFFQXVSQztRQXBSRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFHdkIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFJdEIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyx5REFBeUQ7UUFDekQsbURBQW1EO1FBRW5ELFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQU8sR0FBVyxFQUFFLENBQUM7O0lBcVB6QixDQUFDO0lBalBHLHdCQUF3QjtJQUV4Qiw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUc7Z0JBQ3RDLElBQUksR0FBRyxFQUFFO29CQUNMLDZDQUE2Qztv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NkJBQU0sR0FBTixVQUFPLEVBQUU7SUFFVCxDQUFDO0lBblJEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7K0NBQ0k7SUFHdkI7UUFEQyxRQUFROzhDQUNjO0lBR3ZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7Z0RBQ0s7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDSztJQUd2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO29EQUNTO0lBRzNCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7K0NBQ0k7SUFJdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO3FEQUNkO0lBR25DO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztxREFDZDtJQXpCbEIsWUFBWTtRQURoQyxPQUFPO09BQ2EsWUFBWSxDQXVSaEM7SUFBRCxtQkFBQztDQXZSRCxBQXVSQyxDQXZSeUMsRUFBRSxDQUFDLFNBQVMsR0F1UnJEO2tCQXZSb0IsWUFBWSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBNYXBDb25yb2xlciBmcm9tIFwiLi9NYXBcIjtcclxuaW1wb3J0IHsgTWluaUdhbWVTZGsgfSBmcm9tIFwiLi9TZGsvTWluaUdhbWVTZGtcIjtcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTY2VuZU1hbmFnZXIgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5XHJcbiAgICB0ZXh0OiBzdHJpbmcgPSAnaGVsbG8nO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgZnJlZXplOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGhhbW1lcjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtYWdpY193YW5kOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIHBhdXNlOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcblxyXG4gICAgQHByb3BlcnR5KHsgdHlwZTogW2NjLlByZWZhYl0sIHRvb2x0aXA6IFwi5pa55Z2X5pWw57uEXCIgfSlcclxuICAgIEJsb2NrX0FycmF5OiBBcnJheTxjYy5QcmVmYWI+ID0gW107XHJcblxyXG4gICAgQHByb3BlcnR5KHsgdHlwZTogW2NjLlByZWZhYl0sIHRvb2x0aXA6IFwi5aKZ5aOB5pWw57uEXCIgfSlcclxuICAgIFdhbGxfUHJlZmFiOiBBcnJheTxjYy5QcmVmYWI+ID0gW107XHJcblxyXG4gICAgcGFydGljbGVFZmZlY3RzOiBjYy5QYXJ0aWNsZUFzc2V0W107XHJcbiAgICAvLyBAcHJvcGVydHkoe3R5cGU6IFtjYy5QYXJ0aWNsZVN5c3RlbV0sIHRvb2x0aXA6XCLnspLlrZDmlbDnu4RcIn0pXHJcbiAgICAvLyBwYXJ0aWNsZUVmZmVjdHMgOiBBcnJheTxjYy5QYXJ0aWNsZVN5c3RlbT4gPSBbXTtcclxuXHJcbiAgICBsb2FkMTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBidG5OYW1lOiBzdHJpbmcgPSAnJztcclxuICAgIGNhbGxCYWNrOiBhbnk7XHJcblxyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICBjYy5nYW1lLnNldEZyYW1lUmF0ZSg2Myk7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VCZygpO1xyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIsIChlcnIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmVycm9yKCfpooTliqDovb0gSG9tZVNjZW5lIOWcuuaZr+Wksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfmiJDlip/pooTliqDovb0gSG9tZVNjZW5lIOWcuuaZrycpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LCAxMDAwKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlQmcoKSB7XHJcbiAgICAgICAgbGV0IG51bWJlciA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDgpICsgMTtcclxuICAgICAgICBjb25zdCBwYXRoID0gJ2JnL2JnJyArIG51bWJlcjtcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChwYXRoLCBjYy5TcHJpdGVGcmFtZSwgKGVyciwgc3ByaXRlRnJhbWU6IGNjLlNwcml0ZUZyYW1lKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veiDjOaZr+WbvuWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJiZ1wiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwcml0ZUZyYW1lO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgbG9hZFBhcnRpY2xlRWZmZWN0cygpIHtcclxuICAgICAgICBjb25zdCBwYXRoID0gJ1BhcnRpY2xlJztcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZERpcihwYXRoLCBjYy5QYXJ0aWNsZUFzc2V0LCAoZXJyLCBhc3NldHM6IGNjLlBhcnRpY2xlQXNzZXRbXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb3nspLlrZDnibnmlYjlpLHotKU6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5wYXJ0aWNsZUVmZmVjdHMgPSBhc3NldHM7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0UGFydGljbGVTb3J0KCk7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCfnspLlrZDnibnmlYjliqDovb3miJDlip/vvIzlhbHliqDovb3kuoYnLCB0aGlzLnBhcnRpY2xlRWZmZWN0cy5sZW5ndGgsICfkuKrnspLlrZDnibnmlYgnKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRXYWxsUHJlZmFiU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsnZG93bicsICdkb3duTGVmdCcsICdkb3duUmlnaHQnLCAnbGVmdCcsICdyaWdodCcsICd1cCcsICd1cExlZnQnLCAndXBSaWdodCddO1xyXG4gICAgICAgIHRoaXMuV2FsbF9QcmVmYWIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEEgPSBvcmRlci5pbmRleE9mKGEubmFtZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRQYXJ0aWNsZVNvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ3RvcCcsICdib3QnLCAncmlnJywgJ2xlZiddO1xyXG4gICAgICAgIHRoaXMucGFydGljbGVFZmZlY3RzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coYS5uYW1lLnN1YnN0cigwLDMpLGIubmFtZS5zdWJzdHIoMCwzKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lLnN1YnN0cigwLCAzKSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lLnN1YnN0cigwLCAzKSk7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEEgPT09IC0xKSByZXR1cm4gMTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QiA9PT0gLTEpIHJldHVybiAtMTtcclxuICAgICAgICAgICAgcmV0dXJuIGluZGV4QSAtIGluZGV4QjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRTb3J0KCkge1xyXG4gICAgICAgIHRoaXMuQmxvY2tfQXJyYXkuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyDku47lkI3np7DkuK3mj5Dlj5bmlbDlrZfpg6jliIZcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQSA9IHBhcnNlSW50KGEubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG51bWJlckIgPSBwYXJzZUludChiLm5hbWUubWF0Y2goL1xcZCsvKT8uWzBdIHx8ICcwJywgMTApO1xyXG4gICAgICAgICAgICByZXR1cm4gbnVtYmVyQSAtIG51bWJlckI7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0R2FtZSgpIHtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqDovb0gSG9tZVNjZW5lIOWcuuaZr+Wksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+aIkOWKn+WIh+aNouWIsCBIb21lU2NlbmUg5Zy65pmvJyk7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuSG9tZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJidG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpIHtcclxuICAgICAgICAgICAgaWYgKE1hcENvbnJvbGVyLl9pbnN0YW5jZS5nYW1lU3RhcnQgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIuS9k+WKm+WAvOWHj+WwkVwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoLTEsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgaWYgKE1hcENvbnJvbGVyLl9pbnN0YW5jZS5jb3VudF9UaW1lKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvdW50X1RpbWUgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuY291bnRfVGltZTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgYWRkX1RpbWUgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuYWRkX1RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IGNvdW50X1RpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9UaW1lOiBhZGRfVGltZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBcImdpdmVfdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJmaW5pc2hfc3RhZ2VcIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJidG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaChmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVyciwgYXNzZXQpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqjmgIHliqDovb0gUHJlZmFiIOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgfSwgMTIwMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBkZXN0cm95Tm9kZXNJbkZyYW1lcyhub2RlczogY2MuTm9kZVtdLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgIGNvbnN0IEJBVENIX1NJWkUgPSAxMDsgLy8g5q+P5bin6ZSA5q+B55qE6IqC54K55pWw6YePXHJcbiAgICAgICAgbGV0IGluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgY29uc3QgZGVzdHJveUJhdGNoID0gKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBub2Rlcy5sZW5ndGggJiYgY291bnQgPCBCQVRDSF9TSVpFKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gbm9kZXNbaW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGluZGV4Kys7XHJcbiAgICAgICAgICAgICAgICBjb3VudCsrO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoaW5kZXggPCBub2Rlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVPbmNlKGRlc3Ryb3lCYXRjaCwgNik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgZGVzdHJveUJhdGNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5pS56L+b5ZCO55qE5YiH5o2i5Zy65pmv5pa55rOVXHJcbiAgICBzd2l0Y2hUb0VtcHR5U2NlbmUoKSB7XHJcbiAgICAgICAgY29uc3QgYWxsTm9kZXMgPSBjYy5kaXJlY3Rvci5nZXRTY2VuZSgpLmNoaWxkcmVuO1xyXG4gICAgICAgIHRoaXMuZGVzdHJveU5vZGVzSW5GcmFtZXMoYWxsTm9kZXMsICgpID0+IHtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5QYXVzZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9saXR0bGVcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKHRoaXMucGF1c2UuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5fdG91Y2gpIHtcclxuICAgICAgICAgICAgdGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUGF1c2UoKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfbGl0dGxlXCIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMucGF1c2UuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBpZiAoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiSWNlXCIpLmFjdGl2ZSA9PSBmYWxzZSkge1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblByb3BCdXkobmFtZSkge1xyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5idG5OYW1lID0gbmFtZTtcclxuICAgICAgICBsZXQgcHJvcFdpbmRvdyA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpO1xyXG4gICAgICAgIHByb3BXaW5kb3cuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwiZnJlZXplXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJoYW1tZXJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcIm1hZ2ljXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShuYW1lKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrQnRuKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X0JpZ1wiLCBudWxsKTtcclxuICAgICAgICBsZXQgcHJvcFdpbmRvdyA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVcIikuZ2V0Q2hpbGRCeU5hbWUoXCJwcm9wV2luZG93XCIpO1xyXG4gICAgICAgIGlmIChwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwiYnV5X0J0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwiYnV5X0J0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImZyZWV6ZVwiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eUZyZWV6ZSgpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJoYW1tZXJcIilcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5idXlIYW1tZXIoKTtcclxuICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5idG5OYW1lID09IFwibWFnaWNcIilcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5idXlNYWdpYygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5omT5byA5ZWG5bqXXHJcbiAgICBvcGVuU2hvcCgpIHtcclxuICAgICAgICAvLyDliqDovb0gc2hvcCAgYnVuZGxlXHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRCdW5kbGUoJ3Nob3AnLCAoZXJyOiBFcnJvciwgYnVuZGxlOiBjYy5Bc3NldE1hbmFnZXIuQnVuZGxlKSA9PiB7XHJcbiAgICAgICAgICAgIGJ1bmRsZS5sb2FkKCdwcmVmYWIvc2hvcCcsIGNjLlByZWZhYiwgKGVycjogRXJyb3IsIHByZWZhYjogY2MuUHJlZmFiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocHJlZmFiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcE5vZGUgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5hZGRDaGlsZChzaG9wTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzaG9wTm9kZSBwYXJlbnQ6XCIsIHNob3BOb2RlLnBhcmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBjbG9zZVByb3BCdXkoKSB7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gZmFsc2U7XHJcbiAgICAgICAgbGV0IGZyZWV6ZUJ0biA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcInRpbWVCdG5cIik7XHJcbiAgICAgICAgbGV0IGhhbW1lckJ0biA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIkJvdHRvbVwiKS5nZXRDaGlsZEJ5TmFtZShcImRlc3Ryb3lCdG5cIik7XHJcbiAgICAgICAgbGV0IG1hZ2ljQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwibWFnaWNCdG5cIik7XHJcbiAgICAgICAgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImZyZWV6ZVwiKSBmcmVlemVCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJoYW1tZXJcIikgaGFtbWVyQnRuLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2godHJ1ZSk7XHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5idG5OYW1lID09IFwibWFnaWNcIikgbWFnaWNCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuXHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKGR0KSB7XHJcblxyXG4gICAgfVxyXG59XHJcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxMb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR2xGLGtEQUE2QztBQUV2QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQStCQztRQTdCRyxVQUFJLEdBQVcsQ0FBQyxDQUFDOztRQTRCakIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQkcsNEJBQTRCO0lBRTVCLHFCQUFNLEdBQU47SUFFQSxDQUFDO0lBRUQsb0JBQUssR0FBTDtJQUNBLENBQUM7SUFFRCxtQkFBSSxHQUFKLFVBQUssSUFBSTtRQUNMLElBQUcsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDL0MsdUJBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBHLENBQUM7SUFFRCxxQkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDZix1QkFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEcsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQTVCZ0IsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQStCeEI7SUFBRCxXQUFDO0NBL0JELEFBK0JDLENBL0JpQyxFQUFFLENBQUMsU0FBUyxHQStCN0M7a0JBL0JvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuaW1wb3J0IE51bWJlclRvSW1hZ2UgZnJvbSBcIi4uL051bWJlclRvSW1hZ2VcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLy8gbWFwSW5mbzogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lKXtcclxuICAgICAgICBpZih0aW1lKSB0aGlzLnRpbWUgPSB0aW1lO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsMjAsOCxcImxvY2tfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlZHVjZSgpe1xyXG4gICAgICAgIHRoaXMudGltZSAtPSAxO1xyXG4gICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSwyMCw4LFwibG9ja19cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICBpZih0aGlzLnRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/NewMode.js'; + var __filename = 'preview-scripts/assets/Script/Sdk/DouyinEntranceView.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -6956,97 +763,61 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '7fe14dRFQZKSKKAoEn4S7OU', 'NewMode'); -// Script/NewMode.ts +cc._RF.push(module, '8a024+q5K9MrpxcaTvucSDB', 'DouyinEntranceView'); +// Script/Sdk/DouyinEntranceView.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.label = null; - _this.text = 'hello'; - _this.btnStatic = 0; - _this.propName = ""; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - NewClass.prototype.start = function () { - var _this = this; - for (var i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) { - if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) { - this.propName = cc.fx.GameConfig.NEW_LEVEL[i].name; - var path = 'Window_Prop/' + this.propName; - cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { - if (err) { - console.error('动态加载背景图失败:', err); - return; - } - _this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }); - break; - } - } - }; - NewClass.prototype.setMode = function (mode) { - this.btnStatic = mode; - var name = "GameScene"; - if (mode == 1) { - name = "HomeScene"; - } - cc.director.preloadScene(name, function () { - }); - }; - NewClass.prototype.clickBtn = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (this.btnStatic == 1) { - cc.director.loadScene("HomeScene"); - } - else if (this.btnStatic == 2) { - cc.director.loadScene("GameScene"); - } - }; - __decorate([ - property(cc.Label) - ], NewClass.prototype, "label", void 0); - __decorate([ - property - ], NewClass.prototype, "text", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DouyinEntranceView = void 0; +var MiniGameSdk_1 = require("./MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var DouyinEntranceView = /** @class */ (function (_super) { + __extends(DouyinEntranceView, _super); + function DouyinEntranceView() { + return _super !== null && _super.apply(this, arguments) || this; + } + DouyinEntranceView.prototype.start = function () { + }; + DouyinEntranceView.prototype.update = function (deltaTime) { + }; + DouyinEntranceView.prototype.onCloseClick = function () { + this.node.active = false; + }; + DouyinEntranceView.prototype.onNavigateToDouyinClick = function () { + MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.navigateToSidebar(function (success) { + if (success) { + console.log('跳转成功'); + } + else { + console.log('跳转失败'); + } + }); + }; + DouyinEntranceView = __decorate([ + ccclass + ], DouyinEntranceView); + return DouyinEntranceView; +}(cc.Component)); +exports.DouyinEntranceView = DouyinEntranceView; cc._RF.pop(); } @@ -7059,7 +830,3596 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxOZXdNb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBdURDO1FBcERHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQztRQUV2QixlQUFTLEdBQVcsQ0FBQyxDQUFDO1FBRXRCLGNBQVEsR0FBVyxFQUFFLENBQUM7O1FBNEN0QixpQkFBaUI7SUFDckIsQ0FBQztJQTNDRyx3QkFBd0I7SUFFeEIsZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFBQSxpQkFlQztRQWRHLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQ2xELElBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUM7Z0JBQ3pFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkQsSUFBTSxJQUFJLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQzVDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQUMsR0FBRyxFQUFFLFdBQTJCO29CQUNyRSxJQUFJLEdBQUcsRUFBRTt3QkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDakMsT0FBTztxQkFDVjtvQkFDRCxLQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Z0JBQ3ZGLENBQUMsQ0FBQyxDQUFBO2dCQUNGLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVELDBCQUFPLEdBQVAsVUFBUSxJQUFXO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDO1FBQ3ZCLElBQUcsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNULElBQUksR0FBRyxXQUFXLENBQUM7U0FDdEI7UUFDRCxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUU7UUFFL0IsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsMkJBQVEsR0FBUjtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUM7WUFDbkIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEM7YUFDSSxJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFDO1lBQ3hCLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQWpERDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0F1RDVCO0lBQUQsZUFBQztDQXZERCxBQXVEQyxDQXZEcUMsRUFBRSxDQUFDLFNBQVMsR0F1RGpEO2tCQXZEb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5XHJcbiAgICB0ZXh0OiBzdHJpbmcgPSAnaGVsbG8nO1xyXG5cclxuICAgIGJ0blN0YXRpYzogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwcm9wTmFtZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8Y2MuZnguR2FtZUNvbmZpZy5ORVdfTEVWRUwubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZigoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpID09IGNjLmZ4LkdhbWVDb25maWcuTkVXX0xFVkVMW2ldLmxldmVsKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcE5hbWUgPSBjYy5meC5HYW1lQ29uZmlnLk5FV19MRVZFTFtpXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9ICdXaW5kb3dfUHJvcC8nICsgdGhpcy5wcm9wTmFtZTtcclxuICAgICAgICAgICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHBhdGgsIGNjLlNwcml0ZUZyYW1lLCAoZXJyLCBzcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veiDjOaZr+WbvuWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TW9kZShtb2RlOm51bWJlcil7XHJcbiAgICAgICAgdGhpcy5idG5TdGF0aWMgPSBtb2RlO1xyXG4gICAgICAgIGxldCBuYW1lID0gXCJHYW1lU2NlbmVcIjtcclxuICAgICAgICBpZihtb2RlID09IDEpe1xyXG4gICAgICAgICAgICBuYW1lID0gXCJIb21lU2NlbmVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKG5hbWUsICgpPT57XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tCdG4oKXtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIixudWxsKTtcclxuICAgICAgICBpZih0aGlzLmJ0blN0YXRpYyA9PSAxKXtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuYnRuU3RhdGljID09IDIpeyBcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXERvdXlpbkVudHJhbmNlVmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQTRDO0FBQ3RDLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBSTVDO0lBQXdDLHNDQUFZO0lBQXBEOztJQXVCQSxDQUFDO0lBdEJHLGtDQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsbUNBQU0sR0FBTixVQUFPLFNBQWlCO0lBRXhCLENBQUM7SUFFRCx5Q0FBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxvREFBdUIsR0FBdkI7UUFFSSx5QkFBVyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFVBQUMsT0FBZ0I7WUFDNUQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2QjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBdEJRLGtCQUFrQjtRQUQ5QixPQUFPO09BQ0ssa0JBQWtCLENBdUI5QjtJQUFELHlCQUFDO0NBdkJELEFBdUJDLENBdkJ1QyxFQUFFLENBQUMsU0FBUyxHQXVCbkQ7QUF2QlksZ0RBQWtCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluaUdhbWVTZGsgfSBmcm9tIFwiLi9NaW5pR2FtZVNka1wiO1xyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBjbGFzcyBEb3V5aW5FbnRyYW5jZVZpZXcgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhcnQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShkZWx0YVRpbWU6IG51bWJlcikge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkNsb3NlQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTmF2aWdhdGVUb0RvdXlpbkNsaWNrKCkge1xyXG5cclxuICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLm5hdmlnYXRlVG9TaWRlYmFyKChzdWNjZXNzOiBib29sZWFuKSA9PiB7IC8vIOi3s+i9rOWIsOaKlumfs+S+p+i+ueagj1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOaIkOWKnycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOWksei0pScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/effect/融化.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '341aezWi/BCGa2q28VO8ioy', '融化'); +// effect/融化.ts + +"use strict"; +// IceMelt.ts +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IceMelt = void 0; +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var IceMelt = /** @class */ (function (_super) { + __extends(IceMelt, _super); + function IceMelt() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.speed = 1; + //是否融化 + _this._isMelt = false; + _this._time = 0; + return _this; + } + IceMelt.prototype.start = function () { + this._material = this.node.getComponent(cc.Sprite).getMaterial(0); + }; + IceMelt.prototype.update = function (dt) { + if (this._material && this._isMelt) { + this._material.setProperty('u_time', this._time); + this._time += dt * this.speed; + } + }; + //开始融化 + IceMelt.prototype.startMelt = function () { + this._isMelt = true; + this._time = 0; + }; + IceMelt = __decorate([ + ccclass() + ], IceMelt); + return IceMelt; +}(cc.Component)); +exports.IceMelt = IceMelt; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcZWZmZWN0XFzono3ljJYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJUCxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUE2QiwyQkFBWTtJQUF6QztRQUFBLHFFQXlCQztRQXZCRyxXQUFLLEdBQVcsQ0FBQyxDQUFDO1FBRWxCLE1BQU07UUFDRSxhQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLFdBQUssR0FBVyxDQUFDLENBQUM7O0lBbUI5QixDQUFDO0lBaEJHLHVCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELHdCQUFNLEdBQU4sVUFBTyxFQUFFO1FBQ0wsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ2pDO0lBQ0wsQ0FBQztJQUVELE1BQU07SUFDTiwyQkFBUyxHQUFUO1FBQ0ksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQXhCUSxPQUFPO1FBRG5CLE9BQU8sRUFBRTtPQUNHLE9BQU8sQ0F5Qm5CO0lBQUQsY0FBQztDQXpCRCxBQXlCQyxDQXpCNEIsRUFBRSxDQUFDLFNBQVMsR0F5QnhDO0FBekJZLDBCQUFPIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSWNlTWVsdC50c1xyXG5cclxuXHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3MoKVxyXG5leHBvcnQgY2xhc3MgSWNlTWVsdCBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgc3BlZWQ6IG51bWJlciA9IDE7XHJcblxyXG4gICAgLy/mmK/lkKbono3ljJZcclxuICAgIHByaXZhdGUgX2lzTWVsdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBfdGltZTogbnVtYmVyID0gMDtcclxuICAgIHByaXZhdGUgX21hdGVyaWFsOiBjYy5NYXRlcmlhbFZhcmlhbnQ7XHJcblxyXG4gICAgc3RhcnQoKSB7XHJcbiAgICAgICAgdGhpcy5fbWF0ZXJpYWwgPSB0aGlzLm5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuZ2V0TWF0ZXJpYWwoMCk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKGR0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX21hdGVyaWFsICYmIHRoaXMuX2lzTWVsdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9tYXRlcmlhbC5zZXRQcm9wZXJ0eSgndV90aW1lJywgdGhpcy5fdGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMuX3RpbWUgKz0gZHQgKiB0aGlzLnNwZWVkO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+iejeWMllxyXG4gICAgc3RhcnRNZWx0KCkge1xyXG4gICAgICAgIHRoaXMuX2lzTWVsdCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fdGltZSA9IDA7XHJcbiAgICB9XHJcbn0iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_game_util.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '63c53CB9dhL/phFOPtTeuF7', 'lq_game_util'); +// Script/lq_base/util/lq_game_util.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQGameUtil = void 0; +var director = cc.director; +var tween = cc.tween; +var visibleRect = cc.visibleRect; +var find = cc.find; +var LQGameUtil = /** @class */ (function () { + function LQGameUtil() { + } + LQGameUtil.get_image = function (url, callback, cache) { + if (cache === void 0) { cache = true; } + if (!url || url === '') { + callback(false, undefined); + return; + } + if (this.image_cache[url]) { + callback(true, this.image_cache[url]); + return; + } + // cc.loader.load( + // {url: url, type: 'png'}, + // (err: string, texture: Texture2D | undefined) => { + // if (err) { + // // console.error('err:' + err); + // callback(false, undefined); + // return; + // } + // const frame = new SpriteFrame(texture); + // callback(true, frame); + // if (cache) { + // this.image_cache[url] = frame; + // } + // }); + }; + LQGameUtil.canvas_policy = function (c, width, height) { + // @ts-ignore + var ratio = visibleRect.height / visibleRect.width; + if (ratio > height / width) { + c.fitHeight = false; + c.fitWidth = true; + } + else { + c.fitHeight = true; + c.fitWidth = false; + } + return c.fitHeight; + }; + LQGameUtil.recursion_node_property = function (node, p) { + if (node.parent) { + // @ts-ignore + p.value *= node.parent[p.key]; + this.recursion_node_property(node.parent, p); + } + }; + /** + * + * @param path + * eg.'Canvas>node_main>btn_start' + */ + LQGameUtil.find_node = function (path) { + if (!path || path.length <= 0) { + console.warn('路径不正确'); + return undefined; + } + var arr = path.split('/'); + var root = find(arr[0]); + if (!root) { + console.warn('没找到节点:' + arr[0]); + return undefined; + } + var node = root; + for (var i = 1; i < arr.length; i++) { + var temp = node.getChildByName(arr[i]); + if (!temp) { + console.warn('没找到节点:' + arr[i]); + return undefined; + } + node = temp; + } + return node; + }; + LQGameUtil.wait = function (time) { + return new Promise(function (resolve) { + tween(director.getScene()).delay(time).call(function () { + resolve(); + }).start(); + }); + }; + LQGameUtil.set_clip = function (clip, off, flip_x, flip_y) { + var s = function (arr) { + for (var i = 0; i < arr.length; i++) { + if (i % 2 === 0) { + if (flip_x) { + arr[i] = -arr[i]; + } + arr[i] += off.x; + } + else { + if (flip_y) { + arr[i] = -arr[i]; + } + arr[i] += off.y; + } + } + }; + var pos_arr = clip.curveData.props.position; + for (var i = 0; i < pos_arr.length; i++) { + var motionPath = pos_arr[i].motionPath; + var value = pos_arr[i].value; + if (motionPath) { + for (var i_1 = 0; i_1 < motionPath.length; i_1++) { + s(motionPath[i_1]); + } + } + s(value); + } + }; + LQGameUtil.scroll_layout = function (layout, speed) { + if (speed === void 0) { speed = 50; } + layout.updateLayout(); + var len = layout.type === cc.Layout.Type.HORIZONTAL ? layout.node.width : layout.node.height; + var time = len / speed; + if (layout.type === cc.Layout.Type.HORIZONTAL) { + var offset_1 = layout.node.anchorX === 1 ? layout.node.width * 0.5 : -layout.node.width * 0.5; + layout.node.runAction(cc.repeatForever(cc.sequence(cc.moveBy(time, cc.v2(offset_1, 0)), cc.callFunc(function () { + layout.node.x -= offset_1; + })))); + } + else if (layout.type === cc.Layout.Type.VERTICAL || layout.type === cc.Layout.Type.GRID) { + var offset_2 = layout.node.anchorY === 1 ? layout.node.height * 0.5 : -layout.node.height * 0.5; + layout.node.runAction(cc.repeatForever(cc.sequence(cc.moveBy(time, cc.v2(0, offset_2)), cc.callFunc(function () { + layout.node.y -= offset_2; + })))); + } + }; + LQGameUtil.image_cache = {}; + return LQGameUtil; +}()); +exports.LQGameUtil = LQGameUtil; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9nYW1lX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTyxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUM5QixJQUFPLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBR3hCLElBQU8sV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFDcEMsSUFBTyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUd0QjtJQUFBO0lBeUlBLENBQUM7SUF0SWlCLG9CQUFTLEdBQXZCLFVBQXdCLEdBQVcsRUFBRSxRQUFpRSxFQUFFLEtBQVk7UUFBWixzQkFBQSxFQUFBLFlBQVk7UUFDaEgsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO1lBQ3BCLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0IsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE9BQU87U0FDVjtRQUNELGtCQUFrQjtRQUNsQiwrQkFBK0I7UUFDL0IseURBQXlEO1FBQ3pELHFCQUFxQjtRQUNyQiw4Q0FBOEM7UUFDOUMsMENBQTBDO1FBQzFDLHNCQUFzQjtRQUN0QixZQUFZO1FBQ1osa0RBQWtEO1FBQ2xELGlDQUFpQztRQUNqQyx1QkFBdUI7UUFDdkIsNkNBQTZDO1FBQzdDLFlBQVk7UUFDWixVQUFVO0lBQ2QsQ0FBQztJQUVhLHdCQUFhLEdBQTNCLFVBQTRCLENBQVMsRUFBRSxLQUFhLEVBQUUsTUFBYztRQUNoRSxhQUFhO1FBQ2IsSUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxD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LGFBQWEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUM5QyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFNLENBQUMsQ0FBQyxFQUNqQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFFBQU0sQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FDTCxDQUFDLENBQUMsQ0FBQztTQUNQO0lBQ0wsQ0FBQztJQXRJYyxzQkFBVyxHQUFtQyxFQUFFLENBQUM7SUF3SXBFLGlCQUFDO0NBeklELEFBeUlDLElBQUE7QUF6SVksZ0NBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3ByaXRlRnJhbWUgPSBjYy5TcHJpdGVGcmFtZTtcclxuaW1wb3J0IGRpcmVjdG9yID0gY2MuZGlyZWN0b3I7XHJcbmltcG9ydCB0d2VlbiA9IGNjLnR3ZWVuO1xyXG5pbXBvcnQgVGV4dHVyZTJEID0gY2MuVGV4dHVyZTJEO1xyXG5pbXBvcnQgQ2FudmFzID0gY2MuQ2FudmFzO1xyXG5pbXBvcnQgdmlzaWJsZVJlY3QgPSBjYy52aXNpYmxlUmVjdDtcclxuaW1wb3J0IGZpbmQgPSBjYy5maW5kO1xyXG5pbXBvcnQgTm9kZSA9IGNjLk5vZGU7XHJcblxyXG5leHBvcnQgY2xhc3MgTFFHYW1lVXRpbCB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBpbWFnZV9jYWNoZTogeyBba2V5OiBzdHJpbmddOiBTcHJpdGVGcmFtZSB9ID0ge307XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRfaW1hZ2UodXJsOiBzdHJpbmcsIGNhbGxiYWNrOiAoc3VjY2VzczogYm9vbGVhbiwgc2Y6IFNwcml0ZUZyYW1lIHwgdW5kZWZpbmVkKSA9PiB2b2lkLCBjYWNoZSA9IHRydWUpIHtcclxuICAgICAgICBpZiAoIXVybCB8fCB1cmwgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmltYWdlX2NhY2hlW3VybF0pIHtcclxuICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSwgdGhpcy5pbWFnZV9jYWNoZVt1cmxdKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjYy5sb2FkZXIubG9hZChcclxuICAgICAgICAvLyAgICAge3VybDogdXJsLCB0eXBlOiAncG5nJ30sXHJcbiAgICAgICAgLy8gICAgIChlcnI6IHN0cmluZywgdGV4dHVyZTogVGV4dHVyZTJEIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignZXJyOicgKyBlcnIpO1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB1bmRlZmluZWQpO1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAvLyAgICAgICAgIH1cclxuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGZyYW1lID0gbmV3IFNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgIC8vICAgICAgICAgY2FsbGJhY2sodHJ1ZSwgZnJhbWUpO1xyXG4gICAgICAgIC8vICAgICAgICAgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5pbWFnZV9jYWNoZVt1cmxdID0gZnJhbWU7XHJcbiAgICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2FudmFzX3BvbGljeShjOiBDYW52YXMsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gdmlzaWJsZVJlY3QuaGVpZ2h0IC8gdmlzaWJsZVJlY3Qud2lkdGg7XHJcbiAgICAgICAgaWYgKHJhdGlvID4gaGVpZ2h0IC8gd2lkdGgpIHtcclxuICAgICAgICAgICAgYy5maXRIZWlnaHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgYy5maXRXaWR0aCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYy5maXRIZWlnaHQgPSB0cnVlO1xyXG4gICAgICAgICAgICBjLmZpdFdpZHRoID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjLmZpdEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHJlY3Vyc2lvbl9ub2RlX3Byb3BlcnR5KG5vZGU6IE5vZGUsIHA6IHsga2V5OiBzdHJpbmcsIHZhbHVlOiBudW1iZXIgfSkge1xyXG4gICAgICAgIGlmIChub2RlLnBhcmVudCkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHAudmFsdWUgKj0gbm9kZS5wYXJlbnRbcC5rZXldO1xyXG4gICAgICAgICAgICB0aGlzLnJlY3Vyc2lvbl9ub2RlX3Byb3BlcnR5KG5vZGUucGFyZW50LCBwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHBhdGhcclxuICAgICAqIGVnLidDYW52YXM+bm9kZV9tYWluPmJ0bl9zdGFydCdcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBmaW5kX25vZGUocGF0aDogc3RyaW5nKTogTm9kZSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKCFwYXRoIHx8IHBhdGgubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCfot6/lvoTkuI3mraPnoa4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYXJyID0gcGF0aC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGNvbnN0IHJvb3QgPSBmaW5kKGFyclswXSk7XHJcbiAgICAgICAgaWYgKCFyb290KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybign5rKh5om+5Yiw6IqC54K5OicgKyBhcnJbMF0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbm9kZSA9IHJvb3Q7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcCA9IG5vZGUuZ2V0Q2hpbGRCeU5hbWUoYXJyW2ldKTtcclxuICAgICAgICAgICAgaWYgKCF0ZW1wKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+ayoeaJvuWIsOiKgueCuTonICsgYXJyW2ldKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm9kZSA9IHRlbXA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgd2FpdCh0aW1lOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgdHdlZW4oZGlyZWN0b3IuZ2V0U2NlbmUoKSkuZGVsYXkodGltZSkuY2FsbCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH0pLnN0YXJ0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBzZXRfY2xpcChjbGlwOiBjYy5BbmltYXRpb25DbGlwLCBvZmY6IGNjLlZlYzIsIGZsaXBfeDogYm9vbGVhbiwgZmxpcF95OiBib29sZWFuKSB7XHJcbiAgICAgICAgbGV0IHMgPSAoYXJyOiBudW1iZXJbXSkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGkgJSAyID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZsaXBfeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJbaV0gPSAtYXJyW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhcnJbaV0gKz0gb2ZmLng7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmbGlwX3kpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyW2ldID0gLWFycltpXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyW2ldICs9IG9mZi55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBwb3NfYXJyID0gY2xpcC5jdXJ2ZURhdGEucHJvcHMucG9zaXRpb247XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NfYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdGlvblBhdGggPSBwb3NfYXJyW2ldLm1vdGlvblBhdGg7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcG9zX2FycltpXS52YWx1ZTtcclxuICAgICAgICAgICAgaWYgKG1vdGlvblBhdGgpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW90aW9uUGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHMobW90aW9uUGF0aFtpXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcyh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgc2Nyb2xsX2xheW91dChsYXlvdXQ6IGNjLkxheW91dCwgc3BlZWQ6IG51bWJlciA9IDUwKSB7XHJcbiAgICAgICAgbGF5b3V0LnVwZGF0ZUxheW91dCgpO1xyXG4gICAgICAgIGNvbnN0IGxlbiA9IGxheW91dC50eXBlID09PSBjYy5MYXlvdXQuVHlwZS5IT1JJWk9OVEFMID8gbGF5b3V0Lm5vZGUud2lkdGggOiBsYXlvdXQubm9kZS5oZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IGxlbiAvIHNwZWVkO1xyXG4gICAgICAgIGlmIChsYXlvdXQudHlwZSA9PT0gY2MuTGF5b3V0LlR5cGUuSE9SSVpPTlRBTCkge1xyXG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gbGF5b3V0Lm5vZGUuYW5jaG9yWCA9PT0gMSA/IGxheW91dC5ub2RlLndpZHRoICogMC41IDogLWxheW91dC5ub2RlLndpZHRoICogMC41O1xyXG4gICAgICAgICAgICBsYXlvdXQubm9kZS5ydW5BY3Rpb24oY2MucmVwZWF0Rm9yZXZlcihjYy5zZXF1ZW5jZShcclxuICAgICAgICAgICAgICAgIGNjLm1vdmVCeSh0aW1lLCBjYy52MihvZmZzZXQsIDApKSxcclxuICAgICAgICAgICAgICAgIGNjLmNhbGxGdW5jKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsYXlvdXQubm9kZS54IC09IG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICkpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGxheW91dC50eXBlID09PSBjYy5MYXlvdXQuVHlwZS5WRVJUSUNBTCB8fCBsYXlvdXQudHlwZSA9PT0gY2MuTGF5b3V0LlR5cGUuR1JJRCkge1xyXG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gbGF5b3V0Lm5vZGUuYW5jaG9yWSA9PT0gMSA/IGxheW91dC5ub2RlLmhlaWdodCAqIDAuNSA6IC1sYXlvdXQubm9kZS5oZWlnaHQgKiAwLjU7XHJcbiAgICAgICAgICAgIGxheW91dC5ub2RlLnJ1bkFjdGlvbihjYy5yZXBlYXRGb3JldmVyKGNjLnNlcXVlbmNlKFxyXG4gICAgICAgICAgICAgICAgY2MubW92ZUJ5KHRpbWUsIGNjLnYyKDAsIG9mZnNldCkpLFxyXG4gICAgICAgICAgICAgICAgY2MuY2FsbEZ1bmMoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxheW91dC5ub2RlLnkgLT0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn0iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/GameStart/GameAppStart.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '61d4ccY2ztLMYIh8WvqPPAw', 'GameAppStart'); +// Script/module/GameStart/GameAppStart.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var Storage_1 = require("../Storage/Storage"); +var GameConfig_1 = require("../Config/GameConfig"); +var HttpUtil_1 = require("../Crypto/HttpUtil"); +var AudioManager_1 = require("../Music/AudioManager"); +var Notification_1 = require("../Notification/Notification"); +var GameTool_1 = require("../Tool/GameTool"); +window.initMgr = function () { + if (cc.fx) { + return; + } + cc.fx = {}; + // console.log("1初始化"); + //基础状态信息 + cc.fx.StateInfo = { + debugMode: true, + networkConnected: true, + networkType: 'none', + isOnForeground: true //当前是否是在前台 + }; + //应用系统信息 + //配置文件 + cc.fx.StorageMessage = Storage_1.StorageMessage; + cc.fx.AudioManager = AudioManager_1.default; + cc.fx.GameConfig = GameConfig_1.GameConfig; + cc.fx.HttpUtil = HttpUtil_1.default; + cc.fx.GameTool = GameTool_1.GameTool; + cc.fx.Notifications = Notification_1.Notifications; + cc.fx.ShareInfo = { + queryId: -1 //分享id + }; + cc.fx.Message = { + control: "10001", + startGame: "10002", + next: "10003", + changePath: "10004", + changeMap: "10005", + nextWater: "10006", + addEnd: "10007", + setData: "10008", + guideNext: "10009", + showResult: "10010", + removeTip: "10011" //执行撤回或者后退动作,移除提示 + }; + /* + * 客户端埋点分享类型 + */ + cc.fx.BurialShareType = { + Default: "default", + Invite: "invite", + DailyInviteRoomJoin: 'invite_join_room', + DailyInviteFriend: 'invite_friend', + DailyInviteGroup: 'invate_group', + DailyInviteGroupAlive: 'invate_alive', + DailyInviteGroupReward: 'invate_rewared', + DailyInviteGroupBox: 'invate_box', + DailyInviteGroupBall: 'invate_ball', + MatchResult: 'matchResult', + MatchFix5: 'MatchFix5', + MatchFix20: 'MatchFix20', + MatchFix100: 'MatchFix100', + MatchFix500: 'MatchFix500', + NewerRedEnvelope: 'newerRedEnvelope', + CoinRoomResult: 'coinRoomResult', + HighRate: "highRate", + CoinRoomWinStreak: 'coinRoomWinStreak', + CoinRoomBankruptcy1: 'coinRoomBankruptcy1', + CoinRoomBankruptcy2: 'coinRoomBankruptcy2', + CoinRoomBankruptcy3: 'coinRoomBankruptcy3', + }; + /* + * 分享到哪儿给奖励 group frined all + */ + cc.fx.ShareWhereReward = { + Group: "group", + Friend: "friend", + All: "all", + }; + //用于存储消息的ID + cc.fx.storageType = cc.Enum({ + storageTypeCustom: 1000101, + }); + //用于存储提示语 按照步骤提示 + cc.fx.tipType = cc.Enum({ + tipOne: '神农氏回到家中,开始整理今天收集来的物品。当他第一次拿出或说出一种植物时,请告诉他这是新植物。', + tipTwo: '如果他拿出或说出的植物你今天看到过,请告诉他上次是看到的;如果你听他说过,则请告诉他上次是听到的。', + tipErrNew: '这是这局游戏第一次出现{植物}', + tipErrOld: '{植物}刚才出现过呢', + tipErrHear: '上次遇到{植物}时,似乎不是听到的吧', + tipErrSee: '上次遇到{植物}时,似乎不是看到的吧', + tipErrLast: '之前确实看到过{植物},但最近一次似乎不是看到的呢', + }); +}; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXEdhbWVTdGFydFxcR2FtZUFwcFN0YXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsOENBQW9EO0FBQ3BELG1EQUFrRDtBQUNsRCwrQ0FBMEM7QUFDMUMsc0RBQWlEO0FBQ2pELDZEQUE2RDtBQUM3RCw2Q0FBNEM7QUFHNUMsTUFBTSxDQUFDLE9BQU8sR0FBRztJQUNiLElBQUcsRUFBRSxDQUFDLEVBQUUsRUFDUjtRQUNJLE9BQU87S0FDVjtJQUNELEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ1gsdUJBQXVCO0lBRXZCLFFBQVE7SUFDUixFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsR0FBRztRQUNkLFNBQVMsRUFBRSxJQUFJO1FBQ2YsZ0JBQWdCLEVBQUUsSUFBSTtRQUN0QixXQUFXLEVBQUUsTUFBTTtRQUNuQixjQUFjLEVBQUUsSUFBSSxDQUFNLFVBQVU7S0FDdkMsQ0FBQztJQUVGLFFBQVE7SUFDUixNQUFNO0lBQ04sRUFBRSxDQUFDLEVBQUUsQ0FBQyxjQUFjLEdBQUcsd0JBQWMsQ0FBQztJQUN0QyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksR0FBRyxzQkFBWSxDQUFDO0lBQ2xDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLHVCQUFVLENBQUM7SUFDOUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEdBQUcsa0JBQVEsQ0FBQztJQUMxQixFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxtQkFBUSxDQUFDO0lBQzFCLEVBQUUsQ0FBQyxFQUFFLENBQUMsYUFBYSxHQUFHLDRCQUFhLENBQUM7SUFHcEMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUc7UUFDZCxPQUFPLEVBQUcsQ0FBQyxDQUFDLENBQWMsTUFBTTtLQUNuQyxDQUFDO0lBRUYsRUFBRSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEdBQUc7UUFDWixPQUFPLEVBQUUsT0FBTztRQUNoQixTQUFTLEVBQUMsT0FBTztRQUNqQixJQUFJLEVBQUUsT0FBTztRQUNiLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLE1BQU0sRUFBRSxPQUFPO1FBQ2YsT0FBTyxFQUFFLE9BQU87UUFDaEIsU0FBUyxFQUFFLE9BQU87UUFDbEIsVUFBVSxFQUFFLE9BQU87UUFDbkIsU0FBUyxFQUFFLE9BQU8sQ0FBVSxpQkFBaUI7S0FDaEQsQ0FBQTtJQUVEOztNQUVFO0lBQ0YsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLEdBQUc7UUFDcEIsT0FBTyxFQUFHLFNBQVM7UUFDbkIsTUFBTSxFQUFHLFFBQVE7UUFFakIsbUJBQW1CLEVBQUMsa0JBQWtCO1FBQ3RDLGlCQUFpQixFQUFHLGVBQWU7UUFDbkMsZ0JBQWdCLEVBQUcsY0FBYztRQUNqQyxxQkFBcUIsRUFBRSxjQUFjO1FBQ3JDLHNCQUFzQixFQUFFLGdCQUFnQjtRQUN4QyxtQkFBbUIsRUFBRSxZQUFZO1FBQ2pDLG9CQUFvQixFQUFFLGFBQWE7UUFFbkMsV0FBVyxFQUFHLGFBQWE7UUFDM0IsU0FBUyxFQUFFLFdBQVc7UUFDdEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsV0FBVyxFQUFFLGFBQWE7UUFDMUIsV0FBVyxFQUFFLGFBQWE7UUFDMUIsZ0JBQWdCLEVBQUUsa0JBQWtCO1FBQ3BDLGNBQWMsRUFBRSxnQkFBZ0I7UUFDaEMsUUFBUSxFQUFHLFVBQVU7UUFDckIsaUJBQWlCLEVBQUUsbUJBQW1CO1FBQ3RDLG1CQUFtQixFQUFFLHFCQUFxQjtRQUMxQyxtQkFBbUIsRUFBRSxxQkFBcUI7UUFDMUMsbUJBQW1CLEVBQUUscUJBQXFCO0tBQzdDLENBQUM7SUFFRjs7T0FFRztJQUNILEVBQUUsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLEdBQUc7UUFDckIsS0FBSyxFQUFFLE9BQU87UUFDZCxNQUFNLEVBQUcsUUFBUTtRQUNqQixHQUFHLEVBQUcsS0FBSztLQUNkLENBQUM7SUFFRixXQUFXO0lBQ1gsRUFBRSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztRQUMzQixpQkFBaUIsRUFBRSxPQUFPO0tBQzdCLENBQUMsQ0FBQztJQUVBLGlCQUFpQjtJQUNqQixFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ3BCLE1BQU0sRUFBRSxpREFBaUQ7UUFDekQsTUFBTSxFQUFFLG1EQUFtRDtRQUMzRCxTQUFTLEVBQUUsaUJBQWlCO1FBQzVCLFNBQVMsRUFBRSxZQUFZO1FBQ3ZCLFVBQVUsRUFBRSxvQkFBb0I7UUFDaEMsU0FBUyxFQUFFLG9CQUFvQjtRQUMvQixVQUFVLEVBQUUsMkJBQTJCO0tBRTFDLENBQUMsQ0FBQztBQUVQLENBQUMsQ0FBQyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VNZXNzYWdlIH0gZnJvbSBcIi4uL1N0b3JhZ2UvU3RvcmFnZVwiO1xyXG5pbXBvcnQgeyBHYW1lQ29uZmlnIH0gZnJvbSBcIi4uL0NvbmZpZy9HYW1lQ29uZmlnXCI7XHJcbmltcG9ydCBIdHRwVXRpbCBmcm9tIFwiLi4vQ3J5cHRvL0h0dHBVdGlsXCI7XHJcbmltcG9ydCBBdWRpb01hbmFnZXIgZnJvbSBcIi4uL011c2ljL0F1ZGlvTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25zIH0gZnJvbSBcIi4uL05vdGlmaWNhdGlvbi9Ob3RpZmljYXRpb25cIjtcclxuaW1wb3J0IHsgR2FtZVRvb2wgfSBmcm9tIFwiLi4vVG9vbC9HYW1lVG9vbFwiO1xyXG5cclxuXHJcbndpbmRvdy5pbml0TWdyID0gZnVuY3Rpb24oKSB7XHJcbiAgICBpZihjYy5meClcclxuICAgIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjYy5meCA9IHt9O1xyXG4gICAgLy8gY29uc29sZS5sb2coXCIx5Yid5aeL5YyWXCIpO1xyXG5cclxuICAgIC8v5Z+656GA54q25oCB5L+h5oGvXHJcbiAgICBjYy5meC5TdGF0ZUluZm8gPSB7XHJcbiAgICAgICAgZGVidWdNb2RlOiB0cnVlLFxyXG4gICAgICAgIG5ldHdvcmtDb25uZWN0ZWQ6IHRydWUsICAgLy/nvZHnu5znirbmgIFcclxuICAgICAgICBuZXR3b3JrVHlwZTogJ25vbmUnLCAgICAgIC8v572R57uc57G75Z6LXHJcbiAgICAgICAgaXNPbkZvcmVncm91bmQ6IHRydWUgICAgICAvL+W9k+WJjeaYr+WQpuaYr+WcqOWJjeWPsFxyXG4gICAgfTtcclxuXHJcbiAgICAvL+W6lOeUqOezu+e7n+S/oeaBr1xyXG4gICAgLy/phY3nva7mlofku7ZcclxuICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlID0gU3RvcmFnZU1lc3NhZ2U7XHJcbiAgICBjYy5meC5BdWRpb01hbmFnZXIgPSBBdWRpb01hbmFnZXI7XHJcbiAgICBjYy5meC5HYW1lQ29uZmlnID0gR2FtZUNvbmZpZztcclxuICAgIGNjLmZ4Lkh0dHBVdGlsID0gSHR0cFV0aWw7XHJcbiAgICBjYy5meC5HYW1lVG9vbCA9IEdhbWVUb29sO1xyXG4gICAgY2MuZnguTm90aWZpY2F0aW9ucyA9IE5vdGlmaWNhdGlvbnM7XHJcbiAgXHJcblxyXG4gICAgY2MuZnguU2hhcmVJbmZvID0ge1xyXG4gICAgICAgIHF1ZXJ5SWQgOiAtMSAgICAgICAgICAgICAgLy/liIbkuqtpZFxyXG4gICAgfTtcclxuXHJcbiAgICBjYy5meC5NZXNzYWdlID0ge1xyXG4gICAgICAgIGNvbnRyb2w6IFwiMTAwMDFcIiwgICAgICAgLy/kvKDpgJLmk43kvZzmjqfliLZcclxuICAgICAgICBzdGFydEdhbWU6XCIxMDAwMlwiLCAgICAgIC8v5Lyg6YCS5byA5aeL5bu6562RXHJcbiAgICAgICAgbmV4dDogXCIxMDAwM1wiICwgICAgICAgICAgLy/kvKDpgJLmiafooYzkuIvkuIDkuKrmoLzlrZDmtKrmsLTmtYHov4dcclxuICAgICAgICBjaGFuZ2VQYXRoOiBcIjEwMDA0XCIsICAgICAgIC8v5Lyg6YCS5pON5L2c5o6n5Yi2XHJcbiAgICAgICAgY2hhbmdlTWFwOiBcIjEwMDA1XCIsICAgICAgICAgLy/mlLnlj5jpgqPlnLDlm75cclxuICAgICAgICBuZXh0V2F0ZXI6IFwiMTAwMDZcIiAsICAgICAgICAgIC8v5Lyg6YCS5omn6KGM5LiL5LiA5Liq5qC85a2Q5rSq5rC05rWB6L+HXHJcbiAgICAgICAgYWRkRW5kOiBcIjEwMDA3XCIgLCAgICAgICAgICAvL+a3u+WKoOe7k+adn+eCuVxyXG4gICAgICAgIHNldERhdGE6IFwiMTAwMDhcIiAsICAgICAgICAgLy/kuIrkvKDliIbmlbBcclxuICAgICAgICBndWlkZU5leHQ6IFwiMTAwMDlcIiAsICAgICAgICAvL+W8leWvvOi/m+WFpeS4i+S4gOatpVxyXG4gICAgICAgIHNob3dSZXN1bHQ6IFwiMTAwMTBcIiwgICAgICAgICAgLy/lsZXnpLrmsrvmsLTnu5PmnpxcclxuICAgICAgICByZW1vdmVUaXA6IFwiMTAwMTFcIiAgICAgICAgICAvL+aJp+ihjOaSpOWbnuaIluiAheWQjumAgOWKqOS9nO+8jOenu+mZpOaPkOekulxyXG4gICAgfVxyXG5cclxuICAgIC8qXHJcbiAgICAgICAgKiDlrqLmiLfnq6/ln4vngrnliIbkuqvnsbvlnotcclxuICAgICovXHJcbiAgICBjYy5meC5CdXJpYWxTaGFyZVR5cGUgPSB7XHJcbiAgICAgICAgRGVmYXVsdCA6IFwiZGVmYXVsdFwiLCAgICAgICAgLy/pu5jorqTliIbkuqvnsbvlnoss5YiG5Lqr5Yiw576kXHJcbiAgICAgICAgSW52aXRlIDogXCJpbnZpdGVcIiwgICAgICAgICAgLy8g6YKA6K+35aW95Y+LXHJcblxyXG4gICAgICAgIERhaWx5SW52aXRlUm9vbUpvaW46J2ludml0ZV9qb2luX3Jvb20nLCAvL+mCgOivt+WlveWPi+WKoOWFpVxyXG4gICAgICAgIERhaWx5SW52aXRlRnJpZW5kIDogJ2ludml0ZV9mcmllbmQnLCAvLyDml6XluLjpgoDor7flpb3lj4tcclxuICAgICAgICBEYWlseUludml0ZUdyb3VwIDogJ2ludmF0ZV9ncm91cCcsIC8vIOaXpeW4uOWIhuS6q+e+pFxyXG4gICAgICAgIERhaWx5SW52aXRlR3JvdXBBbGl2ZTogJ2ludmF0ZV9hbGl2ZScsIC8v5pel5bi45YiG5Lqr576k5aSN5rS7XHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cFJld2FyZDogJ2ludmF0ZV9yZXdhcmVkJywvL+WIhuS6q+WlluWKsee/u+WAjVxyXG4gICAgICAgIERhaWx5SW52aXRlR3JvdXBCb3g6ICdpbnZhdGVfYm94JywgIC8v5a6d566x5YiG5Lqr5aWW5YqxXHJcbiAgICAgICAgRGFpbHlJbnZpdGVHcm91cEJhbGw6ICdpbnZhdGVfYmFsbCcsICAvL+WIhuS6q+mihuWPlueQg+eQg1xyXG5cclxuICAgICAgICBNYXRjaFJlc3VsdCA6ICdtYXRjaFJlc3VsdCcsICAvLyDmr5TotZvnu5PnrpfliIbkuqtcclxuICAgICAgICBNYXRjaEZpeDU6ICdNYXRjaEZpeDUnLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gNeWFg+e6ouWMhei1m1xyXG4gICAgICAgIE1hdGNoRml4MjA6ICdNYXRjaEZpeDIwJywgICAgICAgICAgICAgICAgICAgICAgICAvLyAyMOWFg+e6ouWMhei1m1xyXG4gICAgICAgIE1hdGNoRml4MTAwOiAnTWF0Y2hGaXgxMDAnLCAgICAgICAgICAgICAgICAgICAgICAvLyAxMDDlhYPnuqLljIXotZtcclxuICAgICAgICBNYXRjaEZpeDUwMDogJ01hdGNoRml4NTAwJywgICAgICAgICAgICAgICAgICAgICAgLy8gNTAw5YWD57qi5YyF6LWbXHJcbiAgICAgICAgTmV3ZXJSZWRFbnZlbG9wZTogJ25ld2VyUmVkRW52ZWxvcGUnLCAgICAgICAgICAgIC8vIOaWsOaJi+e6ouWMhVxyXG4gICAgICAgIENvaW5Sb29tUmVzdWx0OiAnY29pblJvb21SZXN1bHQnLCAgICAgICAgICAgICAgICAvLyDph5HluIHmoYznu5PnrpdcclxuICAgICAgICBIaWdoUmF0ZSA6IFwiaGlnaFJhdGVcIiwvL+mrmOWAjeWIhuS6q1xyXG4gICAgICAgIENvaW5Sb29tV2luU3RyZWFrOiAnY29pblJvb21XaW5TdHJlYWsnLCAgICAgICAgIC8vIOi/nuiDnFxyXG4gICAgICAgIENvaW5Sb29tQmFua3J1cHRjeTE6ICdjb2luUm9vbUJhbmtydXB0Y3kxJywgICAgICAgICAvLyDph5HluIHmoYznoLTkuqdcclxuICAgICAgICBDb2luUm9vbUJhbmtydXB0Y3kyOiAnY29pblJvb21CYW5rcnVwdGN5MicsICAgICAgICAgLy8g6YeR5biB5qGM56C05LqnXHJcbiAgICAgICAgQ29pblJvb21CYW5rcnVwdGN5MzogJ2NvaW5Sb29tQmFua3J1cHRjeTMnLCAgICAgICAgIC8vIOmHkeW4geahjOegtOS6p1xyXG4gICAgfTtcclxuXHJcbiAgICAvKlxyXG4gICAgICog5YiG5Lqr5Yiw5ZOq5YS/57uZ5aWW5YqxIGdyb3VwIGZyaW5lZCBhbGxcclxuICAgICAqL1xyXG4gICAgY2MuZnguU2hhcmVXaGVyZVJld2FyZCA9IHtcclxuICAgICAgICBHcm91cCA6XCJncm91cFwiLCAvL+W+ruS/oee+pFxyXG4gICAgICAgIEZyaWVuZCA6IFwiZnJpZW5kXCIsLy/lpb3lj4tcclxuICAgICAgICBBbGwgOiBcImFsbFwiLCAvL+S4jeWMuuWIhlxyXG4gICAgfTtcclxuXHJcbiAgICAvL+eUqOS6juWtmOWCqOa2iOaBr+eahElEXHJcbiAgICBjYy5meC5zdG9yYWdlVHlwZSA9IGNjLkVudW0oe1xyXG5cdCAgICBzdG9yYWdlVHlwZUN1c3RvbTogMTAwMDEwMSwgLy/nlKjkuo7lrZjlgqjlhbPljaHnrYnnuqdcclxuXHR9KTtcclxuXHJcbiAgICAvL+eUqOS6juWtmOWCqOaPkOekuuivrSAg5oyJ54Wn5q2l6aqk5o+Q56S6XHJcbiAgICBjYy5meC50aXBUeXBlID0gY2MuRW51bSh7XHJcbiAgICAgICAgdGlwT25lOiAn56We5Yac5rCP5Zue5Yiw5a625Lit77yM5byA5aeL5pW055CG5LuK5aSp5pS26ZuG5p2l55qE54mp5ZOB44CC5b2T5LuW56ys5LiA5qyh5ou/5Ye65oiW6K+05Ye65LiA56eN5qSN54mp5pe277yM6K+35ZGK6K+J5LuW6L+Z5piv5paw5qSN54mp44CCJyxcclxuICAgICAgICB0aXBUd286ICflpoLmnpzku5bmi7/lh7rmiJbor7Tlh7rnmoTmpI3niankvaDku4rlpKnnnIvliLDov4fvvIzor7flkYror4nku5bkuIrmrKHmmK/nnIvliLDnmoTvvJvlpoLmnpzkvaDlkKzku5bor7Tov4fvvIzliJnor7flkYror4nku5bkuIrmrKHmmK/lkKzliLDnmoTjgIInLCAvL+eUqOS6juWtmOWCqOWFs+WNoeetiee6p1xyXG4gICAgICAgIHRpcEVyck5ldzogJ+i/meaYr+i/meWxgOa4uOaIj+esrOS4gOasoeWHuueOsHvmpI3nial9JyxcclxuICAgICAgICB0aXBFcnJPbGQ6ICd75qSN54mpfeWImuaJjeWHuueOsOi/h+WRoicsXHJcbiAgICAgICAgdGlwRXJySGVhcjogJ+S4iuasoemBh+WIsHvmpI3nial95pe277yM5Ly85LmO5LiN5piv5ZCs5Yiw55qE5ZCnJyxcclxuICAgICAgICB0aXBFcnJTZWU6ICfkuIrmrKHpgYfliLB75qSN54mpfeaXtu+8jOS8vOS5juS4jeaYr+eci+WIsOeahOWQpycsXHJcbiAgICAgICAgdGlwRXJyTGFzdDogJ+S5i+WJjeehruWunueci+WIsOi/h3vmpI3nial977yM5L2G5pyA6L+R5LiA5qyh5Ly85LmO5LiN5piv55yL5Yiw55qE5ZGiJyxcclxuXHJcbiAgICB9KTtcclxuXHJcbn07Il19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/animation/NewScript.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '2cd54+HgYFITpFe6QLlvqDB', 'NewScript'); +// animation/NewScript.js + +"use strict"; + +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html + +cc.Class({ + "extends": cc.Component, + properties: { + sex: { + type: cc.Enum({ + male: 0, + female: 1 + }), + "default": 0 + } + // foo: { + // // ATTRIBUTES: + // default: null, // The default value will be used only when the component attaching + // // to a node for the first time + // type: cc.SpriteFrame, // optional, default is typeof default + // serializable: true, // optional, default is true + // }, + // bar: { + // get () { + // return this._bar; + // }, + // set (value) { + // this._bar = value; + // } + // }, + }, + // LIFE-CYCLE CALLBACKS: + // onLoad () {}, + start: function start() {} // update (dt) {}, +}); + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcYW5pbWF0aW9uXFxOZXdTY3JpcHQuanMiXSwibmFtZXMiOlsiY2MiLCJDbGFzcyIsIkNvbXBvbmVudCIsInByb3BlcnRpZXMiLCJzZXgiLCJ0eXBlIiwiRW51bSIsIm1hbGUiLCJmZW1hbGUiLCJzdGFydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUFBLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxTQUFTO0VBRXJCQyxVQUFVLEVBQUU7SUFDUkMsR0FBRyxFQUFDO01BQ0FDLElBQUksRUFBQ0wsRUFBRSxDQUFDTSxJQUFJLENBQUM7UUFDVEMsSUFBSSxFQUFDLENBQUM7UUFDTkMsTUFBTSxFQUFDO01BQ1gsQ0FBQyxDQUFDO01BQ0YsV0FBUTtJQUNaO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0VBQ0osQ0FBQztFQUVEO0VBRUE7RUFFQUMsS0FBSyxXQUFBQSxNQUFBLEVBQUksQ0FFVCxDQUFDLENBRUQ7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuQ29tcG9uZW50LFxyXG5cclxuICAgIHByb3BlcnRpZXM6IHtcclxuICAgICAgICBzZXg6e1xyXG4gICAgICAgICAgICB0eXBlOmNjLkVudW0oe1xyXG4gICAgICAgICAgICAgICAgbWFsZTowLFxyXG4gICAgICAgICAgICAgICAgZmVtYWxlOjFcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6MFxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBmb286IHtcclxuICAgICAgICAvLyAgICAgLy8gQVRUUklCVVRFUzpcclxuICAgICAgICAvLyAgICAgZGVmYXVsdDogbnVsbCwgICAgICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZCBvbmx5IHdoZW4gdGhlIGNvbXBvbmVudCBhdHRhY2hpbmdcclxuICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGEgbm9kZSBmb3IgdGhlIGZpcnN0IHRpbWVcclxuICAgICAgICAvLyAgICAgdHlwZTogY2MuU3ByaXRlRnJhbWUsIC8vIG9wdGlvbmFsLCBkZWZhdWx0IGlzIHR5cGVvZiBkZWZhdWx0XHJcbiAgICAgICAgLy8gICAgIHNlcmlhbGl6YWJsZTogdHJ1ZSwgICAvLyBvcHRpb25hbCwgZGVmYXVsdCBpcyB0cnVlXHJcbiAgICAgICAgLy8gfSxcclxuICAgICAgICAvLyBiYXI6IHtcclxuICAgICAgICAvLyAgICAgZ2V0ICgpIHtcclxuICAgICAgICAvLyAgICAgICAgIHJldHVybiB0aGlzLl9iYXI7XHJcbiAgICAgICAgLy8gICAgIH0sXHJcbiAgICAgICAgLy8gICAgIHNldCAodmFsdWUpIHtcclxuICAgICAgICAvLyAgICAgICAgIHRoaXMuX2JhciA9IHZhbHVlO1xyXG4gICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgLy8gfSxcclxuICAgIH0sXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9LFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9LFxyXG59KTtcclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/RankList/ItemRender.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'ca0f9k0oBVDbpQC+OMNTF3m', 'ItemRender'); +// Script/module/RankList/ItemRender.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var ItemRender = /** @class */ (function (_super) { + __extends(ItemRender, _super); + function ItemRender() { + var _this = _super !== null && _super.apply(this, arguments) || this; + /**数据 */ + _this.data = null; + /**索引 0表示第一项*/ + _this.itemIndex = 0; + return _this; + } + /**数据改变时调用 */ + ItemRender.prototype.dataChanged = function () { + this.data.name = cc.fx.GameTool.subName(this.data.name, 6); + this.node.getChildByName("rankLab").getComponent(cc.Label).string = this.data.rank + ""; + this.node.getChildByName("nameLab").getComponent(cc.Label).string = this.data.name + ""; + this.node.getChildByName("totalLab").getComponent(cc.Label).string = this.data.total; + var timeTemp = cc.fx.GameTool.getTimeShenNong(this.data.time); + // this.node.getChildByName("timeLab").getComponent(cc.Label).string = timeTemp + ""; + this.node.getChildByName("rank").getChildByName("one").active = false; + this.node.getChildByName("rank").getChildByName("two").active = false; + this.node.getChildByName("rank").getChildByName("three").active = false; + if (this.data.rank == 1) { + this.node.getChildByName("rank").getChildByName("one").active = true; + this.node.getChildByName("rankLab").active = false; + } + else if (this.data.rank == 2) { + this.node.getChildByName("rank").getChildByName("two").active = true; + this.node.getChildByName("rankLab").active = false; + } + else if (this.data.rank == 3) { + this.node.getChildByName("rank").getChildByName("three").active = true; + this.node.getChildByName("rankLab").active = false; + } + else { + this.node.getChildByName("rankLab").active = true; + } + this.setPic(); + }; + ItemRender.prototype.setPic = function () { + var _this = this; + this.node.getChildByName("pic").getChildByName("icon").active = false; + this.node.getChildByName("pic").getChildByName("pic").active = false; + var self = this; + var url = this.data.pic; + fetch(url) + .then(function (response) { + return response.headers.get('Content-Length'); + }) + .then(function (errNo) { + // console.log(this.data.rank,'X-Info:', errNo); // 输出X-ErrNo的值 + if (errNo == "5093") { + // console.log(this.data.rank,"没头像"); + _this.node.getChildByName("pic").getChildByName("icon").active = true; + } + }) + .catch(function (error) { + // console.error('Error fetching X-Info:', error); + }); + cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) { + if (texture) { + _this.node.getChildByName("pic").getChildByName("pic").active = true; + var sprite = _this.node.getChildByName("pic").getChildByName("pic").getComponent(cc.Sprite); + sprite.spriteFrame = new cc.SpriteFrame(texture); + // console.log(this.data.rank,"设置头像成功",err); + } + else { + // console.log("设置头像失败",url); + console.log(err, texture); + } + }); + }; + ItemRender = __decorate([ + ccclass + ], ItemRender); + return ItemRender; +}(cc.Component)); +exports.default = ItemRender; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFJhbmtMaXN0XFxJdGVtUmVuZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXdDLDhCQUFZO0lBQXBEO1FBQUEscUVBc0VDO1FBckVHLFFBQVE7UUFDRCxVQUFJLEdBQU8sSUFBSSxDQUFDO1FBQ3ZCLGNBQWM7UUFDUCxlQUFTLEdBQVUsQ0FBQyxDQUFDOztJQWtFaEMsQ0FBQztJQWhFRyxhQUFhO0lBQ04sZ0NBQVcsR0FBbEI7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ3hGLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNyRixJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMs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QUEsS0FBSztZQUNSLGtEQUFrRDtRQUN0RCxDQUFDLENBQUMsQ0FBQztRQUNILEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxFQUFDLEdBQUcsRUFBQyxNQUFNLEVBQUMsRUFBQyxVQUFDLEdBQUcsRUFBRSxPQUFvQjtZQUNuRSxJQUFHLE9BQU8sRUFBQztnQkFDUCxLQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFFLElBQUksQ0FBQztnQkFDbkUsSUFBSSxNQUFNLEdBQUcsS0FBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQzNGLE1BQU0sQ0FBQyxXQUFXLEdBQUcsSUFBSSxFQUFFLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqRCw0Q0FBNEM7YUFDL0M7aUJBQ0c7Z0JBQ0EsNkJBQTZCO2dCQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBQyxPQUFPLENBQUMsQ0FBQTthQUMzQjtRQUNMLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQW5FZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQXNFOUI7SUFBRCxpQkFBQztDQXRFRCxBQXNFQyxDQXRFdUMsRUFBRSxDQUFDLFNBQVMsR0FzRW5EO2tCQXRFb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgTGlzdCwgeyBMaXN0VHlwZSB9IGZyb20gXCIuL0xpc3RcIjtcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBJdGVtUmVuZGVyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIC8qKuaVsOaNriAqL1xyXG4gICAgcHVibGljIGRhdGE6YW55ID0gbnVsbDtcclxuICAgIC8qKue0ouW8lSAw6KGo56S656ys5LiA6aG5Ki9cclxuICAgIHB1YmxpYyBpdGVtSW5kZXg6bnVtYmVyID0gMDsgICAgXHJcblxyXG4gICAgLyoq5pWw5o2u5pS55Y+Y5pe26LCD55SoICovXHJcbiAgICBwdWJsaWMgZGF0YUNoYW5nZWQoKXtcclxuICAgICAgICB0aGlzLmRhdGEubmFtZSA9IGNjLmZ4LkdhbWVUb29sLnN1Yk5hbWUodGhpcy5kYXRhLm5hbWUsNik7XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLmRhdGEucmFuayArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS5uYW1lICsgXCJcIjtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGF0YS50b3RhbDtcclxuICAgICAgICBsZXQgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lU2hlbk5vbmcodGhpcy5kYXRhLnRpbWUpO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcCArIFwiXCI7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBpZih0aGlzLmRhdGEucmFuayA9PSAxKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuZGF0YS5yYW5rID09IDIpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy5kYXRhLnJhbmsgPT0gMyl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0UGljKCk7XHJcbiAgICB9ICAgXHJcbiAgICBcclxuICAgIHB1YmxpYyBzZXRQaWMoKXtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5hY3RpdmU9IGZhbHNlO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBsZXQgdXJsID0gdGhpcy5kYXRhLnBpYztcclxuICAgICAgICBmZXRjaCh1cmwpXHJcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0NvbnRlbnQtTGVuZ3RoJyk7XHJcbiAgICAgICAgfSlcclxuXHJcbiAgICAgICAgLnRoZW4oZXJyTm8gPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEucmFuaywnWC1JbmZvOicsIGVyck5vKTsgLy8g6L6T5Ye6WC1FcnJOb+eahOWAvFxyXG4gICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmRhdGEucmFuayxcIuayoeWktOWDj1wiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5hY3RpdmU9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3ByaXRlID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENoaWxkQnlOYW1lKFwicGljXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICAgICAgc3ByaXRlLnNwcml0ZUZyYW1lID0gbmV3IGNjLlNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kYXRhLnJhbmssXCLorr7nva7lpLTlg4/miJDlip9cIixlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuiuvue9ruWktOWDj+Wksei0pVwiLHVybCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIsdGV4dHVyZSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG5cclxufVxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Notification/Notification.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '55403VjGlpPL564gsdiZBg3', 'Notification'); +// Script/module/Notification/Notification.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Notifications = void 0; +//全局通知 +var Notifications = { + _eventMap: [], + on: function (masgId, callback, target) { + if (this._eventMap[masgId] === undefined) { + this._eventMap[masgId] = []; + } + this._eventMap[masgId].push({ callback: callback, target: target }); + }, + emit: function (masgId, parameter) { + var array = this._eventMap[masgId]; + if (array === undefined) + return; + for (var i = 0; i < array.length; i++) { + var element = array[i]; + if (element) + element.callback.call(element.target, parameter); + } + }, + off: function (masgId, callback) { + var array = this._eventMap[masgId]; + if (array === undefined) + return; + for (var i = 0; i < array.length; i++) { + var element = array[i]; + if (element && element.callback === callback) { + array[i] = undefined; + break; + } + } + }, + offMasgId: function (masgId) { + this._eventMap[masgId] = undefined; + }, + removeAllMsg: function () { + for (var k in this._eventMap) { + if (this._eventMap[k]) { + this.offMasgId(k); + } + } + } +}; +exports.Notifications = Notifications; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE5vdGlmaWNhdGlvblxcTm90aWZpY2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU07QUFDTixJQUFJLGFBQWEsR0FBRztJQUNoQixTQUFTLEVBQUUsRUFBRTtJQUNiLEVBQUUsRUFBRSxVQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTTtRQUNsQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssU0FBUyxFQUFFO1lBQ3RDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxJQUFJLEVBQUUsVUFBVSxNQUFNLEVBQUUsU0FBUztRQUM3QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBRWhDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU87Z0JBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNqRTtJQUNMLENBQUM7SUFFRCxHQUFHLEVBQUUsVUFBVSxNQUFNLEVBQUUsUUFBUTtRQUMzQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksS0FBSyxLQUFLLFNBQVM7WUFBRSxPQUFPO1FBQ2hDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ25DLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsUUFBUSxLQUFLLFFBQVEsRUFBRTtnQkFDMUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztnQkFDckIsTUFBTTthQUNUO1NBQ0o7SUFDTCxDQUFDO0lBRUQsU0FBUyxFQUFFLFVBQVUsTUFBTTtRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsWUFBWSxFQUFFO1FBQ1YsS0FBSyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQzFCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNyQjtTQUNKO0lBQ0wsQ0FBQztDQUNKLENBQUM7QUFDTyxzQ0FBYSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v5YWo5bGA6YCa55+lXHJcbnZhciBOb3RpZmljYXRpb25zID0ge1xyXG4gICAgX2V2ZW50TWFwOiBbXSxcclxuICAgIG9uOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaywgdGFyZ2V0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2V2ZW50TWFwW21hc2dJZF0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2V2ZW50TWFwW21hc2dJZF0ucHVzaCh7IGNhbGxiYWNrOiBjYWxsYmFjaywgdGFyZ2V0OiB0YXJnZXQgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIGVtaXQ6IGZ1bmN0aW9uIChtYXNnSWQsIHBhcmFtZXRlcikge1xyXG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XHJcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZWxlbWVudCA9IGFycmF5W2ldO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5jYWxsYmFjay5jYWxsKGVsZW1lbnQudGFyZ2V0LCBwYXJhbWV0ZXIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgb2ZmOiBmdW5jdGlvbiAobWFzZ0lkLCBjYWxsYmFjaykge1xyXG4gICAgICAgIGxldCBhcnJheSA9IHRoaXMuX2V2ZW50TWFwW21hc2dJZF07XHJcbiAgICAgICAgaWYgKGFycmF5ID09PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBlbGVtZW50ID0gYXJyYXlbaV07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuY2FsbGJhY2sgPT09IGNhbGxiYWNrKSB7XHJcbiAgICAgICAgICAgICAgICBhcnJheVtpXSA9IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBvZmZNYXNnSWQ6IGZ1bmN0aW9uIChtYXNnSWQpIHtcclxuICAgICAgICB0aGlzLl9ldmVudE1hcFttYXNnSWRdID0gdW5kZWZpbmVkO1xyXG4gICAgfSxcclxuXHJcbiAgICByZW1vdmVBbGxNc2c6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBmb3IgKGxldCBrIGluIHRoaXMuX2V2ZW50TWFwKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9ldmVudE1hcFtrXSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vZmZNYXNnSWQoayk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbmV4cG9ydCB7IE5vdGlmaWNhdGlvbnMgfTsiXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Music/AudioManager.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '58403/n16JCa5sZhNMjZzGo', 'AudioManager'); +// Script/module/Music/AudioManager.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var AudioManager = /** @class */ (function (_super) { + __extends(AudioManager, _super); + function AudioManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + //背景音乐 + _this.audioGameBgm0 = null; + _this.xiaochu = null; + _this.hit = null; + _this.down = null; + _this.fangxiang = null; + _this.build = null; + _this.win = null; + _this.lose = null; + _this.anniu_Big = null; + _this.anniu_little = null; + _this.zhuan1 = null; + _this.zhuan2 = null; + return _this; + } + AudioManager_1 = AudioManager; + AudioManager.prototype.onLoad = function () { + if (AudioManager_1._instance == null) { + AudioManager_1._instance = this; + cc.game.addPersistRootNode(this.node); + } + else { + return; + } + this.reward = false; + this.finish = false; + this.rewardCount = 0; + this.ctor(); + this.preload(); + }; + AudioManager.prototype.ctor = function () { + this.mAudioMap = {}; + /** + * 默认音量大小 + * @type {number} + */ + this.bgMusicVolume = 0.1; + this.effectMusicVolume = 1; + this.mMusicSwitch = 1; + this.mEffectSwitch = 1; + }; + AudioManager.prototype.play = function (audioSource, loop, callback, isBgMusic) { + // if (isBgMusic && !this.mMusicSwitch) return; + // if (!isBgMusic && !this.mEffectSwitch) return; + var volume = isBgMusic ? this.bgMusicVolume : this.effectMusicVolume; + // if (cc.sys.isBrowser) { + // if(audioSource == this.brickSound){ + // volume = 0.1; + // } + volume = 1; + cc.audioEngine.setEffectsVolume(1); + cc.audioEngine.setMusicVolume(1); + if (audioSource.name == "lose") { + cc.audioEngine.setEffectsVolume(0.5); + } + else { + cc.audioEngine.setEffectsVolume(1); + } + var context = cc.audioEngine.playEffect(audioSource, loop); + if (callback) { + cc.audioEngine.setFinishCallback(context, function () { + callback.call(this); + }.bind(this)); + } + // cc.wwx.OutPut.log('play audio effect isBrowser: ' + context.src); + this.mAudioMap[audioSource] = context; + return audioSource; + // } else { + // return audioSource; + // } + }; + AudioManager.prototype.save = function () { + // cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Music_Volume, this.mMusicSwitch); + // cc.wwx.Storage.setItem(cc.wwx.Storage.Key_Setting_Effect_Volume, this.mEffectSwitch); + }; + // static get Instance() + // { + // if (this._instance == null) + // { + // this._instance = new AudioManager(); + // } + // return this._instance; + // } + AudioManager.prototype.preload = function () { + if (!(cc.sys.platform === cc.sys.WECHAT_GAME)) { + return; + } + var musics = [ + this.audioGameBgm0, + ]; + musics.forEach(function (path) { + }); + }; + AudioManager.prototype.getAudioMusicSwitch = function () { + return this.mMusicSwitch; + }; + AudioManager.prototype.getAudioEffectSwitch = function () { + return this.mEffectSwitch; + }; + AudioManager.prototype.trunAudioSound = function (on) { + this.switchMusic(on); + this.switchEffect(on); + }; + AudioManager.prototype.switchMusic = function (on) { + if (this.mMusicSwitch != (on ? 1 : 0)) { + this.mMusicSwitch = 1 - this.mMusicSwitch; + // this.save(); + } + if (on) { + this.playMusicGame(); + } + else { + this.stopMusic(); + } + }; + AudioManager.prototype.switchEffect = function (on) { + if (this.mEffectSwitch != (on ? 1 : 0)) { + this.mEffectSwitch = 1 - this.mEffectSwitch; + // this.save(); + } + }; + AudioManager.prototype.onHide = function () { + cc.audioEngine.pauseAll(); + }; + AudioManager.prototype.onShow = function () { + cc.audioEngine.resumeAll(); + }; + //播放音效 + AudioManager.prototype.playEffect = function (name, callback) { + if (!cc.fx.GameConfig.GM_INFO.effectOpen) { + return; + } + if (this[name]) + return this.play(this[name], false, callback, this.mEffectSwitch); + }; + AudioManager.prototype.playMusic = function (key, callback, loop) { + if (!cc.fx.GameConfig.GM_INFO.musicOpen) { + return; + } + loop = typeof loop == 'undefined' || loop ? true : false; + this.stopMusic(); + this.mMusicKey = this.play(key, loop, callback, true); + }; + /** + * 游戏背景音乐 + */ + AudioManager.prototype.playMusicGame = function () { + this.stopMusic(); + this.playMusic(this.audioGameBgm0, {}, true); + }; + /** + * 停止背景音乐播放 + */ + AudioManager.prototype.stopMusic = function () { + // cc.wwx.OutPut.log('stopMusic audio effect wx: ' + this.mMusicKey); + cc.audioEngine.stopAll(); + }; + /** + * 恢复被暂停的背景音乐播放 + */ + AudioManager.prototype.resumeMusic = function () { + // 调用 cc.audioEngine 的 resumeMusic 方法恢复音乐播放 + cc.audioEngine.resumeMusic(); + }; + /* + * 游戏开始音效 + * + */ + AudioManager.prototype.playGameStart = function () { + }; + /* + * 失败的游戏结束 + */ + AudioManager.prototype.playGameOver = function () { + }; + /* + * 成功的游戏结束 + */ + AudioManager.prototype.playGameResultFailed = function () { + }; + /* + * 成功的游戏结束 + */ + AudioManager.prototype.playGameResultSuccess = function () { + }; + /** + * 报警的音效 + */ + /** + * 按钮 + */ + AudioManager.prototype.playAudioButton = function () { + // return this.play(this.audioButtonClick, false,null,this.mEffectSwitch); + }; + var AudioManager_1; + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "audioGameBgm0", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "xiaochu", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "hit", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "down", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "fangxiang", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "build", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "win", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "lose", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "anniu_Big", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "anniu_little", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "zhuan1", void 0); + __decorate([ + property(cc.AudioClip) + ], AudioManager.prototype, "zhuan2", void 0); + AudioManager = AudioManager_1 = __decorate([ + ccclass + ], AudioManager); + return AudioManager; +}(cc.Component)); +exports.default = AudioManager; +; +// export { AudioManager }; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXE11c2ljXFxBdWRpb01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRU0sSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUM7SUFBMEMsZ0NBQVk7SUFBdEQ7UUFBQSxxRUF3UEM7UUF0UEcsTUFBTTtRQUVOLG1CQUFhLEdBQWlCLElBQUksQ0FBQztRQUduQyxhQUFPLEdBQWlCLElBQUksQ0FBQztRQUU3QixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixXQUFLLEdBQWlCLElBQUksQ0FBQztRQUUzQixTQUFHLEdBQWlCLElBQUksQ0FBQztRQUV6QixVQUFJLEdBQWlCLElBQUksQ0FBQztRQUUxQixlQUFTLEdBQWlCLElBQUksQ0FBQztRQUUvQixrQkFBWSxHQUFpQixJQUFJLENBQUM7UUFFbEMsWUFBTSxHQUFpQixJQUFJLENBQUM7UUFFNUIsWUFBTSxHQUFpQixJQUFJLENBQUM7O0lBNk5oQyxDQUFDO3FCQXhQb0IsWUFBWTtJQXdDN0IsNkJBQU0sR0FBTjtRQUNJLElBQUksY0FBWSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQUU7WUFDaEMsY0FBWSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7WUFDOUIsRUFBRSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDekM7YUFDSTtZQUNELE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUks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Qzt1REFDWTtJQUduQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2lEQUNNO0lBRTdCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7NkNBQ0U7SUFFekI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs4Q0FDRztJQUUxQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO21EQUNRO0lBRS9CO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7K0NBQ0k7SUFFM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQzs2Q0FDRTtJQUV6QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDOzhDQUNHO0lBRTFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7bURBQ1E7SUFFL0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQztzREFDVztJQUVsQztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDO2dEQUNLO0lBRTVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0RBQ0s7SUEzQlgsWUFBWTtRQURoQyxPQUFPO09BQ2EsWUFBWSxDQXdQaEM7SUFBRCxtQkFBQztDQXhQRCxBQXdQQyxDQXhQeUMsRUFBRSxDQUFDLFNBQVMsR0F3UHJEO2tCQXhQb0IsWUFBWTtBQXdQaEMsQ0FBQztBQUVGLDJCQUEyQiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEF1ZGlvTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICAvL+iDjOaZr+mfs+S5kFxyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGF1ZGlvR2FtZUJnbTA6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIHhpYW9jaHU6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxyXG4gICAgaGl0OiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGRvd246IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxyXG4gICAgZmFuZ3hpYW5nOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGJ1aWxkOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIHdpbjogY2MuQXVkaW9DbGlwID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXHJcbiAgICBsb3NlOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIGFubml1X0JpZzogY2MuQXVkaW9DbGlwID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5BdWRpb0NsaXApXHJcbiAgICBhbm5pdV9saXR0bGU6IGNjLkF1ZGlvQ2xpcCA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuQXVkaW9DbGlwKVxyXG4gICAgemh1YW4xOiBjYy5BdWRpb0NsaXAgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLkF1ZGlvQ2xpcClcclxuICAgIHpodWFuMjogY2MuQXVkaW9DbGlwID0gbnVsbDtcclxuXHJcbiAgICBtQXVkaW9NYXA6IHt9O1xyXG4gICAgYmdNdXNpY1ZvbHVtZTogbnVtYmVyO1xyXG4gICAgZWZmZWN0TXVzaWNWb2x1bWU6IG51bWJlcjtcclxuICAgIG1NdXNpY1N3aXRjaDogbnVtYmVyO1xyXG4gICAgbUVmZmVjdFN3aXRjaDogbnVtYmVyO1xyXG4gICAgYnJpY2tTb3VuZDogYW55O1xyXG4gICAgcmV3YXJkOiBib29sZWFuO1xyXG4gICAgZmluaXNoOiBib29sZWFuO1xyXG4gICAgcmV3YXJkQ291bnQ6IG51bWJlcjtcclxuICAgIG1NdXNpY0tleTogYW55O1xyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICBpZiAoQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5faW5zdGFuY2UgPSB0aGlzO1xyXG4gICAgICAgICAgICBjYy5nYW1lLmFkZFBlcnNpc3RSb290Tm9kZSh0aGlzLm5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJld2FyZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZmluaXNoID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5yZXdhcmRDb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5jdG9yKCk7XHJcblxyXG4gICAgICAgIHRoaXMucHJlbG9hZCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGN0b3IgKCkge1xyXG4gICAgICAgIHRoaXMubUF1ZGlvTWFwID0ge307XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6buY6K6k6Z+z6YeP5aSn5bCPXHJcbiAgICAgICAgICogQHR5cGUge251bWJlcn1cclxuICAgICAgICAgKi9cclxuICAgICAgICB0aGlzLmJnTXVzaWNWb2x1bWUgPSAwLjE7XHJcbiAgICAgICAgdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZSA9IDE7XHJcblxyXG4gICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMTtcclxuICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxO1xyXG4gICAgfVxyXG4gICAgcGxheSAoYXVkaW9Tb3VyY2UsIGxvb3AsIGNhbGxiYWNrLCBpc0JnTXVzaWMpIHtcclxuICAgICAgICAvLyBpZiAoaXNCZ011c2ljICYmICF0aGlzLm1NdXNpY1N3aXRjaCkgcmV0dXJuO1xyXG4gICAgICAgIC8vIGlmICghaXNCZ011c2ljICYmICF0aGlzLm1FZmZlY3RTd2l0Y2gpIHJldHVybjtcclxuICAgICAgICB2YXIgdm9sdW1lID0gaXNCZ011c2ljID8gdGhpcy5iZ011c2ljVm9sdW1lIDogdGhpcy5lZmZlY3RNdXNpY1ZvbHVtZTtcclxuXHJcbiAgICAgICAgLy8gaWYgKGNjLnN5cy5pc0Jyb3dzZXIpIHtcclxuICAgICAgICAgICAgLy8gaWYoYXVkaW9Tb3VyY2UgPT0gdGhpcy5icmlja1NvdW5kKXtcclxuICAgICAgICAgICAgLy8gICAgIHZvbHVtZSA9IDAuMTtcclxuICAgICAgICAgICAgLy8gfSBcclxuICAgICAgICAgICAgdm9sdW1lID0gMTtcclxuICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RWZmZWN0c1ZvbHVtZSgxKTtcclxuICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0TXVzaWNWb2x1bWUoMSk7XHJcbiAgICAgICAgICAgIGlmKGF1ZGlvU291cmNlLm5hbWUgPT0gXCJsb3NlXCIpe1xyXG4gICAgICAgICAgICAgICAgY2MuYXVkaW9FbmdpbmUuc2V0RWZmZWN0c1ZvbHVtZSgwLjUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRFZmZlY3RzVm9sdW1lKDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBjb250ZXh0ID0gY2MuYXVkaW9FbmdpbmUucGxheUVmZmVjdChhdWRpb1NvdXJjZSwgbG9vcCk7XHJcbiAgICAgICAgICAgIGlmIChjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICBjYy5hdWRpb0VuZ2luZS5zZXRGaW5pc2hDYWxsYmFjayhjb250ZXh0LCBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9LmJpbmQodGhpcykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGNjLnd3eC5PdXRQdXQubG9nKCdwbGF5IGF1ZGlvIGVmZmVjdCBpc0Jyb3dzZXI6ICcgKyBjb250ZXh0LnNyYyk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLm1BdWRpb01hcFthdWRpb1NvdXJjZV0gPSBjb250ZXh0O1xyXG4gICAgICAgICAgICByZXR1cm4gYXVkaW9Tb3VyY2U7XHJcbiAgICAgICAgLy8gfSBlbHNlIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIGF1ZGlvU291cmNlO1xyXG4gICAgICAgIC8vIH1cclxuICAgIH1cclxuXHJcbiAgICBzYXZlICgpIHtcclxuICAgICAgICAvLyBjYy53d3guU3RvcmFnZS5zZXRJdGVtKGNjLnd3eC5TdG9yYWdlLktleV9TZXR0aW5nX011c2ljX1ZvbHVtZSwgdGhpcy5tTXVzaWNTd2l0Y2gpO1xyXG4gICAgICAgIC8vIGNjLnd3eC5TdG9yYWdlLnNldEl0ZW0oY2Mud3d4LlN0b3JhZ2UuS2V5X1NldHRpbmdfRWZmZWN0X1ZvbHVtZSwgdGhpcy5tRWZmZWN0U3dpdGNoKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzdGF0aWMgZ2V0IEluc3RhbmNlKClcclxuICAgIC8vIHtcclxuICAgIC8vICAgICBpZiAodGhpcy5faW5zdGFuY2UgPT0gbnVsbClcclxuICAgIC8vICAgICB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IEF1ZGlvTWFuYWdlcigpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgcHJlbG9hZCAoKSB7XHJcbiAgICAgICAgaWYgKCEoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpKSB7IHJldHVybjsgfVxyXG5cclxuICAgICAgICB2YXIgbXVzaWNzID0gW1xyXG4gICAgICAgICAgICB0aGlzLmF1ZGlvR2FtZUJnbTAsXHJcbiAgICAgICAgXTtcclxuICAgICAgICBtdXNpY3MuZm9yRWFjaChmdW5jdGlvbihwYXRoKSB7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBnZXRBdWRpb011c2ljU3dpdGNoKClcclxuICAgIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tTXVzaWNTd2l0Y2g7XHJcblxyXG4gICAgfVxyXG4gICAgZ2V0QXVkaW9FZmZlY3RTd2l0Y2goKVxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1FZmZlY3RTd2l0Y2g7XHJcbiAgICB9XHJcbiAgICB0cnVuQXVkaW9Tb3VuZChvbilcclxuICAgIHtcclxuICAgICAgICB0aGlzLnN3aXRjaE11c2ljKG9uKTtcclxuICAgICAgICB0aGlzLnN3aXRjaEVmZmVjdChvbilcclxuICAgIH1cclxuICAgIHN3aXRjaE11c2ljIChvbikge1xyXG4gICAgICAgIGlmICh0aGlzLm1NdXNpY1N3aXRjaCAhPSAob24/MTowKSlcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMubU11c2ljU3dpdGNoID0gMS10aGlzLm1NdXNpY1N3aXRjaDtcclxuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG9uKVxyXG4gICAgICAgIHtcclxuICAgICAgICAgICAgdGhpcy5wbGF5TXVzaWNHYW1lKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2VcclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgc3dpdGNoRWZmZWN0IChvbikge1xyXG4gICAgICAgIGlmICh0aGlzLm1FZmZlY3RTd2l0Y2ggIT0gKG9uPzE6MCkpe1xyXG4gICAgICAgICAgICB0aGlzLm1FZmZlY3RTd2l0Y2ggPSAxLXRoaXMubUVmZmVjdFN3aXRjaDtcclxuICAgICAgICAgICAgLy8gdGhpcy5zYXZlKCk7XHJcblxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uSGlkZSAoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucGF1c2VBbGwoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblNob3cgKCkge1xyXG4gICAgICAgIGNjLmF1ZGlvRW5naW5lLnJlc3VtZUFsbCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5pKt5pS+6Z+z5pWIXHJcbiAgICBwbGF5RWZmZWN0KG5hbWUsY2FsbGJhY2spe1xyXG4gICAgICAgIGlmKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3Blbil7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpc1tuYW1lXSlcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGxheSh0aGlzW25hbWVdLCBmYWxzZSxjYWxsYmFjayx0aGlzLm1FZmZlY3RTd2l0Y2gpO1xyXG4gICAgfVxyXG4gICAgcGxheU11c2ljIChrZXksIGNhbGxiYWNrLCBsb29wKSB7XHJcbiAgICAgICAgaWYoIWNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4pe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxvb3AgPSB0eXBlb2YgbG9vcCA9PSAndW5kZWZpbmVkJyAgfHwgbG9vcCA/IHRydWUgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIHRoaXMubU11c2ljS2V5ID0gdGhpcy5wbGF5KGtleSwgbG9vcCwgY2FsbGJhY2ssIHRydWUpO1xyXG5cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5ri45oiP6IOM5pmv6Z+z5LmQXHJcbiAgICAgKi9cclxuICAgIHBsYXlNdXNpY0dhbWUgKCkge1xyXG4gICAgICAgIHRoaXMuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgdGhpcy5wbGF5TXVzaWModGhpcy5hdWRpb0dhbWVCZ20wLHt9LHRydWUpO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiDlgZzmraLog4zmma/pn7PkuZDmkq3mlL5cclxuICAgICAqL1xyXG4gICAgc3RvcE11c2ljICgpIHtcclxuICAgICAgICAvLyBjYy53d3guT3V0UHV0LmxvZygnc3RvcE11c2ljIGF1ZGlvIGVmZmVjdCB3eDogJyArIHRoaXMubU11c2ljS2V5KTtcclxuICAgICAgICBjYy5hdWRpb0VuZ2luZS5zdG9wQWxsKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmgaLlpI3ooqvmmoLlgZznmoTog4zmma/pn7PkuZDmkq3mlL5cclxuICAgICAqL1xyXG4gICAgcmVzdW1lTXVzaWMgKCkge1xyXG4gICAgICAgIC8vIOiwg+eUqCBjYy5hdWRpb0VuZ2luZSDnmoQgcmVzdW1lTXVzaWMg5pa55rOV5oGi5aSN6Z+z5LmQ5pKt5pS+XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUucmVzdW1lTXVzaWMoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgKiDmuLjmiI/lvIDlp4vpn7PmlYhcclxuICAgICpcclxuICAgICovXHJcbiAgICBwbGF5R2FtZVN0YXJ0KClcclxuICAgIHtcclxuICAgIFxyXG4gICAgfVxyXG4gICAgLypcclxuICAgICog5aSx6LSl55qE5ri45oiP57uT5p2fXHJcbiAgICAqL1xyXG4gICAgcGxheUdhbWVPdmVyKClcclxuICAgIHtcclxuXHJcbiAgICB9XHJcbiAgICAvKlxyXG4gICAgICAgICog5oiQ5Yqf55qE5ri45oiP57uT5p2fXHJcbiAgICAgICAgKi9cclxuICAgIHBsYXlHYW1lUmVzdWx0RmFpbGVkKClcclxuICAgIHtcclxuXHJcbiAgICB9XHJcbiAgICAvKlxyXG4gICAgKiDmiJDlip/nmoTmuLjmiI/nu5PmnZ9cclxuICAgICovXHJcbiAgICBwbGF5R2FtZVJlc3VsdFN1Y2Nlc3MoKVxyXG4gICAge1xyXG5cclxuICAgIH1cclxuICAgIC8qKlxyXG4gICAgICog5oql6K2m55qE6Z+z5pWIXHJcbiAgICAgKi9cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaMiemSrlxyXG4gICAgICovXHJcbiAgICBwbGF5QXVkaW9CdXR0b24gKCkge1xyXG4gICAgICAgIC8vIHJldHVybiB0aGlzLnBsYXkodGhpcy5hdWRpb0J1dHRvbkNsaWNrLCBmYWxzZSxudWxsLHRoaXMubUVmZmVjdFN3aXRjaCk7XHJcbiAgICB9XHJcbn07XHJcblxyXG4vLyBleHBvcnQgeyBBdWRpb01hbmFnZXIgfTtcclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Config/GameConfig.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'c5692vnhwNF5J9nI7VNKQNW', 'GameConfig'); +// Script/module/Config/GameConfig.ts + +"use strict"; +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GameConfig = void 0; +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var GameConfig = /** @class */ (function () { + function GameConfig() { + } + GameConfig_1 = GameConfig; + Object.defineProperty(GameConfig, "Instance", { + //游戏内信息 + get: function () { + if (this._instance == null) { + this._instance = new GameConfig_1(); + } + return this._instance; + }, + enumerable: false, + configurable: true + }); + //getSeedRandom + GameConfig.init = function (Authentication) { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.init(); + } + this.TA = null; + this.CLICK_init(); + this.GM_INFO_init(); + this.LEVEL_INFO_init(false, 0); + var self = this; + //GAME_DATA 废弃了,暂时不删除以防后面修改回 一整局传一次 + this.GAME_DATA = []; + // if(!Authentication) self.Authentication(); + }; + GameConfig.generateUUID = function () { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { + var r = Math.random() * 16 | 0; + var v = c === 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); + }; + // 版本比较函数 + GameConfig.compareVersion = function (v1, v2) { + var arr1 = v1.split('.'); + var arr2 = v2.split('.'); + var len = Math.max(arr1.length, arr2.length); + for (var i = 0; i < len; i++) { + var num1 = parseInt(arr1[i] || '0', 10); + var num2 = parseInt(arr2[i] || '0', 10); + if (num1 > num2) { + return 1; + } + else if (num1 < num2) { + return -1; + } + } + return 0; + }; + GameConfig.GM_INFO_SET = function (key, value) { + this.GM_INFO[key] = value; + }; + GameConfig.CLICK_init = function () { + this.CLICK_DATA = + { + type: 1, + success: false, + round: 0, + getScore: 0, + cumulativeScore: 0, + mapId: "", + difficulty: 0, + optimizedSteps: 0, + usedSteps: 0, + stepList: [], + startTime: -1, + submitTime: -1, + duration: 0, + drawingBack: 0, + drawingReset: 0, + timer: 0 //测评倒计时剩余时间 去秒 + }; + }; + GameConfig.CLICK_SET = function (key, value) { + this.CLICK_DATA[key] = value; + }; + //数据备用 + GameConfig.GM_INFO_init = function () { + var _this = this; + this.GM_INFO = { + // isEnd: false, + mean_Time: 0, + hp: 5, + review: 0, + currSeed: 200000, + openid: "", + gameId: "100001", + userId: 0, + scode: "", + username: "user", + useravatar: "", + guide: true, + url: "https://api.sparkus.cn", + coin: 0, + success: false, + matchId: null, + gameState: false, + custom: 0, + round: 0, + level: 0, + stepTimeList: 0, + successList: [], + first: false, + score: 0, + scale: 1, + min_Steps: 0, + min_Time: 0, + freezeAmount: 0, + hammerAmount: 0, + magicAmount: 0, + musicOpen: true, + effectOpen: true, + vibrateOpen: true, + }; + // this.setCode(this.getKey("scode")); + // this.GM_INFO.level = 0; + cc.resources.load("Json/NEW_LEVEL", function (err, res) { + if (err) { + console.error("加载 NEW_LEVEL.JSON 失败:", err); + return; + } + var newLevelData = res.json; + _this.NEW_LEVEL = newLevelData.NEW_LEVEL; + // 可以根据需求对 newLevelData 进行处理 + // //console.log("NEW_LEVEL.JSON 加载成功:", newLevelData); + }); + }; + GameConfig.LEVEL_INFO_init = function (type, time) { + // 示例 围墙会根据缺的地块自动生成 + // 带缺口 {"id":"1006","map":[10,11],"gap":[cc.v2(4,9),cc.v2(5,9)]}, + // 带升降地块 {"id":"1004","map":[7,8],"risefall":[{pos:cc.v2(5,4),color:2},{pos:cc.v2(5,5),color:5}]}, + // 如果普通的就 {"id":"1001","map":[6,7]}, 这个样子就可以了 + var self = this; + if ((cc.fx.GameConfig.GM_INFO.level) > 156) { + cc.fx.GameConfig.GM_INFO.level = 156; + } + var name = "Json/level" + (cc.fx.GameConfig.GM_INFO.level + 1); + // //console.log("关卡名称:",name); + // name = "Json/level" + 68; + // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); + cc.resources.load(name, function (err, res) { + if (err) { + cc.fx.GameTool.addLevel(); + self.LEVEL_INFO_init(type, time); + return; + } + var jsonData = res.json; + self.BLOCK_INFO = jsonData["BLOCK_INFO"]; + self.LEVEL_INFO = jsonData["LEVEL_INFO"]; + self.WALL_INFO = jsonData["WALL_INFO"]; + // //console.log("配置加载完成"); + if (type) { + cc.director.preloadScene("GameScene", function () { + if (time == 0) + cc.director.loadScene("GameScene"); + else { + setTimeout(function () { + cc.director.loadScene("GameScene"); + }, time); + } + }); + } + }); + //道具位置信息 + this.PROP_INFO = [ + { + "pos1": { "x": -66, "y": 60, "z": 0 }, + "pos2": { "x": -19, "y": 36, "z": 0 }, + "pos3": { "x": -34.362, "y": 13.246, "z": 0 }, + "pos4": { "x": -17, "y": 12, "z": 0 }, + "pos5": { "x": -85, "y": 70, "z": 0 }, + "pos6": { "x": -5, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": -126, "y": 61, "z": 0 }, + "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, + "pos3": { "x": -94.792, "y": 21.675, "z": 0 }, + "pos4": { "x": -20, "y": 13, "z": 0 }, + "pos5": { "x": -140, "y": 68, "z": 0 }, + "pos6": { "x": -2, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -67, "y": 122, "z": 0 }, + "pos2": { "x": -20, "y": 94, "z": 0 }, + "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, + "pos4": { "x": -14, "y": 24, "z": 0 }, + "pos5": { "x": -84, "y": 128, "z": 0 }, + "pos6": { "x": -5, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": -178, "y": 61, "z": 0 }, + "pos2": { "x": -34.792, "y": 37.675, "z": 0 }, + "pos3": { "x": -150, "y": 23.675, "z": 0 }, + "pos4": { "x": -22, "y": 16, "z": 0 }, + "pos5": { "x": -200, "y": 67, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -63, "y": 178, "z": 0 }, + "pos2": { "x": -17.792, "y": 166.675, "z": 0 }, + "pos3": { "x": -31.792, "y": 33.675, "z": 0 }, + "pos4": { "x": -14, "y": 37, "z": 0 }, + "pos5": { "x": -78, "y": 182, "z": 0 }, + "pos6": { "x": 0, "y": 2, "z": 0 }, + }, + { + "pos1": { "x": -123, "y": 124, "z": 0 }, + "pos2": { "x": -25.792, "y": 99.675, "z": 0 }, + "pos3": { "x": -97.792, "y": 27.675, "z": 0 }, + "pos4": { "x": -27, "y": 19, "z": 0 }, + "pos5": { "x": -135, "y": 127, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -64, "y": 178, "z": 0 }, + "pos2": { "x": -24.792, "y": 275.675, "z": 0 }, + "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, + "pos4": { "x": -7, "y": 39, "z": 0 }, + "pos5": { "x": -77, "y": 188, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -178, "y": 186, "z": 0 }, + "pos2": { "x": -31.792, "y": 163.675, "z": 0 }, + "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, + "pos4": { "x": -18, "y": 30, "z": 0 }, + "pos5": { "x": -200, "y": 192, "z": 0 }, + "pos6": { "x": 0, "y": 5, "z": 0 }, + }, + { + "pos1": { "x": -186, "y": 178, "z": 0 }, + "pos2": { "x": -25.792, "y": 38.675, "z": 0 }, + "pos3": { "x": -153.792, "y": 34.675, "z": 0 }, + "pos4": { "x": -23, "y": 14, "z": 0 }, + "pos5": { "x": -200, "y": 185, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -183, "y": 64, "z": 0 }, + "pos2": { "x": -37.792, "y": 37.675, "z": 0 }, + "pos3": { "x": -36.792, "y": 26.675, "z": 0 }, + "pos4": { "x": -24, "y": 17, "z": 0 }, + "pos5": { "x": -212, "y": 74, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -65, "y": 177, "z": 0 }, + "pos2": { "x": 93.208, "y": 276.675, "z": 0 }, + "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, + "pos4": { "x": 3, "y": 31, "z": 0 }, + "pos5": { "x": -80, "y": 190, "z": 0 }, + "pos6": { "x": 0, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": 58, "y": 179, "z": 0 }, + "pos2": { "x": 205.225, "y": 154.034, "z": 0 }, + "pos3": { "x": -29.642, "y": 25.691, "z": 0 }, + "pos4": { "x": 7.218, "y": 29.765, "z": 0 }, + "pos5": { "x": 45, "y": 185, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -68, "y": 182, "z": 0 }, + "pos2": { "x": -25.792, "y": 37.675, "z": 0 }, + "pos3": { "x": -35.792, "y": 33.675, "z": 0 }, + "pos4": { "x": -14, "y": 12, "z": 0 }, + "pos5": { "x": -82, "y": 190, "z": 0 }, + "pos6": { "x": -2, "y": 1, "z": 0 }, + }, + { + "pos1": { "x": -184, "y": 62, "z": 0 }, + "pos2": { "x": -35.792, "y": 36.675, "z": 0 }, + "pos3": { "x": -271.792, "y": 24.675, "z": 0 }, + "pos4": { "x": -17, "y": 20, "z": 0 }, + "pos5": { "x": -200, "y": 72, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -62, "y": 175, "z": 0 }, + "pos2": { "x": 87.208, "y": 164.675, "z": 0 }, + "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, + "pos4": { "x": -6, "y": 24, "z": 0 }, + "pos5": { "x": -79, "y": 172, "z": 0 }, + "pos6": { "x": 0, "y": 5, "z": 0 }, + }, + { + "pos1": { "x": -184, "y": 72, "z": 0 }, + "pos2": { "x": -33.792, "y": 38.675, "z": 0 }, + "pos3": { "x": -154.792, "y": 29.675, "z": 0 }, + "pos4": { "x": -29, "y": 16, "z": 0 }, + "pos5": { "x": -201, "y": 85, "z": 0 }, + "pos6": { "x": -1, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": -64, "y": 181, "z": 0 }, + "pos2": { "x": 95.208, "y": 155.675, "z": 0 }, + "pos3": { "x": -30.792, "y": 36.675, "z": 0 }, + "pos4": { "x": -12, "y": 32, "z": 0 }, + "pos5": { "x": -78, "y": 190, "z": 0 }, + "pos6": { "x": 0, "y": 3, "z": 0 }, + }, + { + "pos1": { "x": -65, "y": 178, "z": 0 }, + "pos2": { "x": -21.792, "y": 156.675, "z": 0 }, + "pos3": { "x": -31.792, "y": 37.675, "z": 0 }, + "pos4": { "x": -12, "y": 32, "z": 0 }, + "pos5": { "x": -78, "y": 188, "z": 0 }, + "pos6": { "x": 0, "y": 2, "z": 0 }, + }, + { + "pos1": { "x": -62, "y": 183, "z": 0 }, + "pos2": { "x": 88.208, "y": 162.675, "z": 0 }, + "pos3": { "x": -29.792, "y": 41.675, "z": 0 }, + "pos4": { "x": -12, "y": 18, "z": 0 }, + "pos5": { "x": -80, "y": 188, "z": 0 }, + "pos6": { "x": -4, "y": 2, "z": 0 }, + }, + { + "pos1": { "x": -67, "y": 80, "z": 0 }, + "pos2": { "x": -26.792, "y": 32.675, "z": 0 }, + "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, + "pos4": { "x": -12, "y": 18, "z": 0 }, + "pos5": { "x": -84, "y": 90, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -184, "y": 80, "z": 0 }, + "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, + "pos3": { "x": -155.792, "y": 25.675, "z": 0 }, + "pos4": { "x": -18, "y": 26, "z": 0 }, + "pos5": { "x": -196, "y": 96, "z": 0 }, + "pos6": { "x": 0, "y": 0, "z": 0 }, + }, + { + "pos1": { "x": -62, "y": 160, "z": 0 }, + "pos2": { "x": 95.208, "y": 158.675, "z": 0 }, + "pos3": { "x": -33.792, "y": 29.675, "z": 0 }, + "pos4": { "x": -18, "y": 26, "z": 0 }, + "pos5": { "x": -78, "y": 170, "z": 0 }, + "pos6": { "x": 0, "y": 2, "z": 0 }, + }, + { + "pos1": { "x": -68, "y": 160, "z": 0 }, + "pos2": { "x": -25.792, "y": 156.675, "z": 0 }, + "pos3": { "x": -35.792, "y": 27.675, "z": 0 }, + "pos4": { "x": -25, "y": 40, "z": 0 }, + "pos5": { "x": -82, "y": 170, "z": 0 }, + "pos6": { "x": -2, "y": 2, "z": 0 }, + } + ]; + // this.PROP_INFO = [{"pos1": {"x": -60,"y": 60,"z": 0},"pos2": {"x": -16.442,"y": 30,"z": 0},"pos3": {"x": -34.362,"y": 13.246,"z": 0},"pos4": {"x": -17,"y": 12,"z": 0}},{"pos1": {"x": -126,"y": 63,"z": 0},"pos2": {"x": -25.792,"y": 34.675,"z": 0},"pos3": {"x": -94.792,"y": 21.675,"z": 0},"pos4": {"x": -20,"y": 13,"z": 0}},{"pos1": {"x": -60,"y": 125,"z": 0},"pos2": {"x": -12.792,"y": 92.675,"z": 0},"pos3": {"x": -34.792,"y": 23.675,"z": 0},"pos4": {"x": -14,"y": 24,"z": 0}},{"pos1": {"x": -185,"y": 63,"z": 0},"pos2": {"x": -34.792,"y": 37.675,"z": 0},"pos3": {"x": -154.792,"y": 23.675,"z": 0},"pos4": {"x": -22,"y": 16,"z": 0}},{"pos1": {"x": -57,"y": 178,"z": 0},"pos2": {"x": -17.792,"y": 166.675,"z": 0},"pos3": {"x": -31.792,"y": 33.675,"z": 0},"pos4": {"x": -14,"y": 37,"z": 0}},{"pos1": {"x": -123,"y": 127,"z": 0},"pos2": {"x": -25.792,"y": 99.675,"z": 0},"pos3": {"x": -97.792,"y": 27.675,"z": 0},"pos4": {"x": -27,"y": 19,"z": 0}},{"pos1": {"x": -62,"y": 181,"z": 0},"pos2": {"x": -24.792,"y": 275.675,"z": 0},"pos3": {"x": -31.792,"y": 35.675,"z": 0},"pos4": {"x": -7,"y": 39,"z": 0}},{"pos1": {"x": -181,"y": 180,"z": 0},"pos2": {"x": -31.792,"y": 163.675,"z": 0},"pos3": {"x": -33.792,"y": 34.675,"z": 0},"pos4": {"x": -18,"y": 30,"z": 0}},{"pos1": {"x": -182,"y": 182,"z": 0},"pos2": {"x": -25.792,"y": 38.675,"z": 0},"pos3": {"x": -153.792,"y": 34.675,"z": 0},"pos4": {"x": -23,"y": 14,"z": 0}},{"pos1": {"x": -186,"y": 61,"z": 0},"pos2": {"x": -37.792,"y": 37.675,"z": 0},"pos3": {"x": -36.792,"y": 26.675,"z": 0},"pos4": {"x": -24,"y": 17,"z": 0}},{"pos1": {"x": -62,"y": 177,"z": 0},"pos2": {"x": 93.208,"y": 276.675,"z": 0},"pos3": {"x": -33.792,"y": 34.675,"z": 0},"pos4": {"x": 3,"y": 31,"z": 0}},{"pos1": {"x": 58,"y": 179,"z": 0},"pos2": {"x": 205.225,"y": 154.034,"z": 0},"pos3": {"x": -29.642,"y": 25.691,"z": 0},"pos4": {"x": 7.218,"y": 29.765,"z": 0}},{"pos1": {"x": -57,"y": 182,"z": 0},"pos2": {"x": -25.792,"y": 37.675,"z": 0},"pos3": {"x": -35.792,"y": 33.675,"z": 0},"pos4": {"x": -14,"y": 12,"z": 0}},{"pos1": {"x": -180,"y": 62,"z": 0},"pos2": {"x": -35.792,"y": 36.675,"z": 0},"pos3": {"x": -271.792,"y": 24.675,"z": 0},"pos4": {"x": -17,"y": 20,"z": 0}},{"pos1": {"x": -62,"y": 178,"z": 0},"pos2": {"x": 87.208,"y": 164.675,"z": 0},"pos3": {"x": -31.792,"y": 35.675,"z": 0},"pos4": {"x": -6,"y": 24,"z": 0}},{"pos1": {"x": -176,"y": 60,"z": 0},"pos2": {"x": -33.792,"y": 38.675,"z": 0},"pos3": {"x": -154.792,"y": 29.675,"z": 0},"pos4": {"x": -29,"y": 16,"z": 0}},{"pos1": {"x": -60,"y": 181,"z": 0},"pos2": {"x": 95.208,"y": 155.675,"z": 0},"pos3": {"x": -30.792,"y": 36.675,"z": 0},"pos4": {"x": -12,"y": 32,"z": 0}},{"pos1": {"x": -63,"y": 178,"z": 0},"pos2": {"x": -21.792,"y": 156.675,"z": 0},"pos3": {"x": -31.792,"y": 37.675,"z": 0},"pos4": {"x": -12,"y": 32,"z": 0}},{"pos1": {"x": -60,"y": 183,"z": 0},"pos2": {"x": 88.208,"y": 162.675,"z": 0},"pos3": {"x": -29.792,"y": 41.675,"z": 0},"pos4": {"x": -12,"y": 18,"z": 0}},{"pos1": {"x": -64,"y": 58,"z": 0},"pos2": {"x": -26.792,"y": 32.675,"z": 0},"pos3": {"x": -34.792,"y": 23.675,"z": 0},"pos4": {"x": -12,"y": 18,"z": 0}},{"pos1": {"x": -184,"y": 62,"z": 0},"pos2": {"x": -25.792,"y": 34.675,"z": 0},"pos3": {"x": -155.792,"y": 25.675,"z": 0},"pos4": {"x": -18,"y": 26,"z": 0}},{"pos1": {"x": -57,"y": 190,"z": 0},"pos2": {"x": 95.208,"y": 158.675,"z": 0},"pos3": {"x": -33.792,"y": 29.675,"z": 0},"pos4": {"x": -18,"y": 26,"z": 0}},{"pos1": {"x": -71,"y": 184,"z": 0},"pos2": {"x": -25.792,"y": 156.675,"z": 0},"pos3": {"x": -35.792,"y": 27.675,"z": 0},"pos4": {"x": -25,"y": 40,"z": 0}}]; + }; + GameConfig.setCode = function (code) { + this.GM_INFO.scode = code; + }; + GameConfig.getKey = function (key) { + // var reg = new RegExp('(^|&)' + key + '=([^&]*)(&|$)', 'i'); + // var r = window.location.search.substring(1).match(reg); + // if (r != null) { + // return unescape(r[2]); + // } + return ""; + }; + GameConfig.Authentication = function () { + cc.fx.GameTool.Authentication(); + }; + var GameConfig_1; + //所有控制信息都通过GameAppStart内控制 + GameConfig._instance = null; + GameConfig = GameConfig_1 = __decorate([ + ccclass('GameConfig') + ], GameConfig); + return GameConfig; +}()); +exports.GameConfig = GameConfig; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENvbmZpZ1xcR2FtZUNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJTSxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUU1QztJQUFBO0lBb2VBLENBQUM7bUJBcGVZLFVBQVU7SUF3Rm5CLHNCQUFXLHNCQUFRO1FBRm5CLE9BQU87YUFFUDtZQUVJLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLEVBQzFCO2dCQUNJLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxZQUFVLEVBQUUsQ0FBQzthQUNyQztZQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQixDQUFDOzs7T0FBQTtJQUNELGVBQWU7SUFDUixlQUFJLEdBQVgsVUFBWSxjQUFjO1FBQ2YsWUFBWTtRQUNuQixJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzFDLFlBQVk7WUFDWixFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1NBR25CO1FBRUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDZixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUNoQixDQUFBO1FBR0QsNkNBQTZDO0lBQ2pELENBQUM7SUFJTSx1QkFBWSxHQUFuQjtRQUNJLE9BQU8sc0NBQXNDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFTLENBQUM7WUFDckUsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDakMsSUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDMUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFNBQVM7SUFDRix5QkFBYyxHQUFyQixVQUFzQixFQUFVLEVBQUUsRUFBVTtRQUN4QyxJQUFNLElBQUksR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzNCLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0IsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUUvQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzFCLElBQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQU0sSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQUksSUFBSSxHQUFHLElBQUksRUFBRTtnQkFDYixPQUFPLENBQUMsQ0FBQzthQUNaO2lCQUFNLElBQUksSUFBSSxHQUFHLElBQUksRUFBRTtnQkFDcEIsT0FBTyxDQUFDLENBQUMsQ0FBQzthQUNiO1NBQ0o7UUFFRCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFTSxzQkFBVyxHQUFsQixVQUFtQixHQUFHLEVBQUMsS0FBSztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUM5QixDQUFDO0lBQ00scUJBQVUsR0FBakI7UUFDSSxJQUFJLENBQUMsVUFBVTtZQUNmO2dCQUNJLElBQUksRUFBRSxDQUFDO2dCQUNQLE9BQU8sRUFBRSxLQUFLO2dCQUNkLEtBQUssRUFBRSxDQUFDO2dCQUNSLFFBQVEsRUFBRSxDQUFDO2dCQUNYLGVBQWUsRUFBRSxDQUFDO2dCQUNsQixLQUFLLEVBQUUsRUFBRTtnQkFDVCxVQUFVLEVBQUUsQ0FBQztnQkFDYixjQUFjLEVBQUUsQ0FBQztnQkFDakIsU0FBUyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxFQUFFLEVBQUU7Z0JBQ1osU0FBUyxFQUFDLENBQUMsQ0FBQztnQkFDWixVQUFVLEVBQUMsQ0FBQyxDQUFDO2dCQUNiLFFBQVEsRUFBQyxDQUFDO2dCQUNWLFdBQVcsRUFBQyxDQUFDO2dCQUNiLFlBQVksRUFBQyxDQUFDO2dCQUNkLEtBQUssRUFBRSxDQUFDLENBQVcsY0FBYzthQUVwQyxDQUFBO0lBQ0wsQ0FBQztJQUVNLG9CQUFTLEdBQWhCLFVBQWlCLEdBQUcsRUFBQyxLQUFLO1FBQ3RCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNO0lBQ0MsdUJBQVksR0FBbkI7UUFBQSxpQkFtREM7UUFsREcsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNYLG9CQUFvQjtZQUNwQixTQUFTLEVBQUUsQ0FBQztZQUNaLEVBQUUsRUFBRSxDQUFDO1lBQ0wsTUFBTSxFQUFDLENBQUM7WUFDUixRQUFRLEVBQUUsTUFBTTtZQUNoQixNQUFNLEVBQUMsRUFBRTtZQUNULE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLEVBQUMsTUFBTTtZQUNmLFVBQVUsRUFBQyxFQUFFO1lBQ2IsS0FBSyxFQUFFLElBQUk7WUFDWCxHQUFHLEVBQUUsd0JBQXdCO1lBQzdCLElBQUksRUFBRSxDQUFDO1lBQ1AsT0FBTyxFQUFFLEtBQUs7WUFDZCxPQUFPLEVBQUUsSUFBSTtZQUNiLFNBQVMsRUFBQyxLQUFLO1lBQ2YsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUMsQ0FBQztZQUNQLEtBQUssRUFBRSxDQUFDO1lBQ1IsWUFBWSxFQUFDLENBQUM7WUFDZCxXQUFXLEVBQUMsRUFBRTtZQUNkLEtBQUssRUFBQyxLQUFLO1lBQ1gsS0FBSyxFQUFDLENBQUM7WUFDUCxLQUFLLEVBQUUsQ0FBQztZQUNSLFNBQVMsRUFBQyxDQUFDO1lBQ1gsUUFBUSxFQUFDLENBQUM7WUFDVixZQUFZLEVBQUMsQ0FBQztZQUNkLFlBQVksRUFBQyxDQUFDO1lBQ2QsV0FBVyxFQUFDLENBQUM7WUFDYixTQUFTLEVBQUUsSUFBSTtZQUNmLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFdBQVcsRUFBRSxJQUFJO1NBRXBCLENBQUM7UUFDRixzQ0FBc0M7UUFDdEMsMEJBQTBCO1FBRzFCLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFVBQUMsR0FBUSxFQUFFLEdBQWlCO1lBQzVELElBQUksR0FBRyxFQUFFO2dCQUNMLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUJBQXVCLEVBQUUsR0FBRyxDQUFDLENBQUM7Z0JBQzVDLE9BQU87YUFDVjtZQUNELElBQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDOUIsS0FBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDO1lBQ3hDLDRCQUE0QjtZQUM1Qix1REFBdUQ7UUFDM0QsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBR00sMEJBQWUsR0FBdEIsVUFBdUIsSUFBSSxFQUFDLElBQUk7UUFDNUIsMkJBQTJCO1FBQzNCLHVFQUF1RTtRQUN2RSxvR0FBb0c7UUFDcEcsOENBQThDO1FBQzlDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUdoQixJQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsRUFBQztZQUN0QyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztTQUN4QztRQUNELElBQUksSUFBSSxHQUFHLFlBQVksR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUMsQ0FBQyxDQUFDLENBQUM7UUFFN0QsK0JBQStCO1FBQy9CLDRCQUE0QjtRQUM1QixzRkFBc0Y7UUFDdEYsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFVBQUMsR0FBUSxFQUFFLEdBQWlCO1lBQzVDLElBQUksR0FBRyxFQUFFO2dCQUNMLEVBQUUsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEMsT0FBTzthQUNWO1lBQ0QsSUFBSSxRQUFRLEdBQVcsR0FBRyxDQUFDLElBQUssQ0FBQztZQUNqQyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN2Qyw0QkFBNEI7WUFDNUIsSUFBRyxJQUFJLEVBQUM7Z0JBQ0osRUFBRSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFO29CQUNsQyxJQUFHLElBQUksSUFBSSxDQUFDO3dCQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO3lCQUM3Qzt3QkFDQSxVQUFVLENBQUM7NEJBQ1AsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7d0JBQ3ZDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztxQkFDWjtnQkFDTCxDQUFDLENBQUMsQ0FBQTthQUNMO1FBRVQsQ0FBQyxDQUFDLENBQUE7UUFHSCxRQUFRO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNYO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3RDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUN0QztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3BDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN2QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3JDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDOUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzNDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNwQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDdEMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2FBQ3RDO1lBQ0Q7Z0JBQ0ksTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtnQkFDckMsTUFBTSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDckM7WUFDRDtnQkFDSSxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM5QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUM3QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTthQUNyQztZQUNEO2dCQUNJLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUU7YUFDdEM7U0FDSixDQUFDO1FBQ0osNGdIQUE0Z0g7SUFDOWdILENBQUM7SUFJTSxrQkFBTyxHQUFkLFVBQWUsSUFBSTtRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRU0saUJBQU0sR0FBYixVQUFjLEdBQUc7UUFDYiw4REFBOEQ7UUFDOUQsMERBQTBEO1FBQzFELG1CQUFtQjtRQUNuQiw2QkFBNkI7UUFDN0IsSUFBSTtRQUNKLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUdNLHlCQUFjLEdBQXJCO1FBQ0ksRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDcEMsQ0FBQzs7SUFsZUQsMEJBQTBCO0lBQ1gsb0JBQVMsR0FBZ0IsSUFBSSxDQUFDO0lBRnBDLFVBQVU7UUFEdEIsT0FBTyxDQUFDLFlBQVksQ0FBQztPQUNULFVBQVUsQ0FvZXRCO0lBQUQsaUJBQUM7Q0FwZUQsQUFvZUMsSUFBQTtBQXBlWSxnQ0FBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBHYW1lVG9vbCB9IGZyb20gXCIuLi9Ub29sL0dhbWVUb29sXCI7XHJcblxyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuQGNjY2xhc3MoJ0dhbWVDb25maWcnKVxyXG5leHBvcnQgY2xhc3MgR2FtZUNvbmZpZyAge1xyXG4gICAgLy/miYDmnInmjqfliLbkv6Hmga/pg73pgJrov4dHYW1lQXBwU3RhcnTlhoXmjqfliLZcclxuICAgIHByaXZhdGUgc3RhdGljIF9pbnN0YW5jZSA6IEdhbWVDb25maWcgPSBudWxsO1xyXG5cclxuICAgIHN0YXRpYyBHQU1FX0RBVEE6IGFueVtdO1xyXG4gICAgLy/lhbPljaHmlbDmja5cclxuICAgIC8v55So5oi36ZyA6KaB5a2Y5YKo5Zyo5pys5Zyw55qE5pWw5o2u77yMIOmHkeW4ge+8jOWFs+WNoeetiee6p++8jOS9k+WKm+WAvOS7peWPiuaBouWkje+8jOmBk+WFt+aVsOmHj+OAglxyXG4gICAgXHJcblxyXG4gICAgc3RhdGljIENVU1RPTV9JTkZPOiB7XHJcbiAgICAgICAgbW92ZVNwZWVkOiBudW1iZXI7IC8v5rSq5bOw56e75Yqo6YCf5bqmXHJcbiAgICAgICAgd2FpdFRpbWU6IG51bWJlcjsgLy/mtKrls7DlhrLlh7vlgJLorqHml7ZcclxuICAgICAgICBmYXN0UGF0aDogbnVtYmVyOyAvL+acgOefrei3r+W+hFxyXG4gICAgfVtdO1xyXG4gICAgc3RhdGljIFRJTUVfSU5GTzoge1xyXG4gICAgICAgIHdhdGVyU3BlZWQ6IG51bWJlcltdOyAvL+a0quWzsOmAn+W6plxyXG4gICAgICAgIHRvdGFsVGltZTogbnVtYmVyOyAvL+a4uOaIj+aAu+aXtumVv1xyXG4gICAgICAgIHdhdGVyVGltZTogbnVtYmVyW107IC8v5rSq5bOw5p2l55qE5YCS6K6h5pe2XHJcbiAgICAgICAgcm9hZFNwZWVkOiBudW1iZXI7IC8v5rKz6YGT5L+u562R6YCf5bqmXHJcbiAgICAgICAgUmVpbmZvcmNlU3BlZWQ6IG51bWJlcjsgLy/liqDlm7rml7bpl7TpgJ/luqZcclxuICAgICAgICBYaV9Tb2lsU3BlZWQ6IG51bWJlcjtcclxuICAgIH07XHJcbiAgICAvL+eUqOS6juebm+aUvuWfi+eCueaVsOaNruS4iuS8oO+8jOavj+asoeS4iuS8oOWQjua4heepulxyXG4gICAgc3RhdGljIENMSUNLX0RBVEE6IHtcclxuICAgICAgICB0eXBlOiBudW1iZXI7IC8v5LiK5Lyg5pWw5o2u57G75Z6LXHJcbiAgICAgICAgc3VjY2VzczogYm9vbGVhbjsgLy/mraTlsYDmuLjmiI/mraPnoa7kuI7lkKZcclxuICAgICAgICByb3VuZDogbnVtYmVyOyAvL+WbnuWQiOaVsOi9ruasoVxyXG4gICAgICAgIGdldFNjb3JlOiBudW1iZXI7IC8v5pys6L2u5b6X5YiG77yM5aSx6LSl5Li6MOWIhlxyXG4gICAgICAgIGN1bXVsYXRpdmVTY29yZTogbnVtYmVyOyAvL+acrOWJp+a4uOaIj+aAu+iuoeW+l+WIhlxyXG4gICAgICAgIG1hcElkOiBzdHJpbmc7IC8v5Zyw5Zu+SURcclxuICAgICAgICBkaWZmaWN1bHR5OiBudW1iZXI7IC8v5Zyw5Zu+6Zq+5bqmXHJcbiAgICAgICAgb3B0aW1pemVkU3RlcHM6IG51bWJlcjsgLy/lhbPljaHmnIDnn63mraXmlbBcclxuICAgICAgICB1c2VkU3RlcHM6IG51bWJlcjsgLy/njqnlrrbkv67lu7rmgLvmraXmlbBcclxuICAgICAgICBzdGVwTGlzdDogYW55W107IC8vVeOAgUTjgIFM44CBUiAgIFgg5oGv5aOkICAgRiDliqDlm7pcclxuICAgICAgICBzdGFydFRpbWU6IG51bWJlcjsgLy/ku47muLjmiI/lvIDlp4vliLDnjqnlrrbmk43kvZznmoTnrKzkuIDmraXmiKrmraLml7bpl7QgIOWNleS9jeavq+enklxyXG4gICAgICAgIHN1Ym1pdFRpbWU6IG51bWJlcjsgLy/ku47nrKzkuIDmraXmk43kvZzliLDmj5DkuqTml7bpl7TvvIzlpoLmnpzmnKrmj5DkuqTkuLotMSDljZXkvY3mr6vnp5JcclxuICAgICAgICBkdXJhdGlvbjogbnVtYmVyOyAvL+a4uOaIj+aAu+eUqOaXtu+8iOaIquatouWIsOaPkOS6pO+8iSDljZXkvY3mr6vnp5JcclxuICAgICAgICBkcmF3aW5nQmFjazogbnVtYmVyOyAvL+WQjumAgOasoeaVsFxyXG4gICAgICAgIGRyYXdpbmdSZXNldDogbnVtYmVyOyAvL+a4heepuuasoeaVsFxyXG4gICAgICAgIHRpbWVyOiBudW1iZXI7ICAvL+a4uOaIj+WAkuiuoeaXtuWJqeS9meaXtumVvyDnp5JcclxuICAgIH07XHJcblxyXG4gICAgc3RhdGljIFRJUF9FUlI6IHN0cmluZ1tdOyAgIC8v5L+u562R5aSx6LSl6ZSZ6K+v5o+Q56S6XHJcblxyXG4gICAgc3RhdGljIEJMT0NLX0lORk86IHt9W11bXTtcclxuICAgIC8vc3RhdGljIFdBTExfSU5GTzogKHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHR5cGU6IG51bWJlcjsgc3BlY2lhbDogbnVtYmVyOyBsZW5ndGg6IG51bWJlcjsgfVtdIHwgeyBpZDogbnVtYmVyOyBudW06IG51bWJlcjsgYmxvY2s6IG51bWJlcjsgY29sb3I6IG51bWJlcjsgdHlwZTogbnVtYmVyOyBzcGVjaWFsOiBudW1iZXI7IH1bXSlbXTtcclxuICAgIHN0YXRpYyBMRVZFTF9JTkZPOiAoeyBpZDogc3RyaW5nOyBtYXA6IG51bWJlcltdOyByaXNlZmFsbD86IHVuZGVmaW5lZDsgZ2FwPzogdW5kZWZpbmVkOyB9IHwgeyBpZDogc3RyaW5nOyBtYXA6IG51bWJlcltdOyByaXNlZmFsbDogeyBwb3M6IGNjLlZlYzI7IGNvbG9yOiBudW1iZXI7IH1bXTsgZ2FwPzogdW5kZWZpbmVkOyB9IHwgeyBpZDogc3RyaW5nOyBtYXA6IG51bWJlcltdOyBnYXA6IGNjLlZlYzJbXTsgcmlzZWZhbGw/OiB1bmRlZmluZWQ7IH0pW107XHJcbiAgICBzdGF0aWMgV0FMTF9JTkZPOiAoKHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHNwZWNpYWw6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGxvY2s/OiB1bmRlZmluZWQ7IH0gfCB7IGlkOiBudW1iZXI7IG51bTogbnVtYmVyOyBibG9jazogbnVtYmVyOyBjb2xvcjogbnVtYmVyOyBzcGVjaWFsOiBudW1iZXI7IGxlbmd0aDogbnVtYmVyOyBsb2NrOiBib29sZWFuOyB9KVtdIHwgKHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHNwZWNpYWw6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGZyZWV6ZT86IHVuZGVmaW5lZDsgfSB8IHsgaWQ6IG51bWJlcjsgbnVtOiBudW1iZXI7IGJsb2NrOiBudW1iZXI7IGNvbG9yOiBudW1iZXI7IHNwZWNpYWw6IG51bWJlcjsgbGVuZ3RoOiBudW1iZXI7IGZyZWV6ZTogbnVtYmVyOyB9KVtdKVtdO1xyXG4gICAgc3RhdGljIFBST1BfSU5GTzogKHsgcG9zMTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3MyOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTsgcG9zNDogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3M1OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczY6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTsgfSB8IHsgcG9zMTogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3MyOiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczM6IHsgeDogbnVtYmVyOyB5OiBudW1iZXI7IHo6IG51bWJlcjsgfTsgcG9zNDogeyB4OiBudW1iZXI7IHk6IG51bWJlcjsgejogbnVtYmVyOyB9OyBwb3M1OiB7IHg6IG51bWJlcjsgeTogbnVtYmVyOyB6OiBudW1iZXI7IH07IHBvczY/OiB1bmRlZmluZWQ7IH0pW107XHJcbiAgICBzdGF0aWMgTkVXX0xFVkVMOiBhbnk7XHJcbiAgICBzdGF0aWMgVEE6IGFueTtcclxuICAgIHN0YXRpYyBHTV9JTkZPOiB7XHJcbiAgICAgICAgLy8gaXNFbmQ6IGZhbHNlLCAgICBcclxuICAgICAgICBtZWFuX1RpbWU6IG51bWJlcjsgLy/lubPlnYfmlL7nrq3pgJ/luqZcclxuICAgICAgICBocDogbnVtYmVyOyAvL+S9k+WKm+WAvFxyXG4gICAgICAgIHJldmlldzogbnVtYmVyOyAvL+Wkjea0u+asoeaVsFxyXG4gICAgICAgIC8v5aSN5rS75qyh5pWwXHJcbiAgICAgICAgY3VyclNlZWQ6IG51bWJlcjsgLy/nlKjkuo7pmo/mnLrmlbDnp43lrZBcclxuICAgICAgICBvcGVuaWQ6IHN0cmluZzsgLy/lvq7kv6HnlKjmiLfllK/kuIBpZFxyXG4gICAgICAgIGdhbWVJZDogc3RyaW5nOyAvL+a4uOaIj0lEXHJcbiAgICAgICAgdXNlcklkOiBudW1iZXI7IC8v55So5oi3SURcclxuICAgICAgICBzY29kZTogc3RyaW5nOyAvL+eUqOaIt2NvZGUs5LuO572R6aG15ZCO57yA6I635Y+WXHJcbiAgICAgICAgdXNlcm5hbWU6IHN0cmluZzsgLy/nlKjmiLflkI3np7BcclxuICAgICAgICB1c2VyYXZhdGFyOiBzdHJpbmc7IC8v55So5oi35aS05YOP5Zyw5Z2AXHJcbiAgICAgICAgZ3VpZGU6IGJvb2xlYW47IC8v5piv5ZCm5pyJ5byV5a+8XHJcbiAgICAgICAgdXJsOiBzdHJpbmc7IC8v6K6/6Zeu5Z+f5ZCNXHJcbiAgICAgICAgY29pbjogbnVtYmVyOyAvL+eUqOaIt+mHkeW4gVxyXG4gICAgICAgIHN1Y2Nlc3M6IGJvb2xlYW47IC8v55So5oi35ri45oiP5oiQ5Yqf5LiO5ZCmXHJcbiAgICAgICAgbWF0Y2hJZDogYW55OyAvL+eUqOS6juWfi+eCueS4iuS8oOeahElEXHJcbiAgICAgICAgZ2FtZVN0YXRlOiBib29sZWFuOyBjdXN0b206IG51bWJlcjsgLy/nlKjkuo7mtYvor5Xot7PlhbPljaFcclxuICAgICAgICByb3VuZDogbnVtYmVyOyAvL+WbnuWQiOaVsFxyXG4gICAgICAgIGxldmVsOiBudW1iZXI7IC8v5YW35L2T5ri45oiP5YaF6L+b6KGM5Yiw56ys5Yeg5q2lIFxyXG4gICAgICAgIHN0ZXBUaW1lTGlzdDogbnVtYmVyOyAvL+aVtOWxgOa4uOaIj+eUqOaXtu+8jOeUseS6jua2ieWPiuWcuuaZr+WIh+aNou+8jOaVsOaNrumcgOimgeS/neeVmVxyXG4gICAgICAgIHN1Y2Nlc3NMaXN0OiBhbnlbXTsgLy/mlbTlsYDog5zotJ9cclxuICAgICAgICBmaXJzdDogYm9vbGVhbjsgLy/mmK/lkKbpppbmrKHov5vlhaXmuLjmiI9cclxuICAgICAgICBzY29yZTogbnVtYmVyOyAvL+aAu+W+l+WIhlxyXG4gICAgICAgIHNjYWxlOiBudW1iZXI7IC8v546p5a625oC76K6h5oiQ5Yqf54K554Gr5pWwXHJcbiAgICAgICAgbWluX1N0ZXBzOiBudW1iZXI7IC8v5q+P5qyh5LiK5LiA5oqK5pyA5bCP5q2l5pWwXHJcbiAgICAgICAgbWluX1RpbWU6IG51bWJlcjsgLy/kvZPlipvmgaLlpI3nmoTliankvZnml7bpl7RcclxuICAgICAgICBmcmVlemVBbW91bnQ6IG51bWJlcjsgLy/lhrvnu5PpgZPlhbfmrKHmlbBcclxuICAgICAgICBoYW1tZXJBbW91bnQ6IG51bWJlcjsgLy/plKTlrZDpgZPlhbfmrKHmlbBcclxuICAgICAgICBtYWdpY0Ftb3VudDogbnVtYmVyOyAvL+mtlOazleajkumBk+WFt+asoeaVsFxyXG4gICAgICAgIG11c2ljT3BlbjogYm9vbGVhbjsgLy/pn7PkuZBcclxuICAgICAgICBlZmZlY3RPcGVuOiBib29sZWFuOyAvL+mfs+aViFxyXG4gICAgICAgIHZpYnJhdGVPcGVuOiBib29sZWFuO1xyXG4gICAgfTtcclxuICAgIC8v5ri45oiP5YaF5L+h5oGvXHJcblxyXG4gICAgc3RhdGljIGdldCBJbnN0YW5jZSgpXHJcbiAgICB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2luc3RhbmNlID09IG51bGwpXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBHYW1lQ29uZmlnKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZTtcclxuICAgIH1cclxuICAgIC8vZ2V0U2VlZFJhbmRvbVxyXG4gICAgc3RhdGljIGluaXQoQXV0aGVudGljYXRpb24pe1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJyAmJiB3eCAhPT0gbnVsbCkgeyBcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmluaXQoKTtcclxuICAgICAgIFxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuVEEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuQ0xJQ0tfaW5pdCgpO1xyXG4gICAgICAgIHRoaXMuR01fSU5GT19pbml0KCk7XHJcbiAgICAgICAgdGhpcy5MRVZFTF9JTkZPX2luaXQoZmFsc2UsMCk7XHJcbiAgXHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOW6n+W8g+S6hu+8jOaaguaXtuS4jeWIoOmZpOS7pemYsuWQjumdouS/ruaUueWbniDkuIDmlbTlsYDkvKDkuIDmrKFcclxuICAgICAgICB0aGlzLkdBTUVfREFUQSA9IFtcclxuICAgICAgICBdXHJcbiAgIFxyXG5cclxuICAgICAgICAvLyBpZighQXV0aGVudGljYXRpb24pIHNlbGYuQXV0aGVudGljYXRpb24oKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIHN0YXRpYyBnZW5lcmF0ZVVVSUQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gJ3h4eHh4eHh4LXh4eHgtNHh4eC15eHh4LXh4eHh4eHh4eHh4eCcucmVwbGFjZSgvW3h5XS9nLCBmdW5jdGlvbihjKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHIgPSBNYXRoLnJhbmRvbSgpICogMTYgfCAwO1xyXG4gICAgICAgICAgICBjb25zdCB2ID0gYyA9PT0gJ3gnID8gciA6IChyICYgMHgzIHwgMHg4KTtcclxuICAgICAgICAgICAgcmV0dXJuIHYudG9TdHJpbmcoMTYpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOeJiOacrOavlOi+g+WHveaVsFxyXG4gICAgc3RhdGljIGNvbXBhcmVWZXJzaW9uKHYxOiBzdHJpbmcsIHYyOiBzdHJpbmcpOiBudW1iZXIge1xyXG4gICAgICAgIGNvbnN0IGFycjEgPSB2MS5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IGFycjIgPSB2Mi5zcGxpdCgnLicpO1xyXG4gICAgICAgIGNvbnN0IGxlbiA9IE1hdGgubWF4KGFycjEubGVuZ3RoLCBhcnIyLmxlbmd0aCk7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgbnVtMSA9IHBhcnNlSW50KGFycjFbaV0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIGNvbnN0IG51bTIgPSBwYXJzZUludChhcnIyW2ldIHx8ICcwJywgMTApO1xyXG4gICAgICAgICAgICBpZiAobnVtMSA+IG51bTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG51bTEgPCBudW0yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBHTV9JTkZPX1NFVChrZXksdmFsdWUpIHtcclxuICAgICAgICB0aGlzLkdNX0lORk9ba2V5XSA9IHZhbHVlO1xyXG4gICAgfVxyXG4gICAgc3RhdGljIENMSUNLX2luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5DTElDS19EQVRBID1cclxuICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6IDEsICAgICAgICAgICAgLy/kuIrkvKDmlbDmja7nsbvlnotcclxuICAgICAgICAgICAgc3VjY2VzczogZmFsc2UsICAgICAvL+atpOWxgOa4uOaIj+ato+ehruS4juWQplxyXG4gICAgICAgICAgICByb3VuZDogMCwgICAgICAgICAgIC8v5Zue5ZCI5pWw6L2u5qyhXHJcbiAgICAgICAgICAgIGdldFNjb3JlOiAwLCAgICAgICAgLy/mnKzova7lvpfliIbvvIzlpLHotKXkuLow5YiGXHJcbiAgICAgICAgICAgIGN1bXVsYXRpdmVTY29yZTogMCwgLy/mnKzliafmuLjmiI/mgLvorqHlvpfliIZcclxuICAgICAgICAgICAgbWFwSWQ6IFwiXCIsICAgICAgICAgIC8v5Zyw5Zu+SURcclxuICAgICAgICAgICAgZGlmZmljdWx0eTogMCwgICAgICAvL+WcsOWbvumavuW6plxyXG4gICAgICAgICAgICBvcHRpbWl6ZWRTdGVwczogMCwgIC8v5YWz5Y2h5pyA55+t5q2l5pWwXHJcbiAgICAgICAgICAgIHVzZWRTdGVwczogMCwgICAgICAgLy/njqnlrrbkv67lu7rmgLvmraXmlbBcclxuICAgICAgICAgICAgc3RlcExpc3Q6IFtdLCAgICAgICAvL1XjgIFE44CBTOOAgVIgICBYIOaBr+WjpCAgIEYg5Yqg5Zu6XHJcbiAgICAgICAgICAgIHN0YXJ0VGltZTotMSwgICAgICAgIC8v5LuO5ri45oiP5byA5aeL5Yiw546p5a625pON5L2c55qE56ys5LiA5q2l5oiq5q2i5pe26Ze0ICDljZXkvY3mr6vnp5JcclxuICAgICAgICAgICAgc3VibWl0VGltZTotMSwgICAgICAgLy/ku47nrKzkuIDmraXmk43kvZzliLDmj5DkuqTml7bpl7TvvIzlpoLmnpzmnKrmj5DkuqTkuLotMSDljZXkvY3mr6vnp5JcclxuICAgICAgICAgICAgZHVyYXRpb246MCwgICAgICAgICAvL+a4uOaIj+aAu+eUqOaXtu+8iOaIquatouWIsOaPkOS6pO+8iSDljZXkvY3mr6vnp5Ig5aaC5p6c5pyq5LuW56e75Lqk5YiZ5Li65pe26Ze05LiK6ZmQXHJcbiAgICAgICAgICAgIGRyYXdpbmdCYWNrOjAsICAgICAgLy/lkI7pgIDmrKHmlbBcclxuICAgICAgICAgICAgZHJhd2luZ1Jlc2V0OjAsICAgICAvL+a4heepuuasoeaVsFxyXG4gICAgICAgICAgICB0aW1lcjogMCAgICAgICAgICAgLy/mtYvor4TlgJLorqHml7bliankvZnml7bpl7Qg5Y6756eSXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgQ0xJQ0tfU0VUKGtleSx2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuQ0xJQ0tfREFUQVtrZXldID0gdmFsdWU7XHJcbiAgICB9XHJcblxyXG4gICAgLy/mlbDmja7lpIfnlKhcclxuICAgIHN0YXRpYyBHTV9JTkZPX2luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5HTV9JTkZPID0ge1xyXG4gICAgICAgICAgICAvLyBpc0VuZDogZmFsc2UsICAgIFxyXG4gICAgICAgICAgICBtZWFuX1RpbWU6IDAsICAgICAgICAgICAgICAgLy/lubPlnYfmlL7nrq3pgJ/luqZcclxuICAgICAgICAgICAgaHA6IDUsICAgICAgICAgICAgICAgICAgICAgIC8v5L2T5Yqb5YC8XHJcbiAgICAgICAgICAgIHJldmlldzowLCAgICAgICAgICAgICAgICAgICAgLy/lpI3mtLvmrKHmlbBcclxuICAgICAgICAgICAgY3VyclNlZWQ6IDIwMDAwMCwgICAgICAgICAgIC8v55So5LqO6ZqP5py65pWw56eN5a2QXHJcbiAgICAgICAgICAgIG9wZW5pZDpcIlwiLCAgICAgICAgICAgICAgICAgIC8v5b6u5L+h55So5oi35ZSv5LiAaWRcclxuICAgICAgICAgICAgZ2FtZUlkOiBcIjEwMDAwMVwiLCAgICAgICAgICAgLy/muLjmiI9JRFxyXG4gICAgICAgICAgICB1c2VySWQ6IDAsICAgICAgICAgICAgICAgICAgLy/nlKjmiLdJRFxyXG4gICAgICAgICAgICBzY29kZTogXCJcIiwgICAgICAgICAgICAgICAgICAvL+eUqOaIt2NvZGUs5LuO572R6aG15ZCO57yA6I635Y+WXHJcbiAgICAgICAgICAgIHVzZXJuYW1lOlwidXNlclwiLCAgICAgICAgICAgICAgICAvL+eUqOaIt+WQjeensFxyXG4gICAgICAgICAgICB1c2VyYXZhdGFyOlwiXCIsICAgICAgICAgICAgICAvL+eUqOaIt+WktOWDj+WcsOWdgFxyXG4gICAgICAgICAgICBndWlkZTogdHJ1ZSwgICAgICAgICAgICAgICAgIC8v5piv5ZCm5pyJ5byV5a+8XHJcbiAgICAgICAgICAgIHVybDogXCJodHRwczovL2FwaS5zcGFya3VzLmNuXCIsLy/orr/pl67ln5/lkI1cclxuICAgICAgICAgICAgY29pbjogMCwgICAgICAgICAgICAgICAgICAgIC8v55So5oi36YeR5biBXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLCAgICAgICAgICAgICAvL+eUqOaIt+a4uOaIj+aIkOWKn+S4juWQplxyXG4gICAgICAgICAgICBtYXRjaElkOiBudWxsLCAgICAgICAgICAgICAgLy/nlKjkuo7ln4vngrnkuIrkvKDnmoRJRFxyXG4gICAgICAgICAgICBnYW1lU3RhdGU6ZmFsc2UsXHJcbiAgICAgICAgICAgIGN1c3RvbTogMCwgICAgICAgICAgICAgICAgICAvL+eUqOS6jua1i+ivlei3s+WFs+WNoVxyXG4gICAgICAgICAgICByb3VuZDowLCAgICAgICAgICAgICAgICAgICAgLy/lm57lkIjmlbBcclxuICAgICAgICAgICAgbGV2ZWw6IDAsICAgICAgICAgICAgICAgICAgICAvL+WFt+S9k+a4uOaIj+WGhei/m+ihjOWIsOesrOWHoOatpSBcclxuICAgICAgICAgICAgc3RlcFRpbWVMaXN0OjAsICAgICAgICAgICAgIC8v5pW05bGA5ri45oiP55So5pe277yM55Sx5LqO5raJ5Y+K5Zy65pmv5YiH5o2i77yM5pWw5o2u6ZyA6KaB5L+d55WZXHJcbiAgICAgICAgICAgIHN1Y2Nlc3NMaXN0OltdLCAgICAgICAgICAgICAgLy/mlbTlsYDog5zotJ9cclxuICAgICAgICAgICAgZmlyc3Q6ZmFsc2UsICAgICAgICAgICAgICAgICAgICAgIC8v5piv5ZCm6aaW5qyh6L+b5YWl5ri45oiPXHJcbiAgICAgICAgICAgIHNjb3JlOjAsICAgICAgICAgICAgICAgICAgICAvL+aAu+W+l+WIhlxyXG4gICAgICAgICAgICBzY2FsZTogMSwgICAgICAgICAgICAgLy/njqnlrrbmgLvorqHmiJDlip/ngrnngavmlbBcclxuICAgICAgICAgICAgbWluX1N0ZXBzOjAsICAgICAgICAgICAgICAgIC8v5q+P5qyh5LiK5LiA5oqK5pyA5bCP5q2l5pWwXHJcbiAgICAgICAgICAgIG1pbl9UaW1lOjAsICAgICAgICAgICAgICAgICAgLy/kvZPlipvmgaLlpI3nmoTliankvZnml7bpl7RcclxuICAgICAgICAgICAgZnJlZXplQW1vdW50OjAsICAgICAgICAgICAgICAvL+WGu+e7k+mBk+WFt+asoeaVsFxyXG4gICAgICAgICAgICBoYW1tZXJBbW91bnQ6MCwgICAgICAgICAgICAgIC8v6ZSk5a2Q6YGT5YW35qyh5pWwXHJcbiAgICAgICAgICAgIG1hZ2ljQW1vdW50OjAsICAgICAgICAgICAgICAgLy/prZTms5Xmo5LpgZPlhbfmrKHmlbBcclxuICAgICAgICAgICAgbXVzaWNPcGVuOiB0cnVlLCAgICAgICAgICAgICAvL+mfs+S5kFxyXG4gICAgICAgICAgICBlZmZlY3RPcGVuOiB0cnVlLCAgICAgICAgICAgICAvL+mfs+aViFxyXG4gICAgICAgICAgICB2aWJyYXRlT3BlbjogdHJ1ZSwgICAgICAgICAgIC8v6ZyH5YqoXHJcblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gdGhpcy5zZXRDb2RlKHRoaXMuZ2V0S2V5KFwic2NvZGVcIikpO1xyXG4gICAgICAgIC8vIHRoaXMuR01fSU5GTy5sZXZlbCA9IDA7XHJcblxyXG5cclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChcIkpzb24vTkVXX0xFVkVMXCIsIChlcnI6IGFueSwgcmVzOiBjYy5Kc29uQXNzZXQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIuWKoOi9vSBORVdfTEVWRUwuSlNPTiDlpLHotKU6XCIsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgbmV3TGV2ZWxEYXRhID0gcmVzLmpzb247XHJcbiAgICAgICAgICAgIHRoaXMuTkVXX0xFVkVMID0gbmV3TGV2ZWxEYXRhLk5FV19MRVZFTDtcclxuICAgICAgICAgICAgLy8g5Y+v5Lul5qC55o2u6ZyA5rGC5a+5IG5ld0xldmVsRGF0YSDov5vooYzlpITnkIZcclxuICAgICAgICAgICAgLy8gLy9jb25zb2xlLmxvZyhcIk5FV19MRVZFTC5KU09OIOWKoOi9veaIkOWKnzpcIiwgbmV3TGV2ZWxEYXRhKTtcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGF0aWMgTEVWRUxfSU5GT19pbml0KHR5cGUsdGltZSkgeyBcclxuICAgICAgICAvLyDnpLrkvosgICAgICAgICDlm7TlopnkvJrmoLnmja7nvLrnmoTlnLDlnZfoh6rliqjnlJ/miJBcclxuICAgICAgICAvLyDluKbnvLrlj6MgICAgICAge1wiaWRcIjpcIjEwMDZcIixcIm1hcFwiOlsxMCwxMV0sXCJnYXBcIjpbY2MudjIoNCw5KSxjYy52Mig1LDkpXX0sXHJcbiAgICAgICAgLy8g5bim5Y2H6ZmN5Zyw5Z2XICAge1wiaWRcIjpcIjEwMDRcIixcIm1hcFwiOls3LDhdLFwicmlzZWZhbGxcIjpbe3BvczpjYy52Mig1LDQpLGNvbG9yOjJ9LHtwb3M6Y2MudjIoNSw1KSxjb2xvcjo1fV19LFxyXG4gICAgICAgIC8vIOWmguaenOaZrumAmueahOWwsSAge1wiaWRcIjpcIjEwMDFcIixcIm1hcFwiOls2LDddfSwg6L+Z5Liq5qC35a2Q5bCx5Y+v5Lul5LqGXHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG5cclxuXHJcbiAgICAgICAgaWYoKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCkgPiAxNTYpe1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAxNTY7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuYW1lID0gXCJKc29uL2xldmVsXCIgKyAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpO1xyXG5cclxuICAgICAgICAvLyAvL2NvbnNvbGUubG9nKFwi5YWz5Y2h5ZCN56ewOlwiLG5hbWUpO1xyXG4gICAgICAgIC8vIG5hbWUgPSBcIkpzb24vbGV2ZWxcIiArIDY4O1xyXG4gICAgICAgIC8vIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbC50b1N0cmluZygpKTtcclxuICAgICAgICBjYy5yZXNvdXJjZXMubG9hZChuYW1lLCAoZXJyOiBhbnksIHJlczogY2MuSnNvbkFzc2V0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuYWRkTGV2ZWwoKTtcclxuICAgICAgICAgICAgICAgICAgICBzZWxmLkxFVkVMX0lORk9faW5pdCh0eXBlLHRpbWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBqc29uRGF0YTogb2JqZWN0ID0gcmVzLmpzb24hO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5CTE9DS19JTkZPID0ganNvbkRhdGFbXCJCTE9DS19JTkZPXCJdO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5MRVZFTF9JTkZPID0ganNvbkRhdGFbXCJMRVZFTF9JTkZPXCJdO1xyXG4gICAgICAgICAgICAgICAgc2VsZi5XQUxMX0lORk8gPSBqc29uRGF0YVtcIldBTExfSU5GT1wiXTtcclxuICAgICAgICAgICAgICAgIC8vIC8vY29uc29sZS5sb2coXCLphY3nva7liqDovb3lrozmiJBcIik7IFxyXG4gICAgICAgICAgICAgICAgaWYodHlwZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIsICgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRpbWUgPT0gMCkgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgdGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIH0pXHJcblxyXG5cclxuICAgICAgIC8v6YGT5YW35L2N572u5L+h5oGvXHJcbiAgICAgIHRoaXMuUFJPUF9JTkZPID0gW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY2LCBcInlcIjogNjAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTE5LCBcInlcIjogMzYsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM0LjM2MiwgXCJ5XCI6IDEzLjI0NiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTcsIFwieVwiOiAxMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODUsIFwieVwiOiA3MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAtNSwgXCJ5XCI6IDMsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtMTI2LCBcInlcIjogNjEsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTI1Ljc5MiwgXCJ5XCI6IDM0LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtOTQuNzkyLCBcInlcIjogMjEuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0yMCwgXCJ5XCI6IDEzLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC0xNDAsIFwieVwiOiA2OCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAtMiwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjcsIFwieVwiOiAxMjIsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTIwLCBcInlcIjogOTQsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM0Ljc5MiwgXCJ5XCI6IDIzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTQsIFwieVwiOiAyNCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODQsIFwieVwiOiAxMjgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogLTUsIFwieVwiOiAzLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTE3OCwgXCJ5XCI6IDYxLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zNC43OTIsIFwieVwiOiAzNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTE1MCwgXCJ5XCI6IDIzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjIsIFwieVwiOiAxNiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMjAwLCBcInlcIjogNjcsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjMsIFwieVwiOiAxNzgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTE3Ljc5MiwgXCJ5XCI6IDE2Ni42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTMxLjc5MiwgXCJ5XCI6IDMzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTQsIFwieVwiOiAzNywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtNzgsIFwieVwiOiAxODIsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDIsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtMTIzLCBcInlcIjogMTI0LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNS43OTIsIFwieVwiOiA5OS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTk3Ljc5MiwgXCJ5XCI6IDI3LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjcsIFwieVwiOiAxOSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMTM1LCBcInlcIjogMTI3LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY0LCBcInlcIjogMTc4LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNC43OTIsIFwieVwiOiAyNzUuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zMS43OTIsIFwieVwiOiAzNS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTcsIFwieVwiOiAzOSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtNzcsIFwieVwiOiAxODgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtMTc4LCBcInlcIjogMTg2LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zMS43OTIsIFwieVwiOiAxNjMuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zMy43OTIsIFwieVwiOiAzNC42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTE4LCBcInlcIjogMzAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTIwMCwgXCJ5XCI6IDE5MiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogNSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC0xODYsIFwieVwiOiAxNzgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogLTI1Ljc5MiwgXCJ5XCI6IDM4LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMTUzLjc5MiwgXCJ5XCI6IDM0LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjMsIFwieVwiOiAxNCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMjAwLCBcInlcIjogMTg1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTE4MywgXCJ5XCI6IDY0LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zNy43OTIsIFwieVwiOiAzNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM2Ljc5MiwgXCJ5XCI6IDI2LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMjQsIFwieVwiOiAxNywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtMjEyLCBcInlcIjogNzQsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjUsIFwieVwiOiAxNzcsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogOTMuMjA4LCBcInlcIjogMjc2LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMzMuNzkyLCBcInlcIjogMzQuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IDMsIFwieVwiOiAzMSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODAsIFwieVwiOiAxOTAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogMCwgXCJ5XCI6IDMsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiA1OCwgXCJ5XCI6IDE3OSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAyMDUuMjI1LCBcInlcIjogMTU0LjAzNCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMjkuNjQyLCBcInlcIjogMjUuNjkxLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IDcuMjE4LCBcInlcIjogMjkuNzY1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IDQ1LCBcInlcIjogMTg1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY4LCBcInlcIjogMTgyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNS43OTIsIFwieVwiOiAzNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM1Ljc5MiwgXCJ5XCI6IDMzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTQsIFwieVwiOiAxMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODIsIFwieVwiOiAxOTAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczZcIjogeyBcInhcIjogLTIsIFwieVwiOiAxLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTE4NCwgXCJ5XCI6IDYyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0zNS43OTIsIFwieVwiOiAzNi42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTI3MS43OTIsIFwieVwiOiAyNC42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTE3LCBcInlcIjogMjAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTIwMCwgXCJ5XCI6IDcyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTYyLCBcInlcIjogMTc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IDg3LjIwOCwgXCJ5XCI6IDE2NC42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTMxLjc5MiwgXCJ5XCI6IDM1LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtNiwgXCJ5XCI6IDI0LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC03OSwgXCJ5XCI6IDE3MiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogNSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC0xODQsIFwieVwiOiA3MiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAtMzMuNzkyLCBcInlcIjogMzguNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0xNTQuNzkyLCBcInlcIjogMjkuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0yOSwgXCJ5XCI6IDE2LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC0yMDEsIFwieVwiOiA4NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAtMSwgXCJ5XCI6IDMsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIFwicG9zMVwiOiB7IFwieFwiOiAtNjQsIFwieVwiOiAxODEsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczJcIjogeyBcInhcIjogOTUuMjA4LCBcInlcIjogMTU1LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMzAuNzkyLCBcInlcIjogMzYuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0xMiwgXCJ5XCI6IDMyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC03OCwgXCJ5XCI6IDE5MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02NSwgXCJ5XCI6IDE3OCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAtMjEuNzkyLCBcInlcIjogMTU2LjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zM1wiOiB7IFwieFwiOiAtMzEuNzkyLCBcInlcIjogMzcuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0xMiwgXCJ5XCI6IDMyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC03OCwgXCJ5XCI6IDE4OCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02MiwgXCJ5XCI6IDE4MywgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiA4OC4yMDgsIFwieVwiOiAxNjIuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0yOS43OTIsIFwieVwiOiA0MS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTEyLCBcInlcIjogMTgsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTgwLCBcInlcIjogMTg4LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IC00LCBcInlcIjogMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02NywgXCJ5XCI6IDgwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNi43OTIsIFwieVwiOiAzMi42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczNcIjogeyBcInhcIjogLTM0Ljc5MiwgXCJ5XCI6IDIzLjY3NSwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNFwiOiB7IFwieFwiOiAtMTIsIFwieVwiOiAxOCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNVwiOiB7IFwieFwiOiAtODQsIFwieVwiOiA5MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC0xODQsIFwieVwiOiA4MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiAtMjUuNzkyLCBcInlcIjogMzQuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0xNTUuNzkyLCBcInlcIjogMjUuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M0XCI6IHsgXCJ4XCI6IC0xOCwgXCJ5XCI6IDI2LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M1XCI6IHsgXCJ4XCI6IC0xOTYsIFwieVwiOiA5NiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zNlwiOiB7IFwieFwiOiAwLCBcInlcIjogMCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgXCJwb3MxXCI6IHsgXCJ4XCI6IC02MiwgXCJ5XCI6IDE2MCwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgICAgIFwicG9zMlwiOiB7IFwieFwiOiA5NS4yMDgsIFwieVwiOiAxNTguNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zMy43OTIsIFwieVwiOiAyOS42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTE4LCBcInlcIjogMjYsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTc4LCBcInlcIjogMTcwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IDAsIFwieVwiOiAyLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICBcInBvczFcIjogeyBcInhcIjogLTY4LCBcInlcIjogMTYwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MyXCI6IHsgXCJ4XCI6IC0yNS43OTIsIFwieVwiOiAxNTYuNjc1LCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3MzXCI6IHsgXCJ4XCI6IC0zNS43OTIsIFwieVwiOiAyNy42NzUsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczRcIjogeyBcInhcIjogLTI1LCBcInlcIjogNDAsIFwielwiOiAwIH0sXHJcbiAgICAgICAgICAgICAgICBcInBvczVcIjogeyBcInhcIjogLTgyLCBcInlcIjogMTcwLCBcInpcIjogMCB9LFxyXG4gICAgICAgICAgICAgICAgXCJwb3M2XCI6IHsgXCJ4XCI6IC0yLCBcInlcIjogMiwgXCJ6XCI6IDAgfSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIF07XHJcbiAgICAgIC8vIHRoaXMuUFJPUF9JTkZPID0gW3tcInBvczFcIjoge1wieFwiOiAtNjAsXCJ5XCI6IDYwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMTYuNDQyLFwieVwiOiAzMCxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM0LjM2MixcInlcIjogMTMuMjQ2LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTcsXCJ5XCI6IDEyLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xMjYsXCJ5XCI6IDYzLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjUuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC05NC43OTIsXCJ5XCI6IDIxLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTIwLFwieVwiOiAxMyxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjAsXCJ5XCI6IDEyNSxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTEyLjc5MixcInlcIjogOTIuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzQuNzkyLFwieVwiOiAyMy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNCxcInlcIjogMjQsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4NSxcInlcIjogNjMsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0zNC43OTIsXCJ5XCI6IDM3LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTE1NC43OTIsXCJ5XCI6IDIzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTIyLFwieVwiOiAxNixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNTcsXCJ5XCI6IDE3OCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTE3Ljc5MixcInlcIjogMTY2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMzMuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTQsXCJ5XCI6IDM3LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xMjMsXCJ5XCI6IDEyNyxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogOTkuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtOTcuNzkyLFwieVwiOiAyNy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0yNyxcInlcIjogMTksXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTYyLFwieVwiOiAxODEsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0yNC43OTIsXCJ5XCI6IDI3NS42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMS43OTIsXCJ5XCI6IDM1LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTcsXCJ5XCI6IDM5LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODEsXCJ5XCI6IDE4MCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMTYzLjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMzLjc5MixcInlcIjogMzQuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTgsXCJ5XCI6IDMwLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODIsXCJ5XCI6IDE4MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMzguNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTUzLjc5MixcInlcIjogMzQuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjMsXCJ5XCI6IDE0LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC0xODYsXCJ5XCI6IDYxLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMzcuNzkyLFwieVwiOiAzNy42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zNi43OTIsXCJ5XCI6IDI2LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTI0LFwieVwiOiAxNyxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjIsXCJ5XCI6IDE3NyxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogOTMuMjA4LFwieVwiOiAyNzYuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzMuNzkyLFwieVwiOiAzNC42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IDMsXCJ5XCI6IDMxLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IDU4LFwieVwiOiAxNzksXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IDIwNS4yMjUsXCJ5XCI6IDE1NC4wMzQsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0yOS42NDIsXCJ5XCI6IDI1LjY5MSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogNy4yMTgsXCJ5XCI6IDI5Ljc2NSxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNTcsXCJ5XCI6IDE4MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMzcuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzUuNzkyLFwieVwiOiAzMy42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC0xNCxcInlcIjogMTIsXCJ6XCI6IDB9fSx7XCJwb3MxXCI6IHtcInhcIjogLTE4MCxcInlcIjogNjIsXCJ6XCI6IDB9LFwicG9zMlwiOiB7XCJ4XCI6IC0zNS43OTIsXCJ5XCI6IDM2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTI3MS43OTIsXCJ5XCI6IDI0LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE3LFwieVwiOiAyMCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjIsXCJ5XCI6IDE3OCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogODcuMjA4LFwieVwiOiAxNjQuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMzEuNzkyLFwieVwiOiAzNS42NzUsXCJ6XCI6IDB9LFwicG9zNFwiOiB7XCJ4XCI6IC02LFwieVwiOiAyNCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTc2LFwieVwiOiA2MCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTMzLjc5MixcInlcIjogMzguNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTU0Ljc5MixcInlcIjogMjkuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjksXCJ5XCI6IDE2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogMTgxLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA5NS4yMDgsXCJ5XCI6IDE1NS42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMC43OTIsXCJ5XCI6IDM2LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTEyLFwieVwiOiAzMixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjMsXCJ5XCI6IDE3OCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTIxLjc5MixcInlcIjogMTU2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTMxLjc5MixcInlcIjogMzcuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTIsXCJ5XCI6IDMyLFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC02MCxcInlcIjogMTgzLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA4OC4yMDgsXCJ5XCI6IDE2Mi42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0yOS43OTIsXCJ5XCI6IDQxLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTEyLFwieVwiOiAxOCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNjQsXCJ5XCI6IDU4LFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiAtMjYuNzkyLFwieVwiOiAzMi42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zNC43OTIsXCJ5XCI6IDIzLjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTEyLFwieVwiOiAxOCxcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtMTg0LFwieVwiOiA2MixcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMzQuNjc1LFwielwiOiAwfSxcInBvczNcIjoge1wieFwiOiAtMTU1Ljc5MixcInlcIjogMjUuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMTgsXCJ5XCI6IDI2LFwielwiOiAwfX0se1wicG9zMVwiOiB7XCJ4XCI6IC01NyxcInlcIjogMTkwLFwielwiOiAwfSxcInBvczJcIjoge1wieFwiOiA5NS4yMDgsXCJ5XCI6IDE1OC42NzUsXCJ6XCI6IDB9LFwicG9zM1wiOiB7XCJ4XCI6IC0zMy43OTIsXCJ5XCI6IDI5LjY3NSxcInpcIjogMH0sXCJwb3M0XCI6IHtcInhcIjogLTE4LFwieVwiOiAyNixcInpcIjogMH19LHtcInBvczFcIjoge1wieFwiOiAtNzEsXCJ5XCI6IDE4NCxcInpcIjogMH0sXCJwb3MyXCI6IHtcInhcIjogLTI1Ljc5MixcInlcIjogMTU2LjY3NSxcInpcIjogMH0sXCJwb3MzXCI6IHtcInhcIjogLTM1Ljc5MixcInlcIjogMjcuNjc1LFwielwiOiAwfSxcInBvczRcIjoge1wieFwiOiAtMjUsXCJ5XCI6IDQwLFwielwiOiAwfX1dO1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgc3RhdGljIHNldENvZGUoY29kZSl7XHJcbiAgICAgICAgdGhpcy5HTV9JTkZPLnNjb2RlID0gY29kZTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgc3RhdGljIGdldEtleShrZXkpe1xyXG4gICAgICAgIC8vIHZhciByZWcgPSBuZXcgUmVnRXhwKCcoXnwmKScgKyBrZXkgKyAnPShbXiZdKikoJnwkKScsICdpJyk7XHJcbiAgICAgICAgLy8gdmFyIHIgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5tYXRjaChyZWcpO1xyXG4gICAgICAgIC8vIGlmIChyICE9IG51bGwpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHVuZXNjYXBlKHJbMl0pO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhdGljIEF1dGhlbnRpY2F0aW9uKCl7XHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuQXV0aGVudGljYXRpb24oKTtcclxuICAgIH1cclxufVxyXG5cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/ControlManager.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'e35abcX5VRAoItO6mgFcYyX', 'ControlManager'); +// Script/ControlManager.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.Map = null; + _this.tip = null; + _this.reinforce = null; + _this.soil = null; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + // onLoad () {} + NewClass.prototype.start = function () { + this.tipArray = []; + this.controlArray = []; + this.canTouch = true; + this.Reinforce = false; + this.Soil = false; + this.mapHeight = 0; + }; + NewClass.prototype.setPosition = function (tip) { + tip.setPosition(30, -25); + if (this.tipArray.length > 0) { + var length = this.tipArray.length + 1; + var posY = Math.ceil(length / 8) - 1; + var posX = length - Math.floor(posY) * 8 - 1; + tip.setPosition(30 + 48 * posX, -25 - 48 * posY + this.mapHeight); + } + }; + //清空所有 + NewClass.prototype.removeAllTip = function () { + if (!this.canTouch) + return; + if (this.tipArray.length > 0) { + cc.fx.AudioManager._instance.playEffect("qingkong", null); + for (var i = 0; i < this.tipArray.length; i++) { + var tip = this.tipArray[i]; + tip.active = false; + tip.removeFromParent(this.Map); + tip = null; + } + this.tipArray = []; + this.controlArray = []; + var drawingReset = cc.fx.GameConfig.CLICK_DATA.drawingReset + 1; + cc.fx.GameConfig.CLICK_SET("drawingReset", drawingReset); + cc.fx.Notifications.emit(cc.fx.Message.removeTip, "remove"); + this.mapHeight = 0; + } + }; + //撤回一步 + NewClass.prototype.back_Click = function () { + if (!this.canTouch) + return; + if (this.tipArray.length > 0) { + cc.fx.AudioManager._instance.playEffect("chehui", null); + var tip = this.tipArray[this.tipArray.length - 1]; + tip.active = false; + tip.removeFromParent(this.Map); + tip = null; + this.tipArray.pop(); + this.controlArray.pop(); + var drawingBack = cc.fx.GameConfig.CLICK_DATA.drawingBack + 1; + cc.fx.GameConfig.CLICK_SET("drawingBack", drawingBack); + cc.fx.Notifications.emit(cc.fx.Message.removeTip, "back"); + if (this.tipArray.length >= 24) { + if ((this.tipArray.length) % 8 == 0) { + this.mapMove(false); + } + } + } + }; + //点击事件 + NewClass.prototype.btn_Click = function (target, data) { + var GameManager = this.node.parent.getComponent("GameManager"); + if (GameManager.btnClick == true) { + GameManager.btnClick = false; + cc.fx.Notifications.emit(cc.fx.Message.guideNext); + } + cc.fx.Notifications.emit(cc.fx.Message.control, data); + if (!this.canTouch) + return; + var prefab = this.tip; + if (data == "reinforce" || data == "soil") { + prefab = this[data]; + if (data == "reinforce") { + if (this.Reinforce) { + this.Reinforce = false; + this.back_Click(); + return; + } + else { + cc.fx.AudioManager._instance.playEffect("jineng", null); + this.Reinforce = true; + this.Soil = false; + } + } + else if (data == "soil") { + if (this.Soil) { + this.Soil = false; + this.back_Click(); + return; + } + else { + cc.fx.AudioManager._instance.playEffect("jineng", null); + this.Soil = true; + this.Reinforce = false; + } + } + } + else { + cc.fx.AudioManager._instance.playEffect("fangxiang", null); + this.Reinforce = false; + this.Soil = false; + } + var tip = cc.instantiate(prefab); + if (data == "up") + tip.angle = 180; + if (data == "left") + tip.angle = -90; + if (data == "right") + tip.angle = 90; + tip.parent = this.Map; + if (this.controlArray[this.controlArray.length - 1] == "reinforce" || + this.controlArray[this.controlArray.length - 1] == "soil") { + if (data == "reinforce" || data == "soil") { + this.tipArray[this.tipArray.length - 1].removeFromParent(); + this.tipArray[this.tipArray.length - 1] = null; + this.tipArray.pop(); + this.controlArray.pop(); + } + } + this.setPosition(tip); + this.tipArray.push(tip); + this.controlArray.push(data); + if (this.tipArray.length >= 25) { + if ((this.tipArray.length - 1) % 8 == 0) { + this.mapMove(true); + } + } + }; + //地图放不下了上下移动 + NewClass.prototype.mapMove = function (type) { + if (type) + this.mapHeight += 48; + else + this.mapHeight -= 48; + for (var i = 0; i < this.tipArray.length; i++) { + var tip = this.tipArray[i]; + if (type) + tip.y += 48; + else + tip.y -= 48; + } + }; + //点击开始 创建河道 + NewClass.prototype.start_Click = function () { + if (!this.canTouch) + return; + this.canTouch = false; + cc.fx.AudioManager._instance.playEffect("build", null); + cc.fx.Notifications.emit(cc.fx.Message.startGame, this.controlArray); + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "Map", void 0); + __decorate([ + property(cc.Prefab) + ], NewClass.prototype, "tip", void 0); + __decorate([ + property(cc.Prefab) + ], NewClass.prototype, "reinforce", void 0); + __decorate([ + property(cc.Prefab) + ], NewClass.prototype, "soil", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDb250cm9sTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVLQztRQXBLRyxTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBYyxJQUFJLENBQUM7UUFFdEIsZUFBUyxHQUFjLElBQUksQ0FBQztRQUU1QixVQUFJLEdBQWMsSUFBSSxDQUFDOztRQTZKdkIsaUJBQWlCO0lBQ3JCLENBQUM7SUFySkcsd0JBQXdCO0lBRXhCLGVBQWU7SUFFZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELDhCQUFXLEdBQVgsVUFBWSxHQUFHO1FBQ1gsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLEVBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixJQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQztZQUN4QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUM7WUFDcEMsSUFB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QUFDOzBDQUNHO0lBVE4sUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXVLNUI7SUFBRCxlQUFDO0NBdktELEFBdUtDLENBdktxQyxFQUFFLENBQUMsU0FBUyxHQXVLakQ7a0JBdktvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBNYXA6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLlByZWZhYilcclxuICAgIHRpcDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5QcmVmYWIpXHJcbiAgICByZWluZm9yY2U6IGNjLlByZWZhYiA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuUHJlZmFiKVxyXG4gICAgc29pbDogY2MuUHJlZmFiID0gbnVsbDtcclxuICAgIFxyXG5cclxuICAgIHRpcEFycmF5OmFueTtcclxuICAgIGNvbnRyb2xBcnJheTphbnk7XHJcbiAgICBjYW5Ub3VjaDpib29sZWFuO1xyXG4gICAgUmVpbmZvcmNlOmJvb2xlYW47XHJcbiAgICBTb2lsOmJvb2xlYW47XHJcbiAgICBtYXBIZWlnaHQ6bnVtYmVyO1xyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgICAgIHRoaXMudGlwQXJyYXkgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbnRyb2xBcnJheSA9IFtdO1xyXG4gICAgICAgIHRoaXMuY2FuVG91Y2ggPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuUmVpbmZvcmNlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5tYXBIZWlnaHQgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBvc2l0aW9uKHRpcCl7XHJcbiAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwLC0yNSk7XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgbGV0IGxlbmd0aCA9IHRoaXMudGlwQXJyYXkubGVuZ3RoKzE7XHJcbiAgICAgICAgICAgIGxldCBwb3NZID0gTWF0aC5jZWlsKGxlbmd0aC84KSAtIDE7XHJcbiAgICAgICAgICAgIGxldCBwb3NYID0gbGVuZ3RoIC0gTWF0aC5mbG9vcihwb3NZKSo4IC0gMTtcclxuICAgICAgICAgICAgdGlwLnNldFBvc2l0aW9uKDMwICsgNDgqcG9zWCwtMjUgLTQ4KnBvc1kgKyB0aGlzLm1hcEhlaWdodCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/muIXnqbrmiYDmnIlcclxuICAgIHJlbW92ZUFsbFRpcCgpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwicWluZ2tvbmdcIixudWxsKTtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy50aXBBcnJheS5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICAgICAgdGlwLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGlwLnJlbW92ZUZyb21QYXJlbnQodGhpcy5NYXApO1xyXG4gICAgICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLnRpcEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5ID0gW107XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nUmVzZXQgPSBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX0RBVEEuZHJhd2luZ1Jlc2V0ICsgMTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5DTElDS19TRVQoXCJkcmF3aW5nUmVzZXRcIixkcmF3aW5nUmVzZXQpO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5yZW1vdmVUaXAsXCJyZW1vdmVcIik7XHJcbiAgICAgICAgICAgIHRoaXMubWFwSGVpZ2h0ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+aSpOWbnuS4gOatpVxyXG4gICAgYmFja19DbGljaygpe1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgaWYodGhpcy50aXBBcnJheS5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiY2hlaHVpXCIsbnVsbCk7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdO1xyXG4gICAgICAgICAgICB0aXAuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRpcC5yZW1vdmVGcm9tUGFyZW50KHRoaXMuTWFwKTtcclxuICAgICAgICAgICAgdGlwID0gbnVsbDtcclxuICAgICAgICAgICAgdGhpcy50aXBBcnJheS5wb3AoKTtcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXkucG9wKCk7XHJcbiAgICAgICAgICAgIHZhciBkcmF3aW5nQmFjayA9IGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfREFUQS5kcmF3aW5nQmFjayArIDE7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuQ0xJQ0tfU0VUKFwiZHJhd2luZ0JhY2tcIixkcmF3aW5nQmFjayk7XHJcbiAgICAgICAgICAgIGNjLmZ4Lk5vdGlmaWNhdGlvbnMuZW1pdChjYy5meC5NZXNzYWdlLnJlbW92ZVRpcCxcImJhY2tcIik7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudGlwQXJyYXkubGVuZ3RoID49IDI0KXtcclxuICAgICAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCApJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXBNb3ZlKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+S6i+S7tlxyXG4gICAgYnRuX0NsaWNrKHRhcmdldCxkYXRhKXtcclxuICAgICAgICB2YXIgR2FtZU1hbmFnZXIgPSB0aGlzLm5vZGUucGFyZW50LmdldENvbXBvbmVudChcIkdhbWVNYW5hZ2VyXCIpO1xyXG4gICAgICAgIGlmKEdhbWVNYW5hZ2VyLmJ0bkNsaWNrID09IHRydWUpe1xyXG4gICAgICAgICAgICBHYW1lTWFuYWdlci5idG5DbGljayA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5ndWlkZU5leHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5jb250cm9sLGRhdGEpO1xyXG4gICAgICAgIGlmKCF0aGlzLmNhblRvdWNoKSByZXR1cm47XHJcbiAgICAgICAgbGV0IHByZWZhYiA9IHRoaXMudGlwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgcHJlZmFiID0gdGhpc1tkYXRhXTtcclxuICAgICAgICAgICAgaWYoZGF0YSA9PSBcInJlaW5mb3JjZVwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuUmVpbmZvcmNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmFja19DbGljaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImppbmVuZ1wiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuUmVpbmZvcmNlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlNvaWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgZWxzZSBpZihkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuU29pbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iYWNrX0NsaWNrKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiamluZW5nXCIsbnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5Tb2lsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLlJlaW5mb3JjZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJmYW5neGlhbmdcIixudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5SZWluZm9yY2UgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5Tb2lsID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0aXAgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJ1cFwiKSB0aXAuYW5nbGUgPSAxODA7XHJcbiAgICAgICAgaWYoZGF0YSA9PSBcImxlZnRcIikgdGlwLmFuZ2xlID0gLTkwO1xyXG4gICAgICAgIGlmKGRhdGEgPT0gXCJyaWdodFwiKSB0aXAuYW5nbGUgPSA5MDtcclxuICAgICAgICB0aXAucGFyZW50ID0gdGhpcy5NYXA7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLmNvbnRyb2xBcnJheVt0aGlzLmNvbnRyb2xBcnJheS5sZW5ndGgtMV0gPT0gXCJyZWluZm9yY2VcIiB8fCBcclxuICAgICAgICAgICAgdGhpcy5jb250cm9sQXJyYXlbdGhpcy5jb250cm9sQXJyYXkubGVuZ3RoLTFdID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgIGlmKGRhdGEgPT0gXCJyZWluZm9yY2VcIiB8fCBkYXRhID09IFwic29pbFwiKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5W3RoaXMudGlwQXJyYXkubGVuZ3RoLTFdID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRpcEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udHJvbEFycmF5LnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldFBvc2l0aW9uKHRpcCk7XHJcblxyXG4gICAgICAgIHRoaXMudGlwQXJyYXkucHVzaCh0aXApO1xyXG4gICAgICAgIHRoaXMuY29udHJvbEFycmF5LnB1c2goZGF0YSk7XHJcbiAgICBcclxuICAgICAgICBpZih0aGlzLnRpcEFycmF5Lmxlbmd0aCA+PSAyNSl7XHJcbiAgICAgICAgICAgIGlmKCh0aGlzLnRpcEFycmF5Lmxlbmd0aCAtIDEpJTggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hcE1vdmUodHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvL+WcsOWbvuaUvuS4jeS4i+S6huS4iuS4i+enu+WKqFxyXG4gICAgbWFwTW92ZSh0eXBlKXtcclxuICAgICAgICBpZih0eXBlKSB0aGlzLm1hcEhlaWdodCArPSA0ODtcclxuICAgICAgICBlbHNlIHRoaXMubWFwSGVpZ2h0IC09IDQ4O1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMudGlwQXJyYXkubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgIGxldCB0aXAgPSB0aGlzLnRpcEFycmF5W2ldO1xyXG4gICAgICAgICAgICBpZih0eXBlKXRpcC55ICs9IDQ4O1xyXG4gICAgICAgICAgICBlbHNlIHRpcC55IC09IDQ4O1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvL+eCueWHu+W8gOWniyDliJvlu7rmsrPpgZNcclxuICAgIHN0YXJ0X0NsaWNrKCl7XHJcbiAgICAgICAgaWYoIXRoaXMuY2FuVG91Y2gpIHJldHVybjtcclxuICAgICAgICB0aGlzLmNhblRvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYnVpbGRcIixudWxsKTtcclxuICAgICAgICBjYy5meC5Ob3RpZmljYXRpb25zLmVtaXQoY2MuZnguTWVzc2FnZS5zdGFydEdhbWUsdGhpcy5jb250cm9sQXJyYXkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Share/share.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '7290caA39xMWZc2phTMKovP', 'share'); +// Script/module/Share/share.ts + + + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFNoYXJlXFxzaGFyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/GameManager.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'df248lSLllOZpCHwGqQ5Ye3', 'GameManager'); +// Script/GameManager.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var GameManager = /** @class */ (function (_super) { + __extends(GameManager, _super); + function GameManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.text = 'hello'; + _this.Block_Array = []; + _this.Wall_Prefab = []; + _this.Block_Color = []; + // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) + // particleEffects : Array = []; + _this.load1 = false; + _this.load2 = false; + _this.load3 = false; + _this.load4 = false; + _this.load5 = false; + return _this; + } + GameManager_1 = GameManager; + // LIFE-CYCLE CALLBACKS: + GameManager.prototype.onLoad = function () { + var _this = this; + window.initMgr(); + this.timeNumber = 3; + this.startTimeCutDown(); + cc.fx.GameConfig.init(true); + cc.fx.GameConfig.GM_INFO.gameState = false; + this.readMusicConfig(); + console.log("音乐开关", cc.fx.GameConfig.GM_INFO.musicOpen); + cc.fx.AudioManager._instance.playMusicGame(); + this.load1 = this.load2 = this.load3 = this.load4 = this.load5 = false; + setTimeout(function () { + _this.readUserData(); + }, 200); + if (GameManager_1._instance == null) { + GameManager_1._instance = this; + cc.game.addPersistRootNode(this.node); + } + else { + return; + } + var path = 'prefab/block'; + var path2 = 'prefab/wall'; + cc.resources.loadDir(path, cc.Prefab, function (err, assets) { + if (err) { + console.log('动态加载 block 失败:', err); + cc.director.loadScene("LoadScene"); + return; + } + // 将加载的 Prefab 赋值给 Block_Array + _this.Block_Array = assets; + console.log('方块加载成功,共加载了', _this.Block_Array.length, '个方块'); + _this.setSort(); + _this.load1 = true; + }); + cc.resources.loadDir(path2, cc.Prefab, function (err, assets) { + if (err) { + console.log('动态加载 wall 失败:', err); + cc.director.loadScene("LoadScene"); + return; + } + // 将加载的 Prefab 赋值给 Block_Array + _this.Wall_Prefab = assets; + _this.load2 = true; + console.log('墙加载成功,共加载了', _this.Wall_Prefab.length, '个墙'); + _this.setWallPrefabSort(); + }); + // 检测微信小游戏切到后台 + if (cc.sys.platform === cc.sys.WECHAT_GAME) { + //@ts-ignore + wx.onHide(function () { + _this.onHide(); + }); + // 检测微信小游戏回到前台 + //@ts-ignore + wx.onShow(function () { + _this.onShow(); + }); + } + }; + GameManager.prototype.onHide = function () { + cc.audioEngine.stopMusic(); + cc.game.pause(); + }; + GameManager.prototype.onShow = function () { + cc.audioEngine.resumeMusic(); + cc.game.resume(); + }; + GameManager.prototype.loadParticleEffects = function () { + }; + GameManager.prototype.setWallPrefabSort = function () { + var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; + this.Wall_Prefab.sort(function (a, b) { + var indexA = order.indexOf(a.name); + var indexB = order.indexOf(b.name); + if (indexA === -1) + return 1; + if (indexB === -1) + return -1; + return indexA - indexB; + }); + }; + GameManager.prototype.setParticleSort = function () { + var order = ['top', 'bot', 'rig', 'lef']; + this.particleEffects.sort(function (a, b) { + var indexA = order.indexOf(a.name.substr(0, 3)); + var indexB = order.indexOf(b.name.substr(0, 3)); + if (indexA === -1) + return 1; + if (indexB === -1) + return -1; + return indexA - indexB; + }); + }; + GameManager.prototype.setSort = function () { + this.Block_Array.sort(function (a, b) { + var _a, _b; + // 从名称中提取数字部分 + var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); + var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); + return numberA - numberB; + }); + }; + GameManager.prototype.start = function () { + }; + GameManager.prototype.startGame = function () { + console.log("进入场景之前_____________", cc.fx.GameConfig.GM_INFO.first); + cc.director.loadScene("HomeScene"); + }; + GameManager.prototype.returnHome = function () { + cc.tween(this.node.getChildByName("Game")) + .to(0.5, { opacity: 100 }) + .call(function () { + // 预加载成功后加载场景 + cc.director.loadScene("HomeScene", function (err) { + if (err) { + console.error('加载 HomeScene 场景失败:', err); + } + else { + cc.director.loadScene("HomeScene"); + } + }); + }) + .start(); + cc.tween(this.node.getChildByName("mask")) + .to(0.5, { opacity: 255 }) + .start(); + // cc.loader.releaseAll(); + // 预加载 HomeScene 场景 + }; + GameManager.prototype.readUserData = function (retryCount) { + var _this = this; + if (retryCount === void 0) { retryCount = 0; } + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { + var levelInfo = cc.fx.StorageMessage.getStorage("level"); + //旧的读取数据设置数据方法,以强联网为主 + if (levelInfo == undefined || levelInfo == "" || levelInfo == null) { + this.oldReadData(retryCount); + } + //新的读取数据设置方法,以本地为主 + else { + this.newReadData(); + } + console.log("即将读取体力值"); + cc.fx.GameTool.getHealth(function (data) { + console.log("体力值完成进入游戏"); + _this.load5 = true; + }); + } + else { + this.load3 = true; + this.load4 = true; + this.load5 = true; + cc.fx.GameTool.getHealth(null); + } + // 存储用户数据 + }; + GameManager.prototype.readMusicConfig = function () { + var audioInfo = cc.fx.StorageMessage.getStorage("music"); + if (audioInfo == undefined || audioInfo == "" || audioInfo == null) { + audioInfo = { + "musicOpen": true, + "effectOpen": true, + "vibrateOpen": true, + }; + cc.fx.StorageMessage.setStorage("music", audioInfo); + } + else { + cc.fx.GameConfig.GM_INFO.musicOpen = audioInfo.musicOpen; + cc.fx.GameConfig.GM_INFO.effectOpen = audioInfo.effectOpen; + cc.fx.GameConfig.GM_INFO.vibrateOpen = audioInfo.vibrateOpen; + } + }; + //新用户,有本地缓存读取配置 + GameManager.prototype.newReadData = function () { + var _this = this; + console.log("读取新信息"); + var openid = cc.fx.StorageMessage.getStorage("openid"); + if (openid == null || openid == "" || openid == undefined) { + console.log("没有openid"); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userData', + data: { + action: 'read' + }, + success: function (res) { + console.log('读取用户数据成功', res.result); + if (res.result.code == 404 && res.result.message == "未找到用户数据") { + } + else if (res.result.code == 200) { + if (res.result.data) { + cc.fx.GameConfig.GM_INFO.openid = res.result.openid; + cc.fx.GameConfig.GM_INFO.username = res.result.data.username; + cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; + var register_time = res.result.data.register_time; + MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); + cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); + } + } + }, + fail: function (err) { + console.error('读取用户数据失败', err); + } + }); + } + else { + if (openid) + cc.fx.GameConfig.GM_INFO.openid = openid; + } + //等级信息 + cc.fx.GameTool.getUserLevel(function (data) { + var timestamp = Date.now(); + var levelInfo = cc.fx.StorageMessage.getStorage("level"); + if (data.result.code == 404 && data.result.message == "未找到关卡数据") { + // console.log("没有等级信息,从用户接口拿到数据"); + if (levelInfo.level) { + cc.fx.GameConfig.GM_INFO.level = levelInfo.level; + } + _this.load4 = true; + cc.fx.GameTool.setUserLevel(function (data) { + }); + } + else if (data.result.code == 200) { + // console.log("有等级信息,从关卡接口拿到数据",data.result.data); + //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 + var temp = data.result.timestamp - levelInfo.timestamp; + console.log("等级时间差:", temp); + if ((data.result.timestamp - levelInfo.timestamp) < 10000) { + if (levelInfo.level) { + console.log("以游戏前端等级为准", data.result.data); + cc.fx.GameConfig.GM_INFO.level = levelInfo.level; + // console.log("等级为:",cc.fx.GameConfig.GM_INFO.level); + cc.fx.GameTool.setUserLevel(function (data) { + }); + } + } + //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 + else { + console.log("以服务器等级为准", data.result.data); + cc.fx.GameConfig.GM_INFO.level = data.result.data; + levelInfo.level = cc.fx.GameConfig.GM_INFO.level; + levelInfo.timestamp = timestamp; + // console.log("1111111存储关卡数据:",cc.fx.GameConfig.GM_INFO.level); + cc.fx.StorageMessage.setStorage("level", levelInfo); + } + _this.load4 = true; + } + }); + //金币信息 + cc.fx.GameTool.getUserCoin(function (data) { + var timestamp = Date.now(); + var coinInfo = cc.fx.StorageMessage.getStorage("coin"); + if (data.result.code == 404 && data.result.message == "未找到金币数据") { + if (coinInfo.coin) + cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; + console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); + _this.load3 = true; + cc.fx.GameTool.setUserCoin(function (data) { + }); + } + else if (data.result.code == 200) { + // console.log("有金币信息,从金币接口拿到数据",data.result.data); + //游戏前端存储 新于服务器端,以游戏前端信息为主,放服务器存储 + var temp = data.result.timestamp - coinInfo.timestamp; + console.log("金币时间差:", temp); + if ((data.result.timestamp - coinInfo.timestamp) < 10000) { + console.log("以前端金幣为准:", coinInfo); + if (coinInfo.coin) + cc.fx.GameConfig.GM_INFO.coin = coinInfo.coin; + else { + cc.fx.GameConfig.GM_INFO.coin = data.result.data; + coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; + coinInfo.timestamp = timestamp; + console.log("11111111111"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + } + console.log("改变后金币:", cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameTool.setUserCoin(function (data) { + }); + } + //服务器端存储时间新于游戏端,以服务器端为主,往前端存储 + else { + console.log("以服务器金幣为准:", data.result.data); + cc.fx.GameConfig.GM_INFO.coin = data.result.data; + coinInfo.coin = cc.fx.GameConfig.GM_INFO.coin; + coinInfo.timestamp = timestamp; + console.log("2222222222"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + } + _this.load3 = true; + } + }); + //道具信息 + cc.fx.GameTool.getUserProp(function (data) { + var timestamp = Date.now(); + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + if (data.result.code == 404 && data.result.message == "未找到道具数据") { + console.log("没有道具信息,从用户接口拿到数据", propInfo); + if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { + console.log("2222222道具数据异常"); + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + cc.fx.GameConfig.GM_INFO.magicAmoun = 0; + var propInfoNew = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmoun, + "timestamp": timestamp + }; + console.log("1111111上传道具信息:", propInfoNew); + cc.fx.StorageMessage.setStorage("prop", propInfoNew); + } + else { + // cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; + // cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; + // cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; + cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; + cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; + cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; + } + // cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; + // cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; + // cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; + cc.fx.GameTool.setUserProp(0, 0, function (data) { + }); + } + else if (data.result.code == 200) { + // console.log("本地时间戳",propInfo.timestamp,"服务器时间戳",data.result.timestamp); + if ((data.result.timestamp - propInfo.timestamp) < 10000) { + console.log("以前端道具为主:", propInfo); + if (propInfo.freezeAmount == undefined || propInfo.hammerAmount == undefined || propInfo.magicAmount == undefined) { + console.log("111111道具数据异常", data.result.data); + cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; + cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; + cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; + var propInfoNew = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, + "timestamp": timestamp + }; + console.log("333333上传道具信息:", propInfoNew); + cc.fx.StorageMessage.setStorage("prop", propInfoNew); + } + else { + console.log("道具数据正常"); + cc.fx.GameConfig.GM_INFO.freezeAmount = propInfo.freezeAmount; + cc.fx.GameConfig.GM_INFO.hammerAmount = propInfo.hammerAmount; + cc.fx.GameConfig.GM_INFO.magicAmount = propInfo.magicAmount; + cc.fx.GameTool.setUserProp(0, 0, function (data) { + }); + } + } + else { + cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze; + cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer; + cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand; + var propInfoNew = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, + "timestamp": timestamp + }; + console.log("22222222上传道具信息:", propInfoNew, data.result); + cc.fx.StorageMessage.setStorage("prop", propInfoNew); + } + } + }); + }; + //旧用户,无本地缓存读取配置 + GameManager.prototype.oldReadData = function (retryCount) { + var _this = this; + console.log("读取旧信息"); + var MAX_RETRIES = 15; + var timestamp = Date.now(); + // 读取用户数据 + //@ts-ignore + wx.cloud.callFunction({ + name: 'userData', + data: { + action: 'read' + }, + success: function (res) { + console.log('读取用户数据成功', res.result); + if (res.result.code == 404 && res.result.message == "未找到用户数据") { + if (res.result.openid) { + cc.fx.GameConfig.GM_INFO.openid = res.result.openid; + } + cc.fx.GameConfig.GM_INFO.first = true; + _this.load3 = true; + _this.load4 = true; + var levelInfo = { "level": 0, "timestamp": timestamp }; + cc.fx.StorageMessage.setStorage("level", levelInfo); + var coinInfo = { "coin": 0, "timestamp": timestamp }; + console.log("33333333333"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + var propInfo = { + "freezeAmount": 0, + "hammerAmount": 0, + "magicAmount": 0, + "timestamp": timestamp, + }; + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserInfo(function (data) { + if (data.result.code == 200) { + console.log("上传用户信息成功", data); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userData', + data: { + action: 'read' + }, + success: function (res) { + console.log("上传后,读取用户信息,为上报注册时间"); + if (res.result.code == 200) { + var time = res.result.data.register_time; + MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(time); + } + } + }); + } + }); + console.log("服务器也没有金币信息", cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameTool.setUserCoin(cc.fx.GameConfig.GM_INFO.coin, function (data) { + }); + cc.fx.GameTool.setUserLevel(function (data) { + }); + setTimeout(function () { + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + cc.fx.GameConfig.GM_INFO.magicAmount = 0; + cc.fx.GameTool.setUserProp(0, 0, function (data) { + if (data.result.code == 200) { + console.log("上传道具信息成功", data); + } + else { + MiniGameSdk_1.MiniGameSdk.API.showToast("网络异常,正在努力加载"); + setTimeout(function () { + _this.oldReadData(0); + }, 1000); + } + }); + }, 0); + } + else if (res.result.code == 200) { + if (res.result.data) { + cc.fx.GameConfig.GM_INFO.openid = res.result.openid; + cc.fx.GameConfig.GM_INFO.level = res.result.data.level; + cc.fx.GameConfig.GM_INFO.coin = res.result.data.coinAmount; + cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freezeAmount; + cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammerAmount; + cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magicAmount; + cc.fx.GameConfig.GM_INFO.username = res.result.data.username; + cc.fx.GameConfig.GM_INFO.useravatar = res.result.data.useravatar; + cc.fx.StorageMessage.setStorage("openid", cc.fx.GameConfig.GM_INFO.openid); + var register_time = res.result.data.register_time; + MiniGameSdk_1.MiniGameSdk.API.shushu_userSet(register_time); + } + setTimeout(function () { + cc.fx.GameTool.getUserCoin(function (data) { + if (data.result.code == 404 && data.result.message == "未找到金币数据") { + var coinInfo = { "coin": 0, "timestamp": timestamp }; + cc.fx.GameConfig.GM_INFO.coin = 0; + cc.fx.StorageMessage.setStorage("coin", coinInfo); + console.log("没有金币信息,从用户接口拿到数据", cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameTool.setUserCoin(function (data) { + // console.log("上传",data); + _this.load3 = true; + }); + } + else if (data.result.code == 200) { + // console.log("有金币信息,从金币接口拿到数据",data.result.data); + cc.fx.GameConfig.GM_INFO.coin = data.result.data; + var coinInfo = { "coin": cc.fx.GameConfig.GM_INFO.coin, "timestamp": timestamp }; + console.log("存储金币信息:", cc.fx.GameConfig.GM_INFO.coin); + console.log("4444444444"); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + _this.load3 = true; + } + }); + }, 500); + cc.fx.GameTool.getUserLevel(function (data) { + if (data.result.code == 404 && data.result.message == "未找到关卡数据") { + console.log("没有等级信息,从用户接口拿到数据"); + var levelInfo = { "level": 0, "timestamp": timestamp }; + // console.log("333333存储关卡数据:",levelInfo); + cc.fx.GameConfig.GM_INFO.level = 0; + cc.fx.StorageMessage.setStorage("level", levelInfo); + cc.fx.GameTool.setUserLevel(function (data) { + console.log("拿到的数据", data); + _this.load4 = true; + }); + } + else if (data.result.code == 200) { + console.log("有等级信息,从关卡接口拿到数据", data.result.data); + cc.fx.GameConfig.GM_INFO.level = data.result.data; + var levelInfo = { "level": cc.fx.GameConfig.GM_INFO.level, "timestamp": timestamp }; + // console.log("444444存储关卡信息:",levelInfo); + cc.fx.StorageMessage.setStorage("level", levelInfo); + _this.load4 = true; + } + }); + setTimeout(function () { + cc.fx.GameTool.getUserProp(function (data) { + if (data.result.code == 404 && data.result.message == "未找到道具数据") { + console.log("没有道具信息,从用户接口拿到数据"); + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + cc.fx.GameConfig.GM_INFO.magicAmount = 0; + var propInfo = { + "freezeAmount": 0, + "hammerAmount": 0, + "magicAmount": 0, + "timestamp": timestamp, + }; + console.log("上传道具信息:", propInfo); + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserProp(0, 0, function (data) { + }); + } + else if (data.result.code == 200) { + console.log("有道具信息,从道具接口拿到数据", data.result.data); + cc.fx.GameConfig.GM_INFO.freezeAmount = data.result.data.freeze || 0; + cc.fx.GameConfig.GM_INFO.hammerAmount = data.result.data.hammer || 0; + cc.fx.GameConfig.GM_INFO.magicAmount = data.result.data.magic_wand || 0; + var propInfo = { + "freezeAmount": cc.fx.GameConfig.GM_INFO.freezeAmount, + "hammerAmount": cc.fx.GameConfig.GM_INFO.hammerAmount, + "magicAmount": cc.fx.GameConfig.GM_INFO.magicAmount, + "timestamp": timestamp, + }; + console.log("上传道具信息:", propInfo); + cc.fx.StorageMessage.setStorage("prop", propInfo); + } + }); + }, 0); + } + }, + fail: function (err) { + console.error('读取用户数据失败', err); + if (retryCount < MAX_RETRIES) { + console.error("\u8BFB\u53D6\u7528\u6237\u6570\u636E\u5931\u8D25\uFF0C\u7B2C " + (retryCount + 1) + " \u6B21\u91CD\u8BD5\uFF0C\u9519\u8BEF\u4FE1\u606F:", err); + // 延迟 2 秒后重试 + setTimeout(function () { + _this.readUserData(retryCount + 1); + }, 2000); + } + else { + console.error('读取用户数据失败,达到最大重试次数,退出游戏', err); + // 退出游戏 + cc.game.end(); + } + } + }); + }; + GameManager.prototype.setUserData = function () { + cc.fx.GameConfig.GameTool(function (data) { + console.log("上传", data); + }); + }; + GameManager.prototype.startTimeCutDown = function () { + this.scheduleCallback = function () { + if (this.timeNumber <= 0) { + this.stopTimeCutDown(); + } + else { + this.timeNumber -= 1; + } + }.bind(this); + this.schedule(this.scheduleCallback, 1); + }; + GameManager.prototype.stopTimeCutDown = function () { + if (this.scheduleCallback) { + this.unschedule(this.scheduleCallback); + } + }; + GameManager.prototype.update = function (dt) { + if (this.load1 && this.load2 && this.load3 && this.load4 && this.load5 && this.timeNumber <= 0) { + this.load1 = this.load2 = false; + MiniGameSdk_1.MiniGameSdk.API.shushu_Init(); + this.startGame(); + } + }; + var GameManager_1; + GameManager._instance = null; + __decorate([ + property(cc.Label) + ], GameManager.prototype, "label", void 0); + __decorate([ + property + ], GameManager.prototype, "text", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "方块数组" }) + ], GameManager.prototype, "Block_Array", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "墙壁数组" }) + ], GameManager.prototype, "Wall_Prefab", void 0); + __decorate([ + property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) + ], GameManager.prototype, "Block_Color", void 0); + GameManager = GameManager_1 = __decorate([ + ccclass + ], GameManager); + return GameManager; +}(cc.Component)); +exports.default = GameManager; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdsRixpREFBZ0Q7QUFFMUMsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFHNUM7SUFBeUMsK0JBQVk7SUFBckQ7UUFBQSxxRUFpcEJDO1FBOW9CRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFJdkIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyxpQkFBVyxHQUEwQixFQUFFLENBQUM7UUFHeEMseURBQXlEO1FBQ3pELG1EQUFtRDtRQUVuRCxXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLFdBQUssR0FBWSxLQUFLLENBQUM7O0lBdW5CM0IsQ0FBQztvQkFqcEJvQixXQUFXO0lBK0I1Qix3QkFBd0I7SUFFeEIsNEJBQU0sR0FBTjtRQUFBLGlCQW1FQztRQWpFRyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsS0FBSyxD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QURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7b0RBQ2Q7SUFHbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO29EQUNkO0lBaEJ2QixXQUFXO1FBRC9CLE9BQU87T0FDYSxXQUFXLENBaXBCL0I7SUFBRCxrQkFBQztDQWpwQkQsQUFpcEJDLENBanBCd0MsRUFBRSxDQUFDLFNBQVMsR0FpcEJwRDtrQkFqcEJvQixXQUFXIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IHsgTWluaUdhbWVNYW5hZ2VyIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdhbWVNYW5hZ2VyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICBsYWJlbDogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eVxyXG4gICAgdGV4dDogc3RyaW5nID0gJ2hlbGxvJztcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IEdhbWVNYW5hZ2VyID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLlopnlo4HmlbDnu4RcIiB9KVxyXG4gICAgV2FsbF9QcmVmYWI6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG4gICAgcGFydGljbGVFZmZlY3RzOiBjYy5QYXJ0aWNsZUFzc2V0W107XHJcbiAgICAvLyBAcHJvcGVydHkoe3R5cGU6IFtjYy5QYXJ0aWNsZVN5c3RlbV0sIHRvb2x0aXA6XCLnspLlrZDmlbDnu4RcIn0pXHJcbiAgICAvLyBwYXJ0aWNsZUVmZmVjdHMgOiBBcnJheTxjYy5QYXJ0aWNsZVN5c3RlbT4gPSBbXTtcclxuXHJcbiAgICBsb2FkMTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxvYWQzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkNDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNjaGVkdWxlQ2FsbGJhY2s6IGFueTtcclxuICAgIHRpbWVOdW1iZXI6IG51bWJlcjtcclxuXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG5cclxuICAgICAgICB3aW5kb3cuaW5pdE1ncigpO1xyXG4gICAgICAgIHRoaXMudGltZU51bWJlciA9IDM7XHJcbiAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5pbml0KHRydWUpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lU3RhdGUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlYWRNdXNpY0NvbmZpZygpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6Z+z5LmQ5byA5YWzXCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4pO1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheU11c2ljR2FtZSgpO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWQxID0gdGhpcy5sb2FkMiA9IHRoaXMubG9hZDMgPSB0aGlzLmxvYWQ0ID0gdGhpcy5sb2FkNSA9IGZhbHNlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlYWRVc2VyRGF0YSgpO1xyXG4gICAgICAgIH0sIDIwMCk7XHJcblxyXG5cclxuICAgICAgICBpZiAoR2FtZU1hbmFnZXIuX2luc3RhbmNlID09IG51bGwpIHtcclxuICAgICAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHBhdGggPSAncHJlZmFiL2Jsb2NrJztcclxuICAgICAgICBjb25zdCBwYXRoMiA9ICdwcmVmYWIvd2FsbCc7XHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aCwgY2MuUHJlZmFiLCAoZXJyLCBhc3NldHM6IGNjLlByZWZhYltdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfliqjmgIHliqDovb0gYmxvY2sg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5CbG9ja19BcnJheSA9IGFzc2V0cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ+aWueWdl+WKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMuQmxvY2tfQXJyYXkubGVuZ3RoLCAn5Liq5pa55Z2XJyk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U29ydCgpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY2MucmVzb3VyY2VzLmxvYWREaXIocGF0aDIsIGNjLlByZWZhYiwgKGVyciwgYXNzZXRzOiBjYy5QcmVmYWJbXSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn5Yqo5oCB5Yqg6L29IHdhbGwg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJMb2FkU2NlbmVcIik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5bCG5Yqg6L2955qEIFByZWZhYiDotYvlgLznu5kgQmxvY2tfQXJyYXlcclxuICAgICAgICAgICAgdGhpcy5XYWxsX1ByZWZhYiA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5sb2FkMiA9IHRydWU7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCflopnliqDovb3miJDlip/vvIzlhbHliqDovb3kuoYnLCB0aGlzLldhbGxfUHJlZmFiLmxlbmd0aCwgJ+S4quWimScpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFdhbGxQcmVmYWJTb3J0KCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgICAvLyDmo4DmtYvlvq7kv6HlsI/muLjmiI/liIfliLDlkI7lj7BcclxuICAgICAgICBpZiAoY2Muc3lzLnBsYXRmb3JtID09PSBjYy5zeXMuV0VDSEFUX0dBTUUpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uSGlkZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uSGlkZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgLy8g5qOA5rWL5b6u5L+h5bCP5ri45oiP5Zue5Yiw5YmN5Y+wXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5vblNob3coKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblNob3coKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkhpZGUoKSB7XHJcbiAgICAgICAgY2MuYXVkaW9FbmdpbmUuc3RvcE11c2ljKCk7XHJcbiAgICAgICAgY2MuZ2FtZS5wYXVzZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2hvdygpIHtcclxuICAgICAgICBjYy5hdWRpb0VuZ2luZS5yZXN1bWVNdXNpYygpO1xyXG4gICAgICAgIGNjLmdhbWUucmVzdW1lKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZFBhcnRpY2xlRWZmZWN0cygpIHtcclxuICAgIH1cclxuXHJcblxyXG5cclxuXHJcbiAgICBzZXRXYWxsUHJlZmFiU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsnZG93bicsICdkb3duTGVmdCcsICdkb3duUmlnaHQnLCAnbGVmdCcsICdyaWdodCcsICd1cCcsICd1cExlZnQnLCAndXBSaWdodCddO1xyXG4gICAgICAgIHRoaXMuV2FsbF9QcmVmYWIuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleEEgPSBvcmRlci5pbmRleE9mKGEubmFtZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IG9yZGVyLmluZGV4T2YoYi5uYW1lKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRQYXJ0aWNsZVNvcnQoKSB7XHJcbiAgICAgICAgY29uc3Qgb3JkZXIgPSBbJ3RvcCcsICdib3QnLCAncmlnJywgJ2xlZiddO1xyXG4gICAgICAgIHRoaXMucGFydGljbGVFZmZlY3RzLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6L+b5YWl5Zy65pmv5LmL5YmNX19fX19fX19fX19fX1wiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkdhbWVcIikpXHJcbiAgICAgICAgICAgIC50bygwLjUsIHsgb3BhY2l0eTogMTAwIH0pXHJcbiAgICAgICAgICAgIC5jYWxsKCgpID0+IHtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDpooTliqDovb3miJDlip/lkI7liqDovb3lnLrmma9cclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfliqDovb0gSG9tZVNjZW5lIOWcuuaZr+Wksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm1hc2tcIikpXHJcbiAgICAgICAgICAgIC50bygwLjUsIHsgb3BhY2l0eTogMjU1IH0pXHJcbiAgICAgICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICAvLyBjYy5sb2FkZXIucmVsZWFzZUFsbCgpO1xyXG4gICAgICAgIC8vIOmihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvXHJcblxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgcmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgPSAwKSB7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHtcclxuICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJsZXZlbFwiKTtcclxuICAgICAgICAgICAgLy/ml6fnmoTor7vlj5bmlbDmja7orr7nva7mlbDmja7mlrnms5Us5Lul5by66IGU572R5Li65Li7XHJcbiAgICAgICAgICAgIGlmIChsZXZlbEluZm8gPT0gdW5kZWZpbmVkIHx8IGxldmVsSW5mbyA9PSBcIlwiIHx8IGxldmVsSW5mbyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKHJldHJ5Q291bnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v5paw55qE6K+75Y+W5pWw5o2u6K6+572u5pa55rOV77yM5Lul5pys5Zyw5Li65Li7XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uZXdSZWFkRGF0YSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Y2z5bCG6K+75Y+W5L2T5Yqb5YC8XCIpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5L2T5Yqb5YC85a6M5oiQ6L+b5YWl5ri45oiPXCIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkNSA9IHRydWU7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQ0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkNSA9IHRydWU7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldEhlYWx0aChudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g5a2Y5YKo55So5oi35pWw5o2uXHJcbiAgICB9XHJcblxyXG4gICAgcmVhZE11c2ljQ29uZmlnKCkge1xyXG4gICAgICAgIGxldCBhdWRpb0luZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwibXVzaWNcIik7XHJcbiAgICAgICAgaWYgKGF1ZGlvSW5mbyA9PSB1bmRlZmluZWQgfHwgYXVkaW9JbmZvID09IFwiXCIgfHwgYXVkaW9JbmZvID09IG51bGwpIHtcclxuICAgICAgICAgICAgYXVkaW9JbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgXCJtdXNpY09wZW5cIjogdHJ1ZSwgICAgICAgICAgICAgLy/pn7PkuZBcclxuICAgICAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiB0cnVlLCAgICAgICAgICAgIC8v6Z+z5pWIXHJcbiAgICAgICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IHRydWUsICAgICAgICAgICAvL+mch+WKqFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLCBhdWRpb0luZm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbiA9IGF1ZGlvSW5mby5tdXNpY09wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5lZmZlY3RPcGVuID0gYXVkaW9JbmZvLmVmZmVjdE9wZW47XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiA9IGF1ZGlvSW5mby52aWJyYXRlT3BlbjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy/mlrDnlKjmiLfvvIzmnInmnKzlnLDnvJPlrZjor7vlj5bphY3nva5cclxuICAgIG5ld1JlYWREYXRhKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi6K+75Y+W5paw5L+h5oGvXCIpO1xyXG4gICAgICAgIGxldCBvcGVuaWQgPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwib3BlbmlkXCIpO1xyXG4gICAgICAgIGlmIChvcGVuaWQgPT0gbnVsbCB8fCBvcGVuaWQgPT0gXCJcIiB8fCBvcGVuaWQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJb3BlbmlkXCIpO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQuZGF0YSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IHJlcy5yZXN1bHQub3BlbmlkO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIgPSByZXMucmVzdWx0LmRhdGEudXNlcmF2YXRhcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2lzdGVyX3RpbWUgPSByZXMucmVzdWx0LmRhdGEucmVnaXN0ZXJfdGltZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJvcGVuaWRcIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCfor7vlj5bnlKjmiLfmlbDmja7lpLHotKUnLCBlcnIpXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAob3BlbmlkKVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IG9wZW5pZDtcclxuICAgICAgICB9XHJcblxyXG5cclxuXHJcbiAgICAgICAgLy/nrYnnuqfkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLmdldFN0b3JhZ2UoXCJsZXZlbFwiKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDlhbPljaHmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmsqHmnInnrYnnuqfkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIik7XHJcbiAgICAgICAgICAgICAgICBpZiAobGV2ZWxJbmZvLmxldmVsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gbGV2ZWxJbmZvLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuacieetiee6p+S/oeaBr++8jOS7juWFs+WNoeaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgLy/muLjmiI/liY3nq6/lrZjlgqgg5paw5LqO5pyN5Yqh5Zmo56uvLOS7pea4uOaIj+WJjeerr+S/oeaBr+S4uuS4u++8jOaUvuacjeWKoeWZqOWtmOWCqFxyXG4gICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBsZXZlbEluZm8udGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLnrYnnuqfml7bpl7Tlt646XCIsIHRlbXApO1xyXG4gICAgICAgICAgICAgICAgaWYgKChkYXRhLnJlc3VsdC50aW1lc3RhbXAgLSBsZXZlbEluZm8udGltZXN0YW1wKSA8IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxldmVsSW5mby5sZXZlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS7pea4uOaIj+WJjeerr+etiee6p+S4uuWHhlwiLCBkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gbGV2ZWxJbmZvLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuetiee6p+S4ujpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XmnI3liqHlmajnrYnnuqfkuLrlh4ZcIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBsZXZlbEluZm8ubGV2ZWwgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxJbmZvLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjExMTExMTHlrZjlgqjlhbPljaHmlbDmja46XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIiwgbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy/ph5HluIHkv6Hmga9cclxuICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyQ29pbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgICAgICBsZXQgY29pbkluZm8gPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwiY29pblwiKTtcclxuICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDph5HluIHmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvaW5JbmZvLmNvaW4pXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyQ29pbigoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pyJ6YeR5biB5L+h5oGv77yM5LuO6YeR5biB5o6l5Y+j5ou/5Yiw5pWw5o2uXCIsZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAvL+a4uOaIj+WJjeerr+WtmOWCqCDmlrDkuo7mnI3liqHlmajnq68s5Lul5ri45oiP5YmN56uv5L+h5oGv5Li65Li777yM5pS+5pyN5Yqh5Zmo5a2Y5YKoXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IGRhdGEucmVzdWx0LnRpbWVzdGFtcCAtIGNvaW5JbmZvLnRpbWVzdGFtcDtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6YeR5biB5pe26Ze05beuOlwiLCB0ZW1wKTtcclxuICAgICAgICAgICAgICAgIGlmICgoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gY29pbkluZm8udGltZXN0YW1wKSA8IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XliY3nq6/ph5HluaPkuLrlh4Y6XCIsIGNvaW5JbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoY29pbkluZm8uY29pbilcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSBjb2luSW5mby5jb2luO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IGRhdGEucmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvLmNvaW4gPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29pbkluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMTExMTExXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pS55Y+Y5ZCO6YeR5biBOlwiLCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckNvaW4oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v5pyN5Yqh5Zmo56uv5a2Y5YKo5pe26Ze05paw5LqO5ri45oiP56uv77yM5Lul5pyN5Yqh5Zmo56uv5Li65Li7LOW+gOWJjeerr+WtmOWCqFxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XmnI3liqHlmajph5HluaPkuLrlh4Y6XCIsIGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICBjb2luSW5mby5jb2luID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW47XHJcbiAgICAgICAgICAgICAgICAgICAgY29pbkluZm8udGltZXN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjIyMlwiKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWQzID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v6YGT5YW35L+h5oGvXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0VXNlclByb3AoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICAgICAgbGV0IHByb3BJbmZvID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcInByb3BcIik7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDQwNCAmJiBkYXRhLnJlc3VsdC5tZXNzYWdlID09IFwi5pyq5om+5Yiw6YGT5YW35pWw5o2uXCIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YGT5YW35L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9wSW5mby5mcmVlemVBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLmhhbW1lckFtb3VudCA9PSB1bmRlZmluZWQgfHwgcHJvcEluZm8ubWFnaWNBbW91bnQgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIyMjIyMjIy6YGT5YW35pWw5o2u5byC5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VuID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgcHJvcEluZm9OZXcgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiZnJlZXplQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibWFnaWNBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMTHkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5mcmVlemU7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBwcm9wSW5mby5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSBwcm9wSW5mby5mcmVlemVBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgLy8gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gcHJvcEluZm8ubWFnaWNBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLCAwLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pys5Zyw5pe26Ze05oizXCIscHJvcEluZm8udGltZXN0YW1wLFwi5pyN5Yqh5Zmo5pe26Ze05oizXCIsZGF0YS5yZXN1bHQudGltZXN0YW1wKTtcclxuICAgICAgICAgICAgICAgIGlmICgoZGF0YS5yZXN1bHQudGltZXN0YW1wIC0gcHJvcEluZm8udGltZXN0YW1wKSA8IDEwMDAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLku6XliY3nq6/pgZPlhbfkuLrkuLs6XCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvcEluZm8uZnJlZXplQW1vdW50ID09IHVuZGVmaW5lZCB8fCBwcm9wSW5mby5oYW1tZXJBbW91bnQgPT0gdW5kZWZpbmVkIHx8IHByb3BJbmZvLm1hZ2ljQW1vdW50ID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjExMTExMemBk+WFt+aVsOaNruW8guW4uFwiLCBkYXRhLnJlc3VsdC5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5oYW1tZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IGRhdGEucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvTmV3ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJmcmVlemVBbW91bnRcIjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiaGFtbWVyQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMzMzMzMz5LiK5Lyg6YGT5YW35L+h5oGvOlwiLCBwcm9wSW5mb05ldyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvTmV3KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi6YGT5YW35pWw5o2u5q2j5bi4XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcHJvcEluZm8uZnJlZXplQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcHJvcEluZm8uaGFtbWVyQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBwcm9wSW5mby5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwgMCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSBkYXRhLnJlc3VsdC5kYXRhLm1hZ2ljX3dhbmQ7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvTmV3ID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiMjIyMjIyMjLkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvTmV3LCBkYXRhLnJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm9OZXcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICAvL+aXp+eUqOaIt++8jOaXoOacrOWcsOe8k+WtmOivu+WPlumFjee9rlxyXG4gICAgb2xkUmVhZERhdGEocmV0cnlDb3VudDogbnVtYmVyKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCLor7vlj5bml6fkv6Hmga9cIik7XHJcbiAgICAgICAgY29uc3QgTUFYX1JFVFJJRVMgPSAxNTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIOivu+WPlueUqOaIt+aVsOaNrlxyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6ICd1c2VyRGF0YScsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygn6K+75Y+W55So5oi35pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmNvZGUgPT0gNDA0ICYmIHJlcy5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOeUqOaIt+aVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5yZXN1bHQub3BlbmlkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZFxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7IFwibGV2ZWxcIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImxldmVsXCIsIGxldmVsSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvaW5JbmZvID0geyBcImNvaW5cIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCIzMzMzMzMzMzMzM1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcInByb3BcIiwgcHJvcEluZm8pO1xyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckluZm8oKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOeUqOaIt+S/oeaBr+aIkOWKn1wiLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5ZCO77yM6K+75Y+W55So5oi35L+h5oGv77yM5Li65LiK5oql5rOo5YaM5pe26Ze0XCIpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lID0gcmVzLnJlc3VsdC5kYXRhLnJlZ2lzdGVyX3RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X3VzZXJTZXQodGltZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnI3liqHlmajkuZ/msqHmnInph5HluIHkv6Hmga9cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLCAoZGF0YSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyTGV2ZWwoKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcCgwLCAwLCAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga/miJDlip9cIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi572R57uc5byC5bi477yM5q2j5Zyo5Yqq5Yqb5Yqg6L29XCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9sZFJlYWREYXRhKDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAwKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlcy5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnJlc3VsdC5kYXRhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQgPSByZXMucmVzdWx0Lm9wZW5pZDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gcmVzLnJlc3VsdC5kYXRhLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9IHJlcy5yZXN1bHQuZGF0YS5jb2luQW1vdW50O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmZyZWV6ZUFtb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IHJlcy5yZXN1bHQuZGF0YS5oYW1tZXJBbW91bnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IHJlcy5yZXN1bHQuZGF0YS5tYWdpY0Ftb3VudDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lID0gcmVzLnJlc3VsdC5kYXRhLnVzZXJuYW1lO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcmF2YXRhciA9IHJlcy5yZXN1bHQuZGF0YS51c2VyYXZhdGFyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwib3BlbmlkXCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdpc3Rlcl90aW1lID0gcmVzLnJlc3VsdC5kYXRhLnJlZ2lzdGVyX3RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfdXNlclNldChyZWdpc3Rlcl90aW1lKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJDb2luKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOmHkeW4geaVsOaNrlwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb2luSW5mbyA9IHsgXCJjb2luXCI6IDAsIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiY29pblwiLCBjb2luSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHmnInph5HluIHkv6Hmga/vvIzku47nlKjmiLfmjqXlj6Pmi7/liLDmlbDmja5cIiwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaciemHkeW4geS/oeaBr++8jOS7jumHkeW4geaOpeWPo+aLv+WIsOaVsOaNrlwiLGRhdGEucmVzdWx0LmRhdGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gZGF0YS5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29pbkluZm8gPSB7IFwiY29pblwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlrZjlgqjph5HluIHkv6Hmga86XCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIjQ0NDQ0NDQ0NDRcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImNvaW5cIiwgY29pbkluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZDMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJMZXZlbCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YS5yZXN1bHQuY29kZSA9PSA0MDQgJiYgZGF0YS5yZXN1bHQubWVzc2FnZSA9PSBcIuacquaJvuWIsOWFs+WNoeaVsOaNrlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuayoeacieetiee6p+S/oeaBr++8jOS7jueUqOaIt+aOpeWPo+aLv+WIsOaVsOaNrlwiKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsZXZlbEluZm8gPSB7IFwibGV2ZWxcIjogMCwgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIjMzMzMzM+WtmOWCqOWFs+WNoeaVsOaNrjpcIixsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLCBsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckxldmVsKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmi7/liLDnmoTmlbDmja5cIiwgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRhLnJlc3VsdC5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInnrYnnuqfkv6Hmga/vvIzku47lhbPljaHmjqXlj6Pmi7/liLDmlbDmja5cIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSBkYXRhLnJlc3VsdC5kYXRhO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxldmVsSW5mbyA9IHsgXCJsZXZlbFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwsIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCI0NDQ0NDTlrZjlgqjlhbPljaHkv6Hmga86XCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJsZXZlbFwiLCBsZXZlbEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkNCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRVc2VyUHJvcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDpgZPlhbfmlbDmja5cIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5rKh5pyJ6YGT5YW35L+h5oGv77yM5LuO55So5oi35o6l5Y+j5ou/5Yiw5pWw5o2uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5mcmVlemVBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5oYW1tZXJBbW91bnQgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiAwLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IDAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwidGltZXN0YW1wXCI6IHRpbWVzdGFtcCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkuIrkvKDpgZPlhbfkv6Hmga86XCIsIHByb3BJbmZvKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwicHJvcFwiLCBwcm9wSW5mbyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlclByb3AoMCwgMCwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRhdGEucmVzdWx0LmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInpgZPlhbfkv6Hmga/vvIzku47pgZPlhbfmjqXlj6Pmi7/liLDmlbDmja5cIiwgZGF0YS5yZXN1bHQuZGF0YSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZyZWV6ZUFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuZnJlZXplIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhhbW1lckFtb3VudCA9IGRhdGEucmVzdWx0LmRhdGEuaGFtbWVyIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50ID0gZGF0YS5yZXN1bHQuZGF0YS5tYWdpY193YW5kIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByb3BJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImZyZWV6ZUFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImhhbW1lckFtb3VudFwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm1hZ2ljQW1vdW50XCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYWdpY0Ftb3VudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjogdGltZXN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS4iuS8oOmBk+WFt+S/oeaBrzpcIiwgcHJvcEluZm8pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJwcm9wXCIsIHByb3BJbmZvKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgICAgfSwgMCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+ivu+WPlueUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgICAgIGlmIChyZXRyeUNvdW50IDwgTUFYX1JFVFJJRVMpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGDor7vlj5bnlKjmiLfmlbDmja7lpLHotKXvvIznrKwgJHtyZXRyeUNvdW50ICsgMX0g5qyh6YeN6K+V77yM6ZSZ6K+v5L+h5oGvOmAsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5bu26L+fIDIg56eS5ZCO6YeN6K+VXHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZFVzZXJEYXRhKHJldHJ5Q291bnQgKyAxKTtcclxuICAgICAgICAgICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign6K+75Y+W55So5oi35pWw5o2u5aSx6LSl77yM6L6+5Yiw5pyA5aSn6YeN6K+V5qyh5pWw77yM6YCA5Ye65ri45oiPJywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAvLyDpgIDlh7rmuLjmiI9cclxuICAgICAgICAgICAgICAgICAgICBjYy5nYW1lLmVuZCgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBzZXRVc2VyRGF0YSgpIHtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdhbWVUb29sKChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsIGRhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnRpbWVOdW1iZXIgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudGltZU51bWJlciAtPSAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfS5iaW5kKHRoaXMpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wVGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2NoZWR1bGVDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlKGR0KSB7XHJcbiAgICAgICAgaWYgKHRoaXMubG9hZDEgJiYgdGhpcy5sb2FkMiAmJiB0aGlzLmxvYWQzICYmIHRoaXMubG9hZDQgJiYgdGhpcy5sb2FkNSAmJiB0aGlzLnRpbWVOdW1iZXIgPD0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWQxID0gdGhpcy5sb2FkMiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2h1c2h1X0luaXQoKTtcclxuICAgICAgICAgICAgdGhpcy5zdGFydEdhbWUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Tool/GameTool.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '43bfcJ6/25Fs4fHUE0PeBOX', 'GameTool'); +// Script/module/Tool/GameTool.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GameTool = void 0; +var MiniGameSdk_1 = require("../../Sdk/MiniGameSdk"); +//最大工具类 各种公共方法,以及处理上传,获取后端接口数据 +var GameTool = { + _startTime: 0, + _endTime: 0, + _totalTime: 0, + //获取userId + Authentication: function () { + var name = "user_" + cc.fx.GameConfig.GM_INFO.gameId; + var data = JSON.parse(localStorage.getItem(name)); + if (data == "undifend" || data == null || data == "") { + var urlNow = window.location.href; + if (!this.containsTrain(urlNow)) { + var url = "https://api.sparkus.cn/api/user/auth/login?domain=hui32579WdYPsgYq&callback=" + location.href; + window.location.href = url; + } + } + else { + cc.fx.StorageMessage.setStorage(name, data); + cc.fx.GameConfig.GM_INFO.userId = parseInt(data.userId); + } + }, + containsTrain: function (str) { + return /from=train/i.test(str); + }, + //埋点上传 + setGameData: function () { + //GAME_DATA 初始化 每次清零 + cc.fx.GameConfig.GAME_DATA = []; + cc.fx.GameConfig.GAME_DATA.push(cc.fx.GameConfig.CLICK_DATA); + cc.fx.GameConfig.CLICK_init(); + var data = cc.fx.GameConfig.GAME_DATA; + var matchId = this.getMatchId(); + var postData = { + "gameId": cc.fx.GameConfig.GM_INFO.gameId, + "userId": cc.fx.GameConfig.GM_INFO.userId, + "scode": cc.fx.GameConfig.GM_INFO.scode, + "matchId": matchId, + "data": data + }; + // console.log("上传数据:",postData); + // cc.fx.HttpUtil.uploadUserLogData(postData,function(){}) + }, + //上传排行榜 type为1 + setRank: function (data) { + //GAME_DATA 初始化 每次清零 + var postData = { + "gameId": cc.fx.GameConfig.GM_INFO.gameId, + "userId": cc.fx.GameConfig.GM_INFO.userId, + "type": 1, + "score": data.score, + "accuracy": data.date, + "success": cc.fx.GameConfig.GM_INFO.success + }; + // cc.fx.HttpUtil.rankData(1,function(){},postData); + }, + //获取排行榜 type为2 + getRank: function (data, callback) { + var rankLength = data.length; + var postData = { + "gameId": cc.fx.GameConfig.GM_INFO.gameId, + "userId": cc.fx.GameConfig.GM_INFO.userId, + "page": 1, + "pageSize": rankLength + }; + //回调进getRankData + // cc.fx.HttpUtil.rankData(2,data =>{callback(data)},postData); + }, + //获取matchId 用于上传每次点击数据里面记录id方便查询 + getMatchId: function () { + var matchId = cc.sys.localStorage.getItem("matchId"); + var tempId = matchId; + if (matchId == "undifend" || matchId == null) { + matchId = this.setMatchId(); + } + else { + if (this.containsNanana(matchId) == true) { + matchId = this.setMatchId(); + } + else { + var char = parseInt(tempId.substring(10, tempId.length)); + if (cc.fx.GameConfig.GM_INFO.level == 1) { + char += 1; + matchId = tempId.slice(0, 10) + char + ""; + if (this.containsNanana(matchId)) + matchId = this.setMatchId(); + cc.fx.GameConfig.GM_INFO.matchId = matchId; + cc.sys.localStorage.setItem("matchId", matchId); + } + } + } + if (this.containsNanana(matchId) == true) { + matchId = this.setMatchId(); + } + return matchId; + }, + //检测matchId 如果有缓存以前的nanana数据清除 + containsNanana: function (str) { + return /na/i.test(str); + }, + //重新设置MatchId + setMatchId: function () { + // 定义包含可用字符的字符集 + var characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; + // 创建一个数组以保存随机字符 + var uuidArray = []; + // 循环10次 生成10位的UUID + for (var i = 0; i < 10; i++) { + // 生成随机索引,范围是字符集的长度 + var randomIndex = Math.floor(Math.random() * characters.length); + // 从字符集中获取随机字符 + var randomChar = characters.charAt(randomIndex); + // 将字符添加到数组中 + uuidArray.push(randomChar); + } + var data = uuidArray.join('') + 1 + ""; + cc.sys.localStorage.setItem("matchNumber", 1); + cc.sys.localStorage.setItem("matchId", data); + cc.fx.GameConfig.GM_INFO.matchId = data; + return data; + }, + //截取名字 + subName: function (name, length) { + if (name.length > length) { + name = name.substring(0, length) + "..."; + } + return name; + }, + //设置头像 + setPic: function (node, pic) { + node.active = false; + var url = pic; + setTimeout(function () { + fetch(url) + .then(function (response) { + return response.headers.get('Content-Length'); + }) + .then(function (errNo) { + if (errNo == "5093") { + node.active = true; + } + }) + .catch(function (error) { + // console.error('Error fetching X-Info:', error); + }); + }, 100); + cc.assetManager.loadRemote(url, { ext: '.png' }, function (err, texture) { + if (texture) { + node.active = true; + node.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(texture); + } + else { + // console.log(err,texture) + } + }); + }, + //第一个参数把目标带进来处理,第二个参数为名字长度,不同场景不同需求 + //名字4短,小排行,名字6长,大排行 + getRankData: function (data, target, nameLength) { + target.listData = data.data.list; + target.selfData = data.data.info; + var rankData = []; + var self = false; + cc.fx.GameTool.setPic(target.selfNode.getChildByName("pic").getChildByName("icon"), target.selfData.pic); + for (var i = 0; i <= target.listData.length - 1; i++) { + rankData.push({ rank: (i + 1), name: target.listData[i].nickName, total: target.listData[i].score, time: null, pic: target.listData[i].pic }); + if (cc.fx.GameConfig.GM_INFO.userId == target.listData[i].userId) { + self = true; + target.rankNumber = i; + target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = (i + 1) + ""; + } + if (i == (target.listData.length - 1) && self == false) { + target.rankNumber = i; + target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string = "99+"; + } + } + target.selfData.nickName = cc.fx.GameTool.subName(target.selfData.nickName, nameLength); + target.selfNode.getChildByName("nameLab").getComponent(cc.Label).string = target.selfData.nickName; + target.selfNode.getChildByName("totalLab").getComponent(cc.Label).string = target.selfData.score; + var timeTemp = cc.fx.GameTool.getTimeShenNong(target.selfData.totleTimes); + // target.selfNode.getChildByName("timeLab").getComponent(cc.Label).string = timeTemp + ""; + switch (target.selfNode.getChildByName("rankLab").getComponent(cc.Label).string) { + case "1": + target.selfNode.getChildByName("rank").getChildByName("one").active = true; + break; + case "2": + target.selfNode.getChildByName("rank").getChildByName("two").active = true; + break; + case "3": + target.selfNode.getChildByName("rank").getChildByName("three").active = true; + break; + } + // 大排行 + if (nameLength == 6) { + target.rankList.setData(rankData); + target.selfNode.opacity = 255; + if (target.selfData.totalSunCount == 0) + target.selfNode.opacity = 0; + } + }, + getSeedRandom: function (min, max) { + // console.log("随机数:",cc.fx.GameConfig.GM_INFO.currSeed); + max = max || 1; + min = min || 0; + cc.fx.GameConfig.GM_INFO.currSeed = (cc.fx.GameConfig.GM_INFO.currSeed * 9301 + 49297) % 233280; + var rnd = cc.fx.GameConfig.GM_INFO.currSeed / 233280.0; + var tmp = min + rnd * (max - min); + return parseInt(tmp); + }, + //获取关卡配置的那个关卡数 + getCustom: function (type) { + var custom = cc.fx.StorageMessage.getStorage(cc.fx.storageType.storageTypeCustom); + if (custom == "undifend" || custom == null || custom == "") { + this.setCustom(); + } + else { + cc.fx.GameConfig.GM_INFO_SET("custom", custom[0]); + if (custom[0] != 0 || type == true) { + custom.shift(); + if (custom.length == 0) { + this.setCustom(); + } + else + cc.fx.StorageMessage.setStorage(cc.fx.storageType.storageTypeCustom, custom); + } + } + }, + //本地没有存储到配置,或者配置用完,重新创建配置 + setCustom: function () { + var arrayLength = cc.fx.GameConfig.LEVEL_INFO.length; + var arrayList = []; + for (var i = 1; i < arrayLength; i++) { + arrayList.push(i); + } + arrayList.sort(function () { return Math.random() - 0.5; }); + arrayList.unshift(0); + cc.fx.GameConfig.GM_INFO_SET("custom", arrayList[0]); + cc.fx.StorageMessage.setStorage(cc.fx.storageType.storageTypeCustom, arrayList); + }, + getSetScreenResolutionFlag: function () { + var size = cc.winSize; + var width = size.width; + var height = size.height; + if ((height / width) > (16.2 / 9)) + return false; + return true; + }, + //判断全面屏适配 + setFit: function (canvas) { + var flag = cc.fx.GameTool.getSetScreenResolutionFlag(); + if (flag) { + // console.log("不是全面屏"); + } + else { + // console.log("是全面屏"); + } + return flag; + }, + //获取游戏信息 + getGameInfo: function (node) { + var jg = false; + return jg; + }, + //设置游戏信息 + setGameInfo: function (pd) { + }, + //打字机效果 + typingAni: function (label, text, cb, target) { + var self = target; + var html = ''; + var arr = text.split(''); + var len = arr.length; + var step = 0; + self.func = function () { + html += arr[step]; + label.string = html; + if (++step == len) { + self.unschedule(self.func); + cb && cb(); + } + }; + self.schedule(self.func, 0.1, cc.macro.REPEAT_FOREVER, 0); + }, + //输入秒,返回需要展示时间格式 + getTimeMargin: function (second) { + var total = 0; + total = second; + var hour = 0; + hour = parseInt((total / 3600) + ""); //计算整数小时数 + var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数 + var min = parseInt((afterHour / 60) + ""); //计算整数分 + var m = "" + min; + if (min < 10) + m = "0" + min; + var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数 + var miao = afterMin + ""; + if (afterMin < 10) + miao = "0" + afterMin; + return m + ':' + miao; + }, + //输入秒,返回需要展示时间格式 + getTimeShenNong: function (second) { + second = parseInt(second / 1000 + ""); + var total = 0; + total = second; + var min = 0; + if (total > 60) { + min = parseInt((total / 60) + ""); //计算整数分 + } + var m = min + "'"; + var afterMin = total - min * 60; //取得算出分后剩余的秒数 + var miao = afterMin + "''"; + return m + miao; + }, + //打乱数组 + shuffleArray: function (array) { + var _a; + for (var i = array.length - 1; i > 0; i--) { + var j = Math.floor(Math.random() * (i + 1)); + _a = [array[j], array[i]], array[i] = _a[0], array[j] = _a[1]; + } + return array; + }, + //增加关卡数 + addLevel: function (time1, time2) { + cc.fx.GameConfig.GM_INFO.level += 1; + if (cc.fx.GameConfig.GM_INFO.level > 156) { + cc.fx.GameConfig.GM_INFO.level = 156; + } + var timestamp = Date.now(); + var levelInfo = { + level: cc.fx.GameConfig.GM_INFO.level, + timestamp: timestamp, + }; + // console.log("55555存储关卡数据:",levelInfo); + cc.fx.StorageMessage.setStorage("level", levelInfo); + if (time1 && time2) { + var data = { + time: time1, + add_Time: time2, + result: "success" + }; + cc.fx.GameTool.shushu_Track("finish_stage", data); + MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); + } + cc.fx.GameTool.setUserLevel(function (data) { + // console.log("存储结果:",data); + // console.log("上传",data); + }); + }, + //改变金币信息 + changeCoin: function (coin) { + console.log("changeCoin", coin); + if (coin == undefined) + return; + if (coin < 0 && cc.fx.GameConfig.GM_INFO.coin < -coin) { + // console.log("金币不足",cc.fx.GameConfig.GM_INFO.coin,-coin); + return; + } + cc.fx.GameConfig.GM_INFO.coin += coin; + if (cc.fx.GameConfig.GM_INFO.coin < 0) { + cc.fx.GameConfig.GM_INFO.coin = 0; + } + // console.log("改变的金币:",coin); + // console.log("自身金币信息:",cc.fx.GameConfig.GM_INFO.coin); + var timestamp = Date.now(); + var coinInfo = { + coin: cc.fx.GameConfig.GM_INFO.coin, + timestamp: timestamp, + }; + MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); + cc.fx.StorageMessage.setStorage("coin", coinInfo); + // console.log("存储金币数据:",cc.fx.GameConfig.GM_INFO.coin,coinInfo); + cc.fx.GameTool.setUserCoin(function (data) { + // console.log("上传",data); + }); + }, + //获取用户金币数量 + getUserCoin: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.callFunction({ + name: 'userCoin', + data: { + action: 'read' + }, + success: function (res) { + // console.log('读取用户金币数据成功', res.result) + if (callback) + callback(res); + }, + fail: function (err) { + callback(err); + } + }); + } + }, + //改变用户金币 + setUserCoin: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + if (cc.fx.GameConfig.GM_INFO.coin <= 0 || cc.fx.GameConfig.GM_INFO.coin == undefined) { + console.log("金币上传失败", cc.fx.GameConfig.GM_INFO.coin); + // MiniGameSdk.API.showToast(cc.fx.GameConfig.GM_INFO.coin); + cc.fx.GameConfig.GM_INFO.coin = 0; + } + console.log("即将上传的金币数量:", cc.fx.GameConfig.GM_INFO.coin); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userCoin', + data: { + action: 'save', + coinAmount: cc.fx.GameConfig.GM_INFO.coin + }, + success: function (res) { + // console.log('云函数返回结果:', res); + if (res.result.code == 200) { + // console.log('存储金币数据成功',cc.fx.GameConfig.GM_INFO.coin); + } + if (callback) { + callback(res); + } + }, + fail: function (err) { + // console.log('存储金币数据失败') + if (callback) { + callback(err); + } + console.error('存储用户数据失败', err); + } + }); + } + }, + //获取用户关卡数 + getUserLevel: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.callFunction({ + name: 'userLevel', + data: { + action: 'read' + }, + success: function (res) { + if (callback) + callback(res); + }, + fail: function (err) { + callback(err); + } + }); + } + }, + //进游戏处理 体力值情况 + getHealth: function (callback) { + var health = cc.fx.StorageMessage.getStorage("health"); + var timestamp = Date.now(); + cc.fx.GameConfig.GM_INFO.hp = 5; + //没有存储过体力值 + if (health == null || health == undefined || health == "") { + console.log("没存储过体力值,初进"); + cc.fx.GameConfig.GM_INFO.hp = 5; + cc.fx.GameTool.getUserHealth(function (data) { + console.log("体力接口返回结果", data); + if (data.result.code == 200) { + cc.fx.GameConfig.GM_INFO.hp = data.result.data; + cc.fx.GameConfig.GM_INFO.min_Time = data.result.timestamp; + var healthInfo = { + "health": cc.fx.GameConfig.GM_INFO.hp, + "timestamp": data.result.timestamp + }; + MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); + cc.fx.StorageMessage.setStorage("health", healthInfo); + } + else if (data.result.code == 404 && data.result.message == "未找到体力数据") { + cc.fx.GameTool.setUserHealth(0, function () { + }); + } + if (callback) + callback(); + }); + } + else { + console.log("有存储过体力值:", health); + cc.fx.GameConfig.GM_INFO.hp = health.health; + if (callback) { + console.log("体力值读取完毕"); + callback(); + } + if (health.health < 0) { + console.log("体力值异常,归零"); + cc.fx.GameConfig.GM_INFO.hp = 0; + cc.fx.GameTool.setUserHealth(0, function () { + if (callback) + callback(); + }); + } + else if (health.health < 5) { + // 30分钟的毫秒数 + var thirtyMinutes = 30 * 60 * 1000; + var elapsedTime = timestamp - health.timestamp; + // 计算恢复的体力值 + var recoveredHealth = Math.min(5 - health.health, Math.floor(elapsedTime / thirtyMinutes)); + if (recoveredHealth > 0) { + health.health += recoveredHealth; + cc.fx.GameTool.setUserHealth(recoveredHealth, function () { + if (callback) + callback(); + }); + console.log("\u4F53\u529B\u503C\u6062\u590D " + recoveredHealth + " \u70B9\uFF0C\u5F53\u524D\u4F53\u529B\u503C: " + cc.fx.GameConfig.GM_INFO.hp); + } + else { + // 计算距离下一次恢复的剩余时间 + var remainingTime = Math.ceil((thirtyMinutes - (elapsedTime % thirtyMinutes)) / 1000); + console.log("\u4F53\u529B\u503C\u672A\u6EE1\uFF0C\u5F85\u6062\u590D\uFF0C\u8DDD\u79BB\u4E0B\u4E00\u6B21\u6062\u590D\u8FD8\u5269 " + remainingTime + " \u79D2"); + cc.fx.GameConfig.GM_INFO.min_Time = remainingTime; + } + } + } + }, + //获取用户体力值 + getUserHealth: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + console.log("即将进入体力获取接口"); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userHealth', + data: { + action: 'read' + }, + success: function (res) { + // console.log("体力获取成功",res); + if (callback) + callback(res); + }, + fail: function (err) { + // console.log("体力获取失败",err); + callback(err); + } + }); + } + }, + //设置用户体力值 有可能加,有可能定时器减 + setUserHealth: function (health, callback) { + cc.fx.GameConfig.GM_INFO.hp += health; + // if(health < 0) { + // } + // else MiniGameSdk.API.showToast("体力值恢复"); + var timestamp = Date.now(); + var healthInfo = {}; + //如果消耗之前不是满体力,说明已经在恢复期,并不用修改时间 + if (health < 0 && cc.fx.GameConfig.GM_INFO.hp != 4) { + var oldTime = cc.fx.StorageMessage.getStorage("health").timestamp; + healthInfo = { + "health": cc.fx.GameConfig.GM_INFO.hp, + "timestamp": oldTime + }; + } + else { + healthInfo = { + "health": cc.fx.GameConfig.GM_INFO.hp, + "timestamp": timestamp + }; + } + cc.fx.StorageMessage.setStorage("health", healthInfo); + MiniGameSdk_1.MiniGameSdk.API.shushu_SetSuperProperties(); + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.callFunction({ + name: 'userHealth', + data: { + action: 'save', + healthAmount: cc.fx.GameConfig.GM_INFO.hp, + timestamp: timestamp + }, + success: function (res) { + if (callback) { + callback(res); + } + }, + fail: function (err) { + if (callback) { + callback(err); + } + // console.error('存储关卡数据失败', err) + } + }); + } + }, + //购买行为 + buyReview: function (coin, callback) { + if (typeof wx !== 'undefined' && wx !== null) { + // console.log("实际即将消耗金币:",coin); + // this.changeCoin(coin); + callback(); + } + }, + //更改用户道具数 + buyProp: function (propid, callback) { + if (typeof wx !== 'undefined' && wx !== null) { + cc.fx.GameTool.changeCoin(-1500); + cc.fx.GameTool.setUserProp(propid, 3, function (data) { + }); + var data = { + id: (propid + ""), + num: 3 + }; + cc.fx.GameTool.shushu_Track("resource_get", data); + var _id = ""; + if (propid == 2001) + _id = "freeze_in_game"; + else if (propid == 2002) + _id = "hammer_in_game"; + else if (propid == 2003) + _id = "wand_in_game"; + var buyData = { + item_id: _id, + item_num: 1, + item_price: 1500, + cost_type: "gold" + }; + console.log("____________即将上传Shop_buy", buyData); + cc.fx.GameTool.shushu_Track("shop_buy", buyData); + callback(); + } + }, + //改变用户关卡 + setUserLevel: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + // if(cc.fx.GameConfig.GM_INFO.level <= 0 || cc.fx.GameConfig.GM_INFO.level == undefined){ + // console.log("等级重置为0"); + // cc.fx.GameConfig.GM_INFO.level = 0; + // } + // console.log("即将上传的关卡数:",cc.fx.GameConfig.GM_INFO.level); + //@ts-ignore + wx.cloud.callFunction({ + name: 'userLevel', + data: { + action: 'save', + levelAmount: cc.fx.GameConfig.GM_INFO.level + }, + success: function (res) { + // console.log('云函数返回结果:', res); + // console.log('存储关卡数据成功',cc.fx.GameConfig.GM_INFO.level); + if (callback) { + callback(res); + } + }, + fail: function (err) { + // console.log('存储关卡数据失败') + return; + if (callback) { + callback(err); + } + console.error('存储关卡数据失败', err); + } + }); + } + }, + //获取用户关卡数 + getUserProp: function (callback) { + if (typeof wx !== 'undefined' && wx !== null) { + //@ts-ignore + wx.cloud.callFunction({ + name: 'userProp', + data: { + action: 'read' + }, + success: function (res) { + // console.log('读取用户道具数据成功', res.result) + if (res.result.data) { + // cc.fx.GameConfig.GM_INFO.freezeAmount = res.result.data.freeze; + // cc.fx.GameConfig.GM_INFO.hammerAmount = res.result.data.hammer; + // cc.fx.GameConfig.GM_INFO.magicAmount = res.result.data.magic_wand; + } + if (callback) + callback(res); + }, + fail: function (err) { + callback(err); + } + }); + } + }, + //改变用户道具 + setUserProp: function (propid, amount, callback) { + if (typeof wx !== 'undefined' && wx !== null) { + var newPropData = null; + if (propid == 0) { + newPropData = { + freeze: cc.fx.GameConfig.GM_INFO.freezeAmount, + hammer: cc.fx.GameConfig.GM_INFO.hammerAmount, + magic_wand: cc.fx.GameConfig.GM_INFO.magicAmount, + }; + } + else if (propid == 2001) { + newPropData = amount; + } + else if (propid == 2002) { + newPropData = amount; + } + else if (propid == 2003) { + newPropData = amount; + } + //@ts-ignore + wx.cloud.callFunction({ + name: 'userProp', + data: { + action: 'save', + propType: propid, + propData: newPropData + }, + success: function (res) { + // console.log('云函数返回结果:', res); + if (callback) { + callback(res); + } + // console.log('存储道具数据成功') + }, + fail: function (err) { + // console.log('存储道具数据失败') + if (callback) { + callback(err); + } + console.error('存储道具数据失败', err); + } + }); + } + }, + // 检查是否有足够的硬币 + consumeCoins: function (requiredCoins, propName, amount, callback) { + }, + // 设置用户信息 + setUserInfo: function (callback) { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { + var time = cc.fx.GameTool.formatDate(new Date()); + var userInfo = { + // 这里填写要存储的用户数据 + username: cc.fx.GameConfig.GM_INFO.username, + useravatar: cc.fx.GameConfig.GM_INFO.useravatar, + register_time: time + }; + //@ts-ignore + wx.cloud.callFunction({ + name: 'userData', + data: { + action: 'save', + userData: userInfo + }, + success: function (res) { + // console.log('存储用户数据成功') + if (callback) { + callback(res); + } + }, + fail: function (err) { + if (callback) { + callback("fail"); + } + } + }); + } + }, + formatDate: function (date) { + var year = date.getFullYear(); + var month = String(date.getMonth() + 1).padStart(2, '0'); + var day = String(date.getDate()).padStart(2, '0'); + var hours = String(date.getHours()).padStart(2, '0'); + var minutes = String(date.getMinutes()).padStart(2, '0'); + var seconds = String(date.getSeconds()).padStart(2, '0'); + var milliseconds = String(date.getMilliseconds()).padStart(3, '0'); + return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds + "." + milliseconds; + }, + //获取时间戳 + getTime: function () { + var timestamp = (new Date().getTime()); + return timestamp; + }, + pushLister: function () { + }, + removeAllLister: function () { + }, + shushu_Track: function (name, data) { + var eventData = {}; + switch (name) { + case "register": + break; + case "enter_stage": + eventData = { + stage_id: (cc.fx.GameConfig.GM_INFO.level + 1) + }; + break; + case "finish_stage": + eventData = { + stage_id: (cc.fx.GameConfig.GM_INFO.level + 1), + stage_duration: data.time, + added_time: data.add_Time, + result: data.result + }; + break; + case "resource_get": + eventData = { + change_reason: "购买道具", + change_num: data.num, + resource_id: data.id //道具id + }; + break; + case "resource_cost": + eventData = { + change_reason: "使用道具", + change_num: data.num, + resource_id: data.id //道具id + }; + break; + case "shop_buy": + eventData = { + item_id: data.item_id, + item_num: data.item_num, + item_price: data.item_price, + cost_type: data.cost_type, + }; + console.log("数据:", eventData); + break; + } + // MiniGameSdk.API.shushu_Track(name,eventData); + MiniGameSdk_1.MiniGameSdk.API.shushu_Track(name, eventData); + }, + getWechatGameVersion: function () { + //@ts-ignore + var accountInfo = wx.getAccountInfoSync(); + var miniProgram = accountInfo.miniProgram; + switch (miniProgram.envVersion) { + case 'develop': + return '开发版'; + case 'trial': + return '体验版'; + case 'release': + return '正式版'; + default: + return '未知版本'; + } + }, +}; +exports.GameTool = GameTool; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFRvb2xcXEdhbWVUb29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUFvRDtBQUVwRCwrQkFBK0I7QUFDL0IsSUFBSSxRQUFRLEdBQUc7SUFDWCxVQUFVLEVBQUUsQ0FBQztJQUNiLFFBQVEsRUFBRSxDQUFDO0lBQ1gsVUFBVSxFQUFFLENBQUM7SUFFYixVQUFVO0lBQ1YsY0FBYztRQUNWLElBQUksSUFBSSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQ3JELElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUcsSUFBSSxJQUFJLFVBQVUsSUFBSSxJQUFJLElBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUM7WUFDOUMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDbEMsSUFBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUM7Z0JBQzNCLElBQUksR0FBRyxHQUFHLDhFQUE4RSxHQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQzthQUM5QjtTQUNKO2FBQ0c7WUFDQSxFQUFFLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUMzRDtJQUNMLENBQUM7SUFFRCxhQUFhLFlBQUMsR0FBRztRQUNiLE9BQU8sYUFBYSxD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QUFLLE9BQU87Z0JBQ1IsT0FBTyxLQUFLLENBQUM7WUFDakIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sS0FBSyxDQUFDO1lBQ2pCO2dCQUNJLE9BQU8sTUFBTSxDQUFDO1NBQ3JCO0lBQ0wsQ0FBQztDQUVKLENBQUM7QUFDTyw0QkFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4uLy4uL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuLy/mnIDlpKflt6XlhbfnsbsgIOWQhOenjeWFrOWFseaWueazle+8jOS7peWPiuWkhOeQhuS4iuS8oO+8jOiOt+WPluWQjuerr+aOpeWPo+aVsOaNrlxyXG52YXIgR2FtZVRvb2wgPSB7XHJcbiAgICBfc3RhcnRUaW1lOiAwLFxyXG4gICAgX2VuZFRpbWU6IDAsXHJcbiAgICBfdG90YWxUaW1lOiAwLFxyXG4gICAgXHJcbiAgICAvL+iOt+WPlnVzZXJJZFxyXG4gICAgQXV0aGVudGljYXRpb24oKXtcclxuICAgICAgICBsZXQgbmFtZSA9IFwidXNlcl9cIiArIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQ7XHJcbiAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKG5hbWUpKTtcclxuICAgICAgICBpZihkYXRhID09IFwidW5kaWZlbmRcIiB8fCBkYXRhPT1udWxsIHx8IGRhdGEgPT0gXCJcIil7XHJcbiAgICAgICAgICAgIHZhciB1cmxOb3cgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgICAgICAgICAgaWYoIXRoaXMuY29udGFpbnNUcmFpbih1cmxOb3cpKXtcclxuICAgICAgICAgICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vYXBpLnNwYXJrdXMuY24vYXBpL3VzZXIvYXV0aC9sb2dpbj9kb21haW49aHVpMzI1NzlXZFlQc2dZcSZjYWxsYmFjaz1cIitsb2NhdGlvbi5ocmVmO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShuYW1lLGRhdGEpO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkID0gcGFyc2VJbnQoZGF0YS51c2VySWQpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgY29udGFpbnNUcmFpbihzdHIpIHtcclxuICAgICAgICByZXR1cm4gL2Zyb209dHJhaW4vaS50ZXN0KHN0cik7XHJcbiAgICB9LFxyXG5cclxuICAgIC8v5Z+L54K55LiK5LygXHJcbiAgICBzZXRHYW1lRGF0YSgpe1xyXG4gICAgICAgIC8vR0FNRV9EQVRBIOWIneWni+WMliDmr4/mrKHmuIXpm7ZcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdBTUVfREFUQSA9IFtdO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBLnB1c2goY2MuZnguR2FtZUNvbmZpZy5DTElDS19EQVRBKTtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkNMSUNLX2luaXQoKTtcclxuICAgICAgICBsZXQgZGF0YSA9IGNjLmZ4LkdhbWVDb25maWcuR0FNRV9EQVRBO1xyXG4gICAgICAgIGxldCBtYXRjaElkID0gdGhpcy5nZXRNYXRjaElkKCk7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcImdhbWVJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCxcclxuICAgICAgICAgICAgXCJzY29kZVwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvZGUsXHJcbiAgICAgICAgICAgIFwibWF0Y2hJZFwiOm1hdGNoSWQsXHJcbiAgICAgICAgICAgIFwiZGF0YVwiOiBkYXRhXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLkuIrkvKDmlbDmja46XCIscG9zdERhdGEpO1xyXG4gICAgICAgIC8vIGNjLmZ4Lkh0dHBVdGlsLnVwbG9hZFVzZXJMb2dEYXRhKHBvc3REYXRhLGZ1bmN0aW9uKCl7fSlcclxuICAgIH0sXHJcbiAgICAvL+S4iuS8oOaOkuihjOamnCAgdHlwZeS4ujFcclxuICAgIHNldFJhbmsoZGF0YSl7XHJcbiAgICAgICAgLy9HQU1FX0RBVEEg5Yid5aeL5YyWIOavj+asoea4hembtlxyXG4gICAgICAgIGxldCBwb3N0RGF0YSA9IHtcclxuICAgICAgICAgICAgXCJnYW1lSWRcIjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZ2FtZUlkLFxyXG4gICAgICAgICAgICBcInVzZXJJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VySWQsXHJcbiAgICAgICAgICAgIFwidHlwZVwiOjEsXHJcbiAgICAgICAgICAgIFwic2NvcmVcIjogZGF0YS5zY29yZSxcclxuICAgICAgICAgICAgXCJhY2N1cmFjeVwiOiBkYXRhLmRhdGUsXHJcbiAgICAgICAgICAgIFwic3VjY2Vzc1wiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc3VjY2Vzc1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgLy8gY2MuZnguSHR0cFV0aWwucmFua0RhdGEoMSxmdW5jdGlvbigpe30scG9zdERhdGEpO1xyXG4gICAgfSxcclxuICAgIC8v6I635Y+W5o6S6KGM5qacIHR5cGXkuLoyXHJcbiAgICBnZXRSYW5rKGRhdGEsY2FsbGJhY2spe1xyXG4gICAgICAgIGxldCByYW5rTGVuZ3RoID0gZGF0YS5sZW5ndGg7XHJcbiAgICAgICAgbGV0IHBvc3REYXRhID0ge1xyXG4gICAgICAgICAgICBcImdhbWVJZFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAgICAgICAgIFwidXNlcklkXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCxcclxuICAgICAgICAgICAgXCJwYWdlXCI6MSxcclxuICAgICAgICAgICAgXCJwYWdlU2l6ZVwiOnJhbmtMZW5ndGhcclxuICAgICAgICB9OyBcclxuICAgICAgICAvL+Wbnuiwg+i/m2dldFJhbmtEYXRhXHJcbiAgICAgICAgLy8gY2MuZnguSHR0cFV0aWwucmFua0RhdGEoMixkYXRhID0+e2NhbGxiYWNrKGRhdGEpfSxwb3N0RGF0YSk7XHJcbiAgICB9LFxyXG4gICAgLy/ojrflj5ZtYXRjaElkICDnlKjkuo7kuIrkvKDmr4/mrKHngrnlh7vmlbDmja7ph4zpnaLorrDlvZVpZOaWueS+v+afpeivolxyXG4gICAgZ2V0TWF0Y2hJZCAoKXtcclxuICAgICAgICBsZXQgbWF0Y2hJZCA9IGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm1hdGNoSWRcIik7XHJcbiAgICAgICAgbGV0IHRlbXBJZCA9IG1hdGNoSWQ7XHJcbiAgICAgICAgaWYobWF0Y2hJZCA9PSBcInVuZGlmZW5kXCIgfHwgbWF0Y2hJZD09bnVsbCl7XHJcbiAgICAgICAgICAgIG1hdGNoSWQgPSAgdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuY29udGFpbnNOYW5hbmEobWF0Y2hJZCkgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBtYXRjaElkID0gIHRoaXMuc2V0TWF0Y2hJZCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2hhciA9IHBhcnNlSW50KHRlbXBJZC5zdWJzdHJpbmcoMTAsdGVtcElkLmxlbmd0aCkpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYXIgKz0gMTtcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaElkICA9IHRlbXBJZC5zbGljZSgwLCAxMCkgKyBjaGFyICsgXCJcIjtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmNvbnRhaW5zTmFuYW5hKG1hdGNoSWQpKSBtYXRjaElkID0gdGhpcy5zZXRNYXRjaElkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hdGNoSWQgPSBtYXRjaElkO1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoSWRcIixtYXRjaElkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYodGhpcy5jb250YWluc05hbmFuYShtYXRjaElkKSA9PSB0cnVlKXtcclxuICAgICAgICAgICAgbWF0Y2hJZCA9ICB0aGlzLnNldE1hdGNoSWQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG1hdGNoSWQ7XHJcbiAgICB9LFxyXG4gICAgLy/mo4DmtYttYXRjaElkIOWmguaenOaciee8k+WtmOS7peWJjeeahG5hbmFuYeaVsOaNrua4hemZpFxyXG4gICAgY29udGFpbnNOYW5hbmEoc3RyKSB7XHJcbiAgICAgICAgcmV0dXJuIC9uYS9pLnRlc3Qoc3RyKTtcclxuICAgIH0sXHJcbiAgICAvL+mHjeaWsOiuvue9rk1hdGNoSWRcclxuICAgIHNldE1hdGNoSWQgKCl7XHJcbiAgICAgICAgLy8g5a6a5LmJ5YyF5ZCr5Y+v55So5a2X56ym55qE5a2X56ym6ZuGXHJcbiAgICAgICAgY29uc3QgY2hhcmFjdGVycyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OSc7XHJcbiAgICAgICAgLy8g5Yib5bu65LiA5Liq5pWw57uE5Lul5L+d5a2Y6ZqP5py65a2X56ymXHJcbiAgICAgICAgY29uc3QgdXVpZEFycmF5ID0gW107XHJcbiAgICAgICAgLy8g5b6q546vMTDmrKEg55Sf5oiQMTDkvY3nmoRVVUlEXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAvLyDnlJ/miJDpmo/mnLrntKLlvJXvvIzojIPlm7TmmK/lrZfnrKbpm4bnmoTplb/luqZcclxuICAgICAgICAgICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzLmxlbmd0aCk7XHJcbiAgICAgICAgICAgIC8vIOS7juWtl+espumbhuS4reiOt+WPlumaj+acuuWtl+esplxyXG4gICAgICAgICAgICBjb25zdCByYW5kb21DaGFyID0gY2hhcmFjdGVycy5jaGFyQXQocmFuZG9tSW5kZXgpO1xyXG4gICAgICAgICAgICAvLyDlsIblrZfnrKbmt7vliqDliLDmlbDnu4TkuK1cclxuICAgICAgICAgICAgdXVpZEFycmF5LnB1c2gocmFuZG9tQ2hhcik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBkYXRhID0gIHV1aWRBcnJheS5qb2luKCcnKSArIDEgKyBcIlwiO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm1hdGNoTnVtYmVyXCIsMSk7XHJcbiAgICAgICAgY2Muc3lzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKFwibWF0Y2hJZFwiLGRhdGEpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tYXRjaElkID0gZGF0YTtcclxuICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgIH0sXHJcbiAgICAvL+aIquWPluWQjeWtl1xyXG4gICAgc3ViTmFtZShuYW1lLGxlbmd0aCl7XHJcbiAgICAgICAgaWYobmFtZS5sZW5ndGggPiBsZW5ndGgpe1xyXG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zdWJzdHJpbmcoMCxsZW5ndGgpICsgXCIuLi5cIlxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmFtZTtcclxuICAgIH0sXHJcbiAgICAvL+iuvue9ruWktOWDj1xyXG4gICAgc2V0UGljKG5vZGUscGljKXtcclxuICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGxldCB1cmwgPSBwaWM7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGZldGNoKHVybClcclxuICAgICAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdDb250ZW50LUxlbmd0aCcpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAudGhlbihlcnJObyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZihlcnJObyA9PSBcIjUwOTNcIil7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgWC1JbmZvOicsIGVycm9yKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZFJlbW90ZSh1cmwsIHtleHQ6Jy5wbmcnfSwoZXJyLCB0ZXh0dXJlOmNjLlRleHR1cmUyRCkgPT4ge1xyXG4gICAgICAgICAgICBpZih0ZXh0dXJlKXtcclxuICAgICAgICAgICAgICAgIG5vZGUuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIG5vZGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBuZXcgY2MuU3ByaXRlRnJhbWUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKGVycix0ZXh0dXJlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcbiAgICAvL+esrOS4gOS4quWPguaVsOaKiuebruagh+W4pui/m+adpeWkhOeQhu+8jOesrOS6jOS4quWPguaVsOS4uuWQjeWtl+mVv+W6pu+8jOS4jeWQjOWcuuaZr+S4jeWQjOmcgOaxglxyXG4gICAgLy/lkI3lrZc055+t77yM5bCP5o6S6KGM77yM5ZCN5a2XNumVv++8jOWkp+aOkuihjFxyXG4gICAgZ2V0UmFua0RhdGEoZGF0YSx0YXJnZXQsbmFtZUxlbmd0aCl7XHJcbiAgICAgICAgdGFyZ2V0Lmxpc3REYXRhID0gZGF0YS5kYXRhLmxpc3Q7XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZEYXRhID0gZGF0YS5kYXRhLmluZm87XHJcbiAgICAgICAgbGV0IHJhbmtEYXRhID0gW107XHJcbiAgICAgICAgbGV0IHNlbGYgPSBmYWxzZTtcclxuICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0UGljKHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGFyZ2V0LnNlbGZEYXRhLnBpYyk7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7aTw9dGFyZ2V0Lmxpc3REYXRhLmxlbmd0aC0xO2krKyl7XHJcbiAgICAgICAgICAgIHJhbmtEYXRhLnB1c2goe3Jhbms6KGkrMSksIG5hbWU6dGFyZ2V0Lmxpc3REYXRhW2ldLm5pY2tOYW1lLCB0b3RhbDp0YXJnZXQubGlzdERhdGFbaV0uc2NvcmUsdGltZTpudWxsLCBwaWM6dGFyZ2V0Lmxpc3REYXRhW2ldLnBpY30pO1xyXG4gICAgICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkID09IHRhcmdldC5saXN0RGF0YVtpXS51c2VySWQpe1xyXG4gICAgICAgICAgICAgICAgc2VsZiA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0oaSsxKSArIFwiXCI7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGkgPT0gKHRhcmdldC5saXN0RGF0YS5sZW5ndGgtMSkgJiYgc2VsZiA9PSBmYWxzZSl7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQucmFua051bWJlciA9IGk7XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rTGFiXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCI5OStcIjsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZEYXRhLm5pY2tOYW1lID0gY2MuZnguR2FtZVRvb2wuc3ViTmFtZSh0YXJnZXQuc2VsZkRhdGEubmlja05hbWUsbmFtZUxlbmd0aCk7XHJcbiAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwibmFtZUxhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRhcmdldC5zZWxmRGF0YS5uaWNrTmFtZTtcclxuICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0b3RhbExhYlwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRhcmdldC5zZWxmRGF0YS5zY29yZTtcclxuICAgICAgICBsZXQgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lU2hlbk5vbmcodGFyZ2V0LnNlbGZEYXRhLnRvdGxlVGltZXMpO1xyXG4gICAgICAgIC8vIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcCArIFwiXCI7XHJcbiAgICAgICAgc3dpdGNoKHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtMYWJcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcpe1xyXG4gICAgICAgICAgICBjYXNlIFwiMVwiOlxyXG4gICAgICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLmdldENoaWxkQnlOYW1lKFwicmFua1wiKS5nZXRDaGlsZEJ5TmFtZShcIm9uZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCIyXCI6XHJcbiAgICAgICAgICAgICAgICB0YXJnZXQuc2VsZk5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJyYW5rXCIpLmdldENoaWxkQnlOYW1lKFwidHdvXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBcIjNcIjpcclxuICAgICAgICAgICAgICAgIHRhcmdldC5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInJhbmtcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aHJlZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWkp+aOkuihjFxyXG4gICAgICAgIGlmKG5hbWVMZW5ndGggPT0gNil7XHJcbiAgICAgICAgICAgIHRhcmdldC5yYW5rTGlzdC5zZXREYXRhKHJhbmtEYXRhKTtcclxuICAgICAgICAgICAgdGFyZ2V0LnNlbGZOb2RlLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgIGlmKHRhcmdldC5zZWxmRGF0YS50b3RhbFN1bkNvdW50ID09IDApIHRhcmdldC5zZWxmTm9kZS5vcGFjaXR5ID0gMDtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGdldFNlZWRSYW5kb206IGZ1bmN0aW9uIChtaW4sIG1heCkgey8v5YyF5ZCrbWluIOS4jeWMheWQq21heFxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6ZqP5py65pWwOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCk7XHJcbiAgICAgICAgbWF4ID0gbWF4IHx8IDE7XHJcbiAgICAgICAgbWluID0gbWluIHx8IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1cnJTZWVkID0gKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCAqIDkzMDEgKyA0OTI5NykgJSAyMzMyODA7XHJcbiAgICAgICAgbGV0IHJuZCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jdXJyU2VlZCAgLyAyMzMyODAuMDtcclxuICAgICAgICBsZXQgdG1wID0gbWluICsgcm5kICogKG1heCAtIG1pbik7XHJcbiAgICAgICAgcmV0dXJuIHBhcnNlSW50KHRtcCk7XHJcbiAgICB9LFxyXG4gICAgLy/ojrflj5blhbPljaHphY3nva7nmoTpgqPkuKrlhbPljaHmlbBcclxuICAgIGdldEN1c3RvbSh0eXBlKXtcclxuICAgICAgICBsZXQgY3VzdG9tID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShjYy5meC5zdG9yYWdlVHlwZS5zdG9yYWdlVHlwZUN1c3RvbSk7XHJcbiAgICAgICAgaWYoY3VzdG9tID09IFwidW5kaWZlbmRcIiB8fCBjdXN0b209PW51bGwgfHwgY3VzdG9tID09IFwiXCIpe1xyXG4gICAgICAgICAgICB0aGlzLnNldEN1c3RvbSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk9fU0VUKFwiY3VzdG9tXCIsY3VzdG9tWzBdKTtcclxuICAgICAgICAgICAgaWYoY3VzdG9tWzBdICE9IDAgfHwgdHlwZSA9PSAgdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICBjdXN0b20uc2hpZnQoKTtcclxuICAgICAgICAgICAgICAgIGlmKGN1c3RvbS5sZW5ndGggPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRDdXN0b20oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2UgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShjYy5meC5zdG9yYWdlVHlwZS5zdG9yYWdlVHlwZUN1c3RvbSxjdXN0b20pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8v5pys5Zyw5rKh5pyJ5a2Y5YKo5Yiw6YWN572u77yM5oiW6ICF6YWN572u55So5a6M77yM6YeN5paw5Yib5bu66YWN572uXHJcbiAgICBzZXRDdXN0b20oKXtcclxuICAgICAgICBsZXQgYXJyYXlMZW5ndGggPSBjYy5meC5HYW1lQ29uZmlnLkxFVkVMX0lORk8ubGVuZ3RoO1xyXG4gICAgICAgIGxldCBhcnJheUxpc3QgPSBbXTtcclxuICAgICAgICBmb3IobGV0IGk9MTsgaTxhcnJheUxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBhcnJheUxpc3QucHVzaChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYXJyYXlMaXN0LnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XHJcbiAgICAgICAgYXJyYXlMaXN0LnVuc2hpZnQoMClcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk9fU0VUKFwiY3VzdG9tXCIsYXJyYXlMaXN0WzBdKTtcclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKGNjLmZ4LnN0b3JhZ2VUeXBlLnN0b3JhZ2VUeXBlQ3VzdG9tLGFycmF5TGlzdCk7XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICBnZXRTZXRTY3JlZW5SZXNvbHV0aW9uRmxhZzogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGxldCBzaXplID0gY2Mud2luU2l6ZTtcclxuICAgICAgICBsZXQgd2lkdGggPSBzaXplLndpZHRoO1xyXG4gICAgICAgIGxldCBoZWlnaHQgPSBzaXplLmhlaWdodDtcclxuICAgICAgICBpZiAoKGhlaWdodCAvIHdpZHRoKSA+ICgxNi4yIC8gOSkpIHJldHVybiBmYWxzZTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICAvL+WIpOaWreWFqOmdouWxj+mAgumFjVxyXG4gICAgc2V0Rml0OiBmdW5jdGlvbiAoY2FudmFzKSB7XHJcbiAgICAgICAgbGV0IGZsYWcgPSAgY2MuZnguR2FtZVRvb2wuZ2V0U2V0U2NyZWVuUmVzb2x1dGlvbkZsYWcoKTtcclxuICAgICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIFx0Ly8gY29uc29sZS5sb2coXCLkuI3mmK/lhajpnaLlsY9cIik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICBcdC8vIGNvbnNvbGUubG9nKFwi5piv5YWo6Z2i5bGPXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmxhZztcclxuICAgIH0sXHJcbiAgICAvL+iOt+WPlua4uOaIj+S/oeaBr1xyXG4gICAgZ2V0R2FtZUluZm86IGZ1bmN0aW9uKG5vZGUpe1xyXG4gICAgICAgIHZhciBqZyA9IGZhbHNlO1xyXG4gICAgICAgIHJldHVybiBqZztcclxuICAgIH0sXHJcbiAgICAvL+iuvue9rua4uOaIj+S/oeaBr1xyXG4gICAgc2V0R2FtZUluZm86IGZ1bmN0aW9uKHBkKXtcclxuICAgXHJcbiAgICB9LFxyXG5cclxuICAgIC8v5omT5a2X5py65pWI5p6cXHJcbiAgICB0eXBpbmdBbmkobGFiZWwsdGV4dCxjYix0YXJnZXQpe1xyXG4gICAgICAgIHZhciBzZWxmID0gdGFyZ2V0O1xyXG4gICAgICAgIHZhciBodG1sID0gJyc7XHJcbiAgICAgICAgdmFyIGFyciA9IHRleHQuc3BsaXQoJycpO1xyXG4gICAgICAgIHZhciBsZW4gPSBhcnIubGVuZ3RoO1xyXG4gICAgICAgIHZhciBzdGVwID0gMDtcclxuICAgICAgICBzZWxmLmZ1bmMgPSAoKT0+e1xyXG4gICAgICAgICAgICBodG1sICs9IGFycltzdGVwXTtcclxuICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gaHRtbDtcclxuICAgICAgICAgICAgaWYgKCsrc3RlcCA9PSBsZW4pIHtcclxuICAgICAgICAgICAgICAgIHNlbGYudW5zY2hlZHVsZShzZWxmLmZ1bmMpO1xyXG4gICAgICAgICAgICAgICAgY2IgJiYgY2IoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZWxmLnNjaGVkdWxlKHNlbGYuZnVuYywwLjEsIGNjLm1hY3JvLlJFUEVBVF9GT1JFVkVSLCAwKVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVNYXJnaW46KHNlY29uZCkgPT4ge1xyXG4gICAgICAgIGxldCB0b3RhbCA9IDA7XHJcbiAgICAgICAgdG90YWwgPSBzZWNvbmQ7XHJcbiAgICAgICAgbGV0IGhvdXIgPSAwO1xyXG4gICAgICAgIGhvdXIgPSBwYXJzZUludCgodG90YWwgLyAzNjAwKSArIFwiXCIpOy8v6K6h566X5pW05pWw5bCP5pe25pWwXHJcbiAgICAgICAgbGV0IGFmdGVySG91ciA9IHRvdGFsIC0gaG91ciAqIDYwICogNjA7Ly/lj5blvpfnrpflh7rlsI/ml7bmlbDlkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWluID0gcGFyc2VJbnQoKGFmdGVySG91ciAvIDYwKStcIlwiKTsvL+iuoeeul+aVtOaVsOWIhlxyXG4gICAgICAgIGxldCBtID0gXCJcIiArIG1pbjsgIFxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtID0gXCIwXCIrbWluO1xyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIlwiO1xyXG4gICAgICAgIGlmKGFmdGVyTWluIDwgMTApIG1pYW8gPSBcIjBcIiArIGFmdGVyTWluO1xyXG4gICAgICAgIHJldHVybiBtICsgJzonICsgbWlhb1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+i+k+WFpeenkizov5Tlm57pnIDopoHlsZXnpLrml7bpl7TmoLzlvI9cclxuICAgIGdldFRpbWVTaGVuTm9uZzooc2Vjb25kKSA9PiB7XHJcbiAgICAgICAgc2Vjb25kID0gcGFyc2VJbnQoc2Vjb25kLzEwMDArXCJcIik7XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0b3RhbCA9IHNlY29uZDtcclxuICAgICAgICBsZXQgbWluID0gMDtcclxuICAgICAgICBpZih0b3RhbCA+IDYwKXtcclxuICAgICAgICAgICAgbWluID0gcGFyc2VJbnQoKHRvdGFsIC8gNjApK1wiXCIpOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBtID0gIG1pbiArIFwiJ1wiOyAgXHJcblxyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gbWluICogNjA7Ly/lj5blvpfnrpflh7rliIblkI7liankvZnnmoTnp5LmlbBcclxuICAgICAgICBsZXQgbWlhbyA9IGFmdGVyTWluICsgXCInJ1wiO1xyXG4gICAgICAgIHJldHVybiBtICsgbWlhb1xyXG4gICAgfSxcclxuXHJcbiAgICAvL+aJk+S5seaVsOe7hFxyXG4gICAgc2h1ZmZsZUFycmF5OiBmdW5jdGlvbiAoYXJyYXkpIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gYXJyYXkubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xyXG4gICAgICAgICAgICBjb25zdCBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7XHJcbiAgICAgICAgICAgIFthcnJheVtpXSwgYXJyYXlbal1dID0gW2FycmF5W2pdLCBhcnJheVtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhcnJheTtcclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8v5aKe5Yqg5YWz5Y2h5pWwXHJcbiAgICBhZGRMZXZlbCh0aW1lMSx0aW1lMil7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICs9IDE7XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID4gMTU2KXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gMTU2OyBcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgbGV2ZWxJbmZvID0ge1xyXG4gICAgICAgICAgICBsZXZlbDpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwsXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDp0aW1lc3RhbXAsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwiNTU1NTXlrZjlgqjlhbPljaHmlbDmja46XCIsbGV2ZWxJbmZvKTtcclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixsZXZlbEluZm8pO1xyXG4gICAgICAgIGlmKHRpbWUxICYmIHRpbWUyKXtcclxuICAgICAgICAgICAgbGV0IGRhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICB0aW1lOnRpbWUxLFxyXG4gICAgICAgICAgICAgICAgYWRkX1RpbWU6dGltZTIsXHJcbiAgICAgICAgICAgICAgICByZXN1bHQ6XCJzdWNjZXNzXCJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zaHVzaHVfVHJhY2soXCJmaW5pc2hfc3RhZ2VcIixkYXRhKTtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIFxyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJMZXZlbCgoZGF0YSk9PntcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLlrZjlgqjnu5Pmnpw6XCIsZGF0YSk7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5LiK5LygXCIsZGF0YSk7XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcblxyXG4gICAgLy/mlLnlj5jph5HluIHkv6Hmga9cclxuICAgIGNoYW5nZUNvaW4oY29pbil7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJjaGFuZ2VDb2luXCIsY29pbik7XHJcbiAgICAgICAgaWYoY29pbiA9PSB1bmRlZmluZWQpIHJldHVybjtcclxuICAgICAgICBpZihjb2luIDwgMCAmJiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA8IC1jb2luKXtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLph5HluIHkuI3otrNcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiwtY29pbik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gKz0gY29pbjtcclxuXHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPCAwKXtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuaUueWPmOeahOmHkeW4gTpcIixjb2luKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuiHqui6q+mHkeW4geS/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcclxuICAgICAgICBsZXQgY29pbkluZm8gPSB7XHJcbiAgICAgICAgICAgIGNvaW46Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sXHJcbiAgICAgICAgICAgIHRpbWVzdGFtcDp0aW1lc3RhbXAsXHJcbiAgICAgICAgfVxyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfU2V0U3VwZXJQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgY2MuZnguU3RvcmFnZU1lc3NhZ2Uuc2V0U3RvcmFnZShcImNvaW5cIixjb2luSW5mbyk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLlrZjlgqjph5HluIHmlbDmja46XCIsY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sY29pbkluZm8pO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJDb2luKChkYXRhKT0+e1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuS4iuS8oFwiLGRhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIC8v6I635Y+W55So5oi36YeR5biB5pWw6YePXHJcbiAgICBnZXRVc2VyQ29pbihjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6ICd1c2VyQ29pbicsXHJcbiAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ3JlYWQnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn6K+75Y+W55So5oi36YeR5biB5pWw5o2u5oiQ5YqfJywgcmVzLnJlc3VsdClcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/mlLnlj5jnlKjmiLfph5HluIFcclxuICAgIHNldFVzZXJDb2luKGNhbGxiYWNrKXtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4gPD0gMCB8fCBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbiA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLph5HluIHkuIrkvKDlpLHotKVcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICAvLyBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luID0gMDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuS4iuS8oOeahOmHkeW4geaVsOmHjzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckNvaW4nLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJyxcclxuICAgICAgICAgICAgICAgIGNvaW5BbW91bnQ6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5LqR5Ye95pWw6L+U5Zue57uT5p6cOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICBpZihyZXMucmVzdWx0LmNvZGUgPT0gMjAwKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo6YeR5biB5pWw5o2u5oiQ5YqfJyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uY29pbik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOmHkeW4geaVsOaNruWksei0pScpXHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WtmOWCqOeUqOaIt+aVsOaNruWksei0pScsIGVycilcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG5cclxuICAgIC8v6I635Y+W55So5oi35YWz5Y2h5pWwXHJcbiAgICBnZXRVc2VyTGV2ZWwoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckxldmVsJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/ov5vmuLjmiI/lpITnkIYg5L2T5Yqb5YC85oOF5Ya1XHJcbiAgICBnZXRIZWFsdGgoY2FsbGJhY2s6IEZ1bmN0aW9uKXtcclxuICAgICAgICBsZXQgaGVhbHRoID0gY2MuZnguU3RvcmFnZU1lc3NhZ2UuZ2V0U3RvcmFnZShcImhlYWx0aFwiKTtcclxuICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDU7XHJcbiAgICAgICAgLy/msqHmnInlrZjlgqjov4fkvZPlipvlgLxcclxuICAgICAgICBpZihoZWFsdGggPT0gbnVsbCB8fCBoZWFsdGggPT0gdW5kZWZpbmVkIHx8IGhlYWx0aCA9PSBcIlwiKXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmsqHlrZjlgqjov4fkvZPlipvlgLzvvIzliJ3ov5tcIik7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDU7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJIZWFsdGgoKGRhdGEpPT57XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+aOpeWPo+i/lOWbnue7k+aenFwiLGRhdGEpO1xyXG4gICAgICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQuY29kZSA9PSAyMDApe1xyXG4gICAgICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IGRhdGEucmVzdWx0LmRhdGE7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lID0gZGF0YS5yZXN1bHQudGltZXN0YW1wO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoZWFsdGhJbmZvID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBcImhlYWx0aFwiOmNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjpkYXRhLnJlc3VsdC50aW1lc3RhbXBcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiaGVhbHRoXCIsaGVhbHRoSW5mbyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKGRhdGEucmVzdWx0LmNvZGUgPT0gNDA0ICYmIGRhdGEucmVzdWx0Lm1lc3NhZ2UgPT0gXCLmnKrmib7liLDkvZPlipvmlbDmja5cIil7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgwLCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZihjYWxsYmFjaykgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCLmnInlrZjlgqjov4fkvZPlipvlgLw6XCIsaGVhbHRoKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwID0gaGVhbHRoLmhlYWx0aDtcclxuICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLkvZPlipvlgLzor7vlj5blrozmr5VcIik7XHJcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBpZihoZWFsdGguaGVhbHRoIDwgMCl7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuS9k+WKm+WAvOW8guW4uO+8jOW9kumbtlwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA9IDA7XHJcbiAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VySGVhbHRoKDAsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICBpZihjYWxsYmFjaykgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoaGVhbHRoLmhlYWx0aCA8IDUpe1xyXG4gICAgICAgICAgICAgICAgLy8gMzDliIbpkp/nmoTmr6vnp5LmlbBcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRoaXJ0eU1pbnV0ZXMgPSAzMCAqIDYwICogMTAwMDsgXHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbGFwc2VkVGltZSA9IHRpbWVzdGFtcCAtIGhlYWx0aC50aW1lc3RhbXA7XHJcbiAgICAgICAgICAgICAgICAvLyDorqHnrpfmgaLlpI3nmoTkvZPlipvlgLxcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlY292ZXJlZEhlYWx0aCA9IE1hdGgubWluKDUgLSBoZWFsdGguaGVhbHRoLCBNYXRoLmZsb29yKGVsYXBzZWRUaW1lIC8gdGhpcnR5TWludXRlcykpOyBcclxuICAgICAgICAgICAgICAgIGlmIChyZWNvdmVyZWRIZWFsdGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhbHRoLmhlYWx0aCArPSByZWNvdmVyZWRIZWFsdGg7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aChyZWNvdmVyZWRIZWFsdGgsKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGDkvZPlipvlgLzmgaLlpI0gJHtyZWNvdmVyZWRIZWFsdGh9IOeCue+8jOW9k+WJjeS9k+WKm+WAvDogJHtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHB9YCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOiuoeeul+i3neemu+S4i+S4gOasoeaBouWkjeeahOWJqeS9meaXtumXtFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbWFpbmluZ1RpbWUgPSBNYXRoLmNlaWwoKHRoaXJ0eU1pbnV0ZXMgLSAoZWxhcHNlZFRpbWUgJSB0aGlydHlNaW51dGVzKSkgLyAxMDAwKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhg5L2T5Yqb5YC85pyq5ruh77yM5b6F5oGi5aSN77yM6Led56a75LiL5LiA5qyh5oGi5aSN6L+Y5YmpICR7cmVtYWluaW5nVGltZX0g56eSYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lID0gcmVtYWluaW5nVGltZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/ojrflj5bnlKjmiLfkvZPlipvlgLxcclxuICAgIGdldFVzZXJIZWFsdGgoY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5Y2z5bCG6L+b5YWl5L2T5Yqb6I635Y+W5o6l5Y+jXCIpO1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VzZXJIZWFsdGgnLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdyZWFkJ1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkvZPlipvojrflj5bmiJDlip9cIixyZXMpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spXHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2socmVzKTsgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLkvZPlipvojrflj5blpLHotKVcIixlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIC8v6K6+572u55So5oi35L2T5Yqb5YC8ICDmnInlj6/og73liqDvvIzmnInlj6/og73lrprml7blmajlh49cclxuICAgIHNldFVzZXJIZWFsdGgoaGVhbHRoLGNhbGxiYWNrKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAgKz0gaGVhbHRoO1xyXG4gICAgICAgIC8vIGlmKGhlYWx0aCA8IDApIHtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgLy8gZWxzZSBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85oGi5aSNXCIpO1xyXG4gICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IERhdGUubm93KCk7XHJcbiAgICAgICAgbGV0IGhlYWx0aEluZm8gPXt9XHJcbiBcclxuICAgICAgICAvL+WmguaenOa2iOiAl+S5i+WJjeS4jeaYr+a7oeS9k+WKm++8jOivtOaYjuW3sue7j+WcqOaBouWkjeacn++8jOW5tuS4jeeUqOS/ruaUueaXtumXtFxyXG4gICAgICAgIGlmKGhlYWx0aCA8IDAgJiYgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwICE9IDQpIHtcclxuICAgICAgICAgICAgbGV0IG9sZFRpbWUgPSBjYy5meC5TdG9yYWdlTWVzc2FnZS5nZXRTdG9yYWdlKFwiaGVhbHRoXCIpLnRpbWVzdGFtcDtcclxuICAgICAgICAgICAgaGVhbHRoSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIFwiaGVhbHRoXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLFxyXG4gICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjpvbGRUaW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgaGVhbHRoSW5mbyA9IHtcclxuICAgICAgICAgICAgICAgIFwiaGVhbHRoXCI6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLFxyXG4gICAgICAgICAgICAgICAgXCJ0aW1lc3RhbXBcIjp0aW1lc3RhbXBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwiaGVhbHRoXCIsaGVhbHRoSW5mbyk7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAndXNlckhlYWx0aCcsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgaGVhbHRoQW1vdW50OiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHAsXHJcbiAgICAgICAgICAgICAgICAgICAgdGltZXN0YW1wOnRpbWVzdGFtcFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBmYWlsOiBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcign5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgLy/otK3kubDooYzkuLpcclxuICAgIGJ1eVJldmlldyhjb2luLGNhbGxiYWNrOiBGdW5jdGlvbil7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5a6e6ZmF5Y2z5bCG5raI6ICX6YeR5biBOlwiLGNvaW4pO1xyXG4gICAgICAgICAgICAvLyB0aGlzLmNoYW5nZUNvaW4oY29pbik7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+abtOaUueeUqOaIt+mBk+WFt+aVsFxyXG4gICAgYnV5UHJvcChwcm9waWQsY2FsbGJhY2s6IEZ1bmN0aW9uKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLmNoYW5nZUNvaW4oLTE1MDApO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VyUHJvcChwcm9waWQsMywoZGF0YSk9PntcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGlkOiAocHJvcGlkICsgXCJcIiksXHJcbiAgICAgICAgICAgICAgICBudW06M1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlc291cmNlX2dldFwiLGRhdGEpO1xyXG4gICAgICAgICAgICBsZXQgX2lkID0gXCJcIjtcclxuICAgICAgICAgICAgaWYocHJvcGlkID09IDIwMDEpIF9pZCA9IFwiZnJlZXplX2luX2dhbWVcIjtcclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMikgX2lkID0gXCJoYW1tZXJfaW5fZ2FtZVwiO1xyXG4gICAgICAgICAgICBlbHNlIGlmKHByb3BpZCA9PSAyMDAzKSBfaWQgPSBcIndhbmRfaW5fZ2FtZVwiO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgYnV5RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgIGl0ZW1faWQ6X2lkLFxyXG4gICAgICAgICAgICAgICAgaXRlbV9udW06MSxcclxuICAgICAgICAgICAgICAgIGl0ZW1fcHJpY2U6MTUwMCxcclxuICAgICAgICAgICAgICAgIGNvc3RfdHlwZTpcImdvbGRcIlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiX19fX19fX19fX19f5Y2z5bCG5LiK5LygU2hvcF9idXlcIixidXlEYXRhKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwic2hvcF9idXlcIixidXlEYXRhKTtcclxuICAgICAgICAgICAgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuXHJcbiAgICAvL+aUueWPmOeUqOaIt+WFs+WNoVxyXG4gICAgc2V0VXNlckxldmVsKGNhbGxiYWNrKXtcclxuICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgLy8gaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsIDw9IDAgfHwgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuetiee6p+mHjee9ruS4ujBcIik7XHJcbiAgICAgICAgICAgIC8vICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgPSAwO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y2z5bCG5LiK5Lyg55qE5YWz5Y2h5pWwOlwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCk7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlckxldmVsJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAnc2F2ZScsXHJcbiAgICAgICAgICAgICAgICBsZXZlbEFtb3VudDogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5LqR5Ye95pWw6L+U5Zue57uT5p6cOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo5YWz5Y2h5pWw5o2u5oiQ5YqfJyxjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJylcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5a2Y5YKo5YWz5Y2h5pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAgICAgLy/ojrflj5bnlKjmiLflhbPljaHmlbBcclxuICAgIGdldFVzZXJQcm9wKGNhbGxiYWNrOiBGdW5jdGlvbikge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgbmFtZTogJ3VzZXJQcm9wJyxcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgYWN0aW9uOiAncmVhZCdcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfor7vlj5bnlKjmiLfpgZPlhbfmlbDmja7miJDlip8nLCByZXMucmVzdWx0KVxyXG4gICAgICAgICAgICAgICAgaWYocmVzLnJlc3VsdC5kYXRhKXtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmZyZWV6ZTtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50ID0gcmVzLnJlc3VsdC5kYXRhLmhhbW1lcjtcclxuICAgICAgICAgICAgICAgICAgICAvLyBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWFnaWNBbW91bnQgPSByZXMucmVzdWx0LmRhdGEubWFnaWNfd2FuZDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKVxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKHJlcyk7IFxyXG5cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKGVycik7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL+aUueWPmOeUqOaIt+mBk+WFt1xyXG4gICAgc2V0VXNlclByb3AocHJvcGlkLGFtb3VudCxjYWxsYmFjayl7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdQcm9wRGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIGlmKHByb3BpZCA9PSAwKXtcclxuICAgICAgICAgICAgICAgIG5ld1Byb3BEYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGZyZWV6ZTpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZnJlZXplQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIGhhbW1lcjpjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaGFtbWVyQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgICAgIG1hZ2ljX3dhbmQ6Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1hZ2ljQW1vdW50LFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYocHJvcGlkID09IDIwMDEpe1xyXG4gICAgICAgICAgICAgICAgbmV3UHJvcERhdGEgPSBhbW91bnQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMil7XHJcbiAgICAgICAgICAgICAgICBuZXdQcm9wRGF0YSA9IGFtb3VudDsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZihwcm9waWQgPT0gMjAwMyl7XHJcbiAgICAgICAgICAgICAgICBuZXdQcm9wRGF0YSA9IGFtb3VudDsgXHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB3eC5jbG91ZC5jYWxsRnVuY3Rpb24oe1xyXG4gICAgICAgICAgICBuYW1lOiAndXNlclByb3AnLFxyXG4gICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdzYXZlJyxcclxuICAgICAgICAgICAgICAgIHByb3BUeXBlOiBwcm9waWQsXHJcbiAgICAgICAgICAgICAgICBwcm9wRGF0YTogbmV3UHJvcERhdGFcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCfkupHlh73mlbDov5Tlm57nu5Pmnpw6JywgcmVzKTtcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOmBk+WFt+aVsOaNruaIkOWKnycpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5a2Y5YKo6YGT5YW35pWw5o2u5aSx6LSlJylcclxuICAgICAgICAgICAgICAgIGlmKGNhbGxiYWNrKXtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5a2Y5YKo6YGT5YW35pWw5o2u5aSx6LSlJywgZXJyKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvLyDmo4Dmn6XmmK/lkKbmnInotrPlpJ/nmoTnoazluIFcclxuICAgIGNvbnN1bWVDb2lucyhyZXF1aXJlZENvaW5zOiBudW1iZXIsIHByb3BOYW1lOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyLCBjYWxsYmFjaykge1xyXG4gIFxyXG5cclxuICAgIH0sXHJcblxyXG4gICAgLy8g6K6+572u55So5oi35L+h5oGvXHJcbiAgICBzZXRVc2VySW5mbyhjYWxsYmFjazogRnVuY3Rpb24pIHtcclxuICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lID0gY2MuZnguR2FtZVRvb2wuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIGxldCB1c2VySW5mbyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyDov5nph4zloavlhpnopoHlrZjlgqjnmoTnlKjmiLfmlbDmja5cclxuICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJuYW1lLCAgIC8v55So5oi35ZCN56ewXHJcbiAgICAgICAgICAgICAgICAgICAgdXNlcmF2YXRhcjogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJhdmF0YXIsICAgICAvL+eUqOaIt+WktOWDj1xyXG4gICAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyX3RpbWU6IHRpbWVcclxuICAgICAgICAgICAgICAgIH1cclxuIFxyXG4gICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiAndXNlckRhdGEnLFxyXG4gICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ3NhdmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIHVzZXJEYXRhOiB1c2VySW5mb1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+WtmOWCqOeUqOaIt+aVsOaNruaIkOWKnycpXHJcbiAgICAgICAgICAgICAgICAgICAgaWYoY2FsbGJhY2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmFpbDogZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZihjYWxsYmFjayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soXCJmYWlsXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgIH0gXHJcbiAgICB9LFxyXG5cclxuICAgICBmb3JtYXREYXRlKGRhdGU6IERhdGUpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3QgaG91cnMgPSBTdHJpbmcoZGF0ZS5nZXRIb3VycygpKS5wYWRTdGFydCgyLCAnMCcpO1xyXG4gICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XHJcbiAgICAgICAgY29uc3Qgc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldFNlY29uZHMoKSkucGFkU3RhcnQoMiwgJzAnKTtcclxuICAgICAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBTdHJpbmcoZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSkucGFkU3RhcnQoMywgJzAnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fSAke2hvdXJzfToke21pbnV0ZXN9OiR7c2Vjb25kc30uJHttaWxsaXNlY29uZHN9YDtcclxuICAgIH0sXHJcbiAgICBcclxuICAgIC8v6I635Y+W5pe26Ze05oizXHJcbiAgICBnZXRUaW1lKCl7XHJcbiAgICAgICAgY29uc3QgdGltZXN0YW1wID0gIChuZXcgRGF0ZSgpLmdldFRpbWUoKSlcclxuICAgICAgICByZXR1cm4gdGltZXN0YW1wO1xyXG4gICAgfSxcclxuICAgIHB1c2hMaXN0ZXI6ZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuICAgIHJlbW92ZUFsbExpc3RlcjpmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG5cclxuICAgIHNodXNodV9UcmFjazogZnVuY3Rpb24obmFtZSxkYXRhKXtcclxuICAgICAgICBsZXQgZXZlbnREYXRhID0ge31cclxuICAgICAgICBzd2l0Y2gobmFtZSl7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyZWdpc3RlclwiOlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJlbnRlcl9zdGFnZVwiOlxyXG4gICAgICAgICAgICAgICAgZXZlbnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YWdlX2lkOiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiZmluaXNoX3N0YWdlXCI6XHJcbiAgICAgICAgICAgICAgICBldmVudERhdGEgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhZ2VfaWQ6IChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwgKyAxKSxcclxuICAgICAgICAgICAgICAgICAgICBzdGFnZV9kdXJhdGlvbjogZGF0YS50aW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZGVkX3RpbWU6IGRhdGEuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBkYXRhLnJlc3VsdFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgXCJyZXNvdXJjZV9nZXRcIjpcclxuICAgICAgICAgICAgICAgIGV2ZW50RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfcmVhc29uOlwi6LSt5Lmw6YGT5YW3XCIsICAgLy/ojrflvpfmnaXmupBcclxuICAgICAgICAgICAgICAgICAgICBjaGFuZ2VfbnVtOmRhdGEubnVtLCAgICAgICAvL+iOt+W+l+aVsOmHj1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlX2lkOmRhdGEuaWQgICAgICAgIC8v6YGT5YW3aWRcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwicmVzb3VyY2VfY29zdFwiOlxyXG4gICAgICAgICAgICAgICAgZXZlbnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZV9yZWFzb246XCLkvb/nlKjpgZPlhbdcIiwgICAvL+iOt+W+l+adpea6kFxyXG4gICAgICAgICAgICAgICAgICAgIGNoYW5nZV9udW06ZGF0YS5udW0sICAgICAgIC8v6I635b6X5pWw6YePXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VfaWQ6ZGF0YS5pZCAgICAgICAgLy/pgZPlhbdpZFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7IFxyXG4gICAgICAgICAgICBjYXNlIFwic2hvcF9idXlcIjpcclxuICAgICAgICAgICAgICAgIGV2ZW50RGF0YSA9IHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtX2lkOiBkYXRhLml0ZW1faWQsXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9udW06IGRhdGEuaXRlbV9udW0sXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbV9wcmljZTogZGF0YS5pdGVtX3ByaWNlLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvc3RfdHlwZTogZGF0YS5jb3N0X3R5cGUsICAgXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaVsOaNrjpcIixldmVudERhdGEpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfVHJhY2sobmFtZSxldmVudERhdGEpO1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaHVzaHVfVHJhY2sobmFtZSwgZXZlbnREYXRhKTtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0V2VjaGF0R2FtZVZlcnNpb246IGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgY29uc3QgYWNjb3VudEluZm8gPSB3eC5nZXRBY2NvdW50SW5mb1N5bmMoKTtcclxuICAgICAgICBjb25zdCBtaW5pUHJvZ3JhbSA9IGFjY291bnRJbmZvLm1pbmlQcm9ncmFtO1xyXG4gICAgICAgIHN3aXRjaCAobWluaVByb2dyYW0uZW52VmVyc2lvbikge1xyXG4gICAgICAgICAgICBjYXNlICdkZXZlbG9wJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5byA5Y+R54mIJztcclxuICAgICAgICAgICAgY2FzZSAndHJpYWwnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICfkvZPpqozniYgnO1xyXG4gICAgICAgICAgICBjYXNlICdyZWxlYXNlJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5q2j5byP54mIJztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiAn5pyq55+l54mI5pysJztcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxufTtcclxuZXhwb3J0IHsgR2FtZVRvb2wgfTsiXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/JiaZai.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '1dc93b4fehOrpGgTkihBH4g', 'JiaZai'); +// Script/JiaZai.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var GameManager_1 = require("./GameManager"); +var NumberToImage_1 = require("./NumberToImage"); +var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); +var lq_collide_system_1 = require("./lq_collide_system/lq_collide_system"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.node1 = null; + _this.node2 = null; + _this.node3 = null; + _this.Block_Color = []; + _this.custom = null; + _this.level = null; + _this.coin = null; + _this.Stamina = null; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + NewClass.prototype.onLoad = function () { + cc.game.setFrameRate(63); + lq_collide_system_1.LQCollideSystem.is_enable = true; + // console.log("加载关卡配置2"); + // window.initMgr(); + GameManager_1.default._instance.Block_Color = this.Block_Color; + if (cc.fx.GameConfig.GM_INFO.first) { + console.log("————————准备注册事件", cc.fx.GameConfig.GM_INFO.openid); + if (cc.fx.GameConfig.GM_INFO.openid != "") { + console.log("————————发送注册事件"); + cc.fx.GameTool.shushu_Track("register"); + } + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.getChildByName("zhuanchang").active = true; + this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + setTimeout(function () { + cc.fx.GameConfig.GM_INFO.first = false; + cc.director.loadScene("GameScene"); + }, 1000); + } + }; + NewClass.prototype.start = function () { + // console.log("已经进入Home界面"); + // console.log("金币",cc.fx.GameConfig.GM_INFO.coin); + // console.log("关卡",cc.fx.GameConfig.GM_INFO.level+1); + var _this = this; + cc.fx.GameTool.getHealth(null); + // cc.fx.GameConfig.LEVEL_INFO_init(false,0); + setTimeout(function () { + NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 25, 15, "big_", _this.level, false); + NumberToImage_1.default.numberToImageNodes(cc.fx.GameConfig.GM_INFO.coin, 30, 15, "coin_", _this.coin, true); + _this.setHealthInfo(); + }, 0); + if (cc.fx.GameConfig.GM_INFO.gameState) { + this.node.getChildByName("zhuanchang").active = true; + setTimeout(function () { + cc.fx.AudioManager._instance.playEffect("zhuan2", null); + _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false); + _this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener(function (entry) { + if (entry.animation.name === "down" && !cc.fx.GameConfig.GM_INFO.first) { + // 动画播放结束后执行的逻辑 + _this.node.getChildByName("zhuanchang").active = false; + } + }); + }, 500); + } + else { + if (!cc.fx.GameConfig.GM_INFO.first) + this.node.getChildByName("zhuanchang").active = false; + } + }; + //开始倒计时 + NewClass.prototype.startTimeCutDown = function () { + this.scheduleCallback = function () { + var _this = this; + if (this.pause) + return; + if (cc.fx.GameConfig.GM_INFO.min_Time <= 0) { + this.stopTimeCutDown(); + var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); + this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; + cc.fx.GameTool.setUserHealth(1, function (data) { + cc.fx.GameTool.getHealth(null); + _this.setHealthInfo(); + }); + } + else { + cc.fx.GameConfig.GM_INFO.min_Time -= 1; + var timeTemp = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); + this.Stamina.getChildByName("time").getComponent(cc.Label).string = timeTemp; + } + }.bind(this); + this.schedule(this.scheduleCallback, 1); + }; + // 停止倒计时 + NewClass.prototype.stopTimeCutDown = function () { + if (this.scheduleCallback) { + this.unschedule(this.scheduleCallback); + } + }; + NewClass.prototype.setHealthInfo = function () { + if (cc.fx.GameConfig.GM_INFO.hp == 5) { + this.Stamina.getChildByName("man").active = true; + this.Stamina.getChildByName("health").active = false; + this.Stamina.getChildByName("time").active = false; + } + else { + this.Stamina.getChildByName("man").active = false; + this.Stamina.getChildByName("health").active = true; + NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.hp), 25, 15, "coin_", this.Stamina.getChildByName("health"), false); + this.Stamina.getChildByName("time").active = true; + if (cc.fx.GameConfig.GM_INFO.min_Time != 0) { + var time = cc.fx.GameTool.getTimeMargin(cc.fx.GameConfig.GM_INFO.min_Time); + this.Stamina.getChildByName("time").getComponent(cc.Label).string = time; + this.startTimeCutDown(); + } + } + }; + NewClass.prototype.startGame = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (cc.fx.GameConfig.GM_INFO.hp < 1) { + MiniGameSdk_1.MiniGameSdk.API.showToast("体力值不足"); + return; + } + if (this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl")._touch) { + this.node.getChildByName("Load").getChildByName("startBtn").getComponent("btnControl").setTouch(false); + // if(this.custom.string != ""){ + // cc.fx.GameConfig.GM_INFO.level = parseInt(this.custom.string) - 1; + // // cc.fx.StorageMessage.setStorage("level",cc.fx.GameConfig.GM_INFO.level.toString()); + // cc.fx.GameConfig.LEVEL_INFO_init(true); + // } + // else{ + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.getChildByName("zhuanchang").active = true; + this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + cc.fx.GameConfig.LEVEL_INFO_init(true, 1000); + // } + } + }; + //打开商店 + NewClass.prototype.openShop = function () { + var _this = this; + // 加载 shop bundle + cc.assetManager.loadBundle('shop', function (err, bundle) { + bundle.load('prefab/shop', cc.Prefab, function (err, prefab) { + if (err) { + cc.error(err.message || err); + return; + } + if (prefab) { + var shopNode = cc.instantiate(prefab); + _this.node.addChild(shopNode); + console.log("shopNode parent:", shopNode.parent); + } + }); + }); + }; + NewClass.prototype.closeRank = function () { + this.node.getChildByName("Rank").active = false; + }; + NewClass.prototype.openRank = function () { + this.node.getChildByName("Rank").active = true; + }; + NewClass.prototype.openReward = function () { + this.node.getChildByName("Reward").active = true; + }; + NewClass.prototype.clickShop = function () { + // 假设已经获取到了 userId 和 productId + var userId = cc.fx.GameConfig.GM_INFO.openid; + var productId = '1'; + console.log("即将创建createorder"); + //@ts-ignore + wx.cloud.callFunction({ + name: "createOrder", + data: { + "userId": userId, + "productId": productId, + }, + success: function (res) { + // 取得云函数返回的订单信息 + console.log("createOrder结果:", res.result); + var payment = res.result.paymentResult.payment; + console.log("payment:", payment); + // 调起微信客户端支付 + //@ts-ignore + // 调起微信客户端支付 + //@ts-ignore + wx.requestPayment({ + // 时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间 + timeStamp: payment.timeStamp, + // 随机字符串,长度为32个字符以下 + nonceStr: payment.nonceStr, + // 统一下单接口返回的 prepay_id 参数值 + package: payment.package, + // 签名算法,暂支持 MD5、HMAC-SHA256 + signType: payment.signType || 'MD5', + // 支付签名 + paySign: payment.paySign, + success: function (res) { + /* 成功回调 */ + console.log("支付成功", res); + }, + fail: function (res) { + /* 失败回调 */ + console.log("支付失败", res); + }, + complete: function (res) { + console.log("支付完成", res); + } + }); + }, + }); + }; + NewClass.prototype.openPause = function () { + cc.fx.AudioManager._instance.playEffect("anniu_little", null); + console.log(cc.fx.GameConfig.GM_INFO); + if (cc.fx.GameConfig.GM_INFO.openid == undefined) { + console.log(cc.fx.GameConfig.GM_INFO.openid); + cc.fx.GameConfig.GM_INFO.openid = ""; + } + this.node.getChildByName("Pause").active = true; + this.node.getChildByName("Pause").getChildByName("openID").getComponent(cc.Label).string = cc.fx.GameConfig.GM_INFO.openid; + }; + NewClass.prototype.closePause = function () { + cc.fx.AudioManager._instance.playEffect("anniu_little", null); + this.node.getChildByName("Pause").active = false; + }; + NewClass.prototype.closeReward = function () { + this.node.getChildByName("Reward").active = false; + }; + NewClass.prototype.openStamina = function () { + this.node.getChildByName("Stamina").active = true; + }; + NewClass.prototype.closeStamina = function () { + this.node.getChildByName("Stamina").active = false; + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node1", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node2", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node3", void 0); + __decorate([ + property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) + ], NewClass.prototype, "Block_Color", void 0); + __decorate([ + property(cc.EditBox) + ], NewClass.prototype, "custom", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "level", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "coin", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "Stamina", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxKaWFaYWkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkNBQXdDO0FBQ3hDLGlEQUE0QztBQUM1QyxpREFBZ0Q7QUFDaEQsMkVBQXdFO0FBQ2xFLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBaVJDO1FBOVFHLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUd0QixXQUFLLEdBQVksSUFBSSxDQUFDO1FBS3RCLGlCQUFXLEdBQTBCLEVBQUUsQ0FBQztRQUd4QyxZQUFNLEdBQWUsSUFBSSxDQUFDO1FBSzFCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsVUFBSSxHQUFZLElBQUksQ0FBQztRQUdyQixhQUFPLEdBQVksSUFBSSxDQUFDOztRQW9QeEIsaUJBQWlCO0lBQ3JCLENBQUM7SUFsUEcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47UUFDSSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN6QixtQ0FBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakMsMEJBQTBCO1FBQzFCLG9CQUFvQjtRQUNwQixxQkFBVyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyRCxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDaEMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFD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R0FBRyxLQUFLLENBQUM7SUFDdEQsQ0FBQztJQUVELDhCQUFXLEdBQVg7UUFDSSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRCwrQkFBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN2RCxDQUFDO0lBMVFEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsyQ0FDSTtJQUd0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzJDQUNJO0lBS3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQztpREFDZDtJQUd4QztRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDOzRDQUNLO0lBSzFCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MkNBQ0k7SUFHdEI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDRztJQUdyQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzZDQUNNO0lBNUJQLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FpUjVCO0lBQUQsZUFBQztDQWpSRCxBQWlSQyxDQWpScUMsRUFBRSxDQUFDLFNBQVMsR0FpUmpEO2tCQWpSb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmltcG9ydCBHYW1lTWFuYWdlciBmcm9tIFwiLi9HYW1lTWFuYWdlclwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi9OdW1iZXJUb0ltYWdlXCI7XHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vU2RrL01pbmlHYW1lU2RrXCI7XHJcbmltcG9ydCB7IExRQ29sbGlkZVN5c3RlbSB9IGZyb20gXCIuL2xxX2NvbGxpZGVfc3lzdGVtL2xxX2NvbGxpZGVfc3lzdGVtXCI7XHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXdDbGFzcyBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMjogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBub2RlMzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuU3ByaXRlQXRsYXNdLCB0b29sdGlwOiBcIuaWueWdl+minOiJslwiIH0pXHJcbiAgICBCbG9ja19Db2xvcjogQXJyYXk8Y2MuU3ByaXRlQXRsYXM+ID0gW107XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkVkaXRCb3gpXHJcbiAgICBjdXN0b206IGNjLkVkaXRCb3ggPSBudWxsO1xyXG5cclxuXHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBsZXZlbDogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBjb2luOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIFN0YW1pbmE6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgc2NoZWR1bGVDYWxsYmFjazogYW55O1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICBjYy5nYW1lLnNldEZyYW1lUmF0ZSg2Myk7XHJcbiAgICAgICAgTFFDb2xsaWRlU3lzdGVtLmlzX2VuYWJsZSA9IHRydWU7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCLliqDovb3lhbPljaHphY3nva4yXCIpO1xyXG4gICAgICAgIC8vIHdpbmRvdy5pbml0TWdyKCk7XHJcbiAgICAgICAgR2FtZU1hbmFnZXIuX2luc3RhbmNlLkJsb2NrX0NvbG9yID0gdGhpcy5CbG9ja19Db2xvcjtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZpcnN0KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi4oCU4oCU4oCU4oCU4oCU4oCU4oCU4oCU5YeG5aSH5rOo5YaM5LqL5Lu2XCIsIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5vcGVuaWQpO1xyXG4gICAgICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuKAlOKAlOKAlOKAlOKAlOKAlOKAlOKAlOWPkemAgeazqOWGjOS6i+S7tlwiKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNodXNodV9UcmFjayhcInJlZ2lzdGVyXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcInpodWFuMVwiLCBudWxsKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsIFwidXBcIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5maXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMDAwKTtcclxuXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0KCkge1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bey57uP6L+b5YWlSG9tZeeVjOmdolwiKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIumHkeW4gVwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luKTtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIuWFs+WNoVwiLGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCsxKTtcclxuXHJcbiAgICAgICAgY2MuZnguR2FtZVRvb2wuZ2V0SGVhbHRoKG51bGwpO1xyXG4gICAgICAgIC8vIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KGZhbHNlLDApO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2RlcygoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsICsgMSksIDI1LCAxNSwgXCJiaWdfXCIsIHRoaXMubGV2ZWwsIGZhbHNlKTtcclxuICAgICAgICAgICAgTnVtYmVyVG9JbWFnZS5udW1iZXJUb0ltYWdlTm9kZXMoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmNvaW4sIDMwLCAxNSwgXCJjb2luX1wiLCB0aGlzLmNvaW4sIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnNldEhlYWx0aEluZm8oKTtcclxuICAgICAgICB9LCAwKTtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVTdGF0ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4yXCIsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldEFuaW1hdGlvbigxLCBcImRvd25cIiwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemh1YW5jaGFuZ1wiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pLnNldENvbXBsZXRlTGlzdGVuZXIoKGVudHJ5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVudHJ5LmFuaW1hdGlvbi5uYW1lID09PSBcImRvd25cIiAmJiAhY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZpcnN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvue7k+adn+WQjuaJp+ihjOeahOmAu+i+kVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZmlyc3QpXHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgIH1cclxuXHJcbiAgICAvL+W8gOWni+WAkuiuoeaXtlxyXG4gICAgc3RhcnRUaW1lQ3V0RG93bigpIHtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnBhdXNlKSByZXR1cm47XHJcbiAgICAgICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgPD0gMCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wVGltZUN1dERvd24oKTtcclxuICAgICAgICAgICAgICAgIHZhciB0aW1lVGVtcCA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lVGVtcDtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkdhbWVUb29sLnNldFVzZXJIZWFsdGgoMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRIZWFsdGgobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRIZWFsdGhJbmZvKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lIC09IDE7XHJcbiAgICAgICAgICAgICAgICB2YXIgdGltZVRlbXAgPSBjYy5meC5HYW1lVG9vbC5nZXRUaW1lTWFyZ2luKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5taW5fVGltZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLlN0YW1pbmEuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGltZVRlbXA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5zY2hlZHVsZSh0aGlzLnNjaGVkdWxlQ2FsbGJhY2ssIDEpO1xyXG4gICAgfVxyXG4gICAgLy8g5YGc5q2i5YCS6K6h5pe2XHJcbiAgICBzdG9wVGltZUN1dERvd24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2NoZWR1bGVDYWxsYmFjaykge1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy5zY2hlZHVsZUNhbGxiYWNrKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0SGVhbHRoSW5mbygpIHtcclxuICAgICAgICBpZiAoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwID09IDUpIHtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwibWFuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcImhlYWx0aFwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcIm1hblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwiaGVhbHRoXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uaHApLCAyNSwgMTUsIFwiY29pbl9cIiwgdGhpcy5TdGFtaW5hLmdldENoaWxkQnlOYW1lKFwiaGVhbHRoXCIpLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5taW5fVGltZSAhPSAwKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGltZSA9IGNjLmZ4LkdhbWVUb29sLmdldFRpbWVNYXJnaW4oY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm1pbl9UaW1lKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuU3RhbWluYS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aW1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVDdXREb3duKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHN0YXJ0R2FtZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIiwgbnVsbCk7XHJcbiAgICAgICAgaWYgKGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5ocCA8IDEpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdChcIuS9k+WKm+WAvOS4jei2s1wiKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiTG9hZFwiKS5nZXRDaGlsZEJ5TmFtZShcInN0YXJ0QnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIkxvYWRcIikuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydEJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gaWYodGhpcy5jdXN0b20uc3RyaW5nICE9IFwiXCIpe1xyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID0gcGFyc2VJbnQodGhpcy5jdXN0b20uc3RyaW5nKSAtIDE7XHJcbiAgICAgICAgICAgIC8vICAgICAvLyBjYy5meC5TdG9yYWdlTWVzc2FnZS5zZXRTdG9yYWdlKFwibGV2ZWxcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwudG9TdHJpbmcoKSk7IFxyXG4gICAgICAgICAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5MRVZFTF9JTkZPX2luaXQodHJ1ZSk7XHJcbiAgICAgICAgICAgIC8vIH1cclxuICAgICAgICAgICAgLy8gZWxzZXtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkdhbWVDb25maWcuTEVWRUxfSU5GT19pbml0KHRydWUsIDEwMDApO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8v5omT5byA5ZWG5bqXXHJcbiAgICBvcGVuU2hvcCgpIHtcclxuICAgICAgICAvLyDliqDovb0gc2hvcCAgYnVuZGxlXHJcbiAgICAgICAgY2MuYXNzZXRNYW5hZ2VyLmxvYWRCdW5kbGUoJ3Nob3AnLCAoZXJyOiBFcnJvciwgYnVuZGxlOiBjYy5Bc3NldE1hbmFnZXIuQnVuZGxlKSA9PiB7XHJcbiAgICAgICAgICAgIGJ1bmRsZS5sb2FkKCdwcmVmYWIvc2hvcCcsIGNjLlByZWZhYiwgKGVycjogRXJyb3IsIHByZWZhYjogY2MuUHJlZmFiKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZXJyb3IoZXJyLm1lc3NhZ2UgfHwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAocHJlZmFiKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2hvcE5vZGUgPSBjYy5pbnN0YW50aWF0ZShwcmVmYWIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5hZGRDaGlsZChzaG9wTm9kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJzaG9wTm9kZSBwYXJlbnQ6XCIsIHNob3BOb2RlLnBhcmVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUmFuaygpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSYW5rXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9wZW5SYW5rKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJhbmtcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBvcGVuUmV3YXJkKCkge1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlJld2FyZFwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrU2hvcCgpIHtcclxuICAgICAgICAvLyDlgYforr7lt7Lnu4/ojrflj5bliLDkuoYgdXNlcklkIOWSjCBwcm9kdWN0SWRcclxuICAgICAgICBjb25zdCB1c2VySWQgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkO1xyXG4gICAgICAgIGNvbnN0IHByb2R1Y3RJZCA9ICcxJztcclxuICAgICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuWIm+W7umNyZWF0ZW9yZGVyXCIpO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHd4LmNsb3VkLmNhbGxGdW5jdGlvbih7XHJcbiAgICAgICAgICAgIG5hbWU6IFwiY3JlYXRlT3JkZXJcIixcclxuICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgXCJ1c2VySWRcIjogdXNlcklkLFxyXG4gICAgICAgICAgICAgICAgXCJwcm9kdWN0SWRcIjogcHJvZHVjdElkLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBzdWNjZXNzOiAocmVzKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAvLyDlj5blvpfkupHlh73mlbDov5Tlm57nmoTorqLljZXkv6Hmga9cclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY3JlYXRlT3JkZXLnu5Pmnpw6XCIsIHJlcy5yZXN1bHQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF5bWVudCA9IHJlcy5yZXN1bHQucGF5bWVudFJlc3VsdC5wYXltZW50O1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJwYXltZW50OlwiLCBwYXltZW50KTtcclxuICAgICAgICAgICAgICAgIC8vIOiwg+i1t+W+ruS/oeWuouaIt+err+aUr+S7mFxyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAvLyDosIPotbflvq7kv6HlrqLmiLfnq6/mlK/ku5hcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3gucmVxdWVzdFBheW1lbnQoe1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOaXtumXtOaIs++8jOS7jiAxOTcwIOW5tCAxIOaciCAxIOaXpSAwMDowMDowMCDoh7Pku4rnmoTnp5LmlbDvvIzljbPlvZPliY3nmoTml7bpl7RcclxuICAgICAgICAgICAgICAgICAgICB0aW1lU3RhbXA6IHBheW1lbnQudGltZVN0YW1wLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOmaj+acuuWtl+espuS4su+8jOmVv+W6puS4ujMy5Liq5a2X56ym5Lul5LiLXHJcbiAgICAgICAgICAgICAgICAgICAgbm9uY2VTdHI6IHBheW1lbnQubm9uY2VTdHIsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g57uf5LiA5LiL5Y2V5o6l5Y+j6L+U5Zue55qEIHByZXBheV9pZCDlj4LmlbDlgLxcclxuICAgICAgICAgICAgICAgICAgICBwYWNrYWdlOiBwYXltZW50LnBhY2thZ2UsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g562+5ZCN566X5rOV77yM5pqC5pSv5oyBIE1ENeOAgUhNQUMtU0hBMjU2XHJcbiAgICAgICAgICAgICAgICAgICAgc2lnblR5cGU6IHBheW1lbnQuc2lnblR5cGUgfHwgJ01ENScsXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5pSv5LuY562+5ZCNXHJcbiAgICAgICAgICAgICAgICAgICAgcGF5U2lnbjogcGF5bWVudC5wYXlTaWduLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MocmVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8qIOaIkOWKn+WbnuiwgyAqL1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIuaUr+S7mOaIkOWKn1wiLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbChyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLyog5aSx6LSl5Zue6LCDICovXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwi5pSv5LuY5aSx6LSlXCIsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZShyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLmlK/ku5jlrozmiJBcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgb3BlblBhdXNlKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLCBudWxsKTtcclxuICAgICAgICBjb25zb2xlLmxvZyhjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8pO1xyXG4gICAgICAgIGlmIChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkID09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm9wZW5pZCA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiUGF1c2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJvcGVuSURcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlUGF1c2UoKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfbGl0dGxlXCIsIG51bGwpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjbG9zZVJld2FyZCgpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJSZXdhcmRcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblN0YW1pbmEoKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiU3RhbWluYVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU3RhbWluYSgpIHtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJTdGFtaW5hXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/GameScene.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'e8b235WjRBErajwLmN8xFUz', 'GameScene'); +// Script/GameScene.js + + +// cc.Class({ +// extends: cc.Component, +// properties: { +// localTest: { +// default: false, +// tooltip: '本地测试时勾选,避免tz_url和Configure报错,提交前勾掉' +// }, +// clientTest: { +// default: false, +// tooltip: '客户端测试时勾选,展示版本标记方便测试区分,上线前勾掉' +// }, +// clientTestVersion: { +// default: '', +// tooltip: '版本标记' +// }, +// testVersion: cc.Label, +// score: cc.Label, +// double_hit: cc.Node, +// add: cc.Node, +// add2: cc.Node, +// double_title: cc.Node, +// count_time: cc.Node, +// beginNode: cc.Node, +// ball_nomal: [cc.SpriteFrame], +// bg_nomal: [cc.SpriteFrame], +// ball_light: [cc.SpriteFrame], +// kuang_Frame: [cc.SpriteFrame], +// daojishi: cc.Label, +// pause_anniu: cc.Sprite, +// mask: cc.Node, + +// flashUI: { +// default: null, +// type: cc.SpriteAtlas +// }, +// }, + +// onLoad() { + +// }, + +// update(dt) { + +// }, + +// }); +"use strict"; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lU2NlbmUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUdBOztBQUVBOztBQUVBOztBQUVBO0FBQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG4vLyBjYy5DbGFzcyh7XHJcbi8vICAgICBleHRlbmRzOiBjYy5Db21wb25lbnQsXHJcbi8vICAgICBwcm9wZXJ0aWVzOiB7XHJcbi8vICAgICAgICAgbG9jYWxUZXN0OiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn5pys5Zyw5rWL6K+V5pe25Yu+6YCJ77yM6YG/5YWNdHpfdXJs5ZKMQ29uZmlndXJl5oql6ZSZ77yM5o+Q5Lqk5YmN5Yu+5o6JJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgY2xpZW50VGVzdDoge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcclxuLy8gICAgICAgICAgICAgdG9vbHRpcDogJ+WuouaIt+err+a1i+ivleaXtuWLvumAie+8jOWxleekuueJiOacrOagh+iusOaWueS+v+a1i+ivleWMuuWIhu+8jOS4iue6v+WJjeWLvuaOiSdcclxuLy8gICAgICAgICB9LFxyXG4vLyAgICAgICAgIGNsaWVudFRlc3RWZXJzaW9uOiB7XHJcbi8vICAgICAgICAgICAgIGRlZmF1bHQ6ICcnLFxyXG4vLyAgICAgICAgICAgICB0b29sdGlwOiAn54mI5pys5qCH6K6wJ1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICAgICAgdGVzdFZlcnNpb246IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHNjb3JlOiBjYy5MYWJlbCxcclxuLy8gICAgICAgICBkb3VibGVfaGl0OiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGFkZDogY2MuTm9kZSxcclxuLy8gICAgICAgICBhZGQyOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGRvdWJsZV90aXRsZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBjb3VudF90aW1lOiBjYy5Ob2RlLFxyXG4vLyAgICAgICAgIGJlZ2luTm9kZTogY2MuTm9kZSxcclxuLy8gICAgICAgICBiYWxsX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJnX25vbWFsOiBbY2MuU3ByaXRlRnJhbWVdLFxyXG4vLyAgICAgICAgIGJhbGxfbGlnaHQ6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAga3VhbmdfRnJhbWU6IFtjYy5TcHJpdGVGcmFtZV0sXHJcbi8vICAgICAgICAgZGFvamlzaGk6IGNjLkxhYmVsLFxyXG4vLyAgICAgICAgIHBhdXNlX2Fubml1OiBjYy5TcHJpdGUsXHJcbi8vICAgICAgICAgbWFzazogY2MuTm9kZSxcclxuXHJcbi8vICAgICAgICAgZmxhc2hVSToge1xyXG4vLyAgICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxyXG4vLyAgICAgICAgICAgICB0eXBlOiBjYy5TcHJpdGVBdGxhc1xyXG4vLyAgICAgICAgIH0sXHJcbi8vICAgICB9LFxyXG5cclxuLy8gICAgIG9uTG9hZCgpIHtcclxuXHJcblxyXG4vLyAgICAgfSxcclxuXHJcbi8vICAgICB1cGRhdGUoZHQpIHtcclxuXHJcbi8vICAgICB9LFxyXG5cclxuLy8gfSk7Il19 //------QC-SOURCE-SPLIT------ (function() { @@ -7076,60 +4436,60 @@ cc._RF.pop(); cc._RF.push(module, 'ca599IU5hFEYYrzoN59YOpT', 'Reduce'); // Script/Reduce.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Block_Color = []; - _this.level = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - NewClass.prototype.onLoad = function () { - }; - NewClass.prototype.start = function () { - }; - __decorate([ - property({ type: [cc.SpriteFrame], tooltip: "方块颜色图片" }) - ], NewClass.prototype, "Block_Color", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "level", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.Block_Color = []; + _this.level = null; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + NewClass.prototype.onLoad = function () { + }; + NewClass.prototype.start = function () { + }; + __decorate([ + property({ type: [cc.SpriteFrame], tooltip: "方块颜色图片" }) + ], NewClass.prototype, "Block_Color", void 0); + __decorate([ + property(cc.Label) + ], NewClass.prototype, "level", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -7148,7 +4508,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Pause.js'; + var __filename = 'preview-scripts/assets/Script/CollisionDetection.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -7156,175 +4516,102 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'aca4aut33NCvIC0yg3JmY0h', 'Pause'); -// Script/Pause.ts +cc._RF.push(module, 'f1883pXzMVIp5/ARDAWfZ7j', 'CollisionDetection'); +// Script/CollisionDetection.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Pause = /** @class */ (function (_super) { - __extends(Pause, _super); - function Pause() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 0; - _this.music = null; - _this.effect = null; - _this.vibrate = null; - _this.open = null; - _this.close = null; - // mapInfo: number[][] = []; - _this.musicState = true; - _this.effectState = true; - _this.vibrateState = true; - return _this; - // update (dt) {} - } - Pause.prototype.onLoad = function () { - if (cc.fx.GameConfig.GM_INFO.musicOpen) { - this.music.getComponent(cc.Sprite).spriteFrame = this.open; - this.music.x = 278; - } - else { - this.music.getComponent(cc.Sprite).spriteFrame = this.close; - this.music.x = 161; - } - if (cc.fx.GameConfig.GM_INFO.effectOpen) { - this.effect.getComponent(cc.Sprite).spriteFrame = this.open; - this.effect.x = 278; - } - else { - this.effect.getComponent(cc.Sprite).spriteFrame = this.close; - this.effect.x = 161; - } - if (cc.fx.GameConfig.GM_INFO.vibrateOpen) { - this.vibrate.getComponent(cc.Sprite).spriteFrame = this.open; - this.vibrate.x = 278; - } - else { - this.vibrate.getComponent(cc.Sprite).spriteFrame = this.close; - this.vibrate.x = 161; - } - this.musicState = cc.fx.GameConfig.GM_INFO.musicOpen; - this.effectState = cc.fx.GameConfig.GM_INFO.effectOpen; - this.vibrateState = cc.fx.GameConfig.GM_INFO.vibrateOpen; - }; - Pause.prototype.start = function () { - }; - Pause.prototype.init = function (time) { - }; - Pause.prototype.clickMusic = function () { - var _this = this; - if (this.musicState) { - this.musicState = false; - cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; - this.setMusicConfig(); - this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.music.getComponent(cc.Sprite).spriteFrame = _this.close; - }), cc.fadeIn(0.1))); - cc.fx.AudioManager._instance.stopMusic(); - } - else { - this.musicState = true; - cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; - this.setMusicConfig(); - this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.music.getComponent(cc.Sprite).spriteFrame = _this.open; - }), cc.fadeIn(0.1))); - cc.fx.AudioManager._instance.playMusicGame(); - } - }; - Pause.prototype.setMusicConfig = function () { - var audioInfo = { - "musicOpen": cc.fx.GameConfig.GM_INFO.musicOpen, - "effectOpen": cc.fx.GameConfig.GM_INFO.effectOpen, - "vibrateOpen": cc.fx.GameConfig.GM_INFO.vibrateOpen, - }; - cc.fx.StorageMessage.setStorage("music", audioInfo); - }; - Pause.prototype.clickEffect = function () { - var _this = this; - if (this.effectState) { - this.effectState = false; - cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; - this.setMusicConfig(); - this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.effect.getComponent(cc.Sprite).spriteFrame = _this.close; - }), cc.fadeIn(0.1))); - } - else { - this.effectState = true; - cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; - this.setMusicConfig(); - this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.effect.getComponent(cc.Sprite).spriteFrame = _this.open; - }), cc.fadeIn(0.1))); - } - }; - Pause.prototype.clickVibrate = function () { - var _this = this; - if (this.vibrateState) { - this.vibrateState = false; - cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; - this.setMusicConfig(); - this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.close; - }), cc.fadeIn(0.1))); - } - else { - this.vibrateState = true; - cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; - this.setMusicConfig(); - this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { - _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.open; - }), cc.fadeIn(0.1))); - } - }; - __decorate([ - property(cc.Node) - ], Pause.prototype, "music", void 0); - __decorate([ - property(cc.Node) - ], Pause.prototype, "effect", void 0); - __decorate([ - property(cc.Node) - ], Pause.prototype, "vibrate", void 0); - __decorate([ - property(cc.SpriteFrame) - ], Pause.prototype, "open", void 0); - __decorate([ - property(cc.SpriteFrame) - ], Pause.prototype, "close", void 0); - Pause = __decorate([ - ccclass - ], Pause); - return Pause; -}(cc.Component)); -exports.default = Pause; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; +var CollisionDetection = /** @class */ (function (_super) { + __extends(CollisionDetection, _super); + function CollisionDetection() { + return _super !== null && _super.apply(this, arguments) || this; + } + CollisionDetection_1 = CollisionDetection; + CollisionDetection.prototype.onLoad = function () { + if (CollisionDetection_1._instance == null) { + CollisionDetection_1._instance = this; + // cc.game.addPersistRootNode(this.node); + } + else { + return; + } + }; + //碰撞检测函数 + CollisionDetection.prototype.isColliding = function (rect1, rect2) { + // 快速排除:检查边界框是否相交 + if (rect1.xMax < rect2.xMin || rect2.xMax < rect1.xMin || rect1.yMax < rect2.yMin || rect2.yMax < rect1.yMin) { + return { isColliding: false }; + } + // 调用原始的 intersects 方法 + var isColliding = rect1.intersects(rect2); + return { isColliding: isColliding }; + }; + // 获取多边形的所有边的法线 + CollisionDetection.prototype.getNormals = function (polygon) { + var normals = []; + var length = polygon.length; + for (var i = 0; i < length; i++) { + var p1 = polygon[i]; + var p2 = polygon[(i + 1) % length]; + var edge = new cc.Vec2(p2.x - p1.x, p2.y - p1.y); + var normal = new cc.Vec2(-edge.y, edge.x); + normal.normalize(); + normals.push(normal); + } + return normals; + }; + // 将多边形投影到轴上 + CollisionDetection.prototype.project = function (polygon, axis) { + var min = cc.Vec2.dot(polygon[0], axis); + var max = min; + for (var i = 1; i < polygon.length; i++) { + var dotProduct = cc.Vec2.dot(polygon[i], axis); + if (dotProduct < min) { + min = dotProduct; + } + else if (dotProduct > max) { + max = dotProduct; + } + } + return { min: min, max: max }; + }; + // 检查两个投影是否重叠 + CollisionDetection.prototype.overlap = function (projection1, projection2) { + return !(projection1.max < projection2.min || projection2.max < projection1.min); + }; + var CollisionDetection_1; + CollisionDetection = CollisionDetection_1 = __decorate([ + ccclass + ], CollisionDetection); + return CollisionDetection; +}(cc.Component)); +exports.default = CollisionDetection; cc._RF.pop(); } @@ -7337,7 +4624,259 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxQYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUc1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUkxQztJQUFtQyx5QkFBWTtJQUEvQztRQUFBLHFFQW1JQztRQWpJRyxVQUFJLEdBQVcsQ0FBQyxDQUFDO1FBR2pCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixhQUFPLEdBQVksSUFBSSxDQUFDO1FBR3hCLFVBQUksR0FBbUIsSUFBSSxDQUFDO1FBRzVCLFdBQUssR0FBbUIsSUFBSSxDQUFDO1FBRTdCLDRCQUE0QjtRQUU1QixnQkFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixpQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixrQkFBWSxHQUFZLElBQUksQ0FBQzs7UUEyRzdCLGlCQUFpQjtJQUNyQixDQUFDO0lBMUdHLHNCQUFNLEdBQU47UUFDSSxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUN0QjthQUNHO1lBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzVELElBQUksQ0FB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Q0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDbEgsS0FBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3RCO0lBQ0wsQ0FBQztJQTNIRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3dDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0s7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDTTtJQUd4QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO3VDQUNHO0lBRzVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7d0NBQ0k7SUFqQlosS0FBSztRQUR6QixPQUFPO09BQ2EsS0FBSyxDQW1JekI7SUFBRCxZQUFDO0NBbklELEFBbUlDLENBbklrQyxFQUFFLENBQUMsU0FBUyxHQW1JOUM7a0JBbklvQixLQUFLIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhdXNlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtdXNpYzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBlZmZlY3Q6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdmlicmF0ZTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZUZyYW1lKVxyXG4gICAgb3BlbjogY2MuU3ByaXRlRnJhbWUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVGcmFtZSlcclxuICAgIGNsb3NlOiBjYy5TcHJpdGVGcmFtZSA9IG51bGw7XHJcbiAgICBcclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBtdXNpY1N0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGVmZmVjdFN0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHZpYnJhdGVTdGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMub3BlbjtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMjc4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMTYxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3Blbil7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMjc4OyBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMTYxOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDI3ODsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuY2xvc2U7IFxyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDE2MTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tdXNpY1N0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbjtcclxuICAgICAgICB0aGlzLmVmZmVjdFN0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmVmZmVjdE9wZW47XHJcbiAgICAgICAgdGhpcy52aWJyYXRlU3RhdGUgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW47XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHRpbWUpe1xyXG5cclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xpY2tNdXNpYygpe1xyXG4gICAgICAgIGlmKHRoaXMubXVzaWNTdGF0ZSl7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWNTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgfSksY2MuZmFkZUluKDAuMSkpKVxyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljU3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheU11c2ljR2FtZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRNdXNpY0NvbmZpZygpe1xyXG4gICAgICAgIGxldCBhdWRpb0luZm8gPSB7XHJcbiAgICAgICAgICAgIFwibXVzaWNPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4sICAgICAgICAgICAgIC8v6Z+z5LmQXHJcbiAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiwgICAgICAgICAgICAvL+mfs+aViFxyXG4gICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiwgICAgICAgICAgIC8v6ZyH5YqoXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLGF1ZGlvSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tFZmZlY3QoKXtcclxuICAgICAgICBpZih0aGlzLmVmZmVjdFN0YXRlKXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3RTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0U3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tWaWJyYXRlKCl7XHJcbiAgICAgICAgaWYodGhpcy52aWJyYXRlU3RhdGUpe1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGVTdGF0ZSA9IGZhbHNlOyBcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMTYxLHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMjc4LHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxDb2xsaXNpb25EZXRlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHNUUsSUFBQSxLQUF3QyxFQUFFLENBQUMsVUFBVSxFQUFwRCxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQUEsRUFBRSxnQkFBZ0Isc0JBQWlCLENBQUM7QUFHNUQ7SUFBZ0Qsc0NBQVk7SUFBNUQ7O0lBNkRBLENBQUM7MkJBN0RvQixrQkFBa0I7SUFDUCxtQ0FBTSxHQUFOO1FBQ3hCLElBQUksb0JBQWtCLENBQUMsU0FBUyxJQUFJLElBQUksRUFBRTtZQUN0QyxvQkFBa0IsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3BDLHlDQUF5QztTQUM1QzthQUNJO1lBQ0QsT0FBTztTQUNWO0lBRUwsQ0FBQztJQUNELFFBQVE7SUFDRCx3Q0FBVyxHQUFsQixVQUFtQixLQUFjLEVBQUUsS0FBYztRQUM3QyxpQkFBaUI7UUFDakIsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUU7WUFDMUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsQ0FBQztTQUNqQztRQUVELHNCQUFzQjtRQUN0QixJQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVDLE9BQU8sRUFBRSxXQUFXLGFBQUEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFHRCxlQUFlO0lBQ1AsdUNBQVUsR0FBbEIsVUFBbUIsT0FBa0I7UUFDakMsSUFBTSxPQUFPLEdBQWMsRUFBRSxDQUFDO1FBQzlCLElBQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM3QixJQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO1lBQ3JDLElBQU0sSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkQsSUFBTSxNQUFNLEdBQUcsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDeEI7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsWUFBWTtJQUNKLG9DQUFPLEdBQWYsVUFBZ0IsT0FBa0IsRUFBRSxJQUFhO1FBQzdDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFNLFVBQVUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDakQsSUFBSSxVQUFVLEdBQUcsR0FBRyxFQUFFO2dCQUNsQixHQUFHLEdBQUcsVUFBVSxDQUFDO2FBQ3BCO2lCQUFNLElBQUksVUFBVSxHQUFHLEdBQUcsRUFBRTtnQkFDekIsR0FBRyxHQUFHLFVBQVUsQ0FBQzthQUNwQjtTQUNKO1FBQ0QsT0FBTyxFQUFFLEdBQUcsS0FBQSxFQUFFLEdBQUcsS0FBQSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELGFBQWE7SUFDTCxvQ0FBTyxHQUFmLFVBQWdCLFdBQXlDLEVBQUUsV0FBeUM7UUFDaEcsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxHQUFHLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7O0lBMURnQixrQkFBa0I7UUFEdEMsT0FBTztPQUNhLGtCQUFrQixDQTZEdEM7SUFBRCx5QkFBQztDQTdERCxBQTZEQyxDQTdEK0MsRUFBRSxDQUFDLFNBQVMsR0E2RDNEO2tCQTdEb0Isa0JBQWtCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eSwgcmVxdWlyZUNvbXBvbmVudH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ29sbGlzaW9uRGV0ZWN0aW9uIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTsgICAgICBvbkxvYWQoKSB7XHJcbiAgICAgICAgaWYgKENvbGxpc2lvbkRldGVjdGlvbi5faW5zdGFuY2UgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICBDb2xsaXNpb25EZXRlY3Rpb24uX2luc3RhbmNlID0gdGhpcztcclxuICAgICAgICAgICAgLy8gY2MuZ2FtZS5hZGRQZXJzaXN0Um9vdE5vZGUodGhpcy5ub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLy/norDmkp7mo4DmtYvlh73mlbBcclxuICAgIHB1YmxpYyBpc0NvbGxpZGluZyhyZWN0MTogY2MuUmVjdCwgcmVjdDI6IGNjLlJlY3QpOiB7IGlzQ29sbGlkaW5nOiBib29sZWFuIH0ge1xyXG4gICAgICAgIC8vIOW/q+mAn+aOkumZpO+8muajgOafpei+ueeVjOahhuaYr+WQpuebuOS6pFxyXG4gICAgICAgIGlmIChyZWN0MS54TWF4IDwgcmVjdDIueE1pbiB8fCByZWN0Mi54TWF4IDwgcmVjdDEueE1pbiB8fCByZWN0MS55TWF4IDwgcmVjdDIueU1pbiB8fCByZWN0Mi55TWF4IDwgcmVjdDEueU1pbikge1xyXG4gICAgICAgICAgICByZXR1cm4geyBpc0NvbGxpZGluZzogZmFsc2UgfTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOiwg+eUqOWOn+Wni+eahCBpbnRlcnNlY3RzIOaWueazlVxyXG4gICAgICAgIGNvbnN0IGlzQ29sbGlkaW5nID0gcmVjdDEuaW50ZXJzZWN0cyhyZWN0Mik7XHJcblxyXG4gICAgICAgIHJldHVybiB7IGlzQ29sbGlkaW5nIH07XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIOiOt+WPluWkmui+ueW9oueahOaJgOaciei+ueeahOazlee6v1xyXG4gICAgcHJpdmF0ZSBnZXROb3JtYWxzKHBvbHlnb246IGNjLlZlYzJbXSk6IGNjLlZlYzJbXSB7XHJcbiAgICAgICAgY29uc3Qgbm9ybWFsczogY2MuVmVjMltdID0gW107XHJcbiAgICAgICAgY29uc3QgbGVuZ3RoID0gcG9seWdvbi5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBwMSA9IHBvbHlnb25baV07XHJcbiAgICAgICAgICAgIGNvbnN0IHAyID0gcG9seWdvblsoaSArIDEpICUgbGVuZ3RoXTtcclxuICAgICAgICAgICAgY29uc3QgZWRnZSA9IG5ldyBjYy5WZWMyKHAyLnggLSBwMS54LCBwMi55IC0gcDEueSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbCA9IG5ldyBjYy5WZWMyKC1lZGdlLnksIGVkZ2UueCk7XHJcbiAgICAgICAgICAgIG5vcm1hbC5ub3JtYWxpemUoKTtcclxuICAgICAgICAgICAgbm9ybWFscy5wdXNoKG5vcm1hbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub3JtYWxzO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWwhuWkmui+ueW9ouaKleW9seWIsOi9tOS4ilxyXG4gICAgcHJpdmF0ZSBwcm9qZWN0KHBvbHlnb246IGNjLlZlYzJbXSwgYXhpczogY2MuVmVjMik6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0ge1xyXG4gICAgICAgIGxldCBtaW4gPSBjYy5WZWMyLmRvdChwb2x5Z29uWzBdLCBheGlzKTtcclxuICAgICAgICBsZXQgbWF4ID0gbWluO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkb3RQcm9kdWN0ID0gY2MuVmVjMi5kb3QocG9seWdvbltpXSwgYXhpcyk7XHJcbiAgICAgICAgICAgIGlmIChkb3RQcm9kdWN0IDwgbWluKSB7XHJcbiAgICAgICAgICAgICAgICBtaW4gPSBkb3RQcm9kdWN0O1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRvdFByb2R1Y3QgPiBtYXgpIHtcclxuICAgICAgICAgICAgICAgIG1heCA9IGRvdFByb2R1Y3Q7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHsgbWluLCBtYXggfTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmo4Dmn6XkuKTkuKrmipXlvbHmmK/lkKbph43lj6BcclxuICAgIHByaXZhdGUgb3ZlcmxhcChwcm9qZWN0aW9uMTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfSwgcHJvamVjdGlvbjI6IHsgbWluOiBudW1iZXI7IG1heDogbnVtYmVyIH0pOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIShwcm9qZWN0aW9uMS5tYXggPCBwcm9qZWN0aW9uMi5taW4gfHwgcHJvamVjdGlvbjIubWF4IDwgcHJvamVjdGlvbjEubWluKTtcclxuICAgIH1cclxuXHJcblxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/GameOver.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '805c6nf399HWZeuWnNB9CTH', 'GameOver'); +// Script/GameOver.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.count = null; + _this.time = null; + _this.selfNode = null; + _this.one = null; + _this.two = null; + _this.three = null; + _this.four = null; + _this.five = null; + return _this; + } + // onLoad () {} + NewClass.prototype.start = function () { + this.count.string = cc.fx.GameConfig.GM_INFO.score + ""; + var yes = 0; + var successList = cc.fx.GameConfig.GM_INFO.successList; + if (successList.length > 0) { + var success = 0; + for (var i = 0; i < successList.length; i++) { + if (successList[i] == true) + success += 1; + } + yes = success / successList.length; + } + yes = Math.floor(yes * 1000) / 10; + this.time.string = yes + "%"; + this.init(); + }; + //初始化数据 + NewClass.prototype.init = function () { + this.listData = []; + this.selfData = null; + this.one.active = false; + this.two.active = false; + this.three.active = false; + this.four.active = false; + this.five.active = false; + var urlNow = window.location.href; + if (this.containsTrain(urlNow)) { + this.node.getChildByName("again").active = false; + this.node.getChildByName("back").active = false; + this.node.getChildByName("finishi").active = true; + this.setLocalStorage(); + } + else { + this.setLocalStorage(); + this.node.getChildByName("again").active = true; + this.node.getChildByName("back").active = true; + this.node.getChildByName("finishi").active = false; + } + this.getRank(); + }; + NewClass.prototype.setLocalStorage = function () { + var timeData = cc.fx.GameConfig.TIME_INFO.totalTime; + var today = new Date().toLocaleDateString(); + var name = "success_" + today + "_" + cc.fx.GameConfig.GM_INFO.scode + "_" + cc.fx.GameConfig.GM_INFO.gameId; + localStorage.setItem(name, JSON.stringify({ success: true })); + }; + //打开排行榜 + NewClass.prototype.openRank = function () { + cc.director.loadScene("RankScene"); + }; + //重新开始玩 + NewClass.prototype.again = function () { + cc.fx.GameConfig.GM_INFO.round = 0; + cc.fx.GameConfig.GM_INFO.level = 0; + cc.fx.GameConfig.GM_INFO.stepTimeList = 0; + cc.fx.GameConfig.GM_INFO.successList = []; + cc.fx.GameConfig.GM_INFO.fen = 0; + cc.fx.GameConfig.GM_INFO.score = 0; + cc.fx.GameConfig.GM_INFO.min_Steps = 0; + cc.fx.GameConfig.GM_INFO.min_Time = 0; + cc.fx.GameConfig.TIME_INFO.totalTime = 120; + cc.director.loadScene("GameScene"); + }; + //判断来源 + NewClass.prototype.containsTrain = function (str) { + return /from=train/i.test(str); + }; + //获取排行榜 + NewClass.prototype.getRank = function () { + var _this = this; + //获取排行榜数据 所需数据量 + var dataFile = { + length: 5 + }; + cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); + }; + //打开排行榜 + NewClass.prototype.jumpFinishi = function () { + var url = "https://train.sparkus.cn/poster/game/" + cc.fx.GameConfig.GM_INFO.scode + "?suc=1"; + window.location.href = url; + }; + //设置排行信息 + NewClass.prototype.getRankData = function (data) { + if (data) { + cc.fx.GameTool.getRankData(data, this, 4); + cc.fx.GameTool.setPic(this.selfNode.getChildByName("pic").getChildByName("icon"), this.selfData.pic); + var length = this.listData.length - 1; + if (length > 4) + length = 4; + for (var i = 0; i <= length; i++) { + this.setRank(i, this.listData[i]); + } + } + }; + //根据内容填充排行榜 + NewClass.prototype.setRank = function (num, data) { + var _this = this; + if (!data) { + return; + } + var hitNode = null; + if (num == 0) { + hitNode = this.one; + } + else if (num == 1) { + hitNode = this.two; + } + else if (num == 2) { + hitNode = this.three; + } + else if (num == 3) { + hitNode = this.four; + } + else if (num == 4) { + hitNode = this.five; + } + var trun = num + 1; + for (var i = 0; i < trun; i++) { + if (this.listData[i] && this.listData[i].nickName == cc.fx.GameConfig.GM_INFO.nickName) { + trun = i + 1; + break; + } + else if (!this.listData[i] == null) { + trun = i * 2; + break; + } + this.node.color = cc.color(this.listData[0], this.listData[1], this.listData[2]); + cc.tween(this.node) + .to(0.5, { scale: 2 }) + .by(1, { opacity: 0 }) + .delay(0.5) + .call(function () { + _this.node.scale = 1; + _this.node.opacity = 255; + _this.node.color = cc.color(255, 255, 255); + }) + .start(); + } + hitNode.getChildByName("num").getComponent(cc.Label).string = num + ""; + cc.tween(hitNode.getChildByName("num").getComponent(cc.Label)) + .to(0.5, { string: trun + "" }) + .start(); + var record = cc.fx.GameConfi.GM_INFO.score; + if (data.score >= record) { + this.selfData = data; + this.selfNode.active = true; + } + if (hitNode) { + hitNode.active = true; + if (data.nickName.length >= 4) + data.nickName = cc.fx.GameTool.subName(data.nickName, 4); + hitNode.getChildByName("name").getComponent(cc.Label).string = data.nickName; + hitNode.getChildByName("total").getComponent(cc.Label).string = data.score; + cc.fx.GameTool.setPic(hitNode.getChildByName("pic").getChildByName("icon"), data.pic); + } + }; + __decorate([ + property(cc.Label) + ], NewClass.prototype, "count", void 0); + __decorate([ + property(cc.Label) + ], NewClass.prototype, "time", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "selfNode", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "one", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "two", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "three", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "four", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "five", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxHYW1lT3Zlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDTSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXFMQztRQW5MRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBRXZCLFVBQUksR0FBYSxJQUFJLENBQUM7UUFFdEIsY0FBUSxHQUFZLElBQUksQ0FBQztRQUV6QixTQUFHLEdBQVksSUFBSSxDQUFDO1FBRXBCLFNBQUcsR0FBWSxJQUFJLENBQUM7UUFFcEIsV0FBSyxHQUFZLElBQUksQ0FBQztRQUV0QixVQUFJLEdBQVksSUFBSSxDQUFDO1FBRXJCLFVBQUksR0FBWSxJQUFJLENBQUM7O0lBcUt6QixDQUFDO0lBbEtHLGVBQWU7SUFDZix3QkFBSyxHQUFMO1FBQ0ksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDeEQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2RCxJQUFHLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFDO1lBQ3RCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztZQUNoQixLQUFJLElBQUksQ0FBQyxHQUFDLENBQUMsRUFBRSxDQUFDLEdBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBQztnQkFDbkMsSUFBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSTtvQkFBRSxPQUFPLElBQUksQ0FBQyxDQUFDO2FBQzNDO1lBQ0QsR0FBRyxH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QUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7MENBQ0c7SUFoQkosUUFBUTtRQUQ1QixPQUFPO09BQ2EsUUFBUSxDQXFMNUI7SUFBRCxlQUFDO0NBckxELEFBcUxDLENBckxxQyxFQUFFLENBQUMsU0FBUyxHQXFMakQ7a0JBckxvQixRQUFRIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgY291bnQ6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIHRpbWU6IGNjLkxhYmVsID0gbnVsbDtcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2VsZk5vZGU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBvbmU6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0d286IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICB0aHJlZTogY2MuTm9kZSA9IG51bGw7XHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIGZvdXI6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmaXZlOiBjYy5Ob2RlID0gbnVsbDtcclxuICAgIGxpc3REYXRhOiBhbnk7XHJcbiAgICBzZWxmRGF0YTogYW55O1xyXG4gICAgLy8gb25Mb2FkICgpIHt9XHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5jb3VudC5zdHJpbmcgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvcmUgKyBcIlwiO1xyXG4gICAgICAgIHZhciB5ZXMgPSAwO1xyXG4gICAgICAgIHZhciBzdWNjZXNzTGlzdCA9IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zdWNjZXNzTGlzdDtcclxuICAgICAgICBpZihzdWNjZXNzTGlzdC5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgdmFyIHN1Y2Nlc3MgPSAwO1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTxzdWNjZXNzTGlzdC5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBpZihzdWNjZXNzTGlzdFtpXSA9PSB0cnVlKSBzdWNjZXNzICs9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgeWVzID0gc3VjY2Vzcy9zdWNjZXNzTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHllcyA9IE1hdGguZmxvb3IoeWVzICogMTAwMCkvMTA7XHJcbiAgICAgICAgdGhpcy50aW1lLnN0cmluZyA9ICAgeWVzICsgXCIlXCI7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgICBcclxuICAgIH0gICBcclxuICAgIC8v5Yid5aeL5YyW5pWw5o2uXHJcbiAgICBpbml0KCl7XHJcbiAgICAgICAgdGhpcy5saXN0RGF0YSA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2VsZkRhdGEgPSBudWxsO1xyXG4gICAgICAgIHRoaXMub25lLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudHdvLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGhyZWUuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5mb3VyLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZml2ZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB2YXIgdXJsTm93ID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XHJcbiAgICAgICAgaWYodGhpcy5jb250YWluc1RyYWluKHVybE5vdykpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmFja1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiZmluaXNoaVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLnNldExvY2FsU3RvcmFnZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJhZ2FpblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiYWNrXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImZpbmlzaGlcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdldFJhbmsoKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXRMb2NhbFN0b3JhZ2UoKXtcclxuICAgICAgICBsZXQgdGltZURhdGEgPSBjYy5meC5HYW1lQ29uZmlnLlRJTUVfSU5GTy50b3RhbFRpbWU7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpLnRvTG9jYWxlRGF0ZVN0cmluZygpO1xyXG4gICAgICAgIHZhciBuYW1lID0gYHN1Y2Nlc3NfJHt0b2RheX1fJHtjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uc2NvZGV9XyR7Y2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmdhbWVJZH1gXHJcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0obmFtZSwgSlNPTi5zdHJpbmdpZnkoe3N1Y2Nlc3M6dHJ1ZX0pKTtcclxuICAgIH1cclxuXHJcbiAgICAvL+aJk+W8gOaOkuihjOamnFxyXG4gICAgb3BlblJhbmsoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJSYW5rU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+mHjeaWsOW8gOWni+eOqVxyXG4gICAgYWdhaW4oKXtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ucm91bmQgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5sZXZlbCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN0ZXBUaW1lTGlzdCA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnN1Y2Nlc3NMaXN0ID0gW107XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmZlbiA9IDA7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnNjb3JlID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1N0ZXBzID0gMDtcclxuICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubWluX1RpbWUgPSAwO1xyXG4gICAgICAgIGNjLmZ4LkdhbWVDb25maWcuVElNRV9JTkZPLnRvdGFsVGltZSA9IDEyMDtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICB9XHJcbiAgICAvL+WIpOaWreadpea6kFxyXG4gICAgY29udGFpbnNUcmFpbihzdHIpIHtcclxuICAgICAgICByZXR1cm4gL2Zyb209dHJhaW4vaS50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgICAvL+iOt+WPluaOkuihjOamnFxyXG4gICAgZ2V0UmFuaygpe1xyXG4gICAgICAgIC8v6I635Y+W5o6S6KGM5qac5pWw5o2uICDmiYDpnIDmlbDmja7ph49cclxuICAgICAgICBsZXQgZGF0YUZpbGUgPSB7XHJcbiAgICAgICAgICAgIGxlbmd0aDo1XHJcbiAgICAgICAgfVxyXG4gICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rKGRhdGFGaWxlLGRhdGEgPT50aGlzLmdldFJhbmtEYXRhKGRhdGEpKTtcclxuICAgIH1cclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBqdW1wRmluaXNoaSgpe1xyXG4gICAgICAgIGxldCB1cmwgPSBcImh0dHBzOi8vdHJhaW4uc3Bhcmt1cy5jbi9wb3N0ZXIvZ2FtZS9cIiArIGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5zY29kZSArIFwiP3N1Yz0xXCI7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7XHJcbiAgICB9XHJcbiAgICAvL+iuvue9ruaOkuihjOS/oeaBr1xyXG4gICAgZ2V0UmFua0RhdGEoZGF0YSl7XHJcbiAgICAgICAgaWYoZGF0YSl7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5nZXRSYW5rRGF0YShkYXRhLHRoaXMsNCk7XHJcbiAgICAgICAgICAgICBjYy5meC5HYW1lVG9vbC5zZXRQaWModGhpcy5zZWxmTm9kZS5nZXRDaGlsZEJ5TmFtZShcInBpY1wiKS5nZXRDaGlsZEJ5TmFtZShcImljb25cIiksdGhpcy5zZWxmRGF0YS5waWMpO1xyXG4gICAgICAgICAgICB2YXIgbGVuZ3RoID0gdGhpcy5saXN0RGF0YS5sZW5ndGgtMTsgaWYobGVuZ3RoID4gNCkgbGVuZ3RoID0gNDtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7aTw9bGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFJhbmsoaSx0aGlzLmxpc3REYXRhW2ldKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIC8v5qC55o2u5YaF5a655aGr5YWF5o6S6KGM5qacXHJcbiAgICBzZXRSYW5rKG51bSxkYXRhKXtcclxuICAgICAgICBpZighZGF0YSl7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBoaXROb2RlID0gbnVsbDtcclxuICAgICAgICBpZihudW0gPT0gMCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLm9uZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMSl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnR3bztcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gMil7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLnRocmVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKG51bSA9PSAzKXtcclxuICAgICAgICAgICAgaGl0Tm9kZSA9IHRoaXMuZm91cjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihudW0gPT0gNCl7XHJcbiAgICAgICAgICAgIGhpdE5vZGUgPSB0aGlzLmZpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdHJ1biA9IG51bSArIDE7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8IHRydW47IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubGlzdERhdGFbaV0gJiYgdGhpcy5saXN0RGF0YVtpXS5uaWNrTmFtZSA9PSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubmlja05hbWUpe1xyXG4gICAgICAgICAgICAgICAgdHJ1biA9IGkgKyAxO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZighdGhpcy5saXN0RGF0YVtpXSA9PSBudWxsICl7XHJcbiAgICAgICAgICAgICAgICB0cnVuID0gaSAqIDI7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuY29sb3IgPSBjYy5jb2xvcih0aGlzLmxpc3REYXRhWzBdLHRoaXMubGlzdERhdGFbMV0sdGhpcy5saXN0RGF0YVsyXSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZSlcclxuICAgICAgICAgICAgLnRvKDAuNSx7c2NhbGU6Mn0pXHJcbiAgICAgICAgICAgIC5ieSgxLHtvcGFjaXR5OjB9KVxyXG4gICAgICAgICAgICAuZGVsYXkoMC41KVxyXG4gICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZSA9IDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5jb2xvciA9IGNjLmNvbG9yKDI1NSwyNTUsMjU1KTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gbnVtICsgXCJcIjtcclxuICAgICAgICBjYy50d2VlbihoaXROb2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkpXHJcbiAgICAgICAgLnRvKDAuNSx7c3RyaW5nOnRydW4rXCJcIn0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGxldCByZWNvcmQgPSBjYy5meC5HYW1lQ29uZmkuR01fSU5GTy5zY29yZTtcclxuICAgICAgICBpZihkYXRhLnNjb3JlID49IHJlY29yZCl7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZkRhdGEgPSBkYXRhO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGZOb2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZihoaXROb2RlKXtcclxuICAgICAgICAgICAgaGl0Tm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBpZihkYXRhLm5pY2tOYW1lLmxlbmd0aCA+PSA0KVxyXG4gICAgICAgICAgICAgICAgZGF0YS5uaWNrTmFtZSA9IGNjLmZ4LkdhbWVUb29sLnN1Yk5hbWUoZGF0YS5uaWNrTmFtZSw0KTtcclxuICAgICAgICAgICAgaGl0Tm9kZS5nZXRDaGlsZEJ5TmFtZShcIm5hbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLm5pY2tOYW1lO1xyXG4gICAgICAgICAgICBoaXROb2RlLmdldENoaWxkQnlOYW1lKFwidG90YWxcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkYXRhLnNjb3JlO1xyXG4gICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0UGljKGhpdE5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJwaWNcIikuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLGRhdGEucGljKTtcclxuICAgICAgICB9XHJcbiAgICB9ICAgXHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -7354,167 +4893,167 @@ cc._RF.pop(); cc._RF.push(module, 'e74a999IDFOabyymZgXQIiy', 'RankManager'); // Script/RankManager.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var List_1 = require("./module/RankList/List"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -//排行榜 -var RankManager = /** @class */ (function (_super) { - __extends(RankManager, _super); - function RankManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Player = null; - _this.selfNode = null; - _this.phone = null; - return _this; - } - RankManager.prototype.onLoad = function () { - this.init(); - }; - //初始化数据 - RankManager.prototype.init = function () { - this.rankList = cc.find("ScrollView", this.node).getComponent(List_1.default); - this.Player.getChildByName("rank").active = false; - this.listData = []; - this.selfData = null; - this.rankNumber = 100; - this.rankTotal = 100; - this.selfNode.opacity = 0; - }; - RankManager.prototype.start = function () { - this.Player.active = false; - this.getRank(); - }; - //调用获取排行榜接口 - RankManager.prototype.getRank = function () { - var _this = this; - var dataFile = { - length: 100 - }; - cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); - }; - //实际设置排行数据 - RankManager.prototype.getRankData = function (data) { - if (data) { - // console.log(data); - cc.fx.GameTool.getRankData(data, this, 6); - this.setPic(this.selfData.pic); - } - }; - //返回按钮 - RankManager.prototype.backClick = function () { - cc.director.loadScene("LoadScene"); - }; - //最上方用户动画 - RankManager.prototype.playerAction = function () { - var _this = this; - //-254 377 210 453 - this.Player.getChildByName("rank").active = false; - var time = 1; - this.tween = cc.tween(this.Player) - .to(2, { position: cc.v3(215, 525, 0) }) - .call(function () { - _this.Player.getChildByName("rank").active = true; - _this.Player.getChildByName("rank").getChildByName("number") - .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; - }) - .start(); - time = (this.listData.length - this.rankNumber) / this.listData.length; - if (this.listData.length >= 99) { - if (this.rankNumber >= 99) { - time = (Math.random() * 49 + 1) / 100; - var matchId = cc.sys.localStorage.getItem("matchNumber"); - if (matchId == null || matchId == undefined) { - time = 0; - } - } - } - setTimeout(function () { - if (_this.tween) - _this.tween.stop(); - _this.Player.getChildByName("rank").active = true; - _this.Player.getChildByName("rank").getChildByName("number") - .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; - }, time * 2000); - }; - //设置头像 处理的逻辑比较多,不用公共类的了 - RankManager.prototype.setPic = function (pic) { - var _this = this; - this.phone.node.parent.getChildByName("icon").active = false; - this.phone.node.active = false; - this.Player.active = true; - this.Player.opacity = 0; - this.Player.getChildByName("mask").getChildByName("icon").active = false; - this.Player.getChildByName("mask").getChildByName("phone").active = false; - fetch(pic) - .then(function (response) { - return response.headers.get('Content-Length'); - }) - .then(function (errNo) { - if (errNo == "5093") { - _this.phone.node.parent.getChildByName("icon").active = true; - _this.Player.getChildByName("mask").getChildByName("icon").active = true; - } - }) - .catch(function (error) { - // console.error('Error fetching X-Info:', error); - }); - var self = this; - cc.assetManager.loadRemote(pic, { ext: '.png' }, function (err, texture) { - self.Player.opacity = 255; - if (texture) { - self.phone.node.active = true; - self.phone.spriteFrame = new cc.SpriteFrame(texture); - self.Player.getChildByName("mask").getChildByName("icon").active = false; - self.Player.getChildByName("mask").getChildByName("phone").active = true; - self.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite) - .spriteFrame = new cc.SpriteFrame(texture); - setTimeout(function () { - self.playerAction(); - }, 500); - } - else { - self.Player.getChildByName("mask").getChildByName("icon").active = true; - setTimeout(function () { - self.playerAction(); - }, 500); - } - }); - }; - __decorate([ - property(cc.Node) //用户上方头像 - ], RankManager.prototype, "Player", void 0); - __decorate([ - property(cc.Node) //用户最下方个人信息 - ], RankManager.prototype, "selfNode", void 0); - __decorate([ - property(cc.Sprite) //用户头像换图 - ], RankManager.prototype, "phone", void 0); - RankManager = __decorate([ - ccclass - ], RankManager); - return RankManager; -}(cc.Component)); -exports.default = RankManager; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var List_1 = require("./module/RankList/List"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +//排行榜 +var RankManager = /** @class */ (function (_super) { + __extends(RankManager, _super); + function RankManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.Player = null; + _this.selfNode = null; + _this.phone = null; + return _this; + } + RankManager.prototype.onLoad = function () { + this.init(); + }; + //初始化数据 + RankManager.prototype.init = function () { + this.rankList = cc.find("ScrollView", this.node).getComponent(List_1.default); + this.Player.getChildByName("rank").active = false; + this.listData = []; + this.selfData = null; + this.rankNumber = 100; + this.rankTotal = 100; + this.selfNode.opacity = 0; + }; + RankManager.prototype.start = function () { + this.Player.active = false; + this.getRank(); + }; + //调用获取排行榜接口 + RankManager.prototype.getRank = function () { + var _this = this; + var dataFile = { + length: 100 + }; + cc.fx.GameTool.getRank(dataFile, function (data) { return _this.getRankData(data); }); + }; + //实际设置排行数据 + RankManager.prototype.getRankData = function (data) { + if (data) { + // console.log(data); + cc.fx.GameTool.getRankData(data, this, 6); + this.setPic(this.selfData.pic); + } + }; + //返回按钮 + RankManager.prototype.backClick = function () { + cc.director.loadScene("LoadScene"); + }; + //最上方用户动画 + RankManager.prototype.playerAction = function () { + var _this = this; + //-254 377 210 453 + this.Player.getChildByName("rank").active = false; + var time = 1; + this.tween = cc.tween(this.Player) + .to(2, { position: cc.v3(215, 525, 0) }) + .call(function () { + _this.Player.getChildByName("rank").active = true; + _this.Player.getChildByName("rank").getChildByName("number") + .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; + }) + .start(); + time = (this.listData.length - this.rankNumber) / this.listData.length; + if (this.listData.length >= 99) { + if (this.rankNumber >= 99) { + time = (Math.random() * 49 + 1) / 100; + var matchId = cc.sys.localStorage.getItem("matchNumber"); + if (matchId == null || matchId == undefined) { + time = 0; + } + } + } + setTimeout(function () { + if (_this.tween) + _this.tween.stop(); + _this.Player.getChildByName("rank").active = true; + _this.Player.getChildByName("rank").getChildByName("number") + .getComponent(cc.Label).string = parseInt(time * 100 + "") + "%"; + }, time * 2000); + }; + //设置头像 处理的逻辑比较多,不用公共类的了 + RankManager.prototype.setPic = function (pic) { + var _this = this; + this.phone.node.parent.getChildByName("icon").active = false; + this.phone.node.active = false; + this.Player.active = true; + this.Player.opacity = 0; + this.Player.getChildByName("mask").getChildByName("icon").active = false; + this.Player.getChildByName("mask").getChildByName("phone").active = false; + fetch(pic) + .then(function (response) { + return response.headers.get('Content-Length'); + }) + .then(function (errNo) { + if (errNo == "5093") { + _this.phone.node.parent.getChildByName("icon").active = true; + _this.Player.getChildByName("mask").getChildByName("icon").active = true; + } + }) + .catch(function (error) { + // console.error('Error fetching X-Info:', error); + }); + var self = this; + cc.assetManager.loadRemote(pic, { ext: '.png' }, function (err, texture) { + self.Player.opacity = 255; + if (texture) { + self.phone.node.active = true; + self.phone.spriteFrame = new cc.SpriteFrame(texture); + self.Player.getChildByName("mask").getChildByName("icon").active = false; + self.Player.getChildByName("mask").getChildByName("phone").active = true; + self.Player.getChildByName("mask").getChildByName("phone").getComponent(cc.Sprite) + .spriteFrame = new cc.SpriteFrame(texture); + setTimeout(function () { + self.playerAction(); + }, 500); + } + else { + self.Player.getChildByName("mask").getChildByName("icon").active = true; + setTimeout(function () { + self.playerAction(); + }, 500); + } + }); + }; + __decorate([ + property(cc.Node) //用户上方头像 + ], RankManager.prototype, "Player", void 0); + __decorate([ + property(cc.Node) //用户最下方个人信息 + ], RankManager.prototype, "selfNode", void 0); + __decorate([ + property(cc.Sprite) //用户头像换图 + ], RankManager.prototype, "phone", void 0); + RankManager = __decorate([ + ccclass + ], RankManager); + return RankManager; +}(cc.Component)); +exports.default = RankManager; cc._RF.pop(); } @@ -7533,7 +5072,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Sdk/MiniGameManager.js'; + var __filename = 'preview-scripts/assets/Script/NewMode.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -7541,341 +5080,97 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '0d272pXVChFDqi5FXTD2JlR', 'MiniGameManager'); -// Script/Sdk/MiniGameManager.ts +cc._RF.push(module, '7fe14dRFQZKSKKAoEn4S7OU', 'NewMode'); +// Script/NewMode.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.MiniGameManager = void 0; -var MiniGameSdk_1 = require("./MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var EWechatAD; -(function (EWechatAD) { - EWechatAD["CUMSTOM_01"] = "adunit-f7c2417eb2c2e473"; -})(EWechatAD || (EWechatAD = {})); -var MiniGameManager = /** @class */ (function (_super) { - __extends(MiniGameManager, _super); - function MiniGameManager() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.entranceView = null; - return _this; - } - MiniGameManager_1 = MiniGameManager; - Object.defineProperty(MiniGameManager, "instance", { - get: function () { - if (!MiniGameManager_1._instance) { - MiniGameManager_1._instance = new MiniGameManager_1(); - } - return MiniGameManager_1._instance; - }, - enumerable: false, - configurable: true - }); - MiniGameManager.prototype.start = function () { - // 禁用游戏入口视图 - // this.entranceView.active = false; - // MiniGameSdk.API.getUserProfile(this.setUserId); - // cc.fx.GameTool.setUserInfo(""); - this.onGetLoginCode(); - // 尝试获取游戏入口按钮,如果存在则直接返回,不进行后续操作 - // let buttonEntrance = this.node.getChildByName('Btns')?.getChildByName('Button_EntranceView'); - // if (buttonEntrance) { - // return; - // } - // 如果是字节跳动小游戏环境,检查侧边栏是否存在 - if (MiniGameSdk_1.MiniGameSdk.isBytedance()) { - //抖音环境,检测侧边栏存在 - MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.checkSideBar(function (success) { - // 根据侧边栏存在性激活或禁用游戏入口按钮 - // buttonEntrance.active = success; - }); - } - else { - // 非抖音小游戏环境,直接激活游戏入口按钮 - // 非抖音环境,正常显示按钮 - // buttonEntrance.active = true; - } - // 设置监听器,以处理来自侧边栏的交互事件 - MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.listenFromSidebar(function (success) { - // 如果交互成功,显示奖励提示 - if (success) { - MiniGameSdk_1.MiniGameSdk.API.showToast('侧边栏奖励', 5); - } - }); - }; - MiniGameManager.prototype.update = function (deltaTime) { - }; - /** - * 弹出广告横幅。 - * 此方法用于加载并显示广告横幅。它首先加载指定广告位的横幅广告,然后显示广告。 - * 加载广告和显示广告是通过MiniGameSdk.AdvertManager的实例方法来实现的。 - * - * @remarks - * 此方法提供了两种显示横幅广告的方式: - * 1. 默认方式:调用showBanner方法显示广告,系统会自动选择显示位置。 - * 2. 指定位置方式:可以通过传入额外的参数来指定广告显示在屏幕的顶部或底部,或者通过坐标指定显示位置。 - * - * 示例代码中注释掉了两种显示广告的具体方法,可以根据实际需求选择使用。 - */ - MiniGameManager.prototype.onShowBanner = function () { - // 加载指定广告位的横幅广告。 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadBanner('adunit-4e7ef467e3eaab51'); - // 默认方式显示横幅广告。 - // 方法1:默认调用 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showBanner(); - // 示例:指定屏幕底部正中显示横幅广告。 - // 方法2:指定屏幕顶部或底部正中 - // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', MiniGameSdk.EAdBannerLocation.BOTTOM); - // 示例:通过坐标指定位置显示横幅广告。 - // 方法2:指定坐标 - // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', { top: 10, left: 10 }); - }; - /** - * 隐藏广告横幅的函数。 - * - * 该函数调用MiniGameSdk.AdvertManager实例的方法,用于隐藏广告横幅。 - * 当需要暂时停止展示广告或用户主动请求隐藏广告时,可以调用此函数。 - * - * @remarks - * 此函数不接受任何参数,也不返回任何值。 - * 它单纯地触发广告横幅的隐藏操作,具体实现依赖于AdvertManager的实现。 - */ - MiniGameManager.prototype.onHideBanner = function () { - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideBanner(); - }; - /** - * 显示插屏广告的函数。 - * - * 此函数调用MiniGameSdk.AdvertManager实例的方法,以显示一个指定的插屏广告。 - * 它使用了硬编码的广告单元标识符,这意味着它专为特定的广告位设计。 - * 在实际应用中,可能需要根据应用的配置或用户的特定条件来动态选择广告单元标识符。 - */ - MiniGameManager.prototype.onShowInterstitial = function () { - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showInterstitial('adunit-eadd67851d3050ad'); - }; - /** - * 调用广告管理器加载并展示自定义广告。 - * 此方法首先通过广告管理器的实例加载指定的自定义广告单元,然后展示这个自定义广告。 - * 加载和展示广告是广告管理系统中的常见操作,这里通过两步分别完成加载和展示的过程, - * 以确保广告在展示前正确且充分地被加载。 - */ - MiniGameManager.prototype.onShowCustom = function () { - // 加载指定的自定义广告单元。 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadCustom(EWechatAD.CUMSTOM_01); - // 展示已加载的自定义广告。 - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showCustom(EWechatAD.CUMSTOM_01); - }; - /** - * 隐藏自定义广告。 - * - * 本函数调用MiniGameSdk.AdvertManager.instance.hideCustom()来隐藏自定义广告。 - * 这是对接广告管理系统的一部分,用于控制广告的显示与隐藏。 - * 在需要隐藏自定义广告的场景下,调用此函数即可实现相应功能。 - */ - MiniGameManager.prototype.onHideCustom = function () { - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideCustom(EWechatAD.CUMSTOM_01); - }; - /** - * 触发显示视频广告的函数。 - * 通过调用MiniGameSdk.AdvertManager.instance.showVideo方法,显示一个视频广告,并根据用户观看广告的情况执行相应的逻辑。 - * - * @remarks - * 此函数首先传入一个广告单元ID,用于标识要显示的视频广告。然后传入一个回调函数,该回调函数在用户观看广告后被调用,无论用户是完成了观看、拒绝了观看还是观看过程中发生了错误。 - * 回调函数接收两个参数:一个是用户观看广告的结果,另一个是用户观看的广告数量。根据观看结果的不同,显示不同的提示信息。 - */ - MiniGameManager.prototype.onShowVideo = function () { - // 广告单元ID,用于标识要显示的视频广告 - // 广告单元ID的样例 - //抖音形如: 1re3nfqkmy81m4m8ge - //微信形如: adunit-a7718f6e195e42fe - MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showVideo('1re3nfqkmy81m4m8ge', function (res, count) { - // 输出用户观看的广告数量 - console.log('用户看的视频广告个数是:', count); - // 根据用户观看广告的结果,执行不同的逻辑 - switch (res) { - case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ACCEPT: - // 用户完成了广告观看,显示奖励提示 - MiniGameSdk_1.MiniGameSdk.API.showToast('用户看完广告,可以奖励'); - break; - case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.REJECT: - // 用户拒绝了广告观看,显示不奖励提示 - MiniGameSdk_1.MiniGameSdk.API.showToast('用户拒绝掉广告,不奖励'); - break; - case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ERROR: - // 广告播放发生错误,显示错误提示 - MiniGameSdk_1.MiniGameSdk.API.showToast('播放广告发生错误,不奖励'); - break; - default: - // 其他情况,不作处理 - break; - } - }); - }; - /** - * 引导用户分享应用给朋友。 - * - * 通过调用MiniGameSdk的API分享功能,向用户的朋友圈发送邀请,邀请他们一起玩游戏。 - * 这是一个重要的推广手段,可以增加应用的曝光度和用户量。 - * - * @remarks - * 此方法中调用的API依赖于特定的小游戏平台,因此在不同的平台上可能需要不同的实现。 - */ - MiniGameManager.prototype.onShare = function () { - MiniGameSdk_1.MiniGameSdk.API.shareAppToFriends('来玩游戏吧'); - }; - /** - * 显示一个toast提示。 - * - * 通过调用MiniGameSdk的API方法来显示一个简短的提示信息。toast是一种轻量级的提示方式,用于在界面上短暂地展示一些信息,不影响用户操作。 - * 这里使用了固定的提示文本 '这是一个toast',在实际应用中,可以根据需要动态设置提示文本。 - */ - MiniGameManager.prototype.onShowToast = function () { - MiniGameSdk_1.MiniGameSdk.API.showToast('这是一个toast'); - }; - /** - * 触发设备振动功能。 - * - * 该方法用于调用MiniGameSdk提供的API,以实现设备的振动功能。当需要提醒用户或提供触觉反馈时,可以调用此方法。 - * 例如,在游戏或应用中,当用户完成特定操作或发生特定事件时,可以通过振动给予用户反馈。 - * - * @remarks - * 此方法无参数,也不返回任何值。 - */ - MiniGameManager.prototype.onVirbrate = function () { - MiniGameSdk_1.MiniGameSdk.API.vibrate(); - }; - /** - * 重新启动游戏实例。 - * - * 此函数调用MiniGameSdk中的API重新启动游戏。重新启动操作可能是为了初始化游戏环境、重置游戏状态或处理其他需要重启的场景。 - * 调用此函数后,游戏将会重新开始,当前的游戏状态将会被清除。 - * - * @remarks - * 此函数不接受任何参数。 - * - * @returns 无返回值。 - */ - MiniGameManager.prototype.onReboot = function () { - MiniGameSdk_1.MiniGameSdk.API.reboot(); - }; - /** - * 当前函数用于在迷你游戏中实现退出功能。 - * 它调用了MiniGameSdk提供的API方法来触发退出操作。 - * 该方法通常在需要结束当前迷你游戏或返回到上一级菜单时被调用。 - */ - MiniGameManager.prototype.onExit = function () { - MiniGameSdk_1.MiniGameSdk.API.exit(); - }; - /** - * 显示分享菜单。 - * - * 通过调用MiniGameSdk的API方法,触发显示分享菜单的操作。此函数旨在提供一个统一的入口, - * 以便在需要时轻松调用分享功能,而无需直接与具体的SDK接口交互。 - * - * @remarks - * 此方法不接受任何参数,也不返回任何值。 - */ - MiniGameManager.prototype.onShowShareMenu = function () { - MiniGameSdk_1.MiniGameSdk.API.showShareMenu(); - }; - /** - * 导航到指定的小游戏。 - * - * 本函数用于触发导航到一个特定的小游戏。这需要提供目标小游戏的ID, - * 以便系统能够正确地将用户重定向到目标小游戏。 - * - * 注意:这里的'xxx'是占位符,实际使用时需要替换为具体的小游戏ID。 - */ - MiniGameManager.prototype.onNavigate = function () { - MiniGameSdk_1.MiniGameSdk.API.navigateTo('xxx'); // xxx替换为你的小游戏id - }; - /** - * 激活字节跳动入口视图。 - * - * 此方法用于将字节跳动入口视图设置为活跃状态。当需要在用户界面中显示字节跳动的入口时, - * 可以调用此方法来激活相应的视图元素,使其对用户可见。 - */ - MiniGameManager.prototype.onBytedanceEntranceView = function () { - // this.entranceView.active = true; - }; - /** - * 请求登录代码 - * - * 本函数用于触发小程序的登录流程,获取微信或头条等第三方平台的登录代码。 - * 这些代码可以用于后续的用户身份验证和数据同步流程。 - */ - MiniGameManager.prototype.onGetLoginCode = function () { - // 调用MiniGameSdk的API登录方法,传入一个回调函数处理登录结果 - MiniGameSdk_1.MiniGameSdk.API.login(function (code, anonymousCode) { - // 打印微信或头条的登录代码 - console.log('Wechat Or Bytedance Code:', code); - // 打印头条的匿名登录代码 - // console.log('Bytedance Anonymous Code:', anonymousCode); - if (code) { - // cc.fx.GameTool.getUserId(code, data => this.setUserId(data)); - } - }); - }; - // setUserId(data){ - // cc.fx.GameConfig.GM_INFO.userId = data.data.userId; - // MiniGameSdk.API.getUserInfo(this.setUserInfo); - // } - // setUserInfo(data){ - // console.log("获取到的用户信息",data.userInfo); - // var useData = { - // "gameId": cc.fx.GameConfig.GM_INFO.gameId, - // "userId": cc.fx.GameConfig.GM_INFO.userId, - // "nickName":data.userInfo.nickName, - // "pic": data.userInfo.avatarUrl - // } - // console.log("即将上传的用户信息:",cc.fx.GameConfig.GM_INFO.userId,data.userInfo.nickName,data.userInfo.avatarUrl); - // console.log("Post数据:",useData); - // cc.fx.GameTool.setUserInfo(useData,(res)=>{ - // console.log("上传成功:",res); - // }); - // } - /** - * 创建并显示游戏圈按钮 - * - * 本函数通过调用MiniGameSdk的GameClub实例方法,实现游戏俱乐部的创建和显示。 - * 它首先配置俱乐部的图标类型和位置大小,然后创建俱乐部,最后显示俱乐部。 - * 这样做是为了在小游戏内创建并展示一个游戏俱乐部的图标,供玩家加入或互动。 - */ - MiniGameManager.prototype.onCreateClub = function () { - // 配置俱乐部图标为绿色,设置图标的位置为顶部200像素,左侧0像素 - MiniGameSdk_1.MiniGameSdk.GameClub.instance.create(MiniGameSdk_1.MiniGameSdk.EGameClubIcon.GREEN, { top: 200, left: 0 }, { width: 50, height: 50 }); - // 显示游戏俱乐部图标 - MiniGameSdk_1.MiniGameSdk.GameClub.instance.show(); - }; - var MiniGameManager_1; - __decorate([ - property(cc.Node) - ], MiniGameManager.prototype, "entranceView", void 0); - MiniGameManager = MiniGameManager_1 = __decorate([ - ccclass - ], MiniGameManager); - return MiniGameManager; -}(cc.Component)); -exports.MiniGameManager = MiniGameManager; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.text = 'hello'; + _this.btnStatic = 0; + _this.propName = ""; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + // onLoad () {} + NewClass.prototype.start = function () { + var _this = this; + for (var i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) { + if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) { + this.propName = cc.fx.GameConfig.NEW_LEVEL[i].name; + var path = 'Window_Prop/' + this.propName; + cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { + if (err) { + console.error('动态加载背景图失败:', err); + return; + } + _this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; + }); + break; + } + } + }; + NewClass.prototype.setMode = function (mode) { + this.btnStatic = mode; + var name = "GameScene"; + if (mode == 1) { + name = "HomeScene"; + } + cc.director.preloadScene(name, function () { + }); + }; + NewClass.prototype.clickBtn = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (this.btnStatic == 1) { + cc.director.loadScene("HomeScene"); + } + else if (this.btnStatic == 2) { + cc.director.loadScene("GameScene"); + } + }; + __decorate([ + property(cc.Label) + ], NewClass.prototype, "label", void 0); + __decorate([ + property + ], NewClass.prototype, "text", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -7888,7 +5183,338 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXE1pbmlHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsNkNBQTRDO0FBQ3RDLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBQzVDLElBQUssU0FFSjtBQUZELFdBQUssU0FBUztJQUNWLG1EQUFzQyxDQUFBO0FBQzFDLENBQUMsRUFGSSxTQUFTLEtBQVQsU0FBUyxRQUViO0FBR0Q7SUFBcUMsbUNBQVk7SUFBakQ7UUFBQSxxRUEyVUM7UUF4VUcsa0JBQVksR0FBWSxJQUFJLENBQUM7O0lBd1VqQyxDQUFDO3dCQTNVWSxlQUFlO0lBa0J4QixzQkFBVywyQkFBUTthQUFuQjtZQUNJLElBQUksQ0FBQyxpQkFBZSxDQUFDLFNBQVMsRUFBRTtnQkFDNUIsaUJBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxpQkFBZSxFQUFFLENBQUM7YUFDckQ7WUFDRCxPQUFPLGlCQUFlLENBQUMsU0FBUyxDQUFDO1FBQ3JDLENBQUM7OztPQUFBO0lBRUQsK0JBQUssR0FBTDtRQUNJLFdBQVc7UUFDWCxvQ0FBb0M7UUFDcEMsa0RBQWtEO1FBQ2xELGtDQUFrQztRQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsK0JBQStCO1FBQy9CLGdHQUFnRztRQUNoRyx3QkFBd0I7UUFDeEIsY0FBYztRQUNkLElBQUk7UUFFSix5QkFBeUI7UUFFekIsSUFBSSx5QkFBVyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzNCLGNBQWM7WUFDZCx5QkFBVyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxVQUFDLE9BQWdCO2dCQUN2RCxzQkFBc0I7Z0JBQ3RCLG1DQUFtQztZQUN2QyxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLGdDQUFn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LHFCQUFxQjtJQUNyQiw2Q0FBNkM7SUFDN0Msc0JBQXNCO0lBQ3RCLHFEQUFxRDtJQUNyRCxxREFBcUQ7SUFDckQsNkNBQTZDO0lBQzdDLHlDQUF5QztJQUV6QyxRQUFRO0lBQ1IsZ0hBQWdIO0lBQ2hILHNDQUFzQztJQUN0QyxrREFBa0Q7SUFDbEQsb0NBQW9DO0lBQ3BDLFVBQVU7SUFDVixJQUFJO0lBRUo7Ozs7OztPQU1HO0lBQ0gsc0NBQVksR0FBWjtRQUNJLG1DQUFtQztRQUNuQyx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNoQyx5QkFBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQy9CLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQ3JCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixZQUFZO1FBQ1oseUJBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pDLENBQUM7O0lBdlVEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eURBQ1c7SUFIcEIsZUFBZTtRQUQzQixPQUFPO09BQ0ssZUFBZSxDQTJVM0I7SUFBRCxzQkFBQztDQTNVRCxBQTJVQyxDQTNVb0MsRUFBRSxDQUFDLFNBQVMsR0EyVWhEO0FBM1VZLDBDQUFlIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vTWluaUdhbWVTZGtcIjtcclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuZW51bSBFV2VjaGF0QUQge1xyXG4gICAgQ1VNU1RPTV8wMSA9ICdhZHVuaXQtZjdjMjQxN2ViMmMyZTQ3MydcclxufVxyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGNsYXNzIE1pbmlHYW1lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBlbnRyYW5jZVZpZXc6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiDlvIDlp4vmuLjmiI/liY3nmoTliJ3lp4vljJbmk43kvZzjgIJcclxuICAgICAqIOS4u+imgei0n+i0o+ajgOafpeW5tuWkhOeQhua4uOaIj+WFpeWPo+aMiemSrueahOa/gOa0u+eKtuaAge+8jOS7peWPiuWcqOeJueWumueOr+Wig+S4i+iuvue9ruS+p+i+ueagj+eahOebkeWQrOWZqOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmVtYXJrc1xyXG4gICAgICog5q2k5pa55rOV6aaW5YWI5bCG5ri45oiP5YWl5Y+j6KeG5Zu+6K6+5Li66Z2e5r+A5rS754q25oCB77yM5Lul5YeG5aSH6L+b6KGM5ZCO57ut55qE5qOA5p+l5ZKM6K6+572u44CCXHJcbiAgICAgKiDlpoLmnpzlvZPliY3njq/looPmmK/mipbpn7PlsI/muLjmiI/vvIzkvJrmo4Dmn6XmmK/lkKblrZjlnKjkvqfovrnmoI/vvIzlubbmoLnmja7mo4Dmn6Xnu5Pmnpzmv4DmtLvmiJbnpoHnlKjmuLjmiI/lhaXlj6PmjInpkq7jgIJcclxuICAgICAqIOWvueS6jumdnuaKlumfs+Wwj+a4uOaIj+eOr+Wig++8jOebtOaOpea/gOa0u+a4uOaIj+WFpeWPo+aMiemSruOAglxyXG4gICAgICog5q2k5aSW77yM5peg6K66546v5aKD5aaC5L2V77yM6YO95Lya6K6+572u5LiA5Liq55uR5ZCs5Zmo77yM5Lul5aSE55CG5p2l6Ieq5L6n6L655qCP55qE5LqL5Lu277yM5aaC5oiQ5Yqf6Kem5Y+R5pe25pi+56S65aWW5Yqx5o+Q56S644CCXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lkOmFueTtcclxuICAgIHByaXZhdGUgX3VzZXJEYXRhOmFueTtcclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE1pbmlHYW1lTWFuYWdlcjtcclxuICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogTWluaUdhbWVNYW5hZ2VyIHtcclxuICAgICAgICBpZiAoIU1pbmlHYW1lTWFuYWdlci5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBNaW5pR2FtZU1hbmFnZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE1pbmlHYW1lTWFuYWdlci5faW5zdGFuY2U7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQoKSB7XHJcbiAgICAgICAgLy8g56aB55So5ri45oiP5YWl5Y+j6KeG5Zu+XHJcbiAgICAgICAgLy8gdGhpcy5lbnRyYW5jZVZpZXcuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgLy8gTWluaUdhbWVTZGsuQVBJLmdldFVzZXJQcm9maWxlKHRoaXMuc2V0VXNlcklkKTtcclxuICAgICAgICAvLyBjYy5meC5HYW1lVG9vbC5zZXRVc2VySW5mbyhcIlwiKTtcclxuICAgICAgICB0aGlzLm9uR2V0TG9naW5Db2RlKCk7XHJcbiAgICAgICAgLy8g5bCd6K+V6I635Y+W5ri45oiP5YWl5Y+j5oyJ6ZKu77yM5aaC5p6c5a2Y5Zyo5YiZ55u05o6l6L+U5Zue77yM5LiN6L+b6KGM5ZCO57ut5pON5L2cXHJcbiAgICAgICAgLy8gbGV0IGJ1dHRvbkVudHJhbmNlID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKCdCdG5zJyk/LmdldENoaWxkQnlOYW1lKCdCdXR0b25fRW50cmFuY2VWaWV3Jyk7XHJcbiAgICAgICAgLy8gaWYgKGJ1dHRvbkVudHJhbmNlKSB7XHJcbiAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIOWmguaenOaYr+Wtl+iKgui3s+WKqOWwj+a4uOaIj+eOr+Wig++8jOajgOafpeS+p+i+ueagj+aYr+WQpuWtmOWcqFxyXG5cclxuICAgICAgICBpZiAoTWluaUdhbWVTZGsuaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAvL+aKlumfs+eOr+Wig++8jOajgOa1i+S+p+i+ueagj+WtmOWcqFxyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLmNoZWNrU2lkZUJhcigoc3VjY2VzczogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8g5qC55o2u5L6n6L655qCP5a2Y5Zyo5oCn5r+A5rS75oiW56aB55So5ri45oiP5YWl5Y+j5oyJ6ZKuXHJcbiAgICAgICAgICAgICAgICAvLyBidXR0b25FbnRyYW5jZS5hY3RpdmUgPSBzdWNjZXNzO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDpnZ7mipbpn7PlsI/muLjmiI/njq/looPvvIznm7TmjqXmv4DmtLvmuLjmiI/lhaXlj6PmjInpkq5cclxuICAgICAgICAgICAgLy8g6Z2e5oqW6Z+z546v5aKD77yM5q2j5bi45pi+56S65oyJ6ZKuXHJcbiAgICAgICAgICAgIC8vIGJ1dHRvbkVudHJhbmNlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDorr7nva7nm5HlkKzlmajvvIzku6XlpITnkIbmnaXoh6rkvqfovrnmoI/nmoTkuqTkupLkuovku7ZcclxuICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLmxpc3RlbkZyb21TaWRlYmFyKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOS6pOS6kuaIkOWKn++8jOaYvuekuuWlluWKseaPkOekulxyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdCgn5L6n6L655qCP5aWW5YqxJywgNSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZGVsdGFUaW1lOiBudW1iZXIpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlvLnlh7rlub/lkYrmqKrluYXjgIJcclxuICAgICAqIOatpOaWueazleeUqOS6juWKoOi9veW5tuaYvuekuuW5v+WRiuaoquW5heOAguWug+mmluWFiOWKoOi9veaMh+WumuW5v+WRiuS9jeeahOaoquW5heW5v+WRiu+8jOeEtuWQjuaYvuekuuW5v+WRiuOAglxyXG4gICAgICog5Yqg6L295bm/5ZGK5ZKM5pi+56S65bm/5ZGK5piv6YCa6L+HTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlcueahOWunuS+i+aWueazleadpeWunueOsOeahOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmVtYXJrc1xyXG4gICAgICog5q2k5pa55rOV5o+Q5L6b5LqG5Lik56eN5pi+56S65qiq5bmF5bm/5ZGK55qE5pa55byP77yaXHJcbiAgICAgKiAxLiDpu5jorqTmlrnlvI/vvJrosIPnlKhzaG93QmFubmVy5pa55rOV5pi+56S65bm/5ZGK77yM57O757uf5Lya6Ieq5Yqo6YCJ5oup5pi+56S65L2N572u44CCXHJcbiAgICAgKiAyLiDmjIflrprkvY3nva7mlrnlvI/vvJrlj6/ku6XpgJrov4fkvKDlhaXpop3lpJbnmoTlj4LmlbDmnaXmjIflrprlub/lkYrmmL7npLrlnKjlsY/luZXnmoTpobbpg6jmiJblupXpg6jvvIzmiJbogIXpgJrov4flnZDmoIfmjIflrprmmL7npLrkvY3nva7jgIJcclxuICAgICAqIFxyXG4gICAgICog56S65L6L5Luj56CB5Lit5rOo6YeK5o6J5LqG5Lik56eN5pi+56S65bm/5ZGK55qE5YW35L2T5pa55rOV77yM5Y+v5Lul5qC55o2u5a6e6ZmF6ZyA5rGC6YCJ5oup5L2/55So44CCXHJcbiAgICAgKi9cclxuICAgIG9uU2hvd0Jhbm5lcigpIHtcclxuICAgICAgICAvLyDliqDovb3mjIflrprlub/lkYrkvY3nmoTmqKrluYXlub/lkYrjgIJcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLmxvYWRCYW5uZXIoJ2FkdW5pdC00ZTdlZjQ2N2UzZWFhYjUxJyk7XHJcblxyXG4gICAgICAgIC8vIOm7mOiupOaWueW8j+aYvuekuuaoquW5heW5v+WRiuOAglxyXG4gICAgICAgIC8vIOaWueazlTHvvJrpu5jorqTosIPnlKhcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dCYW5uZXIoKTtcclxuXHJcbiAgICAgICAgLy8g56S65L6L77ya5oyH5a6a5bGP5bmV5bqV6YOo5q2j5Lit5pi+56S65qiq5bmF5bm/5ZGK44CCXHJcbiAgICAgICAgLy8g5pa55rOVMu+8muaMh+WumuWxj+W5lemhtumDqOaIluW6lemDqOato+S4rVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0Jhbm5lcignYWR1bml0LTRlN2VmNDY3ZTNlYWFiNTEnLCBNaW5pR2FtZVNkay5FQWRCYW5uZXJMb2NhdGlvbi5CT1RUT00pOyBcclxuXHJcbiAgICAgICAgLy8g56S65L6L77ya6YCa6L+H5Z2Q5qCH5oyH5a6a5L2N572u5pi+56S65qiq5bmF5bm/5ZGK44CCXHJcbiAgICAgICAgLy8g5pa55rOVMu+8muaMh+WumuWdkOagh1xyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0Jhbm5lcignYWR1bml0LTRlN2VmNDY3ZTNlYWFiNTEnLCB7IHRvcDogMTAsIGxlZnQ6IDEwIH0pOyBcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOmakOiXj+W5v+WRiuaoquW5heeahOWHveaVsOOAglxyXG4gICAgICogXHJcbiAgICAgKiDor6Xlh73mlbDosIPnlKhNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2Vy5a6e5L6L55qE5pa55rOV77yM55So5LqO6ZqQ6JeP5bm/5ZGK5qiq5bmF44CCXHJcbiAgICAgKiDlvZPpnIDopoHmmoLml7blgZzmraLlsZXnpLrlub/lkYrmiJbnlKjmiLfkuLvliqjor7fmsYLpmpDol4/lub/lkYrml7bvvIzlj6/ku6XosIPnlKjmraTlh73mlbDjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOS4jeaOpeWPl+S7u+S9leWPguaVsO+8jOS5n+S4jei/lOWbnuS7u+S9leWAvOOAglxyXG4gICAgICog5a6D5Y2V57qv5Zyw6Kem5Y+R5bm/5ZGK5qiq5bmF55qE6ZqQ6JeP5pON5L2c77yM5YW35L2T5a6e546w5L6d6LWW5LqOQWR2ZXJ0TWFuYWdlcueahOWunueOsOOAglxyXG4gICAgICovXHJcbiAgICBvbkhpZGVCYW5uZXIoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5oaWRlQmFubmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmmL7npLrmj5LlsY/lub/lkYrnmoTlh73mlbDjgIJcclxuICAgICAqIFxyXG4gICAgICog5q2k5Ye95pWw6LCD55SoTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlcuWunuS+i+eahOaWueazle+8jOS7peaYvuekuuS4gOS4quaMh+WumueahOaPkuWxj+W5v+WRiuOAglxyXG4gICAgICog5a6D5L2/55So5LqG56Gs57yW56CB55qE5bm/5ZGK5Y2V5YWD5qCH6K+G56ym77yM6L+Z5oSP5ZGz552A5a6D5LiT5Li654m55a6a55qE5bm/5ZGK5L2N6K6+6K6h44CCXHJcbiAgICAgKiDlnKjlrp7pmYXlupTnlKjkuK3vvIzlj6/og73pnIDopoHmoLnmja7lupTnlKjnmoTphY3nva7miJbnlKjmiLfnmoTnibnlrprmnaHku7bmnaXliqjmgIHpgInmi6nlub/lkYrljZXlhYPmoIfor4bnrKbjgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93SW50ZXJzdGl0aWFsKCkge1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0ludGVyc3RpdGlhbCgnYWR1bml0LWVhZGQ2Nzg1MWQzMDUwYWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOiwg+eUqOW5v+WRiueuoeeQhuWZqOWKoOi9veW5tuWxleekuuiHquWumuS5ieW5v+WRiuOAglxyXG4gICAgICog5q2k5pa55rOV6aaW5YWI6YCa6L+H5bm/5ZGK566h55CG5Zmo55qE5a6e5L6L5Yqg6L295oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK5Y2V5YWD77yM54S25ZCO5bGV56S66L+Z5Liq6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiDliqDovb3lkozlsZXnpLrlub/lkYrmmK/lub/lkYrnrqHnkIbns7vnu5/kuK3nmoTluLjop4Hmk43kvZzvvIzov5nph4zpgJrov4fkuKTmraXliIbliKvlrozmiJDliqDovb3lkozlsZXnpLrnmoTov4fnqIvvvIxcclxuICAgICAqIOS7peehruS/neW5v+WRiuWcqOWxleekuuWJjeato+ehruS4lOWFheWIhuWcsOiiq+WKoOi9veOAglxyXG4gICAgICovXHJcbiAgICBvblNob3dDdXN0b20oKSB7XHJcbiAgICAgICAgLy8g5Yqg6L295oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK5Y2V5YWD44CCXHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5sb2FkQ3VzdG9tKEVXZWNoYXRBRC5DVU1TVE9NXzAxKTtcclxuICAgICAgICAvLyDlsZXnpLrlt7LliqDovb3nmoToh6rlrprkuYnlub/lkYrjgIJcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dDdXN0b20oRVdlY2hhdEFELkNVTVNUT01fMDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6ZqQ6JeP6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiBcclxuICAgICAqIOacrOWHveaVsOiwg+eUqE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2UuaGlkZUN1c3RvbSgp5p2l6ZqQ6JeP6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiDov5nmmK/lr7nmjqXlub/lkYrnrqHnkIbns7vnu5/nmoTkuIDpg6jliIbvvIznlKjkuo7mjqfliLblub/lkYrnmoTmmL7npLrkuI7pmpDol4/jgIJcclxuICAgICAqIOWcqOmcgOimgemakOiXj+iHquWumuS5ieW5v+WRiueahOWcuuaZr+S4i++8jOiwg+eUqOatpOWHveaVsOWNs+WPr+WunueOsOebuOW6lOWKn+iDveOAglxyXG4gICAgICovXHJcbiAgICBvbkhpZGVDdXN0b20oKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5oaWRlQ3VzdG9tKEVXZWNoYXRBRC5DVU1TVE9NXzAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOinpuWPkeaYvuekuuinhumikeW5v+WRiueahOWHveaVsOOAglxyXG4gICAgICog6YCa6L+H6LCD55SoTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5zaG93VmlkZW/mlrnms5XvvIzmmL7npLrkuIDkuKrop4bpopHlub/lkYrvvIzlubbmoLnmja7nlKjmiLfop4LnnIvlub/lkYrnmoTmg4XlhrXmiafooYznm7jlupTnmoTpgLvovpHjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOmmluWFiOS8oOWFpeS4gOS4quW5v+WRiuWNleWFg0lE77yM55So5LqO5qCH6K+G6KaB5pi+56S655qE6KeG6aKR5bm/5ZGK44CC54S25ZCO5Lyg5YWl5LiA5Liq5Zue6LCD5Ye95pWw77yM6K+l5Zue6LCD5Ye95pWw5Zyo55So5oi36KeC55yL5bm/5ZGK5ZCO6KKr6LCD55So77yM5peg6K6655So5oi35piv5a6M5oiQ5LqG6KeC55yL44CB5ouS57ud5LqG6KeC55yL6L+Y5piv6KeC55yL6L+H56iL5Lit5Y+R55Sf5LqG6ZSZ6K+v44CCXHJcbiAgICAgKiDlm57osIPlh73mlbDmjqXmlLbkuKTkuKrlj4LmlbDvvJrkuIDkuKrmmK/nlKjmiLfop4LnnIvlub/lkYrnmoTnu5PmnpzvvIzlj6bkuIDkuKrmmK/nlKjmiLfop4LnnIvnmoTlub/lkYrmlbDph4/jgILmoLnmja7op4LnnIvnu5PmnpznmoTkuI3lkIzvvIzmmL7npLrkuI3lkIznmoTmj5DnpLrkv6Hmga/jgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93VmlkZW8oKSB7XHJcbiAgICAgICAgLy8g5bm/5ZGK5Y2V5YWDSUTvvIznlKjkuo7moIfor4bopoHmmL7npLrnmoTop4bpopHlub/lkYpcclxuICAgICAgICAvLyDlub/lkYrljZXlhYNJROeahOagt+S+i1xyXG4gICAgICAgIC8v5oqW6Z+z5b2i5aaCOiAxcmUzbmZxa215ODFtNG04Z2VcclxuICAgICAgICAvL+W+ruS/oeW9ouWmgjogYWR1bml0LWE3NzE4ZjZlMTk1ZTQyZmVcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dWaWRlbygnMXJlM25mcWtteTgxbTRtOGdlJywgKHJlczogTWluaUdhbWVTZGsuRUFkVmlkZW9SZXN1bHQsIGNvdW50OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgLy8g6L6T5Ye655So5oi36KeC55yL55qE5bm/5ZGK5pWw6YePXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfnlKjmiLfnnIvnmoTop4bpopHlub/lkYrkuKrmlbDmmK86JywgY291bnQpO1xyXG5cclxuICAgICAgICAgICAgLy8g5qC55o2u55So5oi36KeC55yL5bm/5ZGK55qE57uT5p6c77yM5omn6KGM5LiN5ZCM55qE6YC76L6RXHJcbiAgICAgICAgICAgIHN3aXRjaCAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIE1pbmlHYW1lU2RrLkVBZFZpZGVvUmVzdWx0LkFDQ0VQVDpcclxuICAgICAgICAgICAgICAgICAgICAvLyDnlKjmiLflrozmiJDkuoblub/lkYrop4LnnIvvvIzmmL7npLrlpZblirHmj5DnpLpcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KCfnlKjmiLfnnIvlrozlub/lkYrvvIzlj6/ku6XlpZblirEnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgTWluaUdhbWVTZGsuRUFkVmlkZW9SZXN1bHQuUkVKRUNUOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOeUqOaIt+aLkue7neS6huW5v+WRiuingueci++8jOaYvuekuuS4jeWlluWKseaPkOekulxyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoJ+eUqOaIt+aLkue7neaOieW5v+WRiu+8jOS4jeWlluWKsScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBNaW5pR2FtZVNkay5FQWRWaWRlb1Jlc3VsdC5FUlJPUjpcclxuICAgICAgICAgICAgICAgICAgICAvLyDlub/lkYrmkq3mlL7lj5HnlJ/plJnor6/vvIzmmL7npLrplJnor6/mj5DnpLpcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KCfmkq3mlL7lub/lkYrlj5HnlJ/plJnor6/vvIzkuI3lpZblirEnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5YW25LuW5oOF5Ya177yM5LiN5L2c5aSE55CGXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW8leWvvOeUqOaIt+WIhuS6q+W6lOeUqOe7meaci+WPi+OAglxyXG4gICAgICogXHJcbiAgICAgKiDpgJrov4fosIPnlKhNaW5pR2FtZVNka+eahEFQSeWIhuS6q+WKn+iDve+8jOWQkeeUqOaIt+eahOaci+WPi+WciOWPkemAgemCgOivt++8jOmCgOivt+S7luS7rOS4gOi1t+eOqea4uOaIj+OAglxyXG4gICAgICog6L+Z5piv5LiA5Liq6YeN6KaB55qE5o6o5bm/5omL5q6177yM5Y+v5Lul5aKe5Yqg5bqU55So55qE5pud5YWJ5bqm5ZKM55So5oi36YeP44CCXHJcbiAgICAgKiBcclxuICAgICAqIEByZW1hcmtzXHJcbiAgICAgKiDmraTmlrnms5XkuK3osIPnlKjnmoRBUEnkvp3otZbkuo7nibnlrprnmoTlsI/muLjmiI/lubPlj7DvvIzlm6DmraTlnKjkuI3lkIznmoTlubPlj7DkuIrlj6/og73pnIDopoHkuI3lkIznmoTlrp7njrDjgIJcclxuICAgICAqL1xyXG4gICAgb25TaGFyZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hhcmVBcHBUb0ZyaWVuZHMoJ+adpeeOqea4uOaIj+WQpycpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pi+56S65LiA5LiqdG9hc3Tmj5DnpLrjgIJcclxuICAgICAqIFxyXG4gICAgICog6YCa6L+H6LCD55SoTWluaUdhbWVTZGvnmoRBUEnmlrnms5XmnaXmmL7npLrkuIDkuKrnroDnn63nmoTmj5DnpLrkv6Hmga/jgIJ0b2FzdOaYr+S4gOenjei9u+mHj+e6p+eahOaPkOekuuaWueW8j++8jOeUqOS6juWcqOeVjOmdouS4iuefreaaguWcsOWxleekuuS4gOS6m+S/oeaBr++8jOS4jeW9seWTjeeUqOaIt+aTjeS9nOOAglxyXG4gICAgICog6L+Z6YeM5L2/55So5LqG5Zu65a6a55qE5o+Q56S65paH5pysICfov5nmmK/kuIDkuKp0b2FzdCfvvIzlnKjlrp7pmYXlupTnlKjkuK3vvIzlj6/ku6XmoLnmja7pnIDopoHliqjmgIHorr7nva7mj5DnpLrmlofmnKzjgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93VG9hc3QoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdCgn6L+Z5piv5LiA5LiqdG9hc3QnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOinpuWPkeiuvuWkh+aMr+WKqOWKn+iDveOAglxyXG4gICAgICogXHJcbiAgICAgKiDor6Xmlrnms5XnlKjkuo7osIPnlKhNaW5pR2FtZVNka+aPkOS+m+eahEFQSe+8jOS7peWunueOsOiuvuWkh+eahOaMr+WKqOWKn+iDveOAguW9k+mcgOimgeaPkOmGkueUqOaIt+aIluaPkOS+m+inpuinieWPjemmiOaXtu+8jOWPr+S7peiwg+eUqOatpOaWueazleOAglxyXG4gICAgICog5L6L5aaC77yM5Zyo5ri45oiP5oiW5bqU55So5Lit77yM5b2T55So5oi35a6M5oiQ54m55a6a5pON5L2c5oiW5Y+R55Sf54m55a6a5LqL5Lu25pe277yM5Y+v5Lul6YCa6L+H5oyv5Yqo57uZ5LqI55So5oi35Y+N6aaI44CCXHJcbiAgICAgKiBcclxuICAgICAqIEByZW1hcmtzXHJcbiAgICAgKiDmraTmlrnms5Xml6Dlj4LmlbDvvIzkuZ/kuI3ov5Tlm57ku7vkvZXlgLzjgIJcclxuICAgICAqL1xyXG4gICAgb25WaXJicmF0ZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkudmlicmF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6YeN5paw5ZCv5Yqo5ri45oiP5a6e5L6L44CCXHJcbiAgICAgKiBcclxuICAgICAqIOatpOWHveaVsOiwg+eUqE1pbmlHYW1lU2Rr5Lit55qEQVBJ6YeN5paw5ZCv5Yqo5ri45oiP44CC6YeN5paw5ZCv5Yqo5pON5L2c5Y+v6IO95piv5Li65LqG5Yid5aeL5YyW5ri45oiP546v5aKD44CB6YeN572u5ri45oiP54q25oCB5oiW5aSE55CG5YW25LuW6ZyA6KaB6YeN5ZCv55qE5Zy65pmv44CCXHJcbiAgICAgKiDosIPnlKjmraTlh73mlbDlkI7vvIzmuLjmiI/lsIbkvJrph43mlrDlvIDlp4vvvIzlvZPliY3nmoTmuLjmiI/nirbmgIHlsIbkvJrooqvmuIXpmaTjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOS4jeaOpeWPl+S7u+S9leWPguaVsOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyDml6Dov5Tlm57lgLzjgIJcclxuICAgICAqL1xyXG4gICAgb25SZWJvb3QoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnJlYm9vdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5b2T5YmN5Ye95pWw55So5LqO5Zyo6L+35L2g5ri45oiP5Lit5a6e546w6YCA5Ye65Yqf6IO944CCXHJcbiAgICAgKiDlroPosIPnlKjkuoZNaW5pR2FtZVNka+aPkOS+m+eahEFQSeaWueazleadpeinpuWPkemAgOWHuuaTjeS9nOOAglxyXG4gICAgICog6K+l5pa55rOV6YCa5bi45Zyo6ZyA6KaB57uT5p2f5b2T5YmN6L+35L2g5ri45oiP5oiW6L+U5Zue5Yiw5LiK5LiA57qn6I+c5Y2V5pe26KKr6LCD55So44CCXHJcbiAgICAgKi9cclxuICAgIG9uRXhpdCgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuZXhpdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pi+56S65YiG5Lqr6I+c5Y2V44CCXHJcbiAgICAgKiBcclxuICAgICAqIOmAmui/h+iwg+eUqE1pbmlHYW1lU2Rr55qEQVBJ5pa55rOV77yM6Kem5Y+R5pi+56S65YiG5Lqr6I+c5Y2V55qE5pON5L2c44CC5q2k5Ye95pWw5peo5Zyo5o+Q5L6b5LiA5Liq57uf5LiA55qE5YWl5Y+j77yMXHJcbiAgICAgKiDku6Xkvr/lnKjpnIDopoHml7bovbvmnb7osIPnlKjliIbkuqvlip/og73vvIzogIzml6DpnIDnm7TmjqXkuI7lhbfkvZPnmoRTREvmjqXlj6PkuqTkupLjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOaWueazleS4jeaOpeWPl+S7u+S9leWPguaVsO+8jOS5n+S4jei/lOWbnuS7u+S9leWAvOOAglxyXG4gICAgICovXHJcbiAgICBvblNob3dTaGFyZU1lbnUoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dTaGFyZU1lbnUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWvvOiIquWIsOaMh+WumueahOWwj+a4uOaIj+OAglxyXG4gICAgICogXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7op6blj5Hlr7zoiKrliLDkuIDkuKrnibnlrprnmoTlsI/muLjmiI/jgILov5npnIDopoHmj5Dkvpvnm67moIflsI/muLjmiI/nmoRJRO+8jFxyXG4gICAgICog5Lul5L6/57O757uf6IO95aSf5q2j56Gu5Zyw5bCG55So5oi36YeN5a6a5ZCR5Yiw55uu5qCH5bCP5ri45oiP44CCXHJcbiAgICAgKiBcclxuICAgICAqIOazqOaEj++8mui/memHjOeahCd4eHgn5piv5Y2g5L2N56ym77yM5a6e6ZmF5L2/55So5pe26ZyA6KaB5pu/5o2i5Li65YW35L2T55qE5bCP5ri45oiPSUTjgIJcclxuICAgICAqL1xyXG4gICAgb25OYXZpZ2F0ZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkubmF2aWdhdGVUbygneHh4Jyk7IC8vIHh4eOabv+aNouS4uuS9oOeahOWwj+a4uOaIj2lkXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmv4DmtLvlrZfoioLot7PliqjlhaXlj6Pop4blm77jgIJcclxuICAgICAqIFxyXG4gICAgICog5q2k5pa55rOV55So5LqO5bCG5a2X6IqC6Lez5Yqo5YWl5Y+j6KeG5Zu+6K6+572u5Li65rS76LeD54q25oCB44CC5b2T6ZyA6KaB5Zyo55So5oi355WM6Z2i5Lit5pi+56S65a2X6IqC6Lez5Yqo55qE5YWl5Y+j5pe277yMXHJcbiAgICAgKiDlj6/ku6XosIPnlKjmraTmlrnms5XmnaXmv4DmtLvnm7jlupTnmoTop4blm77lhYPntKDvvIzkvb/lhbblr7nnlKjmiLflj6/op4HjgIJcclxuICAgICAqL1xyXG4gICAgb25CeXRlZGFuY2VFbnRyYW5jZVZpZXcoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5lbnRyYW5jZVZpZXcuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivt+axgueZu+W9leS7o+eggVxyXG4gICAgICogXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7op6blj5HlsI/nqIvluo/nmoTnmbvlvZXmtYHnqIvvvIzojrflj5blvq7kv6HmiJblpLTmnaHnrYnnrKzkuInmlrnlubPlj7DnmoTnmbvlvZXku6PnoIHjgIJcclxuICAgICAqIOi/meS6m+S7o+eggeWPr+S7peeUqOS6juWQjue7reeahOeUqOaIt+i6q+S7vemqjOivgeWSjOaVsOaNruWQjOatpea1geeoi+OAglxyXG4gICAgICovXHJcbiAgICBvbkdldExvZ2luQ29kZSgpIHtcclxuICAgICAgICAvLyDosIPnlKhNaW5pR2FtZVNka+eahEFQSeeZu+W9leaWueazle+8jOS8oOWFpeS4gOS4quWbnuiwg+WHveaVsOWkhOeQhueZu+W9lee7k+aenFxyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5sb2dpbigoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgLy8g5omT5Y2w5b6u5L+h5oiW5aS05p2h55qE55m75b2V5Luj56CBXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXZWNoYXQgT3IgQnl0ZWRhbmNlIENvZGU6JywgY29kZSk7XHJcbiAgICAgICAgICAgIC8vIOaJk+WNsOWktOadoeeahOWMv+WQjeeZu+W9leS7o+eggVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQnl0ZWRhbmNlIEFub255bW91cyBDb2RlOicsIGFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICBpZihjb2RlKXtcclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJJZChjb2RlLCBkYXRhID0+IHRoaXMuc2V0VXNlcklkKGRhdGEpKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXRVc2VySWQoZGF0YSl7XHJcbiAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCA9IGRhdGEuZGF0YS51c2VySWQ7XHJcbiAgICAvLyAgICAgTWluaUdhbWVTZGsuQVBJLmdldFVzZXJJbmZvKHRoaXMuc2V0VXNlckluZm8pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIHNldFVzZXJJbmZvKGRhdGEpe1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwi6I635Y+W5Yiw55qE55So5oi35L+h5oGvXCIsZGF0YS51c2VySW5mbyk7XHJcbiAgICAvLyAgICAgdmFyIHVzZURhdGEgPSB7XHJcbiAgICAvLyAgICAgICAgIFwiZ2FtZUlkXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAvLyAgICAgICAgIFwidXNlcklkXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VySWQsXHJcbiAgICAvLyAgICAgICAgIFwibmlja05hbWVcIjpkYXRhLnVzZXJJbmZvLm5pY2tOYW1lLFxyXG4gICAgLy8gICAgICAgICBcInBpY1wiOiBkYXRhLnVzZXJJbmZvLmF2YXRhclVybFxyXG4gICAgICAgICAgIFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuS4iuS8oOeahOeUqOaIt+S/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkLGRhdGEudXNlckluZm8ubmlja05hbWUsZGF0YS51c2VySW5mby5hdmF0YXJVcmwpO1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwiUG9zdOaVsOaNrjpcIix1c2VEYXRhKTtcclxuICAgIC8vICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VySW5mbyh1c2VEYXRhLChyZXMpPT57XHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5oiQ5YqfOlwiLHJlcyk7XHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJvlu7rlubbmmL7npLrmuLjmiI/lnIjmjInpkq5cclxuICAgICAqIFxyXG4gICAgICog5pys5Ye95pWw6YCa6L+H6LCD55SoTWluaUdhbWVTZGvnmoRHYW1lQ2x1YuWunuS+i+aWueazle+8jOWunueOsOa4uOaIj+S/seS5kOmDqOeahOWIm+W7uuWSjOaYvuekuuOAglxyXG4gICAgICog5a6D6aaW5YWI6YWN572u5L+x5LmQ6YOo55qE5Zu+5qCH57G75Z6L5ZKM5L2N572u5aSn5bCP77yM54S25ZCO5Yib5bu65L+x5LmQ6YOo77yM5pyA5ZCO5pi+56S65L+x5LmQ6YOo44CCXHJcbiAgICAgKiDov5nmoLflgZrmmK/kuLrkuoblnKjlsI/muLjmiI/lhoXliJvlu7rlubblsZXnpLrkuIDkuKrmuLjmiI/kv7HkuZDpg6jnmoTlm77moIfvvIzkvpvnjqnlrrbliqDlhaXmiJbkupLliqjjgIJcclxuICAgICAqL1xyXG4gICAgb25DcmVhdGVDbHViKCkge1xyXG4gICAgICAgIC8vIOmFjee9ruS/seS5kOmDqOWbvuagh+S4uue7v+iJsu+8jOiuvue9ruWbvuagh+eahOS9jee9ruS4uumhtumDqDIwMOWDj+e0oO+8jOW3puS+pzDlg4/ntKBcclxuICAgICAgICBNaW5pR2FtZVNkay5HYW1lQ2x1Yi5pbnN0YW5jZS5jcmVhdGUoXHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkVHYW1lQ2x1Ykljb24uR1JFRU4sXHJcbiAgICAgICAgICAgIHsgdG9wOiAyMDAsIGxlZnQ6IDAgfSxcclxuICAgICAgICAgICAgeyB3aWR0aDogNTAsIGhlaWdodDogNTAgfSk7XHJcbiAgICAgICAgLy8g5pi+56S65ri45oiP5L+x5LmQ6YOo5Zu+5qCHXHJcbiAgICAgICAgTWluaUdhbWVTZGsuR2FtZUNsdWIuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxOZXdNb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBdURDO1FBcERHLFdBQUssR0FBYSxJQUFJLENBQUM7UUFHdkIsVUFBSSxHQUFXLE9BQU8sQ0FBQztRQUV2QixlQUFTLEdBQVcsQ0FBQyxDQUFDO1FBRXRCLGNBQVEsR0FBVyxFQUFFLENBQUM7O1FBNEN0QixpQkFBaUI7SUFDckIsQ0FBQztJQTNDRyx3QkFBd0I7SUFFeEIsZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFBQSxpQkFlQztRQWRHLEtBQUksSUFBSSxDQUFDLEdBQUMsQ0FBQyxFQUFFLENBQUMsR0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQ2xELElBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUM7Z0JBQ3pFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDbkQsSUFBTSxJQUFJLEdBQUcsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQzVDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQUMsR0FBRyxFQUFFLFdBQTJCO29CQUNyRSxJQUFJLEdBQUcsRUFBRTt3QkFDTCxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDakMsT0FBTztxQkFDVjtvQkFDRCxLQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7Z0JBQ3ZGLENBQUMsQ0FBQyxDQUFBO2dCQUNGLE1BQU07YUFDVDtTQUNKO0lBQ0wsQ0FBQztJQUVELDBCQUFPLEdBQVAsVUFBUSxJQUFXO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxJQUFJLEdBQUcsV0FBVyxDQUFDO1FBQ3ZCLElBQUcsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNULElBQUksR0FBRyxXQUFXLENBQUM7U0FDdEI7UUFDRCxFQUFFLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUU7UUFFL0IsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBRUQsMkJBQVEsR0FBUjtRQUNJLEVBQUUsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLEVBQUM7WUFDbkIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDdEM7YUFDSSxJQUFHLElBQUksQ0FBQyxTQUFTLElBQUksQ0FBQyxFQUFDO1lBQ3hCLEVBQUUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ3RDO0lBQ0wsQ0FBQztJQWpERDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTswQ0FDYztJQU5OLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0F1RDVCO0lBQUQsZUFBQztDQXZERCxBQXVEQyxDQXZEcUMsRUFBRSxDQUFDLFNBQVMsR0F1RGpEO2tCQXZEb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5XHJcbiAgICB0ZXh0OiBzdHJpbmcgPSAnaGVsbG8nO1xyXG5cclxuICAgIGJ0blN0YXRpYzogbnVtYmVyID0gMDtcclxuXHJcbiAgICBwcm9wTmFtZTogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8Y2MuZnguR2FtZUNvbmZpZy5ORVdfTEVWRUwubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICBpZigoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsKzEpID09IGNjLmZ4LkdhbWVDb25maWcuTkVXX0xFVkVMW2ldLmxldmVsKXtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcE5hbWUgPSBjYy5meC5HYW1lQ29uZmlnLk5FV19MRVZFTFtpXS5uYW1lO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGF0aCA9ICdXaW5kb3dfUHJvcC8nICsgdGhpcy5wcm9wTmFtZTtcclxuICAgICAgICAgICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHBhdGgsIGNjLlNwcml0ZUZyYW1lLCAoZXJyLCBzcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veiDjOaZr+WbvuWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TW9kZShtb2RlOm51bWJlcil7XHJcbiAgICAgICAgdGhpcy5idG5TdGF0aWMgPSBtb2RlO1xyXG4gICAgICAgIGxldCBuYW1lID0gXCJHYW1lU2NlbmVcIjtcclxuICAgICAgICBpZihtb2RlID09IDEpe1xyXG4gICAgICAgICAgICBuYW1lID0gXCJIb21lU2NlbmVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2MuZGlyZWN0b3IucHJlbG9hZFNjZW5lKG5hbWUsICgpPT57XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tCdG4oKXtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9CaWdcIixudWxsKTtcclxuICAgICAgICBpZih0aGlzLmJ0blN0YXRpYyA9PSAxKXtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMuYnRuU3RhdGljID09IDIpeyBcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/SceneManager.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '80998T1AYNNRZdRxsVvXR65', 'SceneManager'); +// Script/SceneManager.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("./Map"); +var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var SceneManager = /** @class */ (function (_super) { + __extends(SceneManager, _super); + function SceneManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.text = 'hello'; + _this.freeze = null; + _this.hammer = null; + _this.magic_wand = null; + _this.pause = null; + _this.Block_Array = []; + _this.Wall_Prefab = []; + // @property({type: [cc.ParticleSystem], tooltip:"粒子数组"}) + // particleEffects : Array = []; + _this.load1 = false; + _this.load2 = false; + _this.load3 = false; + _this.btnName = ''; + return _this; + } + // LIFE-CYCLE CALLBACKS: + SceneManager.prototype.onLoad = function () { + cc.game.setFrameRate(63); + this.changeBg(); + setTimeout(function () { + cc.director.preloadScene("HomeScene", function (err) { + if (err) { + // console.error('预加载 HomeScene 场景失败:', err); + return; + } + // console.log('成功预加载 HomeScene 场景'); + }); + }, 1000); + }; + SceneManager.prototype.changeBg = function () { + var _this = this; + var number = Math.floor(Math.random() * 8) + 1; + var path = 'bg/bg' + number; + cc.resources.load(path, cc.SpriteFrame, function (err, spriteFrame) { + if (err) { + console.error('动态加载背景图失败:', err); + return; + } + _this.node.getChildByName("Game").getChildByName("bg").getComponent(cc.Sprite).spriteFrame = spriteFrame; + }); + }; + SceneManager.prototype.loadParticleEffects = function () { + var _this = this; + var path = 'Particle'; + cc.resources.loadDir(path, cc.ParticleAsset, function (err, assets) { + if (err) { + console.error('动态加载粒子特效失败:', err); + return; + } + _this.particleEffects = assets; + _this.setParticleSort(); + _this.load3 = true; + //console.log('粒子特效加载成功,共加载了', this.particleEffects.length, '个粒子特效'); + }); + }; + SceneManager.prototype.setWallPrefabSort = function () { + var order = ['down', 'downLeft', 'downRight', 'left', 'right', 'up', 'upLeft', 'upRight']; + this.Wall_Prefab.sort(function (a, b) { + var indexA = order.indexOf(a.name); + var indexB = order.indexOf(b.name); + if (indexA === -1) + return 1; + if (indexB === -1) + return -1; + return indexA - indexB; + }); + }; + SceneManager.prototype.setParticleSort = function () { + var order = ['top', 'bot', 'rig', 'lef']; + this.particleEffects.sort(function (a, b) { + // console.log(a.name.substr(0,3),b.name.substr(0,3)); + var indexA = order.indexOf(a.name.substr(0, 3)); + var indexB = order.indexOf(b.name.substr(0, 3)); + if (indexA === -1) + return 1; + if (indexB === -1) + return -1; + return indexA - indexB; + }); + }; + SceneManager.prototype.setSort = function () { + this.Block_Array.sort(function (a, b) { + var _a, _b; + // 从名称中提取数字部分 + var numberA = parseInt(((_a = a.name.match(/\d+/)) === null || _a === void 0 ? void 0 : _a[0]) || '0', 10); + var numberB = parseInt(((_b = b.name.match(/\d+/)) === null || _b === void 0 ? void 0 : _b[0]) || '0', 10); + return numberA - numberB; + }); + }; + SceneManager.prototype.start = function () { + }; + SceneManager.prototype.startGame = function () { + cc.director.loadScene("HomeScene", function (err) { + if (err) { + console.error('加载 HomeScene 场景失败:', err); + } + else { + // console.log('成功切换到 HomeScene 场景'); + cc.director.loadScene("HomeScene"); + } + }); + }; + SceneManager.prototype.returnHome = function () { + if (this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl")._touch) { + if (Map_1.default._instance.gameStart == true) { + MiniGameSdk_1.MiniGameSdk.API.showToast("体力值减少"); + cc.fx.GameTool.setUserHealth(-1, function (data) { + }); + if (Map_1.default._instance.count_Time) { + var count_Time = Map_1.default._instance.count_Time; + var add_Time = Map_1.default._instance.add_Time; + var data = { + time: count_Time, + add_Time: add_Time, + result: "give_up" + }; + cc.fx.GameTool.shushu_Track("finish_stage", data); + } + } + this.node.getChildByName("Pause").getChildByName("btn").getComponent("btnControl").setTouch(false); + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.getChildByName("zhuanchang").active = true; + this.node.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + cc.director.preloadScene("HomeScene", function (err, asset) { + if (err) { + console.error('动态加载 Prefab 失败:', err); + return; + } + }); + setTimeout(function () { + cc.director.loadScene("HomeScene"); + }, 1200); + } + }; + SceneManager.prototype.destroyNodesInFrames = function (nodes, callback) { + var _this = this; + var BATCH_SIZE = 10; // 每帧销毁的节点数量 + var index = 0; + var destroyBatch = function () { + var count = 0; + while (index < nodes.length && count < BATCH_SIZE) { + var node = nodes[index]; + if (node) { + node.active = false; + } + index++; + count++; + } + if (index < nodes.length) { + _this.scheduleOnce(destroyBatch, 6); + } + else { + callback(); + } + }; + destroyBatch(); + }; + // 改进后的切换场景方法 + SceneManager.prototype.switchToEmptyScene = function () { + var allNodes = cc.director.getScene().children; + this.destroyNodesInFrames(allNodes, function () { + cc.director.loadScene("HomeScene"); + }); + }; + SceneManager.prototype.openPause = function () { + cc.fx.AudioManager._instance.playEffect("anniu_little", null); + if (this.pause.getComponent("btnControl")._touch) { + this.pause.getComponent("btnControl").setTouch(false); + this.node.getChildByName("Pause").active = true; + Map_1.default._instance.pause = true; + } + }; + SceneManager.prototype.closePause = function () { + cc.fx.AudioManager._instance.playEffect("anniu_little", null); + this.pause.getComponent("btnControl").setTouch(true); + this.node.getChildByName("Pause").active = false; + if (Map_1.default._instance.node.parent.getChildByName("Ice").active == false) { + Map_1.default._instance.pause = false; + } + }; + SceneManager.prototype.openPropBuy = function (name) { + Map_1.default._instance.pause = true; + this.btnName = name; + var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); + propWindow.active = true; + propWindow.getChildByName("freeze").active = false; + propWindow.getChildByName("hammer").active = false; + propWindow.getChildByName("magic").active = false; + propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(true); + propWindow.getChildByName(name).active = true; + }; + SceneManager.prototype.clickBtn = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + var propWindow = this.node.getChildByName("Game").getChildByName("propWindow"); + if (propWindow.getChildByName("buy_Btn").getComponent("btnControl")._touch) { + propWindow.getChildByName("buy_Btn").getComponent("btnControl").setTouch(false); + if (this.btnName == "freeze") + Map_1.default._instance.buyFreeze(); + else if (this.btnName == "hammer") + Map_1.default._instance.buyHammer(); + else if (this.btnName == "magic") + Map_1.default._instance.buyMagic(); + } + }; + //打开商店 + SceneManager.prototype.openShop = function () { + var _this = this; + // 加载 shop bundle + cc.assetManager.loadBundle('shop', function (err, bundle) { + bundle.load('prefab/shop', cc.Prefab, function (err, prefab) { + if (err) { + cc.error(err.message || err); + return; + } + if (prefab) { + var shopNode = cc.instantiate(prefab); + _this.node.addChild(shopNode); + console.log("shopNode parent:", shopNode.parent); + } + }); + }); + }; + SceneManager.prototype.closePropBuy = function () { + Map_1.default._instance.pause = false; + var freezeBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); + var hammerBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); + var magicBtn = Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); + if (this.btnName == "freeze") + freezeBtn.getComponent("btnControl").setTouch(true); + else if (this.btnName == "hammer") + hammerBtn.getComponent("btnControl").setTouch(true); + else if (this.btnName == "magic") + magicBtn.getComponent("btnControl").setTouch(true); + this.node.getChildByName("Game").getChildByName("propWindow").active = false; + }; + SceneManager.prototype.update = function (dt) { + }; + __decorate([ + property(cc.Label) + ], SceneManager.prototype, "label", void 0); + __decorate([ + property + ], SceneManager.prototype, "text", void 0); + __decorate([ + property(cc.Node) + ], SceneManager.prototype, "freeze", void 0); + __decorate([ + property(cc.Node) + ], SceneManager.prototype, "hammer", void 0); + __decorate([ + property(cc.Node) + ], SceneManager.prototype, "magic_wand", void 0); + __decorate([ + property(cc.Node) + ], SceneManager.prototype, "pause", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "方块数组" }) + ], SceneManager.prototype, "Block_Array", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "墙壁数组" }) + ], SceneManager.prototype, "Wall_Prefab", void 0); + SceneManager = __decorate([ + ccclass + ], SceneManager); + return SceneManager; +}(cc.Component)); +exports.default = SceneManager; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTY2VuZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsNkJBQWdDO0FBQ2hDLGlEQUFnRDtBQUUxQyxJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUEwQyxnQ0FBWTtJQUF0RDtRQUFBLHFFQWdTQztRQTdSRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLFVBQUksR0FBVyxPQUFPLENBQUM7UUFHdkIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixZQUFNLEdBQVksSUFBSSxDQUFDO1FBR3ZCLGdCQUFVLEdBQVksSUFBSSxDQUFDO1FBRzNCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFJdEIsaUJBQVcsR0FBcUIsRUFBRSxDQUFDO1FBR25DLGlCQUFXLEdBQXFCLEVBQUUsQ0FBQztRQUduQyx5REFBeUQ7UUFDekQsbURBQW1EO1FBRW5ELFdBQUssR0FBWSxLQUFLLENBQUM7UUFDdkIsV0FBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixXQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGFBQU8sR0FBVyxFQUFFLENBQUM7O0lBOFB6QixDQUFDO0lBMVBHLHdCQUF3QjtJQUV4Qiw2QkFBTSxHQUFOO1FBQ0ksRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWhCLFVBQVUsQ0FBQztZQUNQLEVBQUUsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxVQUFDLEdBQUc7Z0JBQ3RDLElBQUksR0FBRyxFQUFFO29CQUNMLDZDQUE2Qztv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QkFBTSxHQUFOLFVBQU8sRUFBRTtJQUVULENBQUM7SUE1UkQ7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQzsrQ0FDSTtJQUd2QjtRQURDLFFBQVE7OENBQ2M7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQztnREFDSztJQUd2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO2dEQUNLO0lBR3ZCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0RBQ1M7SUFHM0I7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzsrQ0FDSTtJQUl0QjtRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7cURBQ2Q7SUFHbkM7UUFEQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxDQUFDO3FEQUNkO0lBekJsQixZQUFZO1FBRGhDLE9BQU87T0FDYSxZQUFZLENBZ1NoQztJQUFELG1CQUFDO0NBaFNELEFBZ1NDLENBaFN5QyxFQUFFLENBQUMsU0FBUyxHQWdTckQ7a0JBaFNvQixZQUFZIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuL01hcFwiO1xyXG5pbXBvcnQgeyBNaW5pR2FtZVNkayB9IGZyb20gXCIuL1Nkay9NaW5pR2FtZVNka1wiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjZW5lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLkxhYmVsKVxyXG4gICAgbGFiZWw6IGNjLkxhYmVsID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHlcclxuICAgIHRleHQ6IHN0cmluZyA9ICdoZWxsbyc7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBmcmVlemU6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgaGFtbWVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG1hZ2ljX3dhbmQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgcGF1c2U6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLmlrnlnZfmlbDnu4RcIiB9KVxyXG4gICAgQmxvY2tfQXJyYXk6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBbY2MuUHJlZmFiXSwgdG9vbHRpcDogXCLlopnlo4HmlbDnu4RcIiB9KVxyXG4gICAgV2FsbF9QcmVmYWI6IEFycmF5PGNjLlByZWZhYj4gPSBbXTtcclxuXHJcbiAgICBwYXJ0aWNsZUVmZmVjdHM6IGNjLlBhcnRpY2xlQXNzZXRbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7dHlwZTogW2NjLlBhcnRpY2xlU3lzdGVtXSwgdG9vbHRpcDpcIueykuWtkOaVsOe7hFwifSlcclxuICAgIC8vIHBhcnRpY2xlRWZmZWN0cyA6IEFycmF5PGNjLlBhcnRpY2xlU3lzdGVtPiA9IFtdO1xyXG5cclxuICAgIGxvYWQxOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsb2FkMjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbG9hZDM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGJ0bk5hbWU6IHN0cmluZyA9ICcnO1xyXG4gICAgY2FsbEJhY2s6IGFueTtcclxuXHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgb25Mb2FkKCkge1xyXG4gICAgICAgIGNjLmdhbWUuc2V0RnJhbWVSYXRlKDYzKTtcclxuICAgICAgICB0aGlzLmNoYW5nZUJnKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5wcmVsb2FkU2NlbmUoXCJIb21lU2NlbmVcIiwgKGVycikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnNvbGUuZXJyb3IoJ+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ+aIkOWKn+mihOWKoOi9vSBIb21lU2NlbmUg5Zy65pmvJyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sIDEwMDApO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ2VCZygpIHtcclxuICAgICAgICBsZXQgbnVtYmVyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogOCkgKyAxO1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnYmcvYmcnICsgbnVtYmVyO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkKHBhdGgsIGNjLlNwcml0ZUZyYW1lLCAoZXJyLCBzcHJpdGVGcmFtZTogY2MuU3ByaXRlRnJhbWUpID0+IHtcclxuICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcign5Yqo5oCB5Yqg6L296IOM5pmv5Zu+5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJnXCIpLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICBsb2FkUGFydGljbGVFZmZlY3RzKCkge1xyXG4gICAgICAgIGNvbnN0IHBhdGggPSAnUGFydGljbGUnO1xyXG4gICAgICAgIGNjLnJlc291cmNlcy5sb2FkRGlyKHBhdGgsIGNjLlBhcnRpY2xlQXNzZXQsIChlcnIsIGFzc2V0czogY2MuUGFydGljbGVBc3NldFtdKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9veeykuWtkOeJueaViOWksei0pTonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBhcnRpY2xlRWZmZWN0cyA9IGFzc2V0cztcclxuICAgICAgICAgICAgdGhpcy5zZXRQYXJ0aWNsZVNvcnQoKTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkMyA9IHRydWU7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ+eykuWtkOeJueaViOWKoOi9veaIkOWKn++8jOWFseWKoOi9veS6hicsIHRoaXMucGFydGljbGVFZmZlY3RzLmxlbmd0aCwgJ+S4queykuWtkOeJueaViCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFdhbGxQcmVmYWJTb3J0KCkge1xyXG4gICAgICAgIGNvbnN0IG9yZGVyID0gWydkb3duJywgJ2Rvd25MZWZ0JywgJ2Rvd25SaWdodCcsICdsZWZ0JywgJ3JpZ2h0JywgJ3VwJywgJ3VwTGVmdCcsICd1cFJpZ2h0J107XHJcbiAgICAgICAgdGhpcy5XYWxsX1ByZWZhYi5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QSA9IG9yZGVyLmluZGV4T2YoYS5uYW1lKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhBID09PSAtMSkgcmV0dXJuIDE7XHJcbiAgICAgICAgICAgIGlmIChpbmRleEIgPT09IC0xKSByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIHJldHVybiBpbmRleEEgLSBpbmRleEI7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHNldFBhcnRpY2xlU29ydCgpIHtcclxuICAgICAgICBjb25zdCBvcmRlciA9IFsndG9wJywgJ2JvdCcsICdyaWcnLCAnbGVmJ107XHJcbiAgICAgICAgdGhpcy5wYXJ0aWNsZUVmZmVjdHMuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhhLm5hbWUuc3Vic3RyKDAsMyksYi5uYW1lLnN1YnN0cigwLDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gb3JkZXIuaW5kZXhPZihhLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgY29uc3QgaW5kZXhCID0gb3JkZXIuaW5kZXhPZihiLm5hbWUuc3Vic3RyKDAsIDMpKTtcclxuICAgICAgICAgICAgaWYgKGluZGV4QSA9PT0gLTEpIHJldHVybiAxO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXhCID09PSAtMSkgcmV0dXJuIC0xO1xyXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFNvcnQoKSB7XHJcbiAgICAgICAgdGhpcy5CbG9ja19BcnJheS5zb3J0KChhLCBiKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOS7juWQjeensOS4reaPkOWPluaVsOWtl+mDqOWIhlxyXG4gICAgICAgICAgICBjb25zdCBudW1iZXJBID0gcGFyc2VJbnQoYS5uYW1lLm1hdGNoKC9cXGQrLyk/LlswXSB8fCAnMCcsIDEwKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtYmVyQiA9IHBhcnNlSW50KGIubmFtZS5tYXRjaCgvXFxkKy8pPy5bMF0gfHwgJzAnLCAxMCk7XHJcbiAgICAgICAgICAgIHJldHVybiBudW1iZXJBIC0gbnVtYmVyQjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnRHYW1lKCkge1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKoOi9vSBIb21lU2NlbmUg5Zy65pmv5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygn5oiQ5Yqf5YiH5o2i5YiwIEhvbWVTY2VuZSDlnLrmma8nKTtcclxuICAgICAgICAgICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkhvbWVTY2VuZVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm5Ib21lKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICBpZiAoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmdhbWVTdGFydCA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KFwi5L2T5Yqb5YC85YeP5bCRXCIpO1xyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2V0VXNlckhlYWx0aCgtMSwgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgIH0pXHJcbjw8PDw8PDwgSEVBRFxyXG4gICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWUpe1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb3VudF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmNvdW50X1RpbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGFkZF9UaW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLmFkZF9UaW1lO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aW1lOmNvdW50X1RpbWUsICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9UaW1lOmFkZF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ6XCJnaXZlX3VwXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbj09PT09PT1cclxuICAgICAgICAgICAgICAgIGxldCBkYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWU6IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5jb3VudF9UaW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGFkZF9UaW1lOiBNYXBDb25yb2xlci5faW5zdGFuY2UuYWRkX1RpbWUsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0OiBcImdpdmVfdXBcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgY2MuZnguR2FtZVRvb2wuc2h1c2h1X1RyYWNrKFwiZmluaXNoX3N0YWdlXCIsIGRhdGEpO1xyXG4+Pj4+Pj4+IDBhMzFhN2E1YWJjMmM1MDViZjc0M2FhNTk2ZTFjNzY1YTA0MDUxNTJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKGZhbHNlKTtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiemh1YW4xXCIsIG51bGwpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ6aHVhbmNoYW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpodWFuY2hhbmdcIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMSwgXCJ1cFwiLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnByZWxvYWRTY2VuZShcIkhvbWVTY2VuZVwiLCAoZXJyLCBhc3NldCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+WKqOaAgeWKoOi9vSBQcmVmYWIg5aSx6LSlOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiSG9tZVNjZW5lXCIpO1xyXG4gICAgICAgICAgICB9LCAxMjAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGRlc3Ryb3lOb2Rlc0luRnJhbWVzKG5vZGVzOiBjYy5Ob2RlW10sIGNhbGxiYWNrOiAoKSA9PiB2b2lkKSB7XHJcbiAgICAgICAgY29uc3QgQkFUQ0hfU0laRSA9IDEwOyAvLyDmr4/luKfplIDmr4HnmoToioLngrnmlbDph49cclxuICAgICAgICBsZXQgaW5kZXggPSAwO1xyXG5cclxuICAgICAgICBjb25zdCBkZXN0cm95QmF0Y2ggPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IG5vZGVzLmxlbmd0aCAmJiBjb3VudCA8IEJBVENIX1NJWkUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpbmRleF07XHJcbiAgICAgICAgICAgICAgICBpZiAobm9kZSkge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaW5kZXgrKztcclxuICAgICAgICAgICAgICAgIGNvdW50Kys7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IG5vZGVzLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU9uY2UoZGVzdHJveUJhdGNoLCA2KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBkZXN0cm95QmF0Y2goKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyDmlLnov5vlkI7nmoTliIfmjaLlnLrmma/mlrnms5VcclxuICAgIHN3aXRjaFRvRW1wdHlTY2VuZSgpIHtcclxuICAgICAgICBjb25zdCBhbGxOb2RlcyA9IGNjLmRpcmVjdG9yLmdldFNjZW5lKCkuY2hpbGRyZW47XHJcbiAgICAgICAgdGhpcy5kZXN0cm95Tm9kZXNJbkZyYW1lcyhhbGxOb2RlcywgKCkgPT4ge1xyXG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJIb21lU2NlbmVcIik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb3BlblBhdXNlKCkge1xyXG4gICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImFubml1X2xpdHRsZVwiLCBudWxsKTtcclxuICAgICAgICBpZiAodGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLl90b3VjaCkge1xyXG4gICAgICAgICAgICB0aGlzLnBhdXNlLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJQYXVzZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgY2xvc2VQYXVzZSgpIHtcclxuICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnBsYXlFZmZlY3QoXCJhbm5pdV9saXR0bGVcIiwgbnVsbCk7XHJcbiAgICAgICAgdGhpcy5wYXVzZS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIlBhdXNlXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGlmIChNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJJY2VcIikuYWN0aXZlID09IGZhbHNlKSB7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuUHJvcEJ1eShuYW1lKSB7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnBhdXNlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmJ0bk5hbWUgPSBuYW1lO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImhhbW1lclwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKFwibWFnaWNcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgcHJvcFdpbmRvdy5nZXRDaGlsZEJ5TmFtZShcImJ1eV9CdG5cIikuZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBwcm9wV2luZG93LmdldENoaWxkQnlOYW1lKG5hbWUpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tCdG4oKSB7XHJcbiAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwiYW5uaXVfQmlnXCIsIG51bGwpO1xyXG4gICAgICAgIGxldCBwcm9wV2luZG93ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiR2FtZVwiKS5nZXRDaGlsZEJ5TmFtZShcInByb3BXaW5kb3dcIik7XHJcbiAgICAgICAgaWYgKHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuX3RvdWNoKSB7XHJcbiAgICAgICAgICAgIHByb3BXaW5kb3cuZ2V0Q2hpbGRCeU5hbWUoXCJidXlfQnRuXCIpLmdldENvbXBvbmVudChcImJ0bkNvbnRyb2xcIikuc2V0VG91Y2goZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpXHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuYnV5RnJlZXplKCk7XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eUhhbW1lcigpO1xyXG4gICAgICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKVxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmJ1eU1hZ2ljKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy/miZPlvIDllYblupdcclxuICAgIG9wZW5TaG9wKCkge1xyXG4gICAgICAgIC8vIOWKoOi9vSBzaG9wICBidW5kbGVcclxuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZEJ1bmRsZSgnc2hvcCcsIChlcnI6IEVycm9yLCBidW5kbGU6IGNjLkFzc2V0TWFuYWdlci5CdW5kbGUpID0+IHtcclxuICAgICAgICAgICAgYnVuZGxlLmxvYWQoJ3ByZWZhYi9zaG9wJywgY2MuUHJlZmFiLCAoZXJyOiBFcnJvciwgcHJlZmFiOiBjYy5QcmVmYWIpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChlcnIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYy5lcnJvcihlcnIubWVzc2FnZSB8fCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChwcmVmYWIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaG9wTm9kZSA9IGNjLmluc3RhbnRpYXRlKHByZWZhYik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmFkZENoaWxkKHNob3BOb2RlKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcInNob3BOb2RlIHBhcmVudDpcIiwgc2hvcE5vZGUucGFyZW50KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGNsb3NlUHJvcEJ1eSgpIHtcclxuICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UucGF1c2UgPSBmYWxzZTtcclxuICAgICAgICBsZXQgZnJlZXplQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwidGltZUJ0blwiKTtcclxuICAgICAgICBsZXQgaGFtbWVyQnRuID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKTtcclxuICAgICAgICBsZXQgbWFnaWNCdG4gPSBNYXBDb25yb2xlci5faW5zdGFuY2Uubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJCb3R0b21cIikuZ2V0Q2hpbGRCeU5hbWUoXCJtYWdpY0J0blwiKTtcclxuICAgICAgICBpZiAodGhpcy5idG5OYW1lID09IFwiZnJlZXplXCIpIGZyZWV6ZUJ0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMuYnRuTmFtZSA9PSBcImhhbW1lclwiKSBoYW1tZXJCdG4uZ2V0Q29tcG9uZW50KFwiYnRuQ29udHJvbFwiKS5zZXRUb3VjaCh0cnVlKTtcclxuICAgICAgICBlbHNlIGlmICh0aGlzLmJ0bk5hbWUgPT0gXCJtYWdpY1wiKSBtYWdpY0J0bi5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG5cclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJHYW1lXCIpLmdldENoaWxkQnlOYW1lKFwicHJvcFdpbmRvd1wiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZHQpIHtcclxuXHJcbiAgICB9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -7905,1922 +5531,1922 @@ cc._RF.pop(); cc._RF.push(module, '2234assp7RIvpDgrnqljp2R', 'Map'); // Script/Map.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var GameManager_1 = require("./GameManager"); -var NumberToImage_1 = require("./NumberToImage"); -var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var MapConroler = /** @class */ (function (_super) { - __extends(MapConroler, _super); - function MapConroler() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.Block_Array = []; - _this.Block_Prop = []; - _this.MapBlockPrefab = null; - _this.Block_Color = []; - _this.Wall_Prefab = []; - _this.wallTurnPrefab = null; - _this.timeBtn = null; - _this.destroyBtn = null; - _this.magicBtn = null; - _this.mask = null; - _this.iceLabel = null; - _this.hammerLabel = null; - _this.magicLabel = null; - _this.magicMask = null; - _this.hammerMask = null; - _this.freezeMask = null; - _this.coinPop = null; - _this.timeLabel = null; - _this.levelLabel = null; - _this.new_mode = 0; - _this.mapWidth = 0; - _this.mapHeight = 0; - _this.wallNum = 0; - _this.blockNum = 0; - _this.homeCanTouch = true; //按钮可用状态 - _this.againCanTouch = true; //重玩按钮可以用状态 - _this.gameOver = false; //游戏结束状态 - _this.gameWin = false; //游戏胜利状态 - _this.gameStart = false; //游戏开始状态 - _this.timeNumber = 0; //游戏时间 用于倒计时 - _this.count_Time = 0; //用于统计总游戏时长 - _this.add_Time = 0; //复活时间 - _this.pause = false; //暂停状态 - _this.hammer = false; //锤子状态 - return _this; - } - MapConroler_1 = MapConroler; - // mapInfo: number[][] = []; - MapConroler.prototype.onLoad = function () { - var _this = this; - cc.fx.GameConfig.GM_INFO.review = 0; - cc.fx.GameConfig.GM_INFO.gameState = true; - this.mask.opacity = 0; - this.node.getChildByName("Adhesive").zIndex = 500; - cc.game.setFrameRate(63); - cc.fx.AudioManager._instance.playEffect("zhuan2", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false); - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener(function (entry) { - if (entry.animation.name === "down") { - // 动画播放结束后执行的逻辑 - _this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; - } - }); - this.blocks = []; - this.leftDoors = []; //左门 - this.rightDoors = []; //右门 - this.topDoors = []; //上门 - this.bottomDoors = []; //下门 - this.gameWin = false; - this.gameOver = false; - this.gameStart = false; - this.homeCanTouch = true; - this.againCanTouch = true; - this.new_mode = 0; - this.count_Time = 0; - this.add_Time = 0; - this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); - this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); - this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); - // cc.game.addPersistRootNode(this.node); - MapConroler_1._instance = this; - }; - MapConroler.prototype.start = function () { - setTimeout(function () { - cc.director.preloadScene("HomeScene", function (err, asset) { - if (err) { - console.error('动态加载 HomeScene 失败:', err); - return; - } - }); - }, 1000); - // console.log("进入GameScene"); - this.Block_Array = GameManager_1.default._instance.Block_Array; - this.Wall_Prefab = GameManager_1.default._instance.Wall_Prefab; - this.Block_Color = GameManager_1.default._instance.Block_Color; - // this.particleEffects = GameManager._instance.particleEffects; - this.initMap(); - }; - MapConroler.prototype.startUpdate = function () { - if (this.gameStart == false) { - this.gameStart = true; - //发送数数事件——进入关卡 - console.log("准备进入下一关,发送下一关进入"); - cc.fx.GameTool.shushu_Track("enter_stage"); - this.startTimeCutDown(); - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].getComponent("Block").type == 6) { - this.blocks[i].getChildByName("boom").getComponent("Boom").startBoom(); - } - } - } - }; - MapConroler.prototype.initMap = function () { - // this.node.getChildByName("Wall").zIndex = 10; - this.timeLabel = this.node.parent.getChildByName("Top").getChildByName("time"); - this.levelLabel = this.node.parent.getChildByName("Top").getChildByName("level"); - this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time; - this.count_Time = 0; - this.add_Time = 0; - NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); - // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); - // this.timeLabel.string = timeTemp.toString(); - NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 50, 20, "level_", this.levelLabel, false); - //this.startTimeCutDown(); - this.mapWidth = cc.fx.GameConfig.LEVEL_INFO[0].map[0]; - this.mapHeight = cc.fx.GameConfig.LEVEL_INFO[0].map[1]; - var gap = cc.fx.GameConfig.LEVEL_INFO[0].gap; - var risefall = cc.fx.GameConfig.LEVEL_INFO[0].risefall; - this.pause = false; - this.hammer = false; - this.wallNum = 0; - this.setMapInfo(); - this.blocks = []; - this.mapBlocksWall = []; - this.mapInfo = []; - this.wallInfo = []; - this.openWall = []; - this.wallArray = []; - this.freezeWall = []; - this.riseFallBlcok = []; - this.mapBlockArray = []; - this.freezeArray = []; - this.loackArray = []; - this.count_Time = 0; - this.add_Time = 0; - var startX = this.mapWidth % 2 == 0 ? -(this.mapWidth - 1) * 60 : -(this.mapWidth - 1) * 60; - var startY = this.mapHeight % 2 == 0 ? -(this.mapHeight - 1) * 60 : -(this.mapHeight - 1) * 60; - // startX =(this.mapWidth-1)*60 + 60; - // startY =-(this.mapHeight-1)*60 - 60; - for (var i = 0; i < this.mapWidth; i++) { - this.mapBlocksWall[i] = []; - for (var j = 0; j < this.mapHeight; j++) { - var block = cc.instantiate(this.MapBlockPrefab); - block.parent = this.node.getChildByName("mapBlock"); - block.getComponent("MapBlock").init(i, j); - // block.getChildByName("num").getComponent(cc.Label).string = i + ":" + j; - block.setPosition(cc.v2(startX + i * 120, startY + j * 120)); - if (risefall != null) { - if (this.mapRiseFall(cc.v2(i, j), risefall, block)) { - this.riseFallBlcok.push(block); - } - } - if (gap != null) { - if (!this.mapGap(cc.v2(i, j), gap) || i == 0 || i == this.mapWidth - 1 - || j == 0 || j == this.mapHeight - 1) { - block.opacity = 254; - block.removeComponent(cc.Sprite); - block.removeAllChildren(); - this.wallInfo.push(block); - } - else - this.mapInfo.push(block); - } - else { - if (i == 0 || i == this.mapWidth - 1 - || j == 0 || j == this.mapHeight - 1) { - block.opacity = 254; - block.removeComponent(cc.Sprite); - block.removeAllChildren(); - this.wallInfo.push(block); - } - else - this.mapInfo.push(block); - } - this.mapBlocksWall[i].push(block); - } - } - this.wallInit(); - this.blockInit(); - }; - //创建方块 - // ... 已有代码 ... - //创建方块 - // ... 已有代码 ... - MapConroler.prototype.blockInit = function () { - var _this = this; - var blockArray = cc.fx.GameConfig.BLOCK_INFO[0]; - blockArray = this.sortBlock(blockArray); - console.log("创建方块", blockArray); - var index = 0; // 当前要创建的方块索引 - var BLOCKS_PER_FRAME = 1; // 初始每帧创建的方块数量 - var MAX_PER_FRAME = 10; // 每帧最大创建数量 - var MIN_PER_FRAME = 1; // 每帧最小创建数量 - var createBlocks = function () { - var startTime = performance.now(); - var _loop_1 = function (i) { - var blockInfo = blockArray[index]; - // 缓存 Block_Array 访问 - var blockPrefab = _this.Block_Array[blockInfo.block]; - var block = cc.instantiate(blockPrefab); - block.parent = _this.node; - block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y)); - if (blockInfo.block != 23) { - _this.blockNum += 1; - _this.blocks.push(block); - if (blockInfo.type == 1) { - var info = { - id: blockInfo.id + 1, - block: blockInfo.block, - color: blockInfo.stacking, - type: 10, - position: blockInfo.position, - stacking: blockInfo.color - }; - // 缓存 Block_Array 访问 - var blockUpPrefab = _this.Block_Array[info.block]; - var blockUp = cc.instantiate(blockUpPrefab); - blockUp.parent = _this.node; - blockUp.setPosition(cc.v2(info.position.x, info.position.y)); - _this.blocks.push(blockUp); - block.getComponent("Block").init(blockInfo, null, null, blockUp); - blockUp.getComponent("Block").init(info, null, null, block); - _this.blockNum += 1; - } - else if (blockInfo.type == 9) { - if (blockInfo.adhesiveTime < 2) { - index++; - return "continue"; - } - index++; - var info_1 = blockArray[index]; - // 缓存 Block_Array 访问 - var blockUpPrefab = _this.Block_Array[info_1.block]; - var blockUp_1 = cc.instantiate(blockUpPrefab); - blockUp_1.parent = _this.node; - blockUp_1.setPosition(cc.v2(info_1.position.x, info_1.position.y)); - _this.blocks.push(blockUp_1); - block.getComponent("Block").init(blockInfo, null, null, blockUp_1, false); - setTimeout(function () { - blockUp_1.getComponent("Block").init(info_1, null, null, block, true); - }, 100); - _this.blockNum += 1; - } - else { - block.getComponent("Block").init(blockInfo); - } - } - else { - block.getComponent("Barrier").init(blockInfo); - } - index++; - }; - for (var i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) { - _loop_1(i); - } - var endTime = performance.now(); - var frameTime = endTime - startTime; - // 如果当前帧执行时间过长,减少每帧创建数量 - if (frameTime > 16) { - BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME); - } - else { - BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME); - } - // 如果还有方块未创建,下一帧继续创建 - if (index < blockArray.length) { - // 使用 scheduleOnce 在下一帧执行 createBlocks - _this.scheduleOnce(function () { - createBlocks(); - }, 0); - } - else { - } - }; - // 开始分帧创建方块 - createBlocks(); - }; - //给创建方块排序,用来降低drawcall 合批 - MapConroler.prototype.sortBlock = function (allBlocks) { - return allBlocks.sort(function (a, b) { - // 先处理 type 为 1 的情况,将其放到最后 - if (a.type === 1 && b.type !== 1) { - return 1; - } - if (a.type !== 1 && b.type === 1) { - return -1; - } - // 对 type 不为 0 的元素按 type 排序 - if (a.type !== 0 && b.type !== 0) { - return a.type - b.type; - } - if (a.type !== 0 && b.type === 0) { - return 1; - } - if (a.type === 0 && b.type !== 0) { - return -1; - } - // 再处理 block 为 23 的情况,将其放到最前面 - if (a.block === 23 && b.block !== 23) { - return -1; - } - if (a.block !== 23 && b.block === 23) { - return 1; - } - // 其余按 color 升序排列 - return a.color - b.color; - }); - }; - //创建墙壁 - MapConroler.prototype.wallInit = function () { - var _this = this; - var index = 0; // 当前要创建的墙壁索引 - var WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量 - var MAX_PER_FRAME = 10; // 每帧最大创建数量 - var MIN_PER_FRAME = 1; // 每帧最小创建数量 - var createWalls = function () { - var startTime = performance.now(); - for (var i = 0; i < WALLS_PER_FRAME && index < _this.wallInfo.length; i++) { - var block = _this.wallInfo[index]; - var dir = _this.getWllDiraction("wall", cc.v2(block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY)); - if (dir != null) { - _this.createWall(dir, block); - } - index++; - } - var endTime = performance.now(); - var frameTime = endTime - startTime; - // 如果当前帧执行时间过长,减少每帧创建数量 - if (frameTime > 16) { - WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME); - } - else { - WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME); - } - // 如果还有墙壁未创建,下一帧继续创建 - if (index < _this.wallInfo.length) { - _this.scheduleOnce(function () { - createWalls(); - }, 0); - } - else { - // 所有墙壁创建完成后,创建拐角节点 - _this.createCornerNodes(); - } - }; - // 开始分帧创建墙壁 - createWalls(); - }; - // ... 已有代码 ... - MapConroler.prototype.getWllDiraction = function (type, pointA) { - var dir = []; - var pointB = cc.v2(pointA.x + 1, pointA.y); - var pointC = cc.v2(pointA.x - 1, pointA.y); - var pointD = cc.v2(pointA.x, pointA.y + 1); - var pointE = cc.v2(pointA.x, pointA.y - 1); - var opacity = 0; - if (type == "wall") - opacity = 255; - if (type == "turn") - opacity = 250; - if (pointB.x < this.mapWidth) { - if (this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity) { - if (type == "turn" && this.mapBlocksWall[pointB.x][pointB.y].getComponent("MapBlock").direction == "right") { - } - else - dir.push("right"); - } - } - if (pointC.x >= 0) { - if (this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity) { - if (type == "turn" && this.mapBlocksWall[pointC.x][pointC.y].getComponent("MapBlock").direction == "left") { - } - else - dir.push("left"); - } - } - if (pointD.y < this.mapHeight) { - if (this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity) { - if (type == "turn" && this.mapBlocksWall[pointD.x][pointD.y].getComponent("MapBlock").direction == "up") { - } - else - dir.push("up"); - } - } - if (pointE.y >= 0) { - if (this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity) { - if (type == "turn" && this.mapBlocksWall[pointE.x][pointE.y].getComponent("MapBlock").direction == "down") { - } - else - dir.push("down"); - } - } - if (dir.length > 2) { - return null; - } - if (dir.length == 1) { - if (type == "wall") - return dir[0]; - else - return null; - } - else if (dir.length == 2) { - return dir[0] + dir[1]; - } - }; - MapConroler.prototype.createCornerNodes = function () { - // 定义拐角位置 - for (var i = 0; i < this.wallInfo.length; i++) { - var block = this.wallInfo[i]; - if (block.opacity != 250) { - var dir = this.getWllDiraction("turn", cc.v2(block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY)); - if (dir != null) { - this.createTurn(dir, block, block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY); - } - } - } - }; - MapConroler.prototype.createWall = function (direction, node) { - var wall = null; - node.getComponent("MapBlock").setDiraction(direction); - switch (direction) { - case "right": - node.opacity = 250; - wall = cc.instantiate(this.Wall_Prefab[4]); - this.leftDoors.push(wall); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - node.opacity = 250; - wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.getChildByName("wall")); - this.wallNum += 1; - if (wall.getChildByName("wall").getComponent("Wall").special == 2) - this.openWall.push(wall); - else if (wall.getChildByName("wall").getComponent("Wall").special == 3) - this.freezeWall.push(wall); - break; - case "left": - node.opacity = 250; - wall = cc.instantiate(this.Wall_Prefab[3]); - // wall.parent = this.node.getChildByName("Wall"); - this.rightDoors.push(wall); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - this.setDoorInfo(wall.getChildByName("wall")); - //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.wallNum += 1; - if (wall.getChildByName("wall").getComponent("Wall").special == 2) - this.openWall.push(wall); - else if (wall.getChildByName("wall").getComponent("Wall").special == 3) - this.freezeWall.push(wall); - break; - case "up": - node.opacity = 250; - wall = cc.instantiate(this.Wall_Prefab[5]); - this.topDoors.push(wall); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - this.setDoorInfo(wall.getChildByName("wall")); - //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.wallNum += 1; - if (wall.getChildByName("wall").getComponent("Wall").special == 2) - this.openWall.push(wall); - else if (wall.getChildByName("wall").getComponent("Wall").special == 3) - this.freezeWall.push(wall); - break; - case "down": - node.opacity = 250; - wall = cc.instantiate(this.Wall_Prefab[0]); - this.bottomDoors.push(wall); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - // this.setDoorInfo(wall.getChildByName("wall")); - wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - this.setDoorInfo(wall.getChildByName("wall")); - //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.wallNum += 1; - if (wall.getChildByName("wall").getComponent("Wall").special == 2) - this.openWall.push(wall); - else if (wall.getChildByName("wall").getComponent("Wall").special == 3) - this.freezeWall.push(wall); - break; - case "upright": - case "rightup": - node.opacity = 249; - wall = cc.instantiate(this.Wall_Prefab[7]); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[0]); - this.wallNum += 1; - //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[1]); - this.wallNum += 1; - break; - case "upleft": - case "leftup": - node.opacity = 249; - wall = cc.instantiate(this.Wall_Prefab[6]); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[0]); - this.wallNum += 1; - //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[1]); - this.wallNum += 1; - break; - case "downright": - case "rightdown": - node.opacity = 249; - wall = cc.instantiate(this.Wall_Prefab[2]); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[0]); - this.wallNum += 1; - //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[1]); - this.wallNum += 1; - break; - case "downleft": - case "leftdown": - node.opacity = 249; - wall = cc.instantiate(this.Wall_Prefab[1]); - // wall.parent = this.node.getChildByName("Wall"); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); - //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[0]); - this.wallNum += 1; - //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); - this.setDoorInfo(wall.children[1]); - this.wallNum += 1; - break; - } - // if(wallTurn){ - // wallTurn.getComponent("wallTunr").init(wall); - // } - }; - MapConroler.prototype.setDoorInfo = function (wall) { - var doorInfo = cc.fx.GameConfig.WALL_INFO[0]; - if (doorInfo) { - for (var j = 0; j < doorInfo.length; j++) { - if (doorInfo[j].num == this.wallNum) { - wall.getComponent("Wall").init(doorInfo[j], null, null, null); - this.wallArray.push(wall.parent); - } - } - } - }; - MapConroler.prototype.createTurn = function (direction, node, posX, posY) { - var wall = null; - wall = cc.instantiate(this.wallTurnPrefab); - wall.parent = this.node; - wall.setPosition(cc.v2(node.x, node.y)); - switch (direction) { - case "upright": - case "rightup": - wall.angle = 0; - wall.getChildByName("icon").angle = 0; - break; - case "upleft": - case "leftup": - wall.angle = 90; - wall.getChildByName("icon").angle = -90; - wall.getChildByName("icon").y += 5; - wall.getChildByName("icon").x -= 1.3; - break; - case "downright": - case "rightdown": - wall.angle = 270; - wall.getChildByName("icon").angle = -270; - wall.getChildByName("icon").x += 2.5; - wall.getChildByName("icon").y += 1; - break; - case "downleft": - case "leftdown": - wall.angle = 180; - wall.getChildByName("icon").angle = -180; - wall.getChildByName("icon").x += 4.5; - wall.getChildByName("icon").y += 3.2; - break; - } - // if(direction == "rightdown" || direction == "downright") { - // wall.zIndex = 50 + posX - posY*3; - // } - // else - // wall.zIndex = 50 + posX - posY*3; - if (direction == "up" || direction == "leftup" || direction == "upleft") { - wall.zIndex = 100 + posX - posY * 3; - } - else if (direction == "rightup" || direction == "upright" || direction == "rightdown" || direction == "downright" || direction == "downleft") { - wall.zIndex = 30 + posX - posY * 3; - } - else if (direction == "left" || direction == "leftdown") { - wall.zIndex = 70 + posX - posY * 3; - } - else - wall.zIndex = 70 + posX - posY * 3; - // wall.getChildByName("num").angle = -wall.angle; - //wall.getChildByName("num").getComponent(cc.Label).string = direction; - //wall.getChildByName("num").getComponent(cc.Label).string = wall.zIndex+ ""; - // console.log(posX,posY,wall.zIndex); - // this.wallNum += 1; - // wall.getChildByName("num").getComponent(cc.Label).string = this.wallNum + ""; - }; - //地图底块缺口判断 - MapConroler.prototype.mapGap = function (point, gap) { - for (var i = 0; i < gap.length; i++) { - if (point.x == gap[i].x && point.y == gap[i].y) { - return false; - } - } - return true; - }; - //升降地块判断 - MapConroler.prototype.mapRiseFall = function (point, risefall, block) { - for (var i = 0; i < risefall.length; i++) { - if (point.x == risefall[i].pos.x && point.y == risefall[i].pos.y) { - block.getChildByName("risefall").active = true; - block.getChildByName('risefall').getChildByName("color").getComponent(cc.Label).string = risefall[i].color + ""; - block.getChildByName('risefall').addComponent(cc.BoxCollider); - block.getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110); - return true; - } - } - return false; - }; - //升降地块 - MapConroler.prototype.changeRiseFall = function (color, down) { - color = color.toString(); - for (var i = 0; i < this.riseFallBlcok.length; i++) { - if (color == this.riseFallBlcok[i].getChildByName("risefall").getChildByName("color").getComponent(cc.Label).string) { - if (down) { - this.riseFallBlcok[i].getChildByName("risefall").active = false; - this.riseFallBlcok[i].getChildByName('risefall').removeComponent(cc.BoxCollider); - } - else { - this.riseFallBlcok[i].getChildByName("risefall").active = true; - this.riseFallBlcok[i].getChildByName('risefall').addComponent(cc.BoxCollider); - this.riseFallBlcok[i].getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110); - } - } - } - }; - //查询叠加快id - MapConroler.prototype.foundDownBlock = function (id) { - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].getComponent("Block").blockId == id) { - return this.blocks[i]; - } - } - return null; - }; - //删除块 - MapConroler.prototype.removeBlock = function (id) { - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].getComponent("Block").blockId == id) { - return this.blocks[i]; - } - } - return null; - }; - MapConroler.prototype.getMinAndMax = function (block) { - var width = Math.floor(block.width / 120); - var height = Math.floor(block.height / 120); - var minX = width; - var maxX = this.mapWidth - 2; - var minY = 1; - var maxY = this.mapHeight - 2 - height + 1; - if (block.name == "block10") { - minX = width - 1; - if (this.mapWidth > 3) - maxX = maxX - 1; - } - else if (block.name == "block11") { - minX = width - 2; - if (this.mapWidth > 3) - maxX = maxX - 2; - } - else if (block.name == "block14") { - minX = width - 1; - maxX = maxX - 1; - } - else if (block.name == "block16") { - minX = width - 1; - maxX = maxX - 1; - } - else if (block.name == "block18") { - minX = width - 1; - maxX = maxX - 1; - } - else if (block.name == "block21") { - minX = width - 1; - maxX = maxX - 1; - } - return { minX: minX, maxX: maxX, minY: minY, maxY: maxY }; - }; - //检测落点是否可以消除 - MapConroler.prototype.checkPass = function (node, blocks) { - var minAndMax = this.getMinAndMax(node); - var minX = minAndMax.minX; - var maxX = minAndMax.maxX; - var minY = minAndMax.minY; - var maxY = minAndMax.maxY; - var nodePos = cc.v2(node.getComponent("Block").posX, node.getComponent("Block").posY); - // 获取地图边界信息 - var allBlocks = []; - for (var i = 0; i < blocks.length; i++) { - allBlocks.push(cc.v2(nodePos.x + blocks[i].x, nodePos.y + blocks[i].y)); - } - // const date1 = new Date().getTime(); - // console.log("将小块放入数组的时间",date1); - var jg = -1; - var pz = 0; - // 获取所有墙壁节点 - // let wall = this.node; - var direction = this.checkDiraction(allBlocks, maxX, maxY); - // 判断方块是否在地图边缘 - if (nodePos.x <= minX || direction[0] == true) { - // const date2 = new Date().getTime(); - // console.log("碰到左边缘",date2); - pz += 1; - var leftWalls = []; - for (var i = 0; i < this.leftDoors.length; i++) { - var wallLeft = this.leftDoors[i].getChildByName("wall"); - var wallPos = cc.v2(wallLeft.getComponent("Wall").posX, wallLeft.getComponent("Wall").posY); - for (var i_1 = 0; i_1 < allBlocks.length; i_1++) { - if (allBlocks[i_1].y == wallPos.y && allBlocks[i_1].x > wallPos.x) { - // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); - leftWalls.push(wallLeft); - } - } - } - // console.log("得到左边墙壁数组",date6); - if (leftWalls.length != 0) { - var result = this.detectingBlock("left", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); - if (result == true) - result = this.passWall(result, leftWalls, node); - // console.log("碰到左边缘结果:",jg); - if (result) { - this.blockNum -= 1; - this.special_Treatment(node); - jg = 2; - this.createParticle(node, jg); - return jg; - } - } - } - if (nodePos.x >= maxX || direction[1] == true) { - // const date3 = new Date().getTime(); - // console.log("碰到右边缘",date3); - pz += 1; - var rightWalls = []; - for (var i = 0; i < this.rightDoors.length; i++) { - var wallRight = this.rightDoors[i].getChildByName("wall"); - var wallPos = cc.v2(wallRight.getComponent("Wall").posX, wallRight.getComponent("Wall").posY); - for (var i_2 = 0; i_2 < allBlocks.length; i_2++) { - if (allBlocks[i_2].y == wallPos.y && allBlocks[i_2].x < wallPos.x) { - // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); - rightWalls.push(wallRight); - } - } - } - if (rightWalls.length != 0) { - var result = this.detectingBlock("right", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); - if (result == true) - result = this.passWall(result, rightWalls, node); - // console.log("碰到右边缘结果:",jg); - if (result) { - this.blockNum -= 1; - this.special_Treatment(node); - jg = 3; - this.createParticle(node, jg); - return jg; - } - } - } - if (nodePos.y <= minY || direction[2] == true) { - pz += 1; - // const date4 = new Date().getTime(); - // console.log("碰到下边缘",date4); - var downWalls = []; - for (var i = 0; i < this.topDoors.length; i++) { - var wallBottom = this.topDoors[i].getChildByName("wall"); - var wallPos = cc.v2(wallBottom.getComponent("Wall").posX, wallBottom.getComponent("Wall").posY); - for (var i_3 = 0; i_3 < allBlocks.length; i_3++) { - var luocha = Math.abs(allBlocks[i_3].y - wallPos.y); - if (allBlocks[i_3].x == wallPos.x && allBlocks[i_3].y > wallPos.y && luocha <= node.getComponent("Block").shu) { - // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); - downWalls.push(wallBottom); - } - } - } - if (downWalls.length != 0) { - var result = this.detectingBlock("down", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); - if (result == true) - result = this.passWall(result, downWalls, node); - // console.log("碰到下边缘结果:",jg); - if (result) { - this.blockNum -= 1; - this.special_Treatment(node); - jg = 1; - this.createParticle(node, jg); - return jg; - } - } - } - if (nodePos.y >= maxY || direction[3] == true) { - pz += 1; - // const date5 = new Date().getTime(); - // console.log("碰到上边缘",date5); - var upWalls = []; - for (var i = 0; i < this.bottomDoors.length; i++) { - var wallTop = this.bottomDoors[i].getChildByName("wall"); - var wallPos = cc.v2(wallTop.getComponent("Wall").posX, wallTop.getComponent("Wall").posY); - for (var i_4 = 0; i_4 < allBlocks.length; i_4++) { - var luocha = Math.abs(allBlocks[i_4].y - wallPos.y); - if (allBlocks[i_4].x == wallPos.x && allBlocks[i_4].y < wallPos.y && luocha <= node.getComponent("Block").shu) { - upWalls.push(wallTop); - } - } - } - if (upWalls.length != 0) { - var result = this.detectingBlock("up", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); - if (result == true) - result = this.passWall(result, upWalls, node); - // console.log("碰到上边缘结果:",result); - if (result) { - this.blockNum -= 1; - this.special_Treatment(node); - jg = 0; - this.createParticle(node, jg); - return jg; - } - } - } - if (pz == 0) - jg = -1; - // const date10 = new Date().getTime(); - // console.log("所有检测结束耗时",date10,jg); - return jg; - }; - MapConroler.prototype.changeState = function () { - if (this.openWall.length != 0) { - for (var i = 0; i < this.openWall.length; i++) { - this.openWall[i].getChildByName("wall").getComponent("Wall").changeLock(); - } - } - if (this.freezeWall.length != 0) { - for (var i = 0; i < this.freezeWall.length; i++) { - this.freezeWall[i].getChildByName("wall").getComponent("Wall").changeFreeze(); - } - } - }; - //检测是否可以通过门 - MapConroler.prototype.passWall = function (jg, wallArray, node) { - for (var i = 0; i < wallArray.length; i++) { - if (wallArray[i].getComponent("Wall").special == 2) { - console.log("尝试通过开关门:", wallArray[i].getComponent("Wall").open); - } - if (wallArray[i].getComponent("Wall").special == 2 && wallArray[i].getComponent("Wall").open == false) { - jg = false; - break; - } - //console.log(wallArray[i].getChildByName("wall").getComponent("Wall").color,node.getComponent("Block").color) - if (wallArray[i].getComponent("Wall").color != node.getComponent("Block").color) { - jg = false; - break; - } - if (node.getComponent("Block").type == 5) { - if (wallArray[i].getComponent("Wall").special != 1) { - jg = false; - break; - } - } - } - if (jg == true && node.getComponent("Block").type == 5) { - for (var j = 0; j < wallArray.length; j++) { - if (wallArray[j].getComponent("Wall").special == 1 && wallArray[j].getComponent("Wall").wall_Info.length != 0) { - wallArray[j].getComponent("Wall").playStarDoor(); - } - } - } - // const date8 = new Date().getTime(); - // console.log("检测颜色是否能够通过门",date8); - return jg; - }; - //检测方块和门中间有没有夹杂其他块 - MapConroler.prototype.detectingBlock = function (direction, posX, posY, blocks) { - var jg = true; - var id = ""; - if (blocks.length > 0) { - for (var i = 0; i < blocks.length; i++) { - var pos = blocks[i]; - var x = pos.x; - var y = pos.y; - id = this.mapBlocksWall[x][y].getComponent("MapBlock").block_Id; - jg = this.checkAllDirections(id, direction, x, y); - if (!jg) { - // console.log("方向检测没过"); - i = 1000000; - return jg; - } - } - } - // const date7 = new Date().getTime(); - // console.log("方向检测通过",date7,jg); - return jg; - }; - //检测物体各方向是否有别的物块,防止碰到墙壁了但是是凹凸形状,墙与块之间有阻挡物块 - MapConroler.prototype.checkAllDirections = function (id, direction, x, y) { - var jg = true; - if (direction == "left") { - if (this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != id) { - // console.log("左侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x - 1][y].opacity == 249) { - jg = false; - return jg; - } - if ((x - 2) >= 0) { - if (this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != id) { - // console.log("左侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x - 2][y].opacity == 249) { - jg = false; - return jg; - } - } - } - else if (direction == "right") { - if (this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != id) { - // console.log("右侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x + 1][y].opacity == 249) { - jg = false; - return jg; - } - if ((x + 2) <= this.mapBlocksWall.length - 1) { - if (this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != id) { - // console.log("右侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x + 2][y].opacity == 249) { - jg = false; - return jg; - } - } - } - if (direction == "up") { - if (this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != id) { - // console.log("上侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x][y + 1].opacity == 249) { - jg = false; - return jg; - } - if ((y + 2) <= this.mapBlocksWall[x].length - 1) { - if (this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != id) { - // console.log("上侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x][y + 2].opacity == 249) { - jg = false; - return jg; - } - } - } - if (direction == "down") { - if (this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != id) { - // console.log("下侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x][y - 1].opacity == 249) { - jg = false; - return jg; - } - if ((y - 2) >= 0) { - if (this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != "Wall" - && this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != id) { - // console.log("下侧有物体") - jg = false; - return jg; - } - if (this.mapBlocksWall[x][y - 2].opacity == 249) { - jg = false; - return jg; - } - } - } - // console.log("检测物体各方向是否有别的物块",jg); - return jg; - }; - MapConroler.prototype.checkDiraction = function (allBlocks, maxX, maxY) { - var jg = [false, false, false, false]; - for (var i = 0; i < allBlocks.length; i++) { - if (allBlocks[i].x > 0 && jg[0] == false) { - if (this.mapBlocksWall[allBlocks[i].x - 1][allBlocks[i].y].opacity == 250) { - jg[0] = true; - } - } - if (jg[1] == false) { - if (this.mapBlocksWall[allBlocks[i].x + 1][allBlocks[i].y].opacity == 250) { - jg[1] = true; - } - } - if (allBlocks[i].y > 0 && jg[2] == false) { - if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y - 1].opacity == 250) { - jg[2] = true; - } - } - if (jg[3] == false) { - if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y + 1].opacity == 250) { - jg[3] = true; - } - } - } - return jg; - }; - MapConroler.prototype.checkLeft = function (allBlocks) { - var jg = false; - return jg; - }; - MapConroler.prototype.checkRight = function (allBlocks, max) { - var jg = false; - for (var i = 0; i < allBlocks.length; i++) { - } - return jg; - }; - MapConroler.prototype.checkDown = function (allBlocks) { - var jg = false; - for (var i = 0; i < allBlocks.length; i++) { - } - return jg; - }; - MapConroler.prototype.checkUp = function (allBlocks, max) { - var jg = false; - for (var i = 0; i < allBlocks.length; i++) { - } - return jg; - }; - //特殊处理,方块带道具或者需要消除冰块 - MapConroler.prototype.special_Treatment = function (node) { - var freezeBlock = this.node.children.filter(function (child) { - if (child.getComponent("Block")) { - if (child.getComponent("Block").type == 4) - return child; - } - }); - if (freezeBlock.length > 0) { - for (var i = 0; i < freezeBlock.length; i++) { - freezeBlock[i].getChildByName("freeze").getComponent("Freeze").reduce(1); - } - } - if (node.getComponent("Block").type == 2 || node.getComponent("Block").type == 4) { - var lockBlock = this.node.children.filter(function (child) { - if (child.getComponent("Block")) { - if (child.getComponent("Block").type == 3) - return child; - } - }); - if (lockBlock.length > 0) - for (var i = 0; i < lockBlock.length; i++) { - lockBlock[i].getChildByName("lock").getComponent("Lock").reduce(); - } - } - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i] == node) { - this.blocks.splice(i, 1); - } - } - }; - //判断游戏成功下一关 - MapConroler.prototype.nextLevel = function () { - var _this = this; - this.pause = false; - this.openIce(); - this.blockNum = this.blocks.length; - if (this.blockNum == 0 && !this.gameWin && !this.gameOver) { - // alert("游戏成功"); - this.gameWin = true; - this.stopTimeCutDown(); - // console.log("成功消除一个"); - cc.fx.GameTool.changeCoin(40); - cc.fx.GameTool.addLevel(this.count_Time, this.add_Time); - this.check_NewMode(); - setTimeout(function () { - _this.node.parent.parent.getChildByName("Win").active = true; - }, 660); - // console.log("游戏成功"); - } - else { - if (this.gameOver == true) { - this.failLevel(null); - } - } - }; - MapConroler.prototype.check_NewMode = function () { - for (var i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) { - if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) { - this.new_mode = 3; - } - } - }; - MapConroler.prototype.winLevel = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (cc.fx.GameConfig.GM_INFO.level > 156) { - cc.fx.GameConfig.GM_INFO.level = 156; - // MapConroler._instance = null; - if (this.new_mode == 3) { - this.node.parent.parent.getChildByName("Win").active = false; - this.openNewMode(2); - cc.fx.GameConfig.LEVEL_INFO_init(false, 0); - return; - } - // cc.fx.GameConfig.LEVEL_INFO_init(true); - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { - // if (entry.animation.name === "up") { - // // 动画播放结束后执行的逻辑 - // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; - // } - // }); - cc.director.preloadScene("HomeScene", function (err, asset) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - return; - } - }); - setTimeout(function () { - cc.director.loadScene("HomeScene"); - }, 1200); - } - else { - // console.log("下一关"); - // MapConroler._instance = null; - if (this.new_mode == 3) { - this.node.parent.parent.getChildByName("Win").active = false; - this.openNewMode(2); - cc.fx.GameConfig.LEVEL_INFO_init(false, 0); - return; - } - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { - // if (entry.animation.name === "up") { - // // 动画播放结束后执行的逻辑 - // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; - // } - // }); - setTimeout(function () { - cc.fx.GameConfig.LEVEL_INFO_init(true, 0); - }, 1200); - // this.node.parent.parent.parent.destroy(); - } - }; - MapConroler.prototype.againLevel = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (cc.fx.GameConfig.GM_INFO.hp < 1) { - MiniGameSdk_1.MiniGameSdk.API.showToast("体力值不足"); - return; - } - if (!this.againCanTouch) - return; - this.againCanTouch = false; - // MapConroler._instance = null; - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { - // if (entry.animation.name === "up") { - // // 动画播放结束后执行的逻辑 - // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; - // } - // }); - setTimeout(function () { - cc.fx.GameConfig.LEVEL_INFO_init(true, 0); - }, 1200); - // this.node.parent.parent.parent.destroy(); - }; - MapConroler.prototype.reviewLevel = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - var coin = 900; - if (cc.fx.GameConfig.GM_INFO.review == 1) - coin = 1900; - else if (cc.fx.GameConfig.GM_INFO.review == 2) - coin = 2500; - // console.log("自身金币:",cc.fx.GameConfig.GM_INFO.coin,"消耗金币:",coin); - if (cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法加时间"); - return; - } - else { - this.runRewive(-coin); - } - }; - MapConroler.prototype.runRewive = function (data) { - console.log("复活回调函数内", data); - cc.fx.GameTool.changeCoin(data); - MiniGameSdk_1.MiniGameSdk.API.showToast("继续游戏"); - if (cc.fx.GameConfig.GM_INFO.review < 2) - cc.fx.GameConfig.GM_INFO.review += 1; - this.gameOver = false; - this.timeNumber = 21; - this.add_Time += 20; - this.pause = false; - this.node.parent.parent.getChildByName("Lose").active = false; - this.startTimeCutDown(); - }; - MapConroler.prototype.homeBtn = function () { - // alert("游戏失败"); - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (!this.homeCanTouch) - return; - this.homeCanTouch = false; - this.node.parent.parent.getChildByName("Lose").active = true; - this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = false; - this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = false; - this.node.parent.parent.getChildByName("Lose").getChildByName("Lock").active = false; - this.node.parent.parent.getChildByName("Lose").getChildByName("Health").active = true; - var data = { - time: this.count_Time, - add_Time: this.add_Time, - result: "fail" - }; - cc.fx.GameTool.shushu_Track("finish_stage", data); - if (this.gameStart == true) { - cc.fx.GameTool.setUserHealth(-1, function (data) { - }); - } - // this.node.parent.parent.parent.destroy(); - }; - MapConroler.prototype.returnHome = function () { - cc.fx.AudioManager._instance.playEffect("anniu_Big", null); - if (MapConroler_1._instance = null) { - return; - } - // MiniGameSdk.API.showToast("体力值减少"); - // MapConroler._instance = null; - cc.fx.GameConfig.LEVEL_INFO_init(false, 0); - if (this.new_mode == 3) { - this.node.parent.parent.getChildByName("Win").active = false; - this.openNewMode(1); - return; - } - cc.fx.AudioManager._instance.playEffect("zhuan1", null); - this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; - this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); - cc.director.preloadScene("HomeScene", function (err, asset) { - if (err) { - console.error('动态加载 Prefab 失败:', err); - return; - } - }); - setTimeout(function () { - cc.director.loadScene("HomeScene"); - }, 1200); - }; - //判断游戏失败 - MapConroler.prototype.failLevel = function (type) { - var _this = this; - this.stopTimeCutDown(); - if (this.gameOver == true || this.gameWin == true) { - return; - } - var time = 0; - this.gameOver = true; - if (type == "boom") { - time = 2000; - } - setTimeout(function () { - _this.node.parent.parent.getChildByName("Lose").active = true; - _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = true; - _this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = false; - var buyBtn = _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").getChildByName("buyBtn"); - buyBtn.getChildByName("coin1").active = buyBtn.getChildByName("coin2").active = buyBtn.getChildByName("coin3").active = false; - if (cc.fx.GameConfig.GM_INFO.review == 0) - buyBtn.getChildByName("coin1").active = true; - else if (cc.fx.GameConfig.GM_INFO.review == 1) - buyBtn.getChildByName("coin2").active = true; - else if (cc.fx.GameConfig.GM_INFO.review == 2) - buyBtn.getChildByName("coin3").active = true; - if (type) { - if (type == "boom") { - _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = false; - _this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = true; - } - } - }, time); - // console.log("游戏失败"); - }; - //打开新模式弹窗 - MapConroler.prototype.openNewMode = function (type) { - var _this = this; - var index = 0; - var BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量 - var destroyBlocks = function () { - var endIndex = Math.min(index + BLOCKS_PER_FRAME, _this.blocks.length); - for (; index < endIndex; index++) { - if (_this.blocks[index]) { - _this.blocks[index].destroy(); - } - } - // 如果还有方块未销毁,下一帧继续 - if (index < _this.blocks.length) { - _this.scheduleOnce(destroyBlocks, 0); - } - else { - } - }; - // 开始分帧销毁方块 - destroyBlocks(); - this.node.parent.parent.getChildByName("NewMode").active = true; - this.node.parent.parent.getChildByName("NewMode").getComponent("NewMode").setMode(type); - }; - MapConroler.prototype.downDoor = function (color, type) { - for (var i = 0; i < this.wallArray.length; i++) { - if (this.wallArray[i].getChildByName("wall").getComponent("Wall").color == color) { - if (type) { - if (type == 5) { - if (this.wallArray[i].getChildByName("wall").getComponent("Wall").special == 1) { - this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); - } - } - else - this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); - } - else - this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); - } - } - }; - MapConroler.prototype.upDoor = function () { - for (var i = 0; i < this.wallArray.length; i++) { - if (this.wallArray[i].getChildByName("wall").opacity == 0) { - this.wallArray[i].getChildByName("wall").getComponent("Wall").upDoor(); - } - } - }; - //开始倒计时 - MapConroler.prototype.startTimeCutDown = function () { - this.scheduleCallback = function () { - if (this.pause) - return; - if (this.timeNumber <= 0) { - this.stopTimeCutDown(); - var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); - NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); - // this.timeLabel.string = timeTemp.toString(); - if (!this.pause) - this.failLevel("time"); - } - else { - this.timeNumber -= 1; - this.count_Time += 1; - var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); - NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); - // this.timeLabel.string = timeTemp.toString(); - } - }.bind(this); - this.schedule(this.scheduleCallback, 1); - }; - // 停止倒计时 - MapConroler.prototype.stopTimeCutDown = function () { - if (this.scheduleCallback) { - this.unschedule(this.scheduleCallback); - } - }; - //使用时间道具 - MapConroler.prototype.useTimeProp = function () { - if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true - || this.magicMask.active == true || this.timeNumber <= 1) { - return; - } - var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); - if (freezeBtn.getComponent("btnControl")._touch) { - freezeBtn.getComponent("btnControl").setTouch(false); - if (cc.fx.GameConfig.GM_INFO.freezeAmount < 1) { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - freezeBtn.getComponent("btnControl").setTouch(true); - return; - } - this.node.parent.parent.getChildByName("propWindow").active = true; - this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("freeze"); - } - else { - if (!this.node.parent.getChildByName("Ice").active && !this.pause) { - var timestamp = Date.now(); - this.freezeMask.active = true; - this.pause = true; - this.node.parent.getChildByName("Ice").active = true; - this.node.parent.getChildByName("Top").getChildByName("Ice").active = true; - cc.fx.GameConfig.GM_INFO.freezeAmount -= 1; - if (cc.fx.GameConfig.GM_INFO.freezeAmount < 0) - cc.fx.GameConfig.GM_INFO.freezeAmount = 0; - this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserProp(2001, cc.fx.GameConfig.GM_INFO.freezeAmount, function (data) { - }); - var data = { - id: "2001", - num: -1 - }; - cc.fx.GameTool.shushu_Track("resource_cost", data); - } - else - MiniGameSdk_1.MiniGameSdk.API.showToast("道具使用中,请稍后再试"); - } - } - }; - //解开时间冻结 - MapConroler.prototype.openIce = function () { - if (this.node.parent.getChildByName("Ice").active) { - this.freezeMask.active = false; - var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); - freezeBtn.getComponent("btnControl").setTouch(true); - this.node.parent.getChildByName("Ice").active = false; - this.node.parent.getChildByName("Top").getChildByName("Ice").active = false; - this.pause = false; - // this.startTimeCutDown(); - } - }; - MapConroler.prototype.handleBuySuccess = function (data) { - var _this = this; - this.pause = false; - var timestamp = Date.now(); - // console.log("回调函数内:",this.pause); - var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); - var hammerBtn = this.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); - var magicBtn = this.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); - if (data == "freezeAmount") - freezeBtn.getComponent("btnControl").setTouch(true); - else if (data == "hammerAmount") - hammerBtn.getComponent("btnControl").setTouch(true); - else if (data == "magicAmount") - magicBtn.getComponent("btnControl").setTouch(true); - if (data == "freezeAmount") { - cc.fx.GameConfig.GM_INFO.freezeAmount += 3; - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); - setTimeout(function () { - _this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); - MiniGameSdk_1.MiniGameSdk.API.showToast("购买冻结时间道具成功"); - }, 200); - } - else if (data == "magicAmount") { - cc.fx.GameConfig.GM_INFO.magicAmount += 3; - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); - setTimeout(function () { - MiniGameSdk_1.MiniGameSdk.API.showToast("购买锤子道具成功"); - _this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); - }, 200); - } - else if (data == "hammerAmount") { - cc.fx.GameConfig.GM_INFO.hammerAmount += 3; - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); - setTimeout(function () { - _this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); - MiniGameSdk_1.MiniGameSdk.API.showToast("购买魔法棒道具成功"); - }, 200); - } - }; - //使用锤子道具 - MapConroler.prototype.useHammer = function () { - if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true - || this.magicMask.active == true || this.timeNumber <= 1) { - return; - } - var hammerBtn = this.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); - if (hammerBtn.getComponent("btnControl")._touch) { - hammerBtn.getComponent("btnControl").setTouch(false); - if (cc.fx.GameConfig.GM_INFO.hammerAmount < 1) { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - hammerBtn.getComponent("btnControl").setTouch(true); - return; - } - this.node.parent.parent.getChildByName("propWindow").active = true; - this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("hammer"); - } - else { - if (!this.hammer) { - var timestamp = Date.now(); - this.hammerMask.active = true; - this.hammer = true; - cc.fx.GameConfig.GM_INFO.hammerAmount -= 1; - if (cc.fx.GameConfig.GM_INFO.hammerAmount < 0) - cc.fx.GameConfig.GM_INFO.hammerAmount = 0; - this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - console.log("锤子道具信息:", propInfo); - propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserProp(2002, cc.fx.GameConfig.GM_INFO.hammerAmount, function (data) { - }); - var data = { - id: "2002", - num: -1 - }; - cc.fx.GameTool.shushu_Track("resource_cost", data); - } - else - MiniGameSdk_1.MiniGameSdk.API.showToast("道具使用中,请稍后再试"); - } - } - }; - MapConroler.prototype.buyMagic = function () { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - return; - } - cc.fx.GameTool.buyProp(2003, this.handleBuySuccess.bind(this, "magicAmount")); - }; - MapConroler.prototype.buyHammer = function () { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - return; - } - cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this, "hammerAmount")); - }; - MapConroler.prototype.buyFreeze = function () { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - return; - } - cc.fx.GameTool.buyProp(2001, this.handleBuySuccess.bind(this, "freezeAmount")); - }; - //使用魔法棒随机消除两个方块 - MapConroler.prototype.useMagic = function () { - var _this = this; - if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true - || this.magicMask.active == true || this.timeNumber <= 1) { - return; - } - var magicBtn = this.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); - if (magicBtn.getComponent("btnControl")._touch) { - magicBtn.getComponent("btnControl").setTouch(false); - if (cc.fx.GameConfig.GM_INFO.magicAmount < 1) { - if (cc.fx.GameConfig.GM_INFO.coin < 1500) { - MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); - magicBtn.getComponent("btnControl").setTouch(true); - return; - } - this.node.parent.parent.getChildByName("propWindow").active = true; - this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("magic"); - // MiniGameSdk.API.showToast("魔法棒数量不足,自动购买魔法棒"); - } - else { - var timestamp = Date.now(); - this.magicMask.active = true; - setTimeout(function () { - _this.magicMask.active = false; - magicBtn.getComponent("btnControl").setTouch(true); - }, 1000); - cc.fx.GameConfig.GM_INFO.magicAmount -= 1; - if (cc.fx.GameConfig.GM_INFO.magicAmount < 0) - cc.fx.GameConfig.GM_INFO.magicAmount = 0; - this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); - var propInfo = cc.fx.StorageMessage.getStorage("prop"); - propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount; - propInfo.timestamp = timestamp; - cc.fx.StorageMessage.setStorage("prop", propInfo); - cc.fx.GameTool.setUserProp(2003, cc.fx.GameConfig.GM_INFO.magicAmount, function (data) { - }); - var data = { - id: "2003", - num: -1 - }; - cc.fx.GameTool.shushu_Track("resource_cost", data); - var nomalArray_1 = []; - // this.magicBtn.node.active = false; - for (var i = 0; i < this.blocks.length; i++) { - // console.log("方块类型",this.blocks[i].getComponent("Block").type); - if (this.blocks[i].getComponent("Block").type == 3) { - this.loackArray.push(this.blocks[i]); - } - else if (this.blocks[i].getComponent("Block").type == 4) { - this.freezeArray.push(this.blocks[i]); - } - else if (this.blocks[i].getComponent("Block").type == 10) { - if (this.blocks[i].getComponent("Block").block_Info.node) { - nomalArray_1.push(this.blocks[i].getComponent("Block").block_Info.node); - } - else - nomalArray_1.push(this.blocks[i]); - } - else { - nomalArray_1.push(this.blocks[i]); - } - } - if (nomalArray_1.length > 1) { - nomalArray_1 = cc.fx.GameTool.shuffleArray(nomalArray_1); - nomalArray_1[0].getComponent("Block").eliminate(); - var time = 0; - if (nomalArray_1[0].getComponent("Block").type == 1 || nomalArray_1[0].getComponent("Block").type == 9) { - time = 200; - } - if (time > 0) { - setTimeout(function () { - nomalArray_1[1].getComponent("Block").eliminate(); - }, time); - return; - } - else { - nomalArray_1[1].getComponent("Block").eliminate(); - return; - } - } - else if (nomalArray_1.length == 1) { - nomalArray_1[0].getComponent("Block").eliminate(); - var time = 0; - if (nomalArray_1[0].getComponent("Block").type == 1 || nomalArray_1[0].getComponent("Block").type == 9) { - time = 200; - } - setTimeout(function () { - if (_this.freezeArray.length == 0 && _this.loackArray.length == 0) { - // console.log("只剩下一个块道具使用完毕"); - } - else { - if (_this.loackArray.length != 0) { - // console.log("消除一个普通块后,消除一个带锁块"); - _this.loackArray[0].getComponent("Block").eliminate(); - return; - } - else if (_this.freezeArray.length != 0) { - // console.log("消除一个普通块后,消除一个冻结块"); - _this.freezeArray[0].getComponent("Block").eliminate(); - return; - } - } - }, 200 + time); - } - else { - var count_1 = 2; - if (this.loackArray.length != 0) { - for (var i = 0; i < this.loackArray.length; i++) { - // console.log("没有普通快,魔法消除一个带锁块"); - this.loackArray[i].getComponent("Block").eliminate(); - count_1 -= 1; - if (count_1 == 0) { - break; - } - } - } - setTimeout(function () { - if (count_1 != 0) { - for (var i = 0; i < _this.freezeArray.length; i++) { - // console.log("没有普通快,魔法消除一个冻结块"); - // this.freezeArray[i].getComponent("Block").eliminate(); - count_1 -= 1; - if (count_1 == 0) { - break; - } - } - } - }, 100); - } - } - } - }; - //按下暂停按钮 - MapConroler.prototype.usePause = function () { - if (this.pause) { - this.pause = false; - } - else { - this.pause = true; - } - }; - //根据关卡设置地图大小 - MapConroler.prototype.setMapInfo = function () { - var width = 0; - if (this.mapWidth < 10) { - width = 0.2; - } - else if (this.mapWidth < 17) { - width = 0.15 - (this.mapWidth - 11) * 0.01; - } - this.node.scale = 1.6 + (6 - this.mapWidth) * width; - if (this.mapWidth == 8 && this.mapHeight > 13) { - this.node.scale = 1; - } - // this.node.scale = 1; - cc.fx.GameConfig.GM_INFO.scale = this.node.scale; - // this.node.scale = 0.5; - // console.log(this.node.scale); - // this.node.scale = 1; - }; - //创建门的粒子特效 - MapConroler.prototype.createParticle = function (block, jg) { - var particle = cc.instantiate(MapConroler_1._instance.Block_Prop[9]); - particle.parent = this.node; - particle.zIndex = 1000; - var width = Math.floor(block.width / 120); - var height = Math.floor(block.height / 120); - var name = ""; - if (jg == 0 || jg == 1) { - var y = block.y + block.height; - var x = block.x - block.width / 2; - name = "top_" + width + "_" + height; - if (jg == 1) { - name = "bot_" + width + "_" + height; - y = block.y; - } - if (block.anchorX == 0.5) { - x = block.x; - } - else if (block.anchorX == 0.33) { - x = block.x + block.width * (0.5 - 0.33); - } - else if (block.anchorX == 0.66) { - x = block.x + block.width * (0.5 - 0.66); - } - particle.setPosition(x, y); - } - else if (jg == 2 || jg == 3) { - name = "left_" + height + "_" + width; - var x = block.x - block.width; - var y = block.y + block.height / 2; - if (block.anchorX == 0.5) { - x = block.x - block.width / 2; - } - else if (block.anchorX == 0.33) { - x = block.x - block.width * 0.33; - } - else if (block.anchorX == 0.66) { - x = block.x + block.width * 0.66; - } - if (jg == 3) { - name = "right_" + height + "_" + width; - x = block.x; - if (block.anchorX == 0.5) { - x = block.x + block.width / 2; - } - else if (block.anchorX == 0.33) { - x = block.x + block.width * 0.66; - } - else if (block.anchorX == 0.66) { - x = block.x + block.width * 0.33; - } - } - particle.setPosition(x, y); - } - var particleNode = particle.getChildByName(name); - var color = block.getComponent("Block").color - 1; - particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent("Reduce").Block_Color[color]; - particleNode.active = true; - setTimeout(function () { - cc.tween(particle) - .to(2, { opacity: 0 }) - .call(function () { - particle.destroy(); - }) - .start(); - }, 1200); - }; - MapConroler.prototype.removeOneBlock = function () { - // 移除所有方块 - for (var i = 0; i < this.blocks.length; i++) { - if (this.blocks[i].opacity == 0) { - this.blocks[i].destroy(); - this.blocks.splice(i, 1); - } - } - }; - MapConroler.prototype.update = function (dt) { - }; - var MapConroler_1; - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块数组" }) - ], MapConroler.prototype, "Block_Array", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "方块道具数组" }) - ], MapConroler.prototype, "Block_Prop", void 0); - __decorate([ - property(cc.Prefab) - ], MapConroler.prototype, "MapBlockPrefab", void 0); - __decorate([ - property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) - ], MapConroler.prototype, "Block_Color", void 0); - __decorate([ - property({ type: [cc.Prefab], tooltip: "墙壁数组" }) - ], MapConroler.prototype, "Wall_Prefab", void 0); - __decorate([ - property(cc.Prefab) - ], MapConroler.prototype, "wallTurnPrefab", void 0); - __decorate([ - property(cc.Button) - ], MapConroler.prototype, "timeBtn", void 0); - __decorate([ - property(cc.Button) - ], MapConroler.prototype, "destroyBtn", void 0); - __decorate([ - property(cc.Button) - ], MapConroler.prototype, "magicBtn", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "mask", void 0); - __decorate([ - property(cc.Label) - ], MapConroler.prototype, "iceLabel", void 0); - __decorate([ - property(cc.Label) - ], MapConroler.prototype, "hammerLabel", void 0); - __decorate([ - property(cc.Label) - ], MapConroler.prototype, "magicLabel", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "magicMask", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "hammerMask", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "freezeMask", void 0); - __decorate([ - property(cc.Node) - ], MapConroler.prototype, "coinPop", void 0); - MapConroler = MapConroler_1 = __decorate([ - ccclass - ], MapConroler); - return MapConroler; -}(cc.Component)); -exports.default = MapConroler; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var GameManager_1 = require("./GameManager"); +var NumberToImage_1 = require("./NumberToImage"); +var MiniGameSdk_1 = require("./Sdk/MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var MapConroler = /** @class */ (function (_super) { + __extends(MapConroler, _super); + function MapConroler() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.Block_Array = []; + _this.Block_Prop = []; + _this.MapBlockPrefab = null; + _this.Block_Color = []; + _this.Wall_Prefab = []; + _this.wallTurnPrefab = null; + _this.timeBtn = null; + _this.destroyBtn = null; + _this.magicBtn = null; + _this.mask = null; + _this.iceLabel = null; + _this.hammerLabel = null; + _this.magicLabel = null; + _this.magicMask = null; + _this.hammerMask = null; + _this.freezeMask = null; + _this.coinPop = null; + _this.timeLabel = null; + _this.levelLabel = null; + _this.new_mode = 0; + _this.mapWidth = 0; + _this.mapHeight = 0; + _this.wallNum = 0; + _this.blockNum = 0; + _this.homeCanTouch = true; //按钮可用状态 + _this.againCanTouch = true; //重玩按钮可以用状态 + _this.gameOver = false; //游戏结束状态 + _this.gameWin = false; //游戏胜利状态 + _this.gameStart = false; //游戏开始状态 + _this.timeNumber = 0; //游戏时间 用于倒计时 + _this.count_Time = 0; //用于统计总游戏时长 + _this.add_Time = 0; //复活时间 + _this.pause = false; //暂停状态 + _this.hammer = false; //锤子状态 + return _this; + } + MapConroler_1 = MapConroler; + // mapInfo: number[][] = []; + MapConroler.prototype.onLoad = function () { + var _this = this; + cc.fx.GameConfig.GM_INFO.review = 0; + cc.fx.GameConfig.GM_INFO.gameState = true; + this.mask.opacity = 0; + this.node.getChildByName("Adhesive").zIndex = 500; + cc.game.setFrameRate(63); + cc.fx.AudioManager._instance.playEffect("zhuan2", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "down", false); + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener(function (entry) { + if (entry.animation.name === "down") { + // 动画播放结束后执行的逻辑 + _this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; + } + }); + this.blocks = []; + this.leftDoors = []; //左门 + this.rightDoors = []; //右门 + this.topDoors = []; //上门 + this.bottomDoors = []; //下门 + this.gameWin = false; + this.gameOver = false; + this.gameStart = false; + this.homeCanTouch = true; + this.againCanTouch = true; + this.new_mode = 0; + this.count_Time = 0; + this.add_Time = 0; + this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); + this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); + this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); + // cc.game.addPersistRootNode(this.node); + MapConroler_1._instance = this; + }; + MapConroler.prototype.start = function () { + setTimeout(function () { + cc.director.preloadScene("HomeScene", function (err, asset) { + if (err) { + console.error('动态加载 HomeScene 失败:', err); + return; + } + }); + }, 1000); + // console.log("进入GameScene"); + this.Block_Array = GameManager_1.default._instance.Block_Array; + this.Wall_Prefab = GameManager_1.default._instance.Wall_Prefab; + this.Block_Color = GameManager_1.default._instance.Block_Color; + // this.particleEffects = GameManager._instance.particleEffects; + this.initMap(); + }; + MapConroler.prototype.startUpdate = function () { + if (this.gameStart == false) { + this.gameStart = true; + //发送数数事件——进入关卡 + console.log("准备进入下一关,发送下一关进入"); + cc.fx.GameTool.shushu_Track("enter_stage"); + this.startTimeCutDown(); + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].getComponent("Block").type == 6) { + this.blocks[i].getChildByName("boom").getComponent("Boom").startBoom(); + } + } + } + }; + MapConroler.prototype.initMap = function () { + // this.node.getChildByName("Wall").zIndex = 10; + this.timeLabel = this.node.parent.getChildByName("Top").getChildByName("time"); + this.levelLabel = this.node.parent.getChildByName("Top").getChildByName("level"); + this.timeNumber = cc.fx.GameConfig.LEVEL_INFO[0].time; + this.count_Time = 0; + this.add_Time = 0; + NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); + // var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); + // this.timeLabel.string = timeTemp.toString(); + NumberToImage_1.default.numberToImageNodes((cc.fx.GameConfig.GM_INFO.level + 1), 50, 20, "level_", this.levelLabel, false); + //this.startTimeCutDown(); + this.mapWidth = cc.fx.GameConfig.LEVEL_INFO[0].map[0]; + this.mapHeight = cc.fx.GameConfig.LEVEL_INFO[0].map[1]; + var gap = cc.fx.GameConfig.LEVEL_INFO[0].gap; + var risefall = cc.fx.GameConfig.LEVEL_INFO[0].risefall; + this.pause = false; + this.hammer = false; + this.wallNum = 0; + this.setMapInfo(); + this.blocks = []; + this.mapBlocksWall = []; + this.mapInfo = []; + this.wallInfo = []; + this.openWall = []; + this.wallArray = []; + this.freezeWall = []; + this.riseFallBlcok = []; + this.mapBlockArray = []; + this.freezeArray = []; + this.loackArray = []; + this.count_Time = 0; + this.add_Time = 0; + var startX = this.mapWidth % 2 == 0 ? -(this.mapWidth - 1) * 60 : -(this.mapWidth - 1) * 60; + var startY = this.mapHeight % 2 == 0 ? -(this.mapHeight - 1) * 60 : -(this.mapHeight - 1) * 60; + // startX =(this.mapWidth-1)*60 + 60; + // startY =-(this.mapHeight-1)*60 - 60; + for (var i = 0; i < this.mapWidth; i++) { + this.mapBlocksWall[i] = []; + for (var j = 0; j < this.mapHeight; j++) { + var block = cc.instantiate(this.MapBlockPrefab); + block.parent = this.node.getChildByName("mapBlock"); + block.getComponent("MapBlock").init(i, j); + // block.getChildByName("num").getComponent(cc.Label).string = i + ":" + j; + block.setPosition(cc.v2(startX + i * 120, startY + j * 120)); + if (risefall != null) { + if (this.mapRiseFall(cc.v2(i, j), risefall, block)) { + this.riseFallBlcok.push(block); + } + } + if (gap != null) { + if (!this.mapGap(cc.v2(i, j), gap) || i == 0 || i == this.mapWidth - 1 + || j == 0 || j == this.mapHeight - 1) { + block.opacity = 254; + block.removeComponent(cc.Sprite); + block.removeAllChildren(); + this.wallInfo.push(block); + } + else + this.mapInfo.push(block); + } + else { + if (i == 0 || i == this.mapWidth - 1 + || j == 0 || j == this.mapHeight - 1) { + block.opacity = 254; + block.removeComponent(cc.Sprite); + block.removeAllChildren(); + this.wallInfo.push(block); + } + else + this.mapInfo.push(block); + } + this.mapBlocksWall[i].push(block); + } + } + this.wallInit(); + this.blockInit(); + }; + //创建方块 + // ... 已有代码 ... + //创建方块 + // ... 已有代码 ... + MapConroler.prototype.blockInit = function () { + var _this = this; + var blockArray = cc.fx.GameConfig.BLOCK_INFO[0]; + blockArray = this.sortBlock(blockArray); + console.log("创建方块", blockArray); + var index = 0; // 当前要创建的方块索引 + var BLOCKS_PER_FRAME = 1; // 初始每帧创建的方块数量 + var MAX_PER_FRAME = 10; // 每帧最大创建数量 + var MIN_PER_FRAME = 1; // 每帧最小创建数量 + var createBlocks = function () { + var startTime = performance.now(); + var _loop_1 = function (i) { + var blockInfo = blockArray[index]; + // 缓存 Block_Array 访问 + var blockPrefab = _this.Block_Array[blockInfo.block]; + var block = cc.instantiate(blockPrefab); + block.parent = _this.node; + block.setPosition(cc.v2(blockInfo.position.x, blockInfo.position.y)); + if (blockInfo.block != 23) { + _this.blockNum += 1; + _this.blocks.push(block); + if (blockInfo.type == 1) { + var info = { + id: blockInfo.id + 1, + block: blockInfo.block, + color: blockInfo.stacking, + type: 10, + position: blockInfo.position, + stacking: blockInfo.color + }; + // 缓存 Block_Array 访问 + var blockUpPrefab = _this.Block_Array[info.block]; + var blockUp = cc.instantiate(blockUpPrefab); + blockUp.parent = _this.node; + blockUp.setPosition(cc.v2(info.position.x, info.position.y)); + _this.blocks.push(blockUp); + block.getComponent("Block").init(blockInfo, null, null, blockUp); + blockUp.getComponent("Block").init(info, null, null, block); + _this.blockNum += 1; + } + else if (blockInfo.type == 9) { + if (blockInfo.adhesiveTime < 2) { + index++; + return "continue"; + } + index++; + var info_1 = blockArray[index]; + // 缓存 Block_Array 访问 + var blockUpPrefab = _this.Block_Array[info_1.block]; + var blockUp_1 = cc.instantiate(blockUpPrefab); + blockUp_1.parent = _this.node; + blockUp_1.setPosition(cc.v2(info_1.position.x, info_1.position.y)); + _this.blocks.push(blockUp_1); + block.getComponent("Block").init(blockInfo, null, null, blockUp_1, false); + setTimeout(function () { + blockUp_1.getComponent("Block").init(info_1, null, null, block, true); + }, 100); + _this.blockNum += 1; + } + else { + block.getComponent("Block").init(blockInfo); + } + } + else { + block.getComponent("Barrier").init(blockInfo); + } + index++; + }; + for (var i = 0; i < BLOCKS_PER_FRAME && index < blockArray.length; i++) { + _loop_1(i); + } + var endTime = performance.now(); + var frameTime = endTime - startTime; + // 如果当前帧执行时间过长,减少每帧创建数量 + if (frameTime > 16) { + BLOCKS_PER_FRAME = Math.max(BLOCKS_PER_FRAME - 1, MIN_PER_FRAME); + } + else { + BLOCKS_PER_FRAME = Math.min(BLOCKS_PER_FRAME + 1, MAX_PER_FRAME); + } + // 如果还有方块未创建,下一帧继续创建 + if (index < blockArray.length) { + // 使用 scheduleOnce 在下一帧执行 createBlocks + _this.scheduleOnce(function () { + createBlocks(); + }, 0); + } + else { + } + }; + // 开始分帧创建方块 + createBlocks(); + }; + //给创建方块排序,用来降低drawcall 合批 + MapConroler.prototype.sortBlock = function (allBlocks) { + return allBlocks.sort(function (a, b) { + // 先处理 type 为 1 的情况,将其放到最后 + if (a.type === 1 && b.type !== 1) { + return 1; + } + if (a.type !== 1 && b.type === 1) { + return -1; + } + // 对 type 不为 0 的元素按 type 排序 + if (a.type !== 0 && b.type !== 0) { + return a.type - b.type; + } + if (a.type !== 0 && b.type === 0) { + return 1; + } + if (a.type === 0 && b.type !== 0) { + return -1; + } + // 再处理 block 为 23 的情况,将其放到最前面 + if (a.block === 23 && b.block !== 23) { + return -1; + } + if (a.block !== 23 && b.block === 23) { + return 1; + } + // 其余按 color 升序排列 + return a.color - b.color; + }); + }; + //创建墙壁 + MapConroler.prototype.wallInit = function () { + var _this = this; + var index = 0; // 当前要创建的墙壁索引 + var WALLS_PER_FRAME = 1; // 初始每帧创建的墙壁数量 + var MAX_PER_FRAME = 10; // 每帧最大创建数量 + var MIN_PER_FRAME = 1; // 每帧最小创建数量 + var createWalls = function () { + var startTime = performance.now(); + for (var i = 0; i < WALLS_PER_FRAME && index < _this.wallInfo.length; i++) { + var block = _this.wallInfo[index]; + var dir = _this.getWllDiraction("wall", cc.v2(block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY)); + if (dir != null) { + _this.createWall(dir, block); + } + index++; + } + var endTime = performance.now(); + var frameTime = endTime - startTime; + // 如果当前帧执行时间过长,减少每帧创建数量 + if (frameTime > 16) { + WALLS_PER_FRAME = Math.max(WALLS_PER_FRAME - 1, MIN_PER_FRAME); + } + else { + WALLS_PER_FRAME = Math.min(WALLS_PER_FRAME + 1, MAX_PER_FRAME); + } + // 如果还有墙壁未创建,下一帧继续创建 + if (index < _this.wallInfo.length) { + _this.scheduleOnce(function () { + createWalls(); + }, 0); + } + else { + // 所有墙壁创建完成后,创建拐角节点 + _this.createCornerNodes(); + } + }; + // 开始分帧创建墙壁 + createWalls(); + }; + // ... 已有代码 ... + MapConroler.prototype.getWllDiraction = function (type, pointA) { + var dir = []; + var pointB = cc.v2(pointA.x + 1, pointA.y); + var pointC = cc.v2(pointA.x - 1, pointA.y); + var pointD = cc.v2(pointA.x, pointA.y + 1); + var pointE = cc.v2(pointA.x, pointA.y - 1); + var opacity = 0; + if (type == "wall") + opacity = 255; + if (type == "turn") + opacity = 250; + if (pointB.x < this.mapWidth) { + if (this.mapBlocksWall[pointB.x][pointB.y].opacity == opacity) { + if (type == "turn" && this.mapBlocksWall[pointB.x][pointB.y].getComponent("MapBlock").direction == "right") { + } + else + dir.push("right"); + } + } + if (pointC.x >= 0) { + if (this.mapBlocksWall[pointC.x][pointC.y].opacity == opacity) { + if (type == "turn" && this.mapBlocksWall[pointC.x][pointC.y].getComponent("MapBlock").direction == "left") { + } + else + dir.push("left"); + } + } + if (pointD.y < this.mapHeight) { + if (this.mapBlocksWall[pointD.x][pointD.y].opacity == opacity) { + if (type == "turn" && this.mapBlocksWall[pointD.x][pointD.y].getComponent("MapBlock").direction == "up") { + } + else + dir.push("up"); + } + } + if (pointE.y >= 0) { + if (this.mapBlocksWall[pointE.x][pointE.y].opacity == opacity) { + if (type == "turn" && this.mapBlocksWall[pointE.x][pointE.y].getComponent("MapBlock").direction == "down") { + } + else + dir.push("down"); + } + } + if (dir.length > 2) { + return null; + } + if (dir.length == 1) { + if (type == "wall") + return dir[0]; + else + return null; + } + else if (dir.length == 2) { + return dir[0] + dir[1]; + } + }; + MapConroler.prototype.createCornerNodes = function () { + // 定义拐角位置 + for (var i = 0; i < this.wallInfo.length; i++) { + var block = this.wallInfo[i]; + if (block.opacity != 250) { + var dir = this.getWllDiraction("turn", cc.v2(block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY)); + if (dir != null) { + this.createTurn(dir, block, block.getComponent("MapBlock").posX, block.getComponent("MapBlock").posY); + } + } + } + }; + MapConroler.prototype.createWall = function (direction, node) { + var wall = null; + node.getComponent("MapBlock").setDiraction(direction); + switch (direction) { + case "right": + node.opacity = 250; + wall = cc.instantiate(this.Wall_Prefab[4]); + this.leftDoors.push(wall); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + node.opacity = 250; + wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.getChildByName("wall")); + this.wallNum += 1; + if (wall.getChildByName("wall").getComponent("Wall").special == 2) + this.openWall.push(wall); + else if (wall.getChildByName("wall").getComponent("Wall").special == 3) + this.freezeWall.push(wall); + break; + case "left": + node.opacity = 250; + wall = cc.instantiate(this.Wall_Prefab[3]); + // wall.parent = this.node.getChildByName("Wall"); + this.rightDoors.push(wall); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + this.setDoorInfo(wall.getChildByName("wall")); + //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.wallNum += 1; + if (wall.getChildByName("wall").getComponent("Wall").special == 2) + this.openWall.push(wall); + else if (wall.getChildByName("wall").getComponent("Wall").special == 3) + this.freezeWall.push(wall); + break; + case "up": + node.opacity = 250; + wall = cc.instantiate(this.Wall_Prefab[5]); + this.topDoors.push(wall); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + this.setDoorInfo(wall.getChildByName("wall")); + //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.wallNum += 1; + if (wall.getChildByName("wall").getComponent("Wall").special == 2) + this.openWall.push(wall); + else if (wall.getChildByName("wall").getComponent("Wall").special == 3) + this.freezeWall.push(wall); + break; + case "down": + node.opacity = 250; + wall = cc.instantiate(this.Wall_Prefab[0]); + this.bottomDoors.push(wall); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + // this.setDoorInfo(wall.getChildByName("wall")); + wall.getChildByName("wall").getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + this.setDoorInfo(wall.getChildByName("wall")); + //wall.getChildByName("wall").getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.wallNum += 1; + if (wall.getChildByName("wall").getComponent("Wall").special == 2) + this.openWall.push(wall); + else if (wall.getChildByName("wall").getComponent("Wall").special == 3) + this.freezeWall.push(wall); + break; + case "upright": + case "rightup": + node.opacity = 249; + wall = cc.instantiate(this.Wall_Prefab[7]); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[0]); + this.wallNum += 1; + //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[1]); + this.wallNum += 1; + break; + case "upleft": + case "leftup": + node.opacity = 249; + wall = cc.instantiate(this.Wall_Prefab[6]); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[0]); + this.wallNum += 1; + //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[1]); + this.wallNum += 1; + break; + case "downright": + case "rightdown": + node.opacity = 249; + wall = cc.instantiate(this.Wall_Prefab[2]); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[0]); + this.wallNum += 1; + //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[1]); + this.wallNum += 1; + break; + case "downleft": + case "leftdown": + node.opacity = 249; + wall = cc.instantiate(this.Wall_Prefab[1]); + // wall.parent = this.node.getChildByName("Wall"); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + wall.children[1].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + wall.children[2].getComponent("Wall").init(null, node.getComponent("MapBlock").posX, node.getComponent("MapBlock").posY, direction); + //wall.children[0].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[0]); + this.wallNum += 1; + //wall.children[1].getChildByName("num").getComponent(cc.Label).string = this.wallNum.toString(); + this.setDoorInfo(wall.children[1]); + this.wallNum += 1; + break; + } + // if(wallTurn){ + // wallTurn.getComponent("wallTunr").init(wall); + // } + }; + MapConroler.prototype.setDoorInfo = function (wall) { + var doorInfo = cc.fx.GameConfig.WALL_INFO[0]; + if (doorInfo) { + for (var j = 0; j < doorInfo.length; j++) { + if (doorInfo[j].num == this.wallNum) { + wall.getComponent("Wall").init(doorInfo[j], null, null, null); + this.wallArray.push(wall.parent); + } + } + } + }; + MapConroler.prototype.createTurn = function (direction, node, posX, posY) { + var wall = null; + wall = cc.instantiate(this.wallTurnPrefab); + wall.parent = this.node; + wall.setPosition(cc.v2(node.x, node.y)); + switch (direction) { + case "upright": + case "rightup": + wall.angle = 0; + wall.getChildByName("icon").angle = 0; + break; + case "upleft": + case "leftup": + wall.angle = 90; + wall.getChildByName("icon").angle = -90; + wall.getChildByName("icon").y += 5; + wall.getChildByName("icon").x -= 1.3; + break; + case "downright": + case "rightdown": + wall.angle = 270; + wall.getChildByName("icon").angle = -270; + wall.getChildByName("icon").x += 2.5; + wall.getChildByName("icon").y += 1; + break; + case "downleft": + case "leftdown": + wall.angle = 180; + wall.getChildByName("icon").angle = -180; + wall.getChildByName("icon").x += 4.5; + wall.getChildByName("icon").y += 3.2; + break; + } + // if(direction == "rightdown" || direction == "downright") { + // wall.zIndex = 50 + posX - posY*3; + // } + // else + // wall.zIndex = 50 + posX - posY*3; + if (direction == "up" || direction == "leftup" || direction == "upleft") { + wall.zIndex = 100 + posX - posY * 3; + } + else if (direction == "rightup" || direction == "upright" || direction == "rightdown" || direction == "downright" || direction == "downleft") { + wall.zIndex = 30 + posX - posY * 3; + } + else if (direction == "left" || direction == "leftdown") { + wall.zIndex = 70 + posX - posY * 3; + } + else + wall.zIndex = 70 + posX - posY * 3; + // wall.getChildByName("num").angle = -wall.angle; + //wall.getChildByName("num").getComponent(cc.Label).string = direction; + //wall.getChildByName("num").getComponent(cc.Label).string = wall.zIndex+ ""; + // console.log(posX,posY,wall.zIndex); + // this.wallNum += 1; + // wall.getChildByName("num").getComponent(cc.Label).string = this.wallNum + ""; + }; + //地图底块缺口判断 + MapConroler.prototype.mapGap = function (point, gap) { + for (var i = 0; i < gap.length; i++) { + if (point.x == gap[i].x && point.y == gap[i].y) { + return false; + } + } + return true; + }; + //升降地块判断 + MapConroler.prototype.mapRiseFall = function (point, risefall, block) { + for (var i = 0; i < risefall.length; i++) { + if (point.x == risefall[i].pos.x && point.y == risefall[i].pos.y) { + block.getChildByName("risefall").active = true; + block.getChildByName('risefall').getChildByName("color").getComponent(cc.Label).string = risefall[i].color + ""; + block.getChildByName('risefall').addComponent(cc.BoxCollider); + block.getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110); + return true; + } + } + return false; + }; + //升降地块 + MapConroler.prototype.changeRiseFall = function (color, down) { + color = color.toString(); + for (var i = 0; i < this.riseFallBlcok.length; i++) { + if (color == this.riseFallBlcok[i].getChildByName("risefall").getChildByName("color").getComponent(cc.Label).string) { + if (down) { + this.riseFallBlcok[i].getChildByName("risefall").active = false; + this.riseFallBlcok[i].getChildByName('risefall').removeComponent(cc.BoxCollider); + } + else { + this.riseFallBlcok[i].getChildByName("risefall").active = true; + this.riseFallBlcok[i].getChildByName('risefall').addComponent(cc.BoxCollider); + this.riseFallBlcok[i].getChildByName('risefall').getComponent(cc.BoxCollider).size = cc.size(110, 110); + } + } + } + }; + //查询叠加快id + MapConroler.prototype.foundDownBlock = function (id) { + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].getComponent("Block").blockId == id) { + return this.blocks[i]; + } + } + return null; + }; + //删除块 + MapConroler.prototype.removeBlock = function (id) { + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].getComponent("Block").blockId == id) { + return this.blocks[i]; + } + } + return null; + }; + MapConroler.prototype.getMinAndMax = function (block) { + var width = Math.floor(block.width / 120); + var height = Math.floor(block.height / 120); + var minX = width; + var maxX = this.mapWidth - 2; + var minY = 1; + var maxY = this.mapHeight - 2 - height + 1; + if (block.name == "block10") { + minX = width - 1; + if (this.mapWidth > 3) + maxX = maxX - 1; + } + else if (block.name == "block11") { + minX = width - 2; + if (this.mapWidth > 3) + maxX = maxX - 2; + } + else if (block.name == "block14") { + minX = width - 1; + maxX = maxX - 1; + } + else if (block.name == "block16") { + minX = width - 1; + maxX = maxX - 1; + } + else if (block.name == "block18") { + minX = width - 1; + maxX = maxX - 1; + } + else if (block.name == "block21") { + minX = width - 1; + maxX = maxX - 1; + } + return { minX: minX, maxX: maxX, minY: minY, maxY: maxY }; + }; + //检测落点是否可以消除 + MapConroler.prototype.checkPass = function (node, blocks) { + var minAndMax = this.getMinAndMax(node); + var minX = minAndMax.minX; + var maxX = minAndMax.maxX; + var minY = minAndMax.minY; + var maxY = minAndMax.maxY; + var nodePos = cc.v2(node.getComponent("Block").posX, node.getComponent("Block").posY); + // 获取地图边界信息 + var allBlocks = []; + for (var i = 0; i < blocks.length; i++) { + allBlocks.push(cc.v2(nodePos.x + blocks[i].x, nodePos.y + blocks[i].y)); + } + // const date1 = new Date().getTime(); + // console.log("将小块放入数组的时间",date1); + var jg = -1; + var pz = 0; + // 获取所有墙壁节点 + // let wall = this.node; + var direction = this.checkDiraction(allBlocks, maxX, maxY); + // 判断方块是否在地图边缘 + if (nodePos.x <= minX || direction[0] == true) { + // const date2 = new Date().getTime(); + // console.log("碰到左边缘",date2); + pz += 1; + var leftWalls = []; + for (var i = 0; i < this.leftDoors.length; i++) { + var wallLeft = this.leftDoors[i].getChildByName("wall"); + var wallPos = cc.v2(wallLeft.getComponent("Wall").posX, wallLeft.getComponent("Wall").posY); + for (var i_1 = 0; i_1 < allBlocks.length; i_1++) { + if (allBlocks[i_1].y == wallPos.y && allBlocks[i_1].x > wallPos.x) { + // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); + leftWalls.push(wallLeft); + } + } + } + // console.log("得到左边墙壁数组",date6); + if (leftWalls.length != 0) { + var result = this.detectingBlock("left", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); + if (result == true) + result = this.passWall(result, leftWalls, node); + // console.log("碰到左边缘结果:",jg); + if (result) { + this.blockNum -= 1; + this.special_Treatment(node); + jg = 2; + this.createParticle(node, jg); + return jg; + } + } + } + if (nodePos.x >= maxX || direction[1] == true) { + // const date3 = new Date().getTime(); + // console.log("碰到右边缘",date3); + pz += 1; + var rightWalls = []; + for (var i = 0; i < this.rightDoors.length; i++) { + var wallRight = this.rightDoors[i].getChildByName("wall"); + var wallPos = cc.v2(wallRight.getComponent("Wall").posX, wallRight.getComponent("Wall").posY); + for (var i_2 = 0; i_2 < allBlocks.length; i_2++) { + if (allBlocks[i_2].y == wallPos.y && allBlocks[i_2].x < wallPos.x) { + // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); + rightWalls.push(wallRight); + } + } + } + if (rightWalls.length != 0) { + var result = this.detectingBlock("right", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); + if (result == true) + result = this.passWall(result, rightWalls, node); + // console.log("碰到右边缘结果:",jg); + if (result) { + this.blockNum -= 1; + this.special_Treatment(node); + jg = 3; + this.createParticle(node, jg); + return jg; + } + } + } + if (nodePos.y <= minY || direction[2] == true) { + pz += 1; + // const date4 = new Date().getTime(); + // console.log("碰到下边缘",date4); + var downWalls = []; + for (var i = 0; i < this.topDoors.length; i++) { + var wallBottom = this.topDoors[i].getChildByName("wall"); + var wallPos = cc.v2(wallBottom.getComponent("Wall").posX, wallBottom.getComponent("Wall").posY); + for (var i_3 = 0; i_3 < allBlocks.length; i_3++) { + var luocha = Math.abs(allBlocks[i_3].y - wallPos.y); + if (allBlocks[i_3].x == wallPos.x && allBlocks[i_3].y > wallPos.y && luocha <= node.getComponent("Block").shu) { + // console.log("id:",wall.getChildByName("num").getComponent(cc.Label).string); + downWalls.push(wallBottom); + } + } + } + if (downWalls.length != 0) { + var result = this.detectingBlock("down", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); + if (result == true) + result = this.passWall(result, downWalls, node); + // console.log("碰到下边缘结果:",jg); + if (result) { + this.blockNum -= 1; + this.special_Treatment(node); + jg = 1; + this.createParticle(node, jg); + return jg; + } + } + } + if (nodePos.y >= maxY || direction[3] == true) { + pz += 1; + // const date5 = new Date().getTime(); + // console.log("碰到上边缘",date5); + var upWalls = []; + for (var i = 0; i < this.bottomDoors.length; i++) { + var wallTop = this.bottomDoors[i].getChildByName("wall"); + var wallPos = cc.v2(wallTop.getComponent("Wall").posX, wallTop.getComponent("Wall").posY); + for (var i_4 = 0; i_4 < allBlocks.length; i_4++) { + var luocha = Math.abs(allBlocks[i_4].y - wallPos.y); + if (allBlocks[i_4].x == wallPos.x && allBlocks[i_4].y < wallPos.y && luocha <= node.getComponent("Block").shu) { + upWalls.push(wallTop); + } + } + } + if (upWalls.length != 0) { + var result = this.detectingBlock("up", node.getComponent("Block").posX, node.getComponent("Block").posY, allBlocks); + if (result == true) + result = this.passWall(result, upWalls, node); + // console.log("碰到上边缘结果:",result); + if (result) { + this.blockNum -= 1; + this.special_Treatment(node); + jg = 0; + this.createParticle(node, jg); + return jg; + } + } + } + if (pz == 0) + jg = -1; + // const date10 = new Date().getTime(); + // console.log("所有检测结束耗时",date10,jg); + return jg; + }; + MapConroler.prototype.changeState = function () { + if (this.openWall.length != 0) { + for (var i = 0; i < this.openWall.length; i++) { + this.openWall[i].getChildByName("wall").getComponent("Wall").changeLock(); + } + } + if (this.freezeWall.length != 0) { + for (var i = 0; i < this.freezeWall.length; i++) { + this.freezeWall[i].getChildByName("wall").getComponent("Wall").changeFreeze(); + } + } + }; + //检测是否可以通过门 + MapConroler.prototype.passWall = function (jg, wallArray, node) { + for (var i = 0; i < wallArray.length; i++) { + if (wallArray[i].getComponent("Wall").special == 2) { + console.log("尝试通过开关门:", wallArray[i].getComponent("Wall").open); + } + if (wallArray[i].getComponent("Wall").special == 2 && wallArray[i].getComponent("Wall").open == false) { + jg = false; + break; + } + //console.log(wallArray[i].getChildByName("wall").getComponent("Wall").color,node.getComponent("Block").color) + if (wallArray[i].getComponent("Wall").color != node.getComponent("Block").color) { + jg = false; + break; + } + if (node.getComponent("Block").type == 5) { + if (wallArray[i].getComponent("Wall").special != 1) { + jg = false; + break; + } + } + } + if (jg == true && node.getComponent("Block").type == 5) { + for (var j = 0; j < wallArray.length; j++) { + if (wallArray[j].getComponent("Wall").special == 1 && wallArray[j].getComponent("Wall").wall_Info.length != 0) { + wallArray[j].getComponent("Wall").playStarDoor(); + } + } + } + // const date8 = new Date().getTime(); + // console.log("检测颜色是否能够通过门",date8); + return jg; + }; + //检测方块和门中间有没有夹杂其他块 + MapConroler.prototype.detectingBlock = function (direction, posX, posY, blocks) { + var jg = true; + var id = ""; + if (blocks.length > 0) { + for (var i = 0; i < blocks.length; i++) { + var pos = blocks[i]; + var x = pos.x; + var y = pos.y; + id = this.mapBlocksWall[x][y].getComponent("MapBlock").block_Id; + jg = this.checkAllDirections(id, direction, x, y); + if (!jg) { + // console.log("方向检测没过"); + i = 1000000; + return jg; + } + } + } + // const date7 = new Date().getTime(); + // console.log("方向检测通过",date7,jg); + return jg; + }; + //检测物体各方向是否有别的物块,防止碰到墙壁了但是是凹凸形状,墙与块之间有阻挡物块 + MapConroler.prototype.checkAllDirections = function (id, direction, x, y) { + var jg = true; + if (direction == "left") { + if (this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x - 1][y].getComponent("MapBlock").block_Id != id) { + // console.log("左侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x - 1][y].opacity == 249) { + jg = false; + return jg; + } + if ((x - 2) >= 0) { + if (this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x - 2][y].getComponent("MapBlock").block_Id != id) { + // console.log("左侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x - 2][y].opacity == 249) { + jg = false; + return jg; + } + } + } + else if (direction == "right") { + if (this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x + 1][y].getComponent("MapBlock").block_Id != id) { + // console.log("右侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x + 1][y].opacity == 249) { + jg = false; + return jg; + } + if ((x + 2) <= this.mapBlocksWall.length - 1) { + if (this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x + 2][y].getComponent("MapBlock").block_Id != id) { + // console.log("右侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x + 2][y].opacity == 249) { + jg = false; + return jg; + } + } + } + if (direction == "up") { + if (this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x][y + 1].getComponent("MapBlock").block_Id != id) { + // console.log("上侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x][y + 1].opacity == 249) { + jg = false; + return jg; + } + if ((y + 2) <= this.mapBlocksWall[x].length - 1) { + if (this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x][y + 2].getComponent("MapBlock").block_Id != id) { + // console.log("上侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x][y + 2].opacity == 249) { + jg = false; + return jg; + } + } + } + if (direction == "down") { + if (this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x][y - 1].getComponent("MapBlock").block_Id != id) { + // console.log("下侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x][y - 1].opacity == 249) { + jg = false; + return jg; + } + if ((y - 2) >= 0) { + if (this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != "" && this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != "Wall" + && this.mapBlocksWall[x][y - 2].getComponent("MapBlock").block_Id != id) { + // console.log("下侧有物体") + jg = false; + return jg; + } + if (this.mapBlocksWall[x][y - 2].opacity == 249) { + jg = false; + return jg; + } + } + } + // console.log("检测物体各方向是否有别的物块",jg); + return jg; + }; + MapConroler.prototype.checkDiraction = function (allBlocks, maxX, maxY) { + var jg = [false, false, false, false]; + for (var i = 0; i < allBlocks.length; i++) { + if (allBlocks[i].x > 0 && jg[0] == false) { + if (this.mapBlocksWall[allBlocks[i].x - 1][allBlocks[i].y].opacity == 250) { + jg[0] = true; + } + } + if (jg[1] == false) { + if (this.mapBlocksWall[allBlocks[i].x + 1][allBlocks[i].y].opacity == 250) { + jg[1] = true; + } + } + if (allBlocks[i].y > 0 && jg[2] == false) { + if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y - 1].opacity == 250) { + jg[2] = true; + } + } + if (jg[3] == false) { + if (this.mapBlocksWall[allBlocks[i].x][allBlocks[i].y + 1].opacity == 250) { + jg[3] = true; + } + } + } + return jg; + }; + MapConroler.prototype.checkLeft = function (allBlocks) { + var jg = false; + return jg; + }; + MapConroler.prototype.checkRight = function (allBlocks, max) { + var jg = false; + for (var i = 0; i < allBlocks.length; i++) { + } + return jg; + }; + MapConroler.prototype.checkDown = function (allBlocks) { + var jg = false; + for (var i = 0; i < allBlocks.length; i++) { + } + return jg; + }; + MapConroler.prototype.checkUp = function (allBlocks, max) { + var jg = false; + for (var i = 0; i < allBlocks.length; i++) { + } + return jg; + }; + //特殊处理,方块带道具或者需要消除冰块 + MapConroler.prototype.special_Treatment = function (node) { + var freezeBlock = this.node.children.filter(function (child) { + if (child.getComponent("Block")) { + if (child.getComponent("Block").type == 4) + return child; + } + }); + if (freezeBlock.length > 0) { + for (var i = 0; i < freezeBlock.length; i++) { + freezeBlock[i].getChildByName("freeze").getComponent("Freeze").reduce(1); + } + } + if (node.getComponent("Block").type == 2 || node.getComponent("Block").type == 4) { + var lockBlock = this.node.children.filter(function (child) { + if (child.getComponent("Block")) { + if (child.getComponent("Block").type == 3) + return child; + } + }); + if (lockBlock.length > 0) + for (var i = 0; i < lockBlock.length; i++) { + lockBlock[i].getChildByName("lock").getComponent("Lock").reduce(); + } + } + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i] == node) { + this.blocks.splice(i, 1); + } + } + }; + //判断游戏成功下一关 + MapConroler.prototype.nextLevel = function () { + var _this = this; + this.pause = false; + this.openIce(); + this.blockNum = this.blocks.length; + if (this.blockNum == 0 && !this.gameWin && !this.gameOver) { + // alert("游戏成功"); + this.gameWin = true; + this.stopTimeCutDown(); + // console.log("成功消除一个"); + cc.fx.GameTool.changeCoin(40); + cc.fx.GameTool.addLevel(this.count_Time, this.add_Time); + this.check_NewMode(); + setTimeout(function () { + _this.node.parent.parent.getChildByName("Win").active = true; + }, 660); + // console.log("游戏成功"); + } + else { + if (this.gameOver == true) { + this.failLevel(null); + } + } + }; + MapConroler.prototype.check_NewMode = function () { + for (var i = 0; i < cc.fx.GameConfig.NEW_LEVEL.length; i++) { + if ((cc.fx.GameConfig.GM_INFO.level + 1) == cc.fx.GameConfig.NEW_LEVEL[i].level) { + this.new_mode = 3; + } + } + }; + MapConroler.prototype.winLevel = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (cc.fx.GameConfig.GM_INFO.level > 156) { + cc.fx.GameConfig.GM_INFO.level = 156; + // MapConroler._instance = null; + if (this.new_mode == 3) { + this.node.parent.parent.getChildByName("Win").active = false; + this.openNewMode(2); + cc.fx.GameConfig.LEVEL_INFO_init(false, 0); + return; + } + // cc.fx.GameConfig.LEVEL_INFO_init(true); + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { + // if (entry.animation.name === "up") { + // // 动画播放结束后执行的逻辑 + // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; + // } + // }); + cc.director.preloadScene("HomeScene", function (err, asset) { + if (err) { + console.error('动态加载 Prefab 失败:', err); + return; + } + }); + setTimeout(function () { + cc.director.loadScene("HomeScene"); + }, 1200); + } + else { + // console.log("下一关"); + // MapConroler._instance = null; + if (this.new_mode == 3) { + this.node.parent.parent.getChildByName("Win").active = false; + this.openNewMode(2); + cc.fx.GameConfig.LEVEL_INFO_init(false, 0); + return; + } + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { + // if (entry.animation.name === "up") { + // // 动画播放结束后执行的逻辑 + // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; + // } + // }); + setTimeout(function () { + cc.fx.GameConfig.LEVEL_INFO_init(true, 0); + }, 1200); + // this.node.parent.parent.parent.destroy(); + } + }; + MapConroler.prototype.againLevel = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (cc.fx.GameConfig.GM_INFO.hp < 1) { + MiniGameSdk_1.MiniGameSdk.API.showToast("体力值不足"); + return; + } + if (!this.againCanTouch) + return; + this.againCanTouch = false; + // MapConroler._instance = null; + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + // this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setCompleteListener((entry) => { + // if (entry.animation.name === "up") { + // // 动画播放结束后执行的逻辑 + // this.node.parent.parent.parent.getChildByName("zhuanchang").active = false; + // } + // }); + setTimeout(function () { + cc.fx.GameConfig.LEVEL_INFO_init(true, 0); + }, 1200); + // this.node.parent.parent.parent.destroy(); + }; + MapConroler.prototype.reviewLevel = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + var coin = 900; + if (cc.fx.GameConfig.GM_INFO.review == 1) + coin = 1900; + else if (cc.fx.GameConfig.GM_INFO.review == 2) + coin = 2500; + // console.log("自身金币:",cc.fx.GameConfig.GM_INFO.coin,"消耗金币:",coin); + if (cc.fx.GameConfig.GM_INFO.coin < Math.abs(coin)) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法加时间"); + return; + } + else { + this.runRewive(-coin); + } + }; + MapConroler.prototype.runRewive = function (data) { + console.log("复活回调函数内", data); + cc.fx.GameTool.changeCoin(data); + MiniGameSdk_1.MiniGameSdk.API.showToast("继续游戏"); + if (cc.fx.GameConfig.GM_INFO.review < 2) + cc.fx.GameConfig.GM_INFO.review += 1; + this.gameOver = false; + this.timeNumber = 21; + this.add_Time += 20; + this.pause = false; + this.node.parent.parent.getChildByName("Lose").active = false; + this.startTimeCutDown(); + }; + MapConroler.prototype.homeBtn = function () { + // alert("游戏失败"); + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (!this.homeCanTouch) + return; + this.homeCanTouch = false; + this.node.parent.parent.getChildByName("Lose").active = true; + this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = false; + this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = false; + this.node.parent.parent.getChildByName("Lose").getChildByName("Lock").active = false; + this.node.parent.parent.getChildByName("Lose").getChildByName("Health").active = true; + var data = { + time: this.count_Time, + add_Time: this.add_Time, + result: "fail" + }; + cc.fx.GameTool.shushu_Track("finish_stage", data); + if (this.gameStart == true) { + cc.fx.GameTool.setUserHealth(-1, function (data) { + }); + } + // this.node.parent.parent.parent.destroy(); + }; + MapConroler.prototype.returnHome = function () { + cc.fx.AudioManager._instance.playEffect("anniu_Big", null); + if (MapConroler_1._instance = null) { + return; + } + // MiniGameSdk.API.showToast("体力值减少"); + // MapConroler._instance = null; + cc.fx.GameConfig.LEVEL_INFO_init(false, 0); + if (this.new_mode == 3) { + this.node.parent.parent.getChildByName("Win").active = false; + this.openNewMode(1); + return; + } + cc.fx.AudioManager._instance.playEffect("zhuan1", null); + this.node.parent.parent.parent.getChildByName("zhuanchang").active = true; + this.node.parent.parent.parent.getChildByName("zhuanchang").getComponent(sp.Skeleton).setAnimation(1, "up", false); + cc.director.preloadScene("HomeScene", function (err, asset) { + if (err) { + console.error('动态加载 Prefab 失败:', err); + return; + } + }); + setTimeout(function () { + cc.director.loadScene("HomeScene"); + }, 1200); + }; + //判断游戏失败 + MapConroler.prototype.failLevel = function (type) { + var _this = this; + this.stopTimeCutDown(); + if (this.gameOver == true || this.gameWin == true) { + return; + } + var time = 0; + this.gameOver = true; + if (type == "boom") { + time = 2000; + } + setTimeout(function () { + _this.node.parent.parent.getChildByName("Lose").active = true; + _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = true; + _this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = false; + var buyBtn = _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").getChildByName("buyBtn"); + buyBtn.getChildByName("coin1").active = buyBtn.getChildByName("coin2").active = buyBtn.getChildByName("coin3").active = false; + if (cc.fx.GameConfig.GM_INFO.review == 0) + buyBtn.getChildByName("coin1").active = true; + else if (cc.fx.GameConfig.GM_INFO.review == 1) + buyBtn.getChildByName("coin2").active = true; + else if (cc.fx.GameConfig.GM_INFO.review == 2) + buyBtn.getChildByName("coin3").active = true; + if (type) { + if (type == "boom") { + _this.node.parent.parent.getChildByName("Lose").getChildByName("Time").active = false; + _this.node.parent.parent.getChildByName("Lose").getChildByName("Boom").active = true; + } + } + }, time); + // console.log("游戏失败"); + }; + //打开新模式弹窗 + MapConroler.prototype.openNewMode = function (type) { + var _this = this; + var index = 0; + var BLOCKS_PER_FRAME = 5; // 每帧销毁的方块数量 + var destroyBlocks = function () { + var endIndex = Math.min(index + BLOCKS_PER_FRAME, _this.blocks.length); + for (; index < endIndex; index++) { + if (_this.blocks[index]) { + _this.blocks[index].destroy(); + } + } + // 如果还有方块未销毁,下一帧继续 + if (index < _this.blocks.length) { + _this.scheduleOnce(destroyBlocks, 0); + } + else { + } + }; + // 开始分帧销毁方块 + destroyBlocks(); + this.node.parent.parent.getChildByName("NewMode").active = true; + this.node.parent.parent.getChildByName("NewMode").getComponent("NewMode").setMode(type); + }; + MapConroler.prototype.downDoor = function (color, type) { + for (var i = 0; i < this.wallArray.length; i++) { + if (this.wallArray[i].getChildByName("wall").getComponent("Wall").color == color) { + if (type) { + if (type == 5) { + if (this.wallArray[i].getChildByName("wall").getComponent("Wall").special == 1) { + this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); + } + } + else + this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); + } + else + this.wallArray[i].getChildByName("wall").getComponent("Wall").downDoor(); + } + } + }; + MapConroler.prototype.upDoor = function () { + for (var i = 0; i < this.wallArray.length; i++) { + if (this.wallArray[i].getChildByName("wall").opacity == 0) { + this.wallArray[i].getChildByName("wall").getComponent("Wall").upDoor(); + } + } + }; + //开始倒计时 + MapConroler.prototype.startTimeCutDown = function () { + this.scheduleCallback = function () { + if (this.pause) + return; + if (this.timeNumber <= 0) { + this.stopTimeCutDown(); + var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); + NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); + // this.timeLabel.string = timeTemp.toString(); + if (!this.pause) + this.failLevel("time"); + } + else { + this.timeNumber -= 1; + this.count_Time += 1; + var timeTemp = cc.fx.GameTool.getTimeMargin(this.timeNumber); + NumberToImage_1.default.getTimeMargin(this.timeNumber, 50, "time_", this.timeLabel); + // this.timeLabel.string = timeTemp.toString(); + } + }.bind(this); + this.schedule(this.scheduleCallback, 1); + }; + // 停止倒计时 + MapConroler.prototype.stopTimeCutDown = function () { + if (this.scheduleCallback) { + this.unschedule(this.scheduleCallback); + } + }; + //使用时间道具 + MapConroler.prototype.useTimeProp = function () { + if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true + || this.magicMask.active == true || this.timeNumber <= 1) { + return; + } + var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); + if (freezeBtn.getComponent("btnControl")._touch) { + freezeBtn.getComponent("btnControl").setTouch(false); + if (cc.fx.GameConfig.GM_INFO.freezeAmount < 1) { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + freezeBtn.getComponent("btnControl").setTouch(true); + return; + } + this.node.parent.parent.getChildByName("propWindow").active = true; + this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("freeze"); + } + else { + if (!this.node.parent.getChildByName("Ice").active && !this.pause) { + var timestamp = Date.now(); + this.freezeMask.active = true; + this.pause = true; + this.node.parent.getChildByName("Ice").active = true; + this.node.parent.getChildByName("Top").getChildByName("Ice").active = true; + cc.fx.GameConfig.GM_INFO.freezeAmount -= 1; + if (cc.fx.GameConfig.GM_INFO.freezeAmount < 0) + cc.fx.GameConfig.GM_INFO.freezeAmount = 0; + this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserProp(2001, cc.fx.GameConfig.GM_INFO.freezeAmount, function (data) { + }); + var data = { + id: "2001", + num: -1 + }; + cc.fx.GameTool.shushu_Track("resource_cost", data); + } + else + MiniGameSdk_1.MiniGameSdk.API.showToast("道具使用中,请稍后再试"); + } + } + }; + //解开时间冻结 + MapConroler.prototype.openIce = function () { + if (this.node.parent.getChildByName("Ice").active) { + this.freezeMask.active = false; + var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); + freezeBtn.getComponent("btnControl").setTouch(true); + this.node.parent.getChildByName("Ice").active = false; + this.node.parent.getChildByName("Top").getChildByName("Ice").active = false; + this.pause = false; + // this.startTimeCutDown(); + } + }; + MapConroler.prototype.handleBuySuccess = function (data) { + var _this = this; + this.pause = false; + var timestamp = Date.now(); + // console.log("回调函数内:",this.pause); + var freezeBtn = this.node.parent.getChildByName("Bottom").getChildByName("timeBtn"); + var hammerBtn = this.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); + var magicBtn = this.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); + if (data == "freezeAmount") + freezeBtn.getComponent("btnControl").setTouch(true); + else if (data == "hammerAmount") + hammerBtn.getComponent("btnControl").setTouch(true); + else if (data == "magicAmount") + magicBtn.getComponent("btnControl").setTouch(true); + if (data == "freezeAmount") { + cc.fx.GameConfig.GM_INFO.freezeAmount += 3; + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.freezeAmount = cc.fx.GameConfig.GM_INFO.freezeAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); + setTimeout(function () { + _this.iceLabel.string = cc.fx.GameConfig.GM_INFO.freezeAmount.toString(); + MiniGameSdk_1.MiniGameSdk.API.showToast("购买冻结时间道具成功"); + }, 200); + } + else if (data == "magicAmount") { + cc.fx.GameConfig.GM_INFO.magicAmount += 3; + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); + setTimeout(function () { + MiniGameSdk_1.MiniGameSdk.API.showToast("购买锤子道具成功"); + _this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); + }, 200); + } + else if (data == "hammerAmount") { + cc.fx.GameConfig.GM_INFO.hammerAmount += 3; + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + this.node.parent.parent.parent.getComponent("SceneManager").closePropBuy(); + setTimeout(function () { + _this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); + MiniGameSdk_1.MiniGameSdk.API.showToast("购买魔法棒道具成功"); + }, 200); + } + }; + //使用锤子道具 + MapConroler.prototype.useHammer = function () { + if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true + || this.magicMask.active == true || this.timeNumber <= 1) { + return; + } + var hammerBtn = this.node.parent.getChildByName("Bottom").getChildByName("destroyBtn"); + if (hammerBtn.getComponent("btnControl")._touch) { + hammerBtn.getComponent("btnControl").setTouch(false); + if (cc.fx.GameConfig.GM_INFO.hammerAmount < 1) { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + hammerBtn.getComponent("btnControl").setTouch(true); + return; + } + this.node.parent.parent.getChildByName("propWindow").active = true; + this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("hammer"); + } + else { + if (!this.hammer) { + var timestamp = Date.now(); + this.hammerMask.active = true; + this.hammer = true; + cc.fx.GameConfig.GM_INFO.hammerAmount -= 1; + if (cc.fx.GameConfig.GM_INFO.hammerAmount < 0) + cc.fx.GameConfig.GM_INFO.hammerAmount = 0; + this.hammerLabel.string = cc.fx.GameConfig.GM_INFO.hammerAmount.toString(); + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + console.log("锤子道具信息:", propInfo); + propInfo.hammerAmount = cc.fx.GameConfig.GM_INFO.hammerAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserProp(2002, cc.fx.GameConfig.GM_INFO.hammerAmount, function (data) { + }); + var data = { + id: "2002", + num: -1 + }; + cc.fx.GameTool.shushu_Track("resource_cost", data); + } + else + MiniGameSdk_1.MiniGameSdk.API.showToast("道具使用中,请稍后再试"); + } + } + }; + MapConroler.prototype.buyMagic = function () { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + return; + } + cc.fx.GameTool.buyProp(2003, this.handleBuySuccess.bind(this, "magicAmount")); + }; + MapConroler.prototype.buyHammer = function () { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + return; + } + cc.fx.GameTool.buyProp(2002, this.handleBuySuccess.bind(this, "hammerAmount")); + }; + MapConroler.prototype.buyFreeze = function () { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + return; + } + cc.fx.GameTool.buyProp(2001, this.handleBuySuccess.bind(this, "freezeAmount")); + }; + //使用魔法棒随机消除两个方块 + MapConroler.prototype.useMagic = function () { + var _this = this; + if (this.node.parent.getChildByName("Ice").active == true || this.hammer == true + || this.magicMask.active == true || this.timeNumber <= 1) { + return; + } + var magicBtn = this.node.parent.getChildByName("Bottom").getChildByName("magicBtn"); + if (magicBtn.getComponent("btnControl")._touch) { + magicBtn.getComponent("btnControl").setTouch(false); + if (cc.fx.GameConfig.GM_INFO.magicAmount < 1) { + if (cc.fx.GameConfig.GM_INFO.coin < 1500) { + MiniGameSdk_1.MiniGameSdk.API.showToast("金币不足,无法购买道具"); + magicBtn.getComponent("btnControl").setTouch(true); + return; + } + this.node.parent.parent.getChildByName("propWindow").active = true; + this.node.parent.parent.parent.getComponent("SceneManager").openPropBuy("magic"); + // MiniGameSdk.API.showToast("魔法棒数量不足,自动购买魔法棒"); + } + else { + var timestamp = Date.now(); + this.magicMask.active = true; + setTimeout(function () { + _this.magicMask.active = false; + magicBtn.getComponent("btnControl").setTouch(true); + }, 1000); + cc.fx.GameConfig.GM_INFO.magicAmount -= 1; + if (cc.fx.GameConfig.GM_INFO.magicAmount < 0) + cc.fx.GameConfig.GM_INFO.magicAmount = 0; + this.magicLabel.string = cc.fx.GameConfig.GM_INFO.magicAmount.toString(); + var propInfo = cc.fx.StorageMessage.getStorage("prop"); + propInfo.magicAmount = cc.fx.GameConfig.GM_INFO.magicAmount; + propInfo.timestamp = timestamp; + cc.fx.StorageMessage.setStorage("prop", propInfo); + cc.fx.GameTool.setUserProp(2003, cc.fx.GameConfig.GM_INFO.magicAmount, function (data) { + }); + var data = { + id: "2003", + num: -1 + }; + cc.fx.GameTool.shushu_Track("resource_cost", data); + var nomalArray_1 = []; + // this.magicBtn.node.active = false; + for (var i = 0; i < this.blocks.length; i++) { + // console.log("方块类型",this.blocks[i].getComponent("Block").type); + if (this.blocks[i].getComponent("Block").type == 3) { + this.loackArray.push(this.blocks[i]); + } + else if (this.blocks[i].getComponent("Block").type == 4) { + this.freezeArray.push(this.blocks[i]); + } + else if (this.blocks[i].getComponent("Block").type == 10) { + if (this.blocks[i].getComponent("Block").block_Info.node) { + nomalArray_1.push(this.blocks[i].getComponent("Block").block_Info.node); + } + else + nomalArray_1.push(this.blocks[i]); + } + else { + nomalArray_1.push(this.blocks[i]); + } + } + if (nomalArray_1.length > 1) { + nomalArray_1 = cc.fx.GameTool.shuffleArray(nomalArray_1); + nomalArray_1[0].getComponent("Block").eliminate(); + var time = 0; + if (nomalArray_1[0].getComponent("Block").type == 1 || nomalArray_1[0].getComponent("Block").type == 9) { + time = 200; + } + if (time > 0) { + setTimeout(function () { + nomalArray_1[1].getComponent("Block").eliminate(); + }, time); + return; + } + else { + nomalArray_1[1].getComponent("Block").eliminate(); + return; + } + } + else if (nomalArray_1.length == 1) { + nomalArray_1[0].getComponent("Block").eliminate(); + var time = 0; + if (nomalArray_1[0].getComponent("Block").type == 1 || nomalArray_1[0].getComponent("Block").type == 9) { + time = 200; + } + setTimeout(function () { + if (_this.freezeArray.length == 0 && _this.loackArray.length == 0) { + // console.log("只剩下一个块道具使用完毕"); + } + else { + if (_this.loackArray.length != 0) { + // console.log("消除一个普通块后,消除一个带锁块"); + _this.loackArray[0].getComponent("Block").eliminate(); + return; + } + else if (_this.freezeArray.length != 0) { + // console.log("消除一个普通块后,消除一个冻结块"); + _this.freezeArray[0].getComponent("Block").eliminate(); + return; + } + } + }, 200 + time); + } + else { + var count_1 = 2; + if (this.loackArray.length != 0) { + for (var i = 0; i < this.loackArray.length; i++) { + // console.log("没有普通快,魔法消除一个带锁块"); + this.loackArray[i].getComponent("Block").eliminate(); + count_1 -= 1; + if (count_1 == 0) { + break; + } + } + } + setTimeout(function () { + if (count_1 != 0) { + for (var i = 0; i < _this.freezeArray.length; i++) { + // console.log("没有普通快,魔法消除一个冻结块"); + // this.freezeArray[i].getComponent("Block").eliminate(); + count_1 -= 1; + if (count_1 == 0) { + break; + } + } + } + }, 100); + } + } + } + }; + //按下暂停按钮 + MapConroler.prototype.usePause = function () { + if (this.pause) { + this.pause = false; + } + else { + this.pause = true; + } + }; + //根据关卡设置地图大小 + MapConroler.prototype.setMapInfo = function () { + var width = 0; + if (this.mapWidth < 10) { + width = 0.2; + } + else if (this.mapWidth < 17) { + width = 0.15 - (this.mapWidth - 11) * 0.01; + } + this.node.scale = 1.6 + (6 - this.mapWidth) * width; + if (this.mapWidth == 8 && this.mapHeight > 13) { + this.node.scale = 1; + } + // this.node.scale = 1; + cc.fx.GameConfig.GM_INFO.scale = this.node.scale; + // this.node.scale = 0.5; + // console.log(this.node.scale); + // this.node.scale = 1; + }; + //创建门的粒子特效 + MapConroler.prototype.createParticle = function (block, jg) { + var particle = cc.instantiate(MapConroler_1._instance.Block_Prop[9]); + particle.parent = this.node; + particle.zIndex = 1000; + var width = Math.floor(block.width / 120); + var height = Math.floor(block.height / 120); + var name = ""; + if (jg == 0 || jg == 1) { + var y = block.y + block.height; + var x = block.x - block.width / 2; + name = "top_" + width + "_" + height; + if (jg == 1) { + name = "bot_" + width + "_" + height; + y = block.y; + } + if (block.anchorX == 0.5) { + x = block.x; + } + else if (block.anchorX == 0.33) { + x = block.x + block.width * (0.5 - 0.33); + } + else if (block.anchorX == 0.66) { + x = block.x + block.width * (0.5 - 0.66); + } + particle.setPosition(x, y); + } + else if (jg == 2 || jg == 3) { + name = "left_" + height + "_" + width; + var x = block.x - block.width; + var y = block.y + block.height / 2; + if (block.anchorX == 0.5) { + x = block.x - block.width / 2; + } + else if (block.anchorX == 0.33) { + x = block.x - block.width * 0.33; + } + else if (block.anchorX == 0.66) { + x = block.x + block.width * 0.66; + } + if (jg == 3) { + name = "right_" + height + "_" + width; + x = block.x; + if (block.anchorX == 0.5) { + x = block.x + block.width / 2; + } + else if (block.anchorX == 0.33) { + x = block.x + block.width * 0.66; + } + else if (block.anchorX == 0.66) { + x = block.x + block.width * 0.33; + } + } + particle.setPosition(x, y); + } + var particleNode = particle.getChildByName(name); + var color = block.getComponent("Block").color - 1; + particleNode.getComponent(cc.ParticleSystem).spriteFrame = particle.getComponent("Reduce").Block_Color[color]; + particleNode.active = true; + setTimeout(function () { + cc.tween(particle) + .to(2, { opacity: 0 }) + .call(function () { + particle.destroy(); + }) + .start(); + }, 1200); + }; + MapConroler.prototype.removeOneBlock = function () { + // 移除所有方块 + for (var i = 0; i < this.blocks.length; i++) { + if (this.blocks[i].opacity == 0) { + this.blocks[i].destroy(); + this.blocks.splice(i, 1); + } + } + }; + MapConroler.prototype.update = function (dt) { + }; + var MapConroler_1; + __decorate([ + property({ type: [cc.Prefab], tooltip: "方块数组" }) + ], MapConroler.prototype, "Block_Array", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "方块道具数组" }) + ], MapConroler.prototype, "Block_Prop", void 0); + __decorate([ + property(cc.Prefab) + ], MapConroler.prototype, "MapBlockPrefab", void 0); + __decorate([ + property({ type: [cc.SpriteAtlas], tooltip: "方块颜色" }) + ], MapConroler.prototype, "Block_Color", void 0); + __decorate([ + property({ type: [cc.Prefab], tooltip: "墙壁数组" }) + ], MapConroler.prototype, "Wall_Prefab", void 0); + __decorate([ + property(cc.Prefab) + ], MapConroler.prototype, "wallTurnPrefab", void 0); + __decorate([ + property(cc.Button) + ], MapConroler.prototype, "timeBtn", void 0); + __decorate([ + property(cc.Button) + ], MapConroler.prototype, "destroyBtn", void 0); + __decorate([ + property(cc.Button) + ], MapConroler.prototype, "magicBtn", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "mask", void 0); + __decorate([ + property(cc.Label) + ], MapConroler.prototype, "iceLabel", void 0); + __decorate([ + property(cc.Label) + ], MapConroler.prototype, "hammerLabel", void 0); + __decorate([ + property(cc.Label) + ], MapConroler.prototype, "magicLabel", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "magicMask", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "hammerMask", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "freezeMask", void 0); + __decorate([ + property(cc.Node) + ], MapConroler.prototype, "coinPop", void 0); + MapConroler = MapConroler_1 = __decorate([ + ccclass + ], MapConroler); + return MapConroler; +}(cc.Component)); +exports.default = MapConroler; cc._RF.pop(); } @@ -9850,113 +7476,113 @@ cc._RF.pop(); cc._RF.push(module, '3bad2uyOw5MzLq3b5g9aHn2', 'Window'); // Script/Window.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - return _super !== null && _super.apply(this, arguments) || this; - } - // LIFE-CYCLE CALLBACKS: - NewClass.prototype.onLoad = function () { - this.can_Touch = false; - }; - NewClass.prototype.start = function () { - }; - NewClass.prototype.init = function (data) { - var _this = this; - this.can_Touch = false; - this.node.getChildByName("win").active = false; - this.node.getChildByName("lose").active = false; - this.node.getChildByName("finishi").active = false; - this.node.getChildByName(data.result).active = true; - if (data.result == "lose") { - this.setErrLabel(data.code); - } - var target = this.node.getChildByName(data.result); - target.getChildByName("btn").active = false; - target.opacity = 0; - target.scale = 2; - target.getChildByName("tip").opacity = 0; - if (data.result == "win") { - var lianXi = false; - if (cc.fx.GameConfig.GM_INFO.level == 2) - lianXi = true; - target.getChildByName("yes").active = !lianXi; - target.getChildByName("start").active = lianXi; - } - cc.tween(target) - .delay(0.1) - .to(0.25, { opacity: 255, scale: 1 }) - .delay(0.3) - .call(function () { - if (target.name == "lose") { - cc.tween(target.getChildByName("tip")) - .to(0.5, { opacity: 255 }) - .delay(0.5) - .call(function () { - _this.can_Touch = true; - target.getChildByName("btn").active = true; - }) - .start(); - } - else { - _this.can_Touch = true; - target.getChildByName("btn").active = true; - } - }) - .start(); - }; - NewClass.prototype.setErrLabel = function (code) { - var tip = this.node.getChildByName("lose").getChildByName("tip").getComponent(cc.Label); - tip.string = cc.fx.GameConfig.TIP_ERR[code]; - }; - NewClass.prototype.click_Next = function () { - var _this = this; - if (!this.can_Touch) { - return; - } - this.can_Touch = false; - cc.tween(this.node) - .to(0.3, { opacity: 0 }) - .call(function () { - _this.node.active = false; - cc.director.loadScene("GameScene"); - }) - .start(); - }; - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + return _super !== null && _super.apply(this, arguments) || this; + } + // LIFE-CYCLE CALLBACKS: + NewClass.prototype.onLoad = function () { + this.can_Touch = false; + }; + NewClass.prototype.start = function () { + }; + NewClass.prototype.init = function (data) { + var _this = this; + this.can_Touch = false; + this.node.getChildByName("win").active = false; + this.node.getChildByName("lose").active = false; + this.node.getChildByName("finishi").active = false; + this.node.getChildByName(data.result).active = true; + if (data.result == "lose") { + this.setErrLabel(data.code); + } + var target = this.node.getChildByName(data.result); + target.getChildByName("btn").active = false; + target.opacity = 0; + target.scale = 2; + target.getChildByName("tip").opacity = 0; + if (data.result == "win") { + var lianXi = false; + if (cc.fx.GameConfig.GM_INFO.level == 2) + lianXi = true; + target.getChildByName("yes").active = !lianXi; + target.getChildByName("start").active = lianXi; + } + cc.tween(target) + .delay(0.1) + .to(0.25, { opacity: 255, scale: 1 }) + .delay(0.3) + .call(function () { + if (target.name == "lose") { + cc.tween(target.getChildByName("tip")) + .to(0.5, { opacity: 255 }) + .delay(0.5) + .call(function () { + _this.can_Touch = true; + target.getChildByName("btn").active = true; + }) + .start(); + } + else { + _this.can_Touch = true; + target.getChildByName("btn").active = true; + } + }) + .start(); + }; + NewClass.prototype.setErrLabel = function (code) { + var tip = this.node.getChildByName("lose").getChildByName("tip").getComponent(cc.Label); + tip.string = cc.fx.GameConfig.TIP_ERR[code]; + }; + NewClass.prototype.click_Next = function () { + var _this = this; + if (!this.can_Touch) { + return; + } + this.can_Touch = false; + cc.tween(this.node) + .to(0.3, { opacity: 0 }) + .call(function () { + _this.node.active = false; + cc.director.loadScene("GameScene"); + }) + .start(); + }; + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -9970,71 +7596,6 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxXaW5kb3cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFNUUsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFHMUM7SUFBc0MsNEJBQVk7SUFBbEQ7O0lBMkVBLENBQUM7SUF4RUcsd0JBQXdCO0lBRXhCLHlCQUFNLEdBQU47UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBRUQsd0JBQUssR0FBTDtJQUVBLENBQUM7SUFFRCx1QkFBSSxHQUFKLFVBQUssSUFBSTtRQUFULGlCQXdDQztRQXZDRyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDaEQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNwRCxJQUFHLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxFQUFDO1lBQ3JCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FB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Q0FBQztJQUNiLENBQUM7SUF4RWdCLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0EyRTVCO0lBQUQsZUFBQztDQTNFRCxBQTJFQyxDQTNFcUMsRUFBRSxDQUFDLFNBQVMsR0EyRWpEO2tCQTNFb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgY2FuX1RvdWNoOiBib29sZWFuO1xyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgdGhpcy5jYW5fVG91Y2ggPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGluaXQoZGF0YSl7XHJcbiAgICAgICAgdGhpcy5jYW5fVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ3aW5cIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibG9zZVwiKS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmaW5pc2hpXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShkYXRhLnJlc3VsdCkuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBpZihkYXRhLnJlc3VsdCA9PSBcImxvc2VcIil7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RXJyTGFiZWwoZGF0YS5jb2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHRhcmdldCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShkYXRhLnJlc3VsdCk7XHJcbiAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiYnRuXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRhcmdldC5vcGFjaXR5ID0gMDsgdGFyZ2V0LnNjYWxlID0gMjt0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIikub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgaWYoZGF0YS5yZXN1bHQgPT0gXCJ3aW5cIil7XHJcbiAgICAgICAgICAgIHZhciBsaWFuWGkgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmxldmVsID09IDIpIGxpYW5YaSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcInllc1wiKS5hY3RpdmUgPSAhbGlhblhpO1xyXG4gICAgICAgICAgICB0YXJnZXQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFydFwiKS5hY3RpdmUgPSBsaWFuWGk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLnR3ZWVuKHRhcmdldClcclxuICAgICAgICAuZGVsYXkoMC4xKVxyXG4gICAgICAgIC50bygwLjI1LHtvcGFjaXR5OjI1NSxzY2FsZToxfSlcclxuICAgICAgICAuZGVsYXkoMC4zKVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIGlmKHRhcmdldC5uYW1lID09IFwibG9zZVwiKXtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcInRpcFwiKSlcclxuICAgICAgICAgICAgICAgIC50bygwLjUse29wYWNpdHk6MjU1fSlcclxuICAgICAgICAgICAgICAgIC5kZWxheSgwLjUpXHJcbiAgICAgICAgICAgICAgICAuY2FsbCgoKSA9PntcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbl9Ub3VjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmdldENoaWxkQnlOYW1lKFwiYnRuXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2FuX1RvdWNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRhcmdldC5nZXRDaGlsZEJ5TmFtZShcImJ0blwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0RXJyTGFiZWwoY29kZSl7XHJcbiAgICAgICAgdmFyIHRpcCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImxvc2VcIikuZ2V0Q2hpbGRCeU5hbWUoXCJ0aXBcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICB0aXAuc3RyaW5nID0gY2MuZnguR2FtZUNvbmZpZy5USVBfRVJSW2NvZGVdO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrX05leHQoKXtcclxuICAgICAgICBpZighdGhpcy5jYW5fVG91Y2gpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2FuX1RvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlKVxyXG4gICAgICAgIC50bygwLjMse29wYWNpdHk6MH0pXHJcbiAgICAgICAgLmNhbGwoKCkgPT57XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR2FtZVNjZW5lXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_collide_system/lq_collide_config.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '4bd21i88J9KfoWB6fqk7oW1', 'lq_collide_config'); -// Script/lq_collide_system/lq_collide_config.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQCollideConfig = exports.LQCollideInfoList = void 0; -var LQCollideInfoList; -(function (LQCollideInfoList) { - LQCollideInfoList[LQCollideInfoList["default"] = 0] = "default"; - LQCollideInfoList[LQCollideInfoList["role"] = 1] = "role"; - LQCollideInfoList[LQCollideInfoList["role_bullet"] = 2] = "role_bullet"; - LQCollideInfoList[LQCollideInfoList["enemy"] = 3] = "enemy"; - LQCollideInfoList[LQCollideInfoList["enemy_bullet"] = 4] = "enemy_bullet"; - LQCollideInfoList[LQCollideInfoList["prop"] = 5] = "prop"; -})(LQCollideInfoList = exports.LQCollideInfoList || (exports.LQCollideInfoList = {})); -var LQCollideConfig = /** @class */ (function () { - function LQCollideConfig() { - } - LQCollideConfig.switch_auto_run = true; - LQCollideConfig.switch_print_log = true; - LQCollideConfig.switch_quad_tree = false; - LQCollideConfig.max_node_len = 10; - LQCollideConfig.per_frame = 60; - LQCollideConfig.max_node_level = 4; - LQCollideConfig.active_area_x = 0; - LQCollideConfig.active_area_y = 0; - LQCollideConfig.active_area_width = 1000; - LQCollideConfig.active_area_height = 1000; - LQCollideConfig.collide_group_map = { - "default": { id: 1, category: 1, index: 0, mask: 1 }, - "role": { id: 2, category: 2, index: 1, mask: 56 }, - "role_bullet": { id: 3, category: 4, index: 2, mask: 8 }, - "enemy": { id: 4, category: 8, index: 3, mask: 6 }, - "enemy_bullet": { id: 5, category: 16, index: 4, mask: 2 }, - "prop": { id: 6, category: 32, index: 5, mask: 2 }, - }; - return LQCollideConfig; -}()); -exports.LQCollideConfig = LQCollideConfig; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZV9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBWSxpQkFFWDtBQUZELFdBQVksaUJBQWlCO0lBQ3pCLCtEQUFPLENBQUE7SUFBRSx5REFBSSxDQUFBO0lBQUUsdUVBQVcsQ0FBQTtJQUFFLDJEQUFLLENBQUE7SUFBRSx5RUFBWSxDQUFBO0lBQUUseURBQUksQ0FBQTtBQUN6RCxDQUFDLEVBRlcsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFFNUI7QUFFRDtJQUFBO0lBbUJBLENBQUM7SUFsQmlCLCtCQUFlLEdBQVksSUFBSSxDQUFDO0lBQ2hDLGdDQUFnQixHQUFZLElBQUksQ0FBQztJQUNqQyxnQ0FBZ0IsR0FBWSxLQUFLLENBQUM7SUFDbEMsNEJBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIseUJBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsOEJBQWMsR0FBVyxDQUFDLENBQUM7SUFDM0IsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsaUNBQWlCLEdBQVcsSUFBSSxDQUFDO0lBQ2pDLGtDQUFrQixHQUFXLElBQUksQ0FBQztJQUNsQyxpQ0FBaUIsR0FBRztRQUM5QixTQUFTLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2xELE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUM7UUFDaEQsYUFBYSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztRQUN0RCxPQUFPLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2hELGNBQWMsRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUM7UUFDeEQsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztLQUNuRCxDQUFBO0lBQ0wsc0JBQUM7Q0FuQkQsQUFtQkMsSUFBQTtBQW5CWSwwQ0FBZSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExRQ29sbGlkZUluZm9MaXN0IHtcclxuICAgIGRlZmF1bHQsIHJvbGUsIHJvbGVfYnVsbGV0LCBlbmVteSwgZW5lbXlfYnVsbGV0LCBwcm9wXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMUUNvbGxpZGVDb25maWcge1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfYXV0b19ydW46IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfcHJpbnRfbG9nOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBzdGF0aWMgc3dpdGNoX3F1YWRfdHJlZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZW46IG51bWJlciA9IDEwO1xyXG4gICAgcHVibGljIHN0YXRpYyBwZXJfZnJhbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZXZlbDogbnVtYmVyID0gNDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeTogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfd2lkdGg6IG51bWJlciA9IDEwMDA7XHJcbiAgICBwdWJsaWMgc3RhdGljIGFjdGl2ZV9hcmVhX2hlaWdodDogbnVtYmVyID0gMTAwMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgY29sbGlkZV9ncm91cF9tYXAgPSB7XHJcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtpZDogMSwgY2F0ZWdvcnk6IDEsIGluZGV4OiAwLCBtYXNrOiAxfSxcclxuICAgICAgICBcInJvbGVcIjoge2lkOiAyLCBjYXRlZ29yeTogMiwgaW5kZXg6IDEsIG1hc2s6IDU2fSxcclxuICAgICAgICBcInJvbGVfYnVsbGV0XCI6IHtpZDogMywgY2F0ZWdvcnk6IDQsIGluZGV4OiAyLCBtYXNrOiA4fSxcclxuICAgICAgICBcImVuZW15XCI6IHtpZDogNCwgY2F0ZWdvcnk6IDgsIGluZGV4OiAzLCBtYXNrOiA2fSxcclxuICAgICAgICBcImVuZW15X2J1bGxldFwiOiB7aWQ6IDUsIGNhdGVnb3J5OiAxNiwgaW5kZXg6IDQsIG1hc2s6IDJ9LFxyXG4gICAgICAgIFwicHJvcFwiOiB7aWQ6IDYsIGNhdGVnb3J5OiAzMiwgaW5kZXg6IDUsIG1hc2s6IDJ9LFxyXG4gICAgfVxyXG59Il19 //------QC-SOURCE-SPLIT------ (function() { @@ -10051,319 +7612,319 @@ cc._RF.pop(); cc._RF.push(module, '87a44m5f/pPAKIrsyArSr/V', 'Wall'); // Script/Wall.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.WallColor = exports.WallType = exports.WallSpecial = void 0; -var Map_1 = require("./Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var WallSpecial; -(function (WallSpecial) { - /*普通门*/ - WallSpecial[WallSpecial["\u666E\u901A\u95E8"] = 0] = "\u666E\u901A\u95E8"; - /*星星门*/ - WallSpecial[WallSpecial["\u661F\u661F\u95E8"] = 1] = "\u661F\u661F\u95E8"; - /*开关门*/ - WallSpecial[WallSpecial["\u5F00\u5173\u95E8"] = 2] = "\u5F00\u5173\u95E8"; - /*冻结门 */ - WallSpecial[WallSpecial["\u51BB\u7ED3\u95E8"] = 3] = "\u51BB\u7ED3\u95E8"; -})(WallSpecial = exports.WallSpecial || (exports.WallSpecial = {})); -var WallType; -(function (WallType) { - /*普通地块 */ - WallType[WallType["\u95E8\u6A2A\u5411\u4E0B"] = 0] = "\u95E8\u6A2A\u5411\u4E0B"; - /*起点地块 */ - WallType[WallType["\u95E8\u6A2A\u5411\u4E0A"] = 1] = "\u95E8\u6A2A\u5411\u4E0A"; - /*湿地 */ - WallType[WallType["\u95E8\u7AD6\u5411\u53F3"] = 2] = "\u95E8\u7AD6\u5411\u53F3"; - /*山峰 */ - WallType[WallType["\u95E8\u7AD6\u5411\u5DE6"] = 3] = "\u95E8\u7AD6\u5411\u5DE6"; - /*终点地块 */ - WallType[WallType["\u5899\u6A2A\u5411\u4E0B"] = 4] = "\u5899\u6A2A\u5411\u4E0B"; - /*息壤 */ - WallType[WallType["\u5899\u6A2A\u5411\u4E0A"] = 5] = "\u5899\u6A2A\u5411\u4E0A"; - /*加固 */ - WallType[WallType["\u5899\u7AD6\u5411\u53F3"] = 6] = "\u5899\u7AD6\u5411\u53F3"; - /*加固 */ - WallType[WallType["\u5899\u7AD6\u5411\u5DE6"] = 7] = "\u5899\u7AD6\u5411\u5DE6"; -})(WallType = exports.WallType || (exports.WallType = {})); -var WallColor; -(function (WallColor) { - /*普通地块 */ - WallColor[WallColor["\u7D2B\u8272"] = 0] = "\u7D2B\u8272"; - /*湿地 */ - WallColor[WallColor["\u9EC4\u8272"] = 1] = "\u9EC4\u8272"; - /*山峰 */ - WallColor[WallColor["\u7EFF\u8272"] = 2] = "\u7EFF\u8272"; - /*终点地块 */ - WallColor[WallColor["\u84DD\u8272"] = 3] = "\u84DD\u8272"; - /*息壤 */ - WallColor[WallColor["\u7C89\u8272"] = 4] = "\u7C89\u8272"; - /*加固 */ - WallColor[WallColor["\u6A58\u9EC4\u8272"] = 5] = "\u6A58\u9EC4\u8272"; - /*加固 */ - WallColor[WallColor["\u9752\u8272"] = 6] = "\u9752\u8272"; - /*加固 */ - WallColor[WallColor["\u767D\u8272"] = 7] = "\u767D\u8272"; - /*普通地块 */ - WallColor[WallColor["\u7EA2\u8272"] = 8] = "\u7EA2\u8272"; - /*普通地块 */ - WallColor[WallColor["\u7070\u8272"] = 9] = "\u7070\u8272"; -})(WallColor = exports.WallColor || (exports.WallColor = {})); -var Wall = /** @class */ (function (_super) { - __extends(Wall, _super); - function Wall() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.number = null; - _this.type = WallType.墙横向下; - _this.special = WallSpecial.普通门; - _this.color = WallColor.紫色; - _this.wall_SpriteFrames = null; - _this.down_SpriteFrames = null; - return _this; - // update (dt) {} - } - // LIFE-CYCLE CALLBACKS: - // onLoad () {} - Wall.prototype.start = function () { - // console.log(this.type); - }; - Wall.prototype.jsonDeepClone = function (obj) { - return JSON.parse(JSON.stringify(obj)); - }; - Wall.prototype.init = function (wall_Info, posX, posY, direction) { - this.wall_Info = this.jsonDeepClone(wall_Info); - // this.open = true; - if (wall_Info == null) { - this.posX = posX; - this.posY = posY; - if (direction) - this.direction = direction; - // console.log("门方向赋值",direction); - if (direction == "up") { - this.node.parent.zIndex = 100 + this.posX - this.posY * 3; - } - else if (direction == "down" || direction == "right" || - direction == "rightdown" || direction == "downright" - || direction == "rightup" || direction == "upright") { - this.node.parent.zIndex = 30 + this.posX - this.posY * 3; - } - else if (direction == "left" || direction == "leftdown" || direction == "downleft") { - this.node.parent.zIndex = 70 + this.posX - this.posY * 3; - } - else - this.node.parent.zIndex = 70 + this.posX - this.posY * 3; - Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; - //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); - // console.log(this.posX,this.posY,this.node.zIndex); - //this.node.getChildByName("num").getComponent(cc.Label).string = direction; - //this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; - } - if (wall_Info != null) { - this.color = wall_Info.color; - this.special = wall_Info.special; - this.initType(); - if (wall_Info.length > 0) { - this.initColor(wall_Info.length); - } - else - this.node.removeComponent("cc.Sprite"); - if (this.posX != null) { - Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; - //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); - } - } - // setTimeout(() => { - // this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; - // }, 1000); - }; - //创建门的颜色 - Wall.prototype.initColor = function (length) { - var direction = this.node.parent.name; - var double = 0; - if (direction == "left" || direction == "right") { - double = 3; - } - // debugger; - if (this.wall_SpriteFrames) { - var name = this.color + "color" + (length + double); - var spriteFrame = this.wall_SpriteFrames._spriteFrames[name]; - this.node.getComponent(cc.Sprite).spriteFrame = spriteFrame; - } - if (this.down_SpriteFrames) { - var name2 = this.color + "down" + (length + double); - var downFrame = this.down_SpriteFrames._spriteFrames[name2]; - this.node.parent.getChildByName("down").getComponent(cc.Sprite).spriteFrame = downFrame; - } - }; - //创建特殊类型门 - Wall.prototype.initType = function () { - switch (this.special) { - case WallSpecial.星星门: - var star = cc.instantiate(Map_1.default._instance.Block_Prop[this.special]); - star.parent = this.node.parent; - // console.log("门的方向",this.direction,"长度",this.wall_Info.length); - // star.scaleX = star.scaleY = 0.5; - if (this.wall_Info.length > 0) { - if (this.direction == "right" || this.direction == "left") { - star.children[this.wall_Info.length + 2].active = true; - } - else if (this.direction == "up" || this.direction == "down") { - star.children[this.wall_Info.length - 1].active = true; - } - } - star.setPosition(this.node.width / 2 + this.node.x, this.node.height / 2 + this.node.y); - break; - case WallSpecial.开关门: - var name = "open" + this.wall_Info.length; - this.openNode = this.node.parent.getChildByName("open").getChildByName(name); - this.openNode.active = true; - if (this.wall_Info.lock == false) { - this.open = true; - this.openNode.children[0].scaleX *= 0.01; - this.openNode.children[1].scaleX *= 0.01; - } - else { - this.open = false; - } - break; - case WallSpecial.冻结门: - var freeze = "freeze" + this.wall_Info.length; - this.freezeNode = this.node.parent.getChildByName("freeze").getChildByName(freeze); - this.freezeNode.active = true; - if (this.wall_Info.freeze) { - this.freezeNode.getChildByName("num").getComponent(cc.Label).string = this.wall_Info.freeze + ""; - } - break; - } - }; - //播放星星门通过 - Wall.prototype.playStarDoor = function () { - if (this.node.parent.getChildByName("star")) { - var star = this.node.parent.getChildByName("star"); - for (var i = 0; i < star.children.length; i++) { - if (star.children[i].active == true) { - var starChild = star.children[i]; - for (var j = 0; j < starChild.children.length; j++) { - starChild.children[j].active = true; - starChild.children[j].getComponent(sp.Skeleton).setAnimation(1, "taopao1", false); - } - } - } - } - }; - //改变开关门状态 - Wall.prototype.changeLock = function () { - this.open = !this.open; - console.log("开关门状态改变", this.open); - if (!this.openNode.active) { - this.openNode.active = true; - } - var fill = this.openNode.children[0].scaleX == 1 ? 0.01 : 1; - if (this.openNode.children[0].scaleX < 0) - fill = -fill; - // console.log("目标",fill); - cc.tween(this.openNode.children[0]) - .to(0.3, { scaleX: this.openNode.children[0].scaleX < 0 ? -fill : fill }) - .call(function () { - // console.log("左边完成"); - }) - .start(); - cc.tween(this.openNode.children[1]) - .to(0.3, { scaleX: this.openNode.children[1].scaleX < 0 ? -fill : fill }) - .call(function () { - // console.log("右边完成"); - }) - .start(); - }; - Wall.prototype.changeFreeze = function () { - var numStr = this.freezeNode.getChildByName("num").getComponent(cc.Label); - var num = parseInt(numStr.string); - num -= 1; - this.freezeNode.getChildByName("num").getComponent(cc.Label).string = num + ""; - if (num == 0) { - this.freezeNode.parent.active = false; - } - }; - Wall.prototype.downDoor = function () { - if (this.openNode) { - if (this.openNode.children[0].scaleX == 1) - return; - } - if (this.freezeNode) { - if (this.freezeNode.active == true) - return; - } - this.node.opacity = 0; - if (this.special == WallSpecial.星星门) { - this.node.parent.getChildByName("star").y -= 10; - } - this.node.parent.getChildByName("down").active = true; - }; - Wall.prototype.upDoor = function () { - if (this.special == WallSpecial.星星门) { - this.node.parent.getChildByName("star").y += 10; - } - this.node.parent.getChildByName("down").active = false; - this.node.opacity = 250; - }; - __decorate([ - property(cc.Label) - ], Wall.prototype, "number", void 0); - __decorate([ - property({ - tooltip: '墙或者门的方向', - type: cc.Enum(WallType), - }) - ], Wall.prototype, "type", void 0); - __decorate([ - property({ - tooltip: '墙或者门的方向', - type: cc.Enum(WallSpecial), - }) - ], Wall.prototype, "special", void 0); - __decorate([ - property({ - tooltip: '门的颜色', - type: cc.Enum(WallColor), - }) - ], Wall.prototype, "color", void 0); - __decorate([ - property(cc.SpriteAtlas) - ], Wall.prototype, "wall_SpriteFrames", void 0); - __decorate([ - property(cc.SpriteAtlas) - ], Wall.prototype, "down_SpriteFrames", void 0); - Wall = __decorate([ - ccclass - ], Wall); - return Wall; -}(cc.Component)); -exports.default = Wall; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.WallColor = exports.WallType = exports.WallSpecial = void 0; +var Map_1 = require("./Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var WallSpecial; +(function (WallSpecial) { + /*普通门*/ + WallSpecial[WallSpecial["\u666E\u901A\u95E8"] = 0] = "\u666E\u901A\u95E8"; + /*星星门*/ + WallSpecial[WallSpecial["\u661F\u661F\u95E8"] = 1] = "\u661F\u661F\u95E8"; + /*开关门*/ + WallSpecial[WallSpecial["\u5F00\u5173\u95E8"] = 2] = "\u5F00\u5173\u95E8"; + /*冻结门 */ + WallSpecial[WallSpecial["\u51BB\u7ED3\u95E8"] = 3] = "\u51BB\u7ED3\u95E8"; +})(WallSpecial = exports.WallSpecial || (exports.WallSpecial = {})); +var WallType; +(function (WallType) { + /*普通地块 */ + WallType[WallType["\u95E8\u6A2A\u5411\u4E0B"] = 0] = "\u95E8\u6A2A\u5411\u4E0B"; + /*起点地块 */ + WallType[WallType["\u95E8\u6A2A\u5411\u4E0A"] = 1] = "\u95E8\u6A2A\u5411\u4E0A"; + /*湿地 */ + WallType[WallType["\u95E8\u7AD6\u5411\u53F3"] = 2] = "\u95E8\u7AD6\u5411\u53F3"; + /*山峰 */ + WallType[WallType["\u95E8\u7AD6\u5411\u5DE6"] = 3] = "\u95E8\u7AD6\u5411\u5DE6"; + /*终点地块 */ + WallType[WallType["\u5899\u6A2A\u5411\u4E0B"] = 4] = "\u5899\u6A2A\u5411\u4E0B"; + /*息壤 */ + WallType[WallType["\u5899\u6A2A\u5411\u4E0A"] = 5] = "\u5899\u6A2A\u5411\u4E0A"; + /*加固 */ + WallType[WallType["\u5899\u7AD6\u5411\u53F3"] = 6] = "\u5899\u7AD6\u5411\u53F3"; + /*加固 */ + WallType[WallType["\u5899\u7AD6\u5411\u5DE6"] = 7] = "\u5899\u7AD6\u5411\u5DE6"; +})(WallType = exports.WallType || (exports.WallType = {})); +var WallColor; +(function (WallColor) { + /*普通地块 */ + WallColor[WallColor["\u7D2B\u8272"] = 0] = "\u7D2B\u8272"; + /*湿地 */ + WallColor[WallColor["\u9EC4\u8272"] = 1] = "\u9EC4\u8272"; + /*山峰 */ + WallColor[WallColor["\u7EFF\u8272"] = 2] = "\u7EFF\u8272"; + /*终点地块 */ + WallColor[WallColor["\u84DD\u8272"] = 3] = "\u84DD\u8272"; + /*息壤 */ + WallColor[WallColor["\u7C89\u8272"] = 4] = "\u7C89\u8272"; + /*加固 */ + WallColor[WallColor["\u6A58\u9EC4\u8272"] = 5] = "\u6A58\u9EC4\u8272"; + /*加固 */ + WallColor[WallColor["\u9752\u8272"] = 6] = "\u9752\u8272"; + /*加固 */ + WallColor[WallColor["\u767D\u8272"] = 7] = "\u767D\u8272"; + /*普通地块 */ + WallColor[WallColor["\u7EA2\u8272"] = 8] = "\u7EA2\u8272"; + /*普通地块 */ + WallColor[WallColor["\u7070\u8272"] = 9] = "\u7070\u8272"; +})(WallColor = exports.WallColor || (exports.WallColor = {})); +var Wall = /** @class */ (function (_super) { + __extends(Wall, _super); + function Wall() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.number = null; + _this.type = WallType.墙横向下; + _this.special = WallSpecial.普通门; + _this.color = WallColor.紫色; + _this.wall_SpriteFrames = null; + _this.down_SpriteFrames = null; + return _this; + // update (dt) {} + } + // LIFE-CYCLE CALLBACKS: + // onLoad () {} + Wall.prototype.start = function () { + // console.log(this.type); + }; + Wall.prototype.jsonDeepClone = function (obj) { + return JSON.parse(JSON.stringify(obj)); + }; + Wall.prototype.init = function (wall_Info, posX, posY, direction) { + this.wall_Info = this.jsonDeepClone(wall_Info); + // this.open = true; + if (wall_Info == null) { + this.posX = posX; + this.posY = posY; + if (direction) + this.direction = direction; + // console.log("门方向赋值",direction); + if (direction == "up") { + this.node.parent.zIndex = 100 + this.posX - this.posY * 3; + } + else if (direction == "down" || direction == "right" || + direction == "rightdown" || direction == "downright" + || direction == "rightup" || direction == "upright") { + this.node.parent.zIndex = 30 + this.posX - this.posY * 3; + } + else if (direction == "left" || direction == "leftdown" || direction == "downleft") { + this.node.parent.zIndex = 70 + this.posX - this.posY * 3; + } + else + this.node.parent.zIndex = 70 + this.posX - this.posY * 3; + Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; + //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); + // console.log(this.posX,this.posY,this.node.zIndex); + //this.node.getChildByName("num").getComponent(cc.Label).string = direction; + //this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; + } + if (wall_Info != null) { + this.color = wall_Info.color; + this.special = wall_Info.special; + this.initType(); + if (wall_Info.length > 0) { + this.initColor(wall_Info.length); + } + else + this.node.removeComponent("cc.Sprite"); + if (this.posX != null) { + Map_1.default._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id = "Wall"; + //console.log(this.posX,this.posY,MapConroler._instance.mapBlocksWall[this.posX][this.posY].getComponent("MapBlock").block_Id); + } + } + // setTimeout(() => { + // this.node.getChildByName("num").getComponent(cc.Label).string = ":" + this.node.parent.zIndex; + // }, 1000); + }; + //创建门的颜色 + Wall.prototype.initColor = function (length) { + var direction = this.node.parent.name; + var double = 0; + if (direction == "left" || direction == "right") { + double = 3; + } + // debugger; + if (this.wall_SpriteFrames) { + var name = this.color + "color" + (length + double); + var spriteFrame = this.wall_SpriteFrames._spriteFrames[name]; + this.node.getComponent(cc.Sprite).spriteFrame = spriteFrame; + } + if (this.down_SpriteFrames) { + var name2 = this.color + "down" + (length + double); + var downFrame = this.down_SpriteFrames._spriteFrames[name2]; + this.node.parent.getChildByName("down").getComponent(cc.Sprite).spriteFrame = downFrame; + } + }; + //创建特殊类型门 + Wall.prototype.initType = function () { + switch (this.special) { + case WallSpecial.星星门: + var star = cc.instantiate(Map_1.default._instance.Block_Prop[this.special]); + star.parent = this.node.parent; + // console.log("门的方向",this.direction,"长度",this.wall_Info.length); + // star.scaleX = star.scaleY = 0.5; + if (this.wall_Info.length > 0) { + if (this.direction == "right" || this.direction == "left") { + star.children[this.wall_Info.length + 2].active = true; + } + else if (this.direction == "up" || this.direction == "down") { + star.children[this.wall_Info.length - 1].active = true; + } + } + star.setPosition(this.node.width / 2 + this.node.x, this.node.height / 2 + this.node.y); + break; + case WallSpecial.开关门: + var name = "open" + this.wall_Info.length; + this.openNode = this.node.parent.getChildByName("open").getChildByName(name); + this.openNode.active = true; + if (this.wall_Info.lock == false) { + this.open = true; + this.openNode.children[0].scaleX *= 0.01; + this.openNode.children[1].scaleX *= 0.01; + } + else { + this.open = false; + } + break; + case WallSpecial.冻结门: + var freeze = "freeze" + this.wall_Info.length; + this.freezeNode = this.node.parent.getChildByName("freeze").getChildByName(freeze); + this.freezeNode.active = true; + if (this.wall_Info.freeze) { + this.freezeNode.getChildByName("num").getComponent(cc.Label).string = this.wall_Info.freeze + ""; + } + break; + } + }; + //播放星星门通过 + Wall.prototype.playStarDoor = function () { + if (this.node.parent.getChildByName("star")) { + var star = this.node.parent.getChildByName("star"); + for (var i = 0; i < star.children.length; i++) { + if (star.children[i].active == true) { + var starChild = star.children[i]; + for (var j = 0; j < starChild.children.length; j++) { + starChild.children[j].active = true; + starChild.children[j].getComponent(sp.Skeleton).setAnimation(1, "taopao1", false); + } + } + } + } + }; + //改变开关门状态 + Wall.prototype.changeLock = function () { + this.open = !this.open; + console.log("开关门状态改变", this.open); + if (!this.openNode.active) { + this.openNode.active = true; + } + var fill = this.openNode.children[0].scaleX == 1 ? 0.01 : 1; + if (this.openNode.children[0].scaleX < 0) + fill = -fill; + // console.log("目标",fill); + cc.tween(this.openNode.children[0]) + .to(0.3, { scaleX: this.openNode.children[0].scaleX < 0 ? -fill : fill }) + .call(function () { + // console.log("左边完成"); + }) + .start(); + cc.tween(this.openNode.children[1]) + .to(0.3, { scaleX: this.openNode.children[1].scaleX < 0 ? -fill : fill }) + .call(function () { + // console.log("右边完成"); + }) + .start(); + }; + Wall.prototype.changeFreeze = function () { + var numStr = this.freezeNode.getChildByName("num").getComponent(cc.Label); + var num = parseInt(numStr.string); + num -= 1; + this.freezeNode.getChildByName("num").getComponent(cc.Label).string = num + ""; + if (num == 0) { + this.freezeNode.parent.active = false; + } + }; + Wall.prototype.downDoor = function () { + if (this.openNode) { + if (this.openNode.children[0].scaleX == 1) + return; + } + if (this.freezeNode) { + if (this.freezeNode.active == true) + return; + } + this.node.opacity = 0; + if (this.special == WallSpecial.星星门) { + this.node.parent.getChildByName("star").y -= 10; + } + this.node.parent.getChildByName("down").active = true; + }; + Wall.prototype.upDoor = function () { + if (this.special == WallSpecial.星星门) { + this.node.parent.getChildByName("star").y += 10; + } + this.node.parent.getChildByName("down").active = false; + this.node.opacity = 250; + }; + __decorate([ + property(cc.Label) + ], Wall.prototype, "number", void 0); + __decorate([ + property({ + tooltip: '墙或者门的方向', + type: cc.Enum(WallType), + }) + ], Wall.prototype, "type", void 0); + __decorate([ + property({ + tooltip: '墙或者门的方向', + type: cc.Enum(WallSpecial), + }) + ], Wall.prototype, "special", void 0); + __decorate([ + property({ + tooltip: '门的颜色', + type: cc.Enum(WallColor), + }) + ], Wall.prototype, "color", void 0); + __decorate([ + property(cc.SpriteAtlas) + ], Wall.prototype, "wall_SpriteFrames", void 0); + __decorate([ + property(cc.SpriteAtlas) + ], Wall.prototype, "down_SpriteFrames", void 0); + Wall = __decorate([ + ccclass + ], Wall); + return Wall; +}(cc.Component)); +exports.default = Wall; cc._RF.pop(); } @@ -10377,6 +7938,656 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxXYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRiw2QkFBZ0M7QUFFMUIsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFFMUMsSUFBWSxXQVNYO0FBVEQsV0FBWSxXQUFXO0lBQ25CLE9BQU87SUFDUCx5RUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHlFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AseUVBQVMsQ0FBQTtJQUNULFFBQVE7SUFDUix5RUFBUyxDQUFBO0FBQ2IsQ0FBQyxFQVRXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBU3RCO0FBRUQsSUFBWSxRQWtCWDtBQWxCRCxXQUFZLFFBQVE7SUFFaEIsU0FBUztJQUNULCtFQUFVLENBQUE7SUFDVixTQUFTO0lBQ1QsK0VBQVUsQ0FBQTtJQUNWLE9BQU87SUFDUCwrRUFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLCtFQUFVLENBQUE7SUFDVixTQUFTO0lBQ1QsK0VBQVUsQ0FBQTtJQUNWLE9BQU87SUFDUCwrRUFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLCtFQUFVLENBQUE7SUFDVixPQUFPO0lBQ1AsK0VBQVUsQ0FBQTtBQUNkLENBQUMsRUFsQlcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFrQm5CO0FBRUQsSUFBWSxTQXFCWDtBQXJCRCxXQUFZLFNBQVM7SUFDakIsU0FBUztJQUNULHlEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AseURBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCx5REFBUSxDQUFBO0lBQ1IsU0FBUztJQUNULHlEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AseURB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LFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUM3QixDQUFDO3lDQUNxQztJQU12QztRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxNQUFNO1lBQ2YsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzNCLENBQUM7dUNBQzhCO0lBR2hDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7bURBQ2dCO0lBR3pDO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7bURBQ2dCO0lBM0J4QixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBcVB4QjtJQUFELFdBQUM7Q0FyUEQsQUFxUEMsQ0FyUGlDLEVBQUUsQ0FBQyxTQUFTLEdBcVA3QztrQkFyUG9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbmV4cG9ydCBlbnVtIFdhbGxTcGVjaWFse1xyXG4gICAgLyrmma7pgJrpl6gqL1xyXG4gICAgXCLmma7pgJrpl6hcIiA9IDAsICBcclxuICAgIC8q5pif5pif6ZeoKi9cclxuICAgIFwi5pif5pif6ZeoXCIgPSAxLCAgXHJcbiAgICAvKuW8gOWFs+mXqCovXHJcbiAgICBcIuW8gOWFs+mXqFwiID0gMiwgIFxyXG4gICAgLyrlhrvnu5Ppl6ggKi9cclxuICAgIFwi5Ya757uT6ZeoXCIgPSAzLCAgXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFdhbGxUeXBle1xyXG4gICAgXHJcbiAgICAvKuaZrumAmuWcsOWdlyAqL1xyXG4gICAgXCLpl6jmqKrlkJHkuItcIiA9IDAsICBcclxuICAgIC8q6LW354K55Zyw5Z2XICovXHJcbiAgICBcIumXqOaoquWQkeS4ilwiID0gMSwgIFxyXG4gICAgLyrmub/lnLAgKi9cclxuICAgIFwi6Zeo56uW5ZCR5Y+zXCIgPSAyLCAgXHJcbiAgICAvKuWxseWzsCAqL1xyXG4gICAgXCLpl6jnq5blkJHlt6ZcIiA9IDMsICBcclxuICAgIC8q57uI54K55Zyw5Z2XICovXHJcbiAgICBcIuWimeaoquWQkeS4i1wiID0gNCwgIFxyXG4gICAgLyrmga/lo6QgKi9cclxuICAgIFwi5aKZ5qiq5ZCR5LiKXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLlopnnq5blkJHlj7NcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuWimeerluWQkeW3plwiID0gNywgIFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBXYWxsQ29sb3J7XHJcbiAgICAvKuaZrumAmuWcsOWdlyAqL1xyXG4gICAgXCLntKvoibJcIiA9IDAsICBcclxuICAgIC8q5rm/5ZywICovXHJcbiAgICBcIum7hOiJslwiID0gMSwgIFxyXG4gICAgLyrlsbHls7AgKi9cclxuICAgIFwi57u/6ImyXCIgPSAyLCAgXHJcbiAgICAvKue7iOeCueWcsOWdlyAqL1xyXG4gICAgXCLok53oibJcIiA9IDMsICBcclxuICAgIC8q5oGv5aOkICovXHJcbiAgICBcIueyieiJslwiID0gNCwgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5qmY6buE6ImyXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLpnZLoibJcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIueZveiJslwiID0gNywgIFxyXG4gICAgLyrmma7pgJrlnLDlnZcgKi9cclxuICAgIFwi57qi6ImyXCIgPSA4LCBcclxuICAgIC8q5pmu6YCa5Zyw5Z2XICovXHJcbiAgICBcIueBsOiJslwiID0gOSwgXHJcbn1cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdhbGwgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIG51bWJlcjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+WimeaIluiAhemXqOeahOaWueWQkScsXHJcbiAgICAgICAgdHlwZTogY2MuRW51bShXYWxsVHlwZSksXHJcbiAgICB9KVxyXG4gICAgdHlwZTogV2FsbFR5cGUgPSBXYWxsVHlwZS7lopnmqKrlkJHkuIs7XHJcblxyXG4gICAgQHByb3BlcnR5KHtcclxuICAgICAgICB0b29sdGlwOiAn5aKZ5oiW6ICF6Zeo55qE5pa55ZCRJyxcclxuICAgICAgICB0eXBlOiBjYy5FbnVtKFdhbGxTcGVjaWFsKSxcclxuICAgIH0pXHJcbiAgICBzcGVjaWFsOiBXYWxsU3BlY2lhbCA9IFdhbGxTcGVjaWFsLuaZrumAmumXqDtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfpl6jnmoTpopzoibInLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oV2FsbENvbG9yKSxcclxuICAgIH0pXHJcbiAgICBjb2xvcjogV2FsbENvbG9yID0gV2FsbENvbG9yLue0q+iJsjtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuU3ByaXRlQXRsYXMpXHJcbiAgICB3YWxsX1Nwcml0ZUZyYW1lczogY2MuU3ByaXRlQXRsYXMgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIGRvd25fU3ByaXRlRnJhbWVzOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcblxyXG5cclxuICAgIHBvc1g6IG51bWJlcjtcclxuICAgIHBvc1k6IG51bWJlcjtcclxuICAgIGRpcmVjdGlvbjogYW55O1xyXG4gICAgd2FsbF9JbmZvOiBhbnk7XHJcbiAgICBvcGVuTm9kZTogY2MuTm9kZTtcclxuICAgIGZyZWV6ZU5vZGU6IGNjLk5vZGU7XHJcbiAgICBvcGVuOmJvb2xlYW47XHJcbiAgICBcclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy50eXBlKTtcclxuICAgIH1cclxuXHJcbiAgICBqc29uRGVlcENsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQod2FsbF9JbmZvLCBwb3NYOiBudW1iZXIsIHBvc1k6IG51bWJlciwgZGlyZWN0aW9uOiBhbnkpe1xyXG4gICAgICAgIFxyXG4gICAgICAgIHRoaXMud2FsbF9JbmZvID0gdGhpcy5qc29uRGVlcENsb25lKHdhbGxfSW5mbyk7XHJcbiAgICAgICAgLy8gdGhpcy5vcGVuID0gdHJ1ZTtcclxuICAgICAgICBpZih3YWxsX0luZm8gPT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMucG9zWCA9IHBvc1g7XHJcbiAgICAgICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZihkaXJlY3Rpb24pdGhpcy5kaXJlY3Rpb24gPSBkaXJlY3Rpb247XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi6Zeo5pa55ZCR6LWL5YC8XCIsZGlyZWN0aW9uKTtcclxuICAgICAgICAgICAgaWYoZGlyZWN0aW9uID09IFwidXBcIiApe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSAxMDAgKyB0aGlzLnBvc1ggLSB0aGlzLnBvc1kqMztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKCBkaXJlY3Rpb24gPT0gXCJkb3duXCIgfHwgZGlyZWN0aW9uID09IFwicmlnaHRcIiB8fCBcclxuICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9PSBcInJpZ2h0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25yaWdodFwiXHJcbiAgICAgICAgICAgIHx8IGRpcmVjdGlvbiA9PSBcInJpZ2h0dXBcIiB8fCBkaXJlY3Rpb24gPT0gXCJ1cHJpZ2h0XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSAzMCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKCBkaXJlY3Rpb24gPT0gXCJsZWZ0XCJ8fCBkaXJlY3Rpb24gPT0gXCJsZWZ0ZG93blwiIHx8IGRpcmVjdGlvbiA9PSBcImRvd25sZWZ0XCIpe1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC56SW5kZXggPSA3MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHRoaXMubm9kZS5wYXJlbnQuekluZGV4ID0gNzAgKyB0aGlzLnBvc1ggLSB0aGlzLnBvc1kqMztcclxuXHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBCbG9ja3NXYWxsW3RoaXMucG9zWF1bdGhpcy5wb3NZXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5ibG9ja19JZCA9IFwiV2FsbFwiO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMucG9zWCx0aGlzLnBvc1ksTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkKTtcclxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2codGhpcy5wb3NYLHRoaXMucG9zWSx0aGlzLm5vZGUuekluZGV4KTtcclxuICAgICAgICAgICAgLy90aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBkaXJlY3Rpb247XHJcbiAgICAgICAgICAgLy90aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBcIjpcIiArIHRoaXMubm9kZS5wYXJlbnQuekluZGV4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih3YWxsX0luZm8gIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMuY29sb3IgPSB3YWxsX0luZm8uY29sb3I7XHJcbiAgICAgICAgICAgIHRoaXMuc3BlY2lhbCA9IHdhbGxfSW5mby5zcGVjaWFsO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRUeXBlKCk7XHJcbiAgICAgICAgICAgIGlmKHdhbGxfSW5mby5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbG9yKHdhbGxfSW5mby5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgdGhpcy5ub2RlLnJlbW92ZUNvbXBvbmVudChcImNjLlNwcml0ZVwiKTtcclxuICAgICAgICAgICAgaWYodGhpcy5wb3NYICE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkID0gXCJXYWxsXCI7XHJcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKHRoaXMucG9zWCx0aGlzLnBvc1ksTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbdGhpcy5wb3NYXVt0aGlzLnBvc1ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLmJsb2NrX0lkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAvLyAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibnVtXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gXCI6XCIgKyB0aGlzLm5vZGUucGFyZW50LnpJbmRleDtcclxuICAgICAgICAvLyB9LCAxMDAwKTtcclxuIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu66Zeo55qE6aKc6ImyXHJcbiAgICBpbml0Q29sb3IobGVuZ3RoOiBudW1iZXIpe1xyXG4gICAgICAgIGxldCBkaXJlY3Rpb24gPSB0aGlzLm5vZGUucGFyZW50Lm5hbWU7XHJcbiAgICAgICAgbGV0IGRvdWJsZSA9IDA7XHJcbiAgICAgICAgaWYoZGlyZWN0aW9uID09IFwibGVmdFwiICB8fCBkaXJlY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgZG91YmxlID0gMztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgIGlmKHRoaXMud2FsbF9TcHJpdGVGcmFtZXMpe1xyXG4gICAgICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29sb3IrXCJjb2xvclwiICsgKGxlbmd0aCtkb3VibGUpO1xyXG4gICAgICAgICAgICB2YXIgc3ByaXRlRnJhbWUgPSB0aGlzLndhbGxfU3ByaXRlRnJhbWVzLl9zcHJpdGVGcmFtZXNbbmFtZV07XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwcml0ZUZyYW1lO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmRvd25fU3ByaXRlRnJhbWVzKXtcclxuICAgICAgICAgICAgbGV0IG5hbWUyID0gdGhpcy5jb2xvciArIFwiZG93blwiICsgKGxlbmd0aCtkb3VibGUpO1xyXG4gICAgICAgICAgICB2YXIgZG93bkZyYW1lID0gdGhpcy5kb3duX1Nwcml0ZUZyYW1lcy5fc3ByaXRlRnJhbWVzW25hbWUyXTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcImRvd25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBkb3duRnJhbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu654m55q6K57G75Z6L6ZeoXHJcbiAgICBpbml0VHlwZSgpe1xyXG4gICAgICAgIHN3aXRjaCh0aGlzLnNwZWNpYWwpe1xyXG4gICAgICAgICAgICBjYXNlIFdhbGxTcGVjaWFsLuaYn+aYn+mXqDpcclxuICAgICAgICAgICAgICAgIGxldCBzdGFyID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy5zcGVjaWFsXSk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLnBhcmVudCA9IHRoaXMubm9kZS5wYXJlbnQ7XHJcbiAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIumXqOeahOaWueWQkVwiLHRoaXMuZGlyZWN0aW9uLFwi6ZW/5bqmXCIsdGhpcy53YWxsX0luZm8ubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgIC8vIHN0YXIuc2NhbGVYID0gc3Rhci5zY2FsZVkgPSAwLjU7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLndhbGxfSW5mby5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmRpcmVjdGlvbiA9PSBcInJpZ2h0XCIgfHwgdGhpcy5kaXJlY3Rpb24gPT0gXCJsZWZ0XCIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFyLmNoaWxkcmVuW3RoaXMud2FsbF9JbmZvLmxlbmd0aCArIDJdLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5kaXJlY3Rpb24gPT0gXCJ1cFwiIHx8IHRoaXMuZGlyZWN0aW9uID09IFwiZG93blwiKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3Rhci5jaGlsZHJlblt0aGlzLndhbGxfSW5mby5sZW5ndGggLSAxXS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHN0YXIuc2V0UG9zaXRpb24odGhpcy5ub2RlLndpZHRoLzIrdGhpcy5ub2RlLngsdGhpcy5ub2RlLmhlaWdodC8yK3RoaXMubm9kZS55KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFdhbGxTcGVjaWFsLuW8gOWFs+mXqDpcclxuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gXCJvcGVuXCIgKyB0aGlzLndhbGxfSW5mby5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ob2RlID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcIm9wZW5cIikuZ2V0Q2hpbGRCeU5hbWUobmFtZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ob2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLndhbGxfSW5mby5sb2NrID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYICo9IDAuMDE7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuTm9kZS5jaGlsZHJlblsxXS5zY2FsZVggKj0gMC4wMTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBXYWxsU3BlY2lhbC7lhrvnu5Ppl6g6XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJlZXplID0gXCJmcmVlemVcIiArIHRoaXMud2FsbF9JbmZvLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZSA9IHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuZ2V0Q2hpbGRCeU5hbWUoZnJlZXplKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy53YWxsX0luZm8uZnJlZXplKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZyZWV6ZU5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLndhbGxfSW5mby5mcmVlemUrXCJcIjtcclxuICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IFxyXG4gICAgfVxyXG5cclxuICAgIC8v5pKt5pS+5pif5pif6Zeo6YCa6L+HXHJcbiAgICBwbGF5U3RhckRvb3IoKXtcclxuICAgICAgICBpZih0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwic3RhclwiKSl7XHJcbiAgICAgICAgICAgIGxldCBzdGFyID0gdGhpcy5ub2RlLnBhcmVudC5nZXRDaGlsZEJ5TmFtZShcInN0YXJcIik7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHN0YXIuY2hpbGRyZW4ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgaWYoc3Rhci5jaGlsZHJlbltpXS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0YXJDaGlsZCA9IHN0YXIuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yKGxldCBqPTA7IGo8c3RhckNoaWxkLmNoaWxkcmVuLmxlbmd0aDsgaisrKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhckNoaWxkLmNoaWxkcmVuW2pdLmFjdGl2ZSA9IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhckNoaWxkLmNoaWxkcmVuW2pdLmdldENvbXBvbmVudChzcC5Ta2VsZXRvbikuc2V0QW5pbWF0aW9uKDEsXCJ0YW9wYW8xXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy/mlLnlj5jlvIDlhbPpl6jnirbmgIFcclxuICAgIGNoYW5nZUxvY2soKXtcclxuICAgICAgICB0aGlzLm9wZW4gPSAhdGhpcy5vcGVuO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwi5byA5YWz6Zeo54q25oCB5pS55Y+YXCIsdGhpcy5vcGVuKTtcclxuICAgICAgICBpZighdGhpcy5vcGVuTm9kZS5hY3RpdmUpe1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Ob2RlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gIFxyXG5cclxuICAgICAgICBsZXQgZmlsbCA9IHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYPT0xID8gMC4wMToxO1xyXG4gICAgICAgIGlmKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYIDwgMCkgZmlsbCA9IC1maWxsO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi55uu5qCHXCIsZmlsbCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0pXHJcbiAgICAgICAgLnRvKDAuMywge3NjYWxlWDogdGhpcy5vcGVuTm9kZS5jaGlsZHJlblswXS5zY2FsZVggPCAwPy1maWxsOmZpbGx9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5bem6L655a6M5oiQXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcblxyXG4gICAgICAgIGNjLnR3ZWVuKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMV0pXHJcbiAgICAgICAgLnRvKDAuMywge3NjYWxlWDogdGhpcy5vcGVuTm9kZS5jaGlsZHJlblsxXS5zY2FsZVggPCAwPy1maWxsOmZpbGx9KVxyXG4gICAgICAgIC5jYWxsKCgpPT57XHJcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5Y+z6L655a6M5oiQXCIpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlRnJlZXplKCl7XHJcbiAgICAgICAgbGV0IG51bVN0ciA9IHRoaXMuZnJlZXplTm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgIGxldCBudW0gPSBwYXJzZUludChudW1TdHIuc3RyaW5nKTtcclxuICAgICAgICBudW0gLT0gMTtcclxuICAgICAgICB0aGlzLmZyZWV6ZU5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJudW1cIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSBudW0rXCJcIjtcclxuICAgICAgICBpZihudW0gPT0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMuZnJlZXplTm9kZS5wYXJlbnQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRvd25Eb29yKCl7XHJcbiAgICAgICAgaWYodGhpcy5vcGVuTm9kZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMub3Blbk5vZGUuY2hpbGRyZW5bMF0uc2NhbGVYID09IDEpXHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKHRoaXMuZnJlZXplTm9kZSl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZnJlZXplTm9kZS5hY3RpdmUgPT0gdHJ1ZSlcclxuICAgICAgICAgICAgICAgIHJldHVybjsgXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm5vZGUub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgaWYodGhpcy5zcGVjaWFsID09IFdhbGxTcGVjaWFsLuaYn+aYn+mXqCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyXCIpLnkgLT0gMTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJkb3duXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgdXBEb29yKCl7XHJcbiAgICAgICAgaWYodGhpcy5zcGVjaWFsID09IFdhbGxTcGVjaWFsLuaYn+aYn+mXqCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJzdGFyXCIpLnkgKz0gMTA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q2hpbGRCeU5hbWUoXCJkb3duXCIpLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMubm9kZS5vcGFjaXR5ID0gMjUwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/NumberToImage.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '669f4SuSl9ORqawBcbwCNpG', 'NumberToImage'); +// Script/NumberToImage.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NumberToImage = /** @class */ (function (_super) { + __extends(NumberToImage, _super); + function NumberToImage() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.fontUI = null; + return _this; + // static calculateAndConvert(num1: number, num2: number, operator: '+' | '-' | '*' | '/', spriteFrames: SpriteFrame[]): Node[] { + // let result: number; + // switch (operator) { + // case '+': + // result = num1 + num2; + // break; + // case '-': + // result = num1 - num2; + // break; + // case '*': + // result = num1 * num2; + // break; + // case '/': + // result = num1 / num2; + // break; + // default: + // throw new Error('不支持的运算符'); + // } + // // 处理结果为小数的情况,这里简单取整 + // result = Math.floor(result); + // return this.numberToImageNodes(result, spriteFrames); + // } + // update (dt) {} + } + NumberToImage_1 = NumberToImage; + // LIFE-CYCLE CALLBACKS: + NumberToImage.prototype.onLoad = function () { + if (this.fontUI != null) { + NumberToImage_1.font = this.fontUI; + } + }; + //第一个参数 数字, 第二个参数 数字间距 第三个参数 占位宽度 第四个参数 目标节点 + NumberToImage.numberToImageNodes = function (number, width, posX, name, targetNode, middle) { + if (middle === void 0) { middle = false; } + var numStr = number.toString(); + var cha = 0; + if (number > 99) + cha = -posX; + else if (number < 10) + cha = posX; + if (targetNode.children.length > 0) + targetNode.removeAllChildren(); + for (var i = 0; i < numStr.length; i++) { + var digit = parseInt(numStr[i], 10); + var node = new cc.Node(); + var sprite = node.addComponent(cc.Sprite); + // debugger; + sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; + // 将节点添加到目标节点下 + node.x = i * width + cha; + node.parent = targetNode; + } + if (middle) { + targetNode.x = targetNode.x - targetNode.children.length * (width - 15) / 2; + } + }; + NumberToImage.getTimeMargin = function (number, width, name, targetNode) { + var timeArr = []; + var total = 0; + total = number; + var hour = 0; + hour = parseInt((total / 3600) + ""); //计算整数小时数 + var afterHour = total - hour * 60 * 60; //取得算出小时数后剩余的秒数 + var min = parseInt((afterHour / 60) + ""); //计算整数分 + var m = "" + min; + if (min < 10) + m = "0" + min; + var afterMin = total - hour * 60 * 60 - min * 60; //取得算出分后剩余的秒数 + var miao = afterMin + ""; + if (afterMin < 10) + miao = "0" + afterMin; + var result = m + miao; + for (var i = 0; i < result.length; i++) { + var digit = parseInt(result[i], 10); + timeArr.push(digit); + } + if (targetNode.children.length > 0) { + for (var i = 0; i < targetNode.children.length; i++) { + targetNode.children[i].getComponent(cc.Sprite).spriteFrame = this.font._spriteFrames[name + timeArr[i] + ""]; + } + } + else { + for (var i = 0; i < 4; i++) { + var node = new cc.Node(); + var sprite = node.addComponent(cc.Sprite); + var digit = timeArr[i]; + // debugger; + sprite.spriteFrame = this.font._spriteFrames[name + digit + ""]; + // 将节点添加到目标节点下 + node.x = i * width; + if (i > 1) + node.x += 35; + node.parent = targetNode; + } + } + }; + var NumberToImage_1; + NumberToImage.font = null; + __decorate([ + property(cc.SpriteAtlas) + ], NumberToImage.prototype, "fontUI", void 0); + NumberToImage = NumberToImage_1 = __decorate([ + ccclass + ], NumberToImage); + return NumberToImage; +}(cc.Component)); +exports.default = NumberToImage; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxOdW1iZXJUb0ltYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTVFLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBRzFDO0lBQTJDLGlDQUFZO0lBQXZEO1FBQUEscUVBeUdDO1FBdEdHLFlBQU0sR0FBbUIsSUFBSSxDQUFDOztRQTZFOUIsaUlBQWlJO1FBQ2pJLDBCQUEwQjtRQUMxQiwwQkFBMEI7UUFDMUIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsb0JBQW9CO1FBQ3BCLG9DQUFvQztRQUNwQyxxQkFBcUI7UUFDckIsbUJBQW1CO1FBQ25CLDBDQUEwQztRQUMxQyxRQUFRO1FBRVIsMkJBQTJCO1FBQzNCLG1DQUFtQztRQUNuQyw0REFBNEQ7UUFDNUQsSUFBSTtRQUVKLGlCQUFpQjtJQUNyQixDQUFDO3NCQXpHb0IsYUFBYTtJQU05Qix3QkFBd0I7SUFFeEIsOEJBQU0sR0FBTjtRQUNJLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUM7WUFDbkIsZUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQ3BDO0lBQ0wsQ0FBQztJQUVELGdEQUFnRDtJQUN6QyxnQ0FBa0IsR0FBekIsVUFBMEIsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLFVBQWtCLEVBQUMsTUFBc0I7UUFBdEIsdUJBQUEsRUFBQSxjQUFzQjtRQUMx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Q0FBQztJQUZ2QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO2lEQUNLO0lBSGIsYUFBYTtRQURqQyxPQUFPO09BQ2EsYUFBYSxDQXlHakM7SUFBRCxvQkFBQztDQXpHRCxBQXlHQyxDQXpHMEMsRUFBRSxDQUFDLFNBQVMsR0F5R3REO2tCQXpHb0IsYUFBYSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTnVtYmVyVG9JbWFnZSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZUF0bGFzKVxyXG4gICAgZm9udFVJOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcblxyXG4gICAgc3RhdGljIGZvbnQ6YW55ID0gbnVsbDtcclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgaWYodGhpcy5mb250VUkgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIE51bWJlclRvSW1hZ2UuZm9udCA9IHRoaXMuZm9udFVJO1xyXG4gICAgICAgIH0gXHJcbiAgICB9XHJcblxyXG4gICAgLy/nrKzkuIDkuKrlj4LmlbAgIOaVsOWtl++8jCDnrKzkuozkuKrlj4LmlbAgIOaVsOWtl+mXtOi3nSAg56ys5LiJ5Liq5Y+C5pWwIOWNoOS9jeWuveW6piAg56ys5Zub5Liq5Y+C5pWwIOebruagh+iKgueCuVxyXG4gICAgc3RhdGljIG51bWJlclRvSW1hZ2VOb2RlcyhudW1iZXIsIHdpZHRoLCBwb3NYLCBuYW1lICx0YXJnZXROb2RlOmNjLk5vZGUsbWlkZGxlOmJvb2xlYW4gPSBmYWxzZSkge1xyXG4gICAgICAgIGNvbnN0IG51bVN0ciA9IG51bWJlci50b1N0cmluZygpO1xyXG4gICAgICAgIGxldCBjaGEgPSAwOyBcclxuICAgICAgICBpZihudW1iZXIgPiA5OSkgY2hhICA9IC1wb3NYXHJcbiAgICAgICAgZWxzZSBpZihudW1iZXIgPCAxMCkgY2hhICA9IHBvc1hcclxuICAgICAgICBpZih0YXJnZXROb2RlLmNoaWxkcmVuLmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHRhcmdldE5vZGUucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bVN0ci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBkaWdpdCA9IHBhcnNlSW50KG51bVN0cltpXSwgMTApO1xyXG4gICAgICAgICAgICBjb25zdCBub2RlID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICAgICAgY29uc3Qgc3ByaXRlID0gbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgLy8gZGVidWdnZXI7XHJcbiAgICAgICAgICAgIHNwcml0ZS5zcHJpdGVGcmFtZSA9IHRoaXMuZm9udC5fc3ByaXRlRnJhbWVzW25hbWUgKyBkaWdpdCArIFwiXCJdO1xyXG4gICAgICAgICAgICAvLyDlsIboioLngrnmt7vliqDliLDnm67moIfoioLngrnkuItcclxuICAgICAgICAgICAgbm9kZS54ID0gaSAqIHdpZHRoICsgY2hhO1xyXG4gICAgICAgICAgICBub2RlLnBhcmVudCA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG1pZGRsZSl7XHJcbiAgICAgICAgICAgIHRhcmdldE5vZGUueCA9IHRhcmdldE5vZGUueCAtIHRhcmdldE5vZGUuY2hpbGRyZW4ubGVuZ3RoICogKHdpZHRoLTE1KSAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBnZXRUaW1lTWFyZ2luKG51bWJlciwgd2lkdGgsIG5hbWUgLHRhcmdldE5vZGU6Y2MuTm9kZSkge1xyXG4gICAgICAgIGxldCB0aW1lQXJyID0gW107XHJcbiAgICAgICAgbGV0IHRvdGFsID0gMDtcclxuICAgICAgICB0b3RhbCA9IG51bWJlcjtcclxuICAgICAgICBsZXQgaG91ciA9IDA7XHJcbiAgICAgICAgaG91ciA9IHBhcnNlSW50KCh0b3RhbCAvIDM2MDApICsgXCJcIik7Ly/orqHnrpfmlbTmlbDlsI/ml7bmlbBcclxuICAgICAgICBsZXQgYWZ0ZXJIb3VyID0gdG90YWwgLSBob3VyICogNjAgKiA2MDsvL+WPluW+l+eul+WHuuWwj+aXtuaVsOWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaW4gPSBwYXJzZUludCgoYWZ0ZXJIb3VyIC8gNjApK1wiXCIpOy8v6K6h566X5pW05pWw5YiGXHJcbiAgICAgICAgbGV0IG0gPSBcIlwiICsgbWluOyAgXHJcblxyXG4gICAgICAgIGlmKG1pbiA8IDEwKSBtID0gXCIwXCIrbWluO1xyXG4gICAgICAgIGxldCBhZnRlck1pbiA9IHRvdGFsIC0gaG91ciAqIDYwICogNjAgLSBtaW4gKiA2MDsvL+WPluW+l+eul+WHuuWIhuWQjuWJqeS9meeahOenkuaVsFxyXG4gICAgICAgIGxldCBtaWFvID0gYWZ0ZXJNaW4gKyBcIlwiO1xyXG5cclxuICAgICAgICBpZihhZnRlck1pbiA8IDEwKSBtaWFvID0gXCIwXCIgKyBhZnRlck1pbjtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IG0gKyBtaWFvO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpZ2l0ID0gcGFyc2VJbnQocmVzdWx0W2ldLCAxMCk7XHJcbiAgICAgICAgICAgIHRpbWVBcnIucHVzaChkaWdpdCk7XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIGlmKHRhcmdldE5vZGUuY2hpbGRyZW4ubGVuZ3RoID4gMCl7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGFyZ2V0Tm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgdGFyZ2V0Tm9kZS5jaGlsZHJlbltpXS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuZm9udC5fc3ByaXRlRnJhbWVzW25hbWUgKyB0aW1lQXJyW2ldICsgXCJcIl07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBuZXcgY2MuTm9kZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3ByaXRlID0gbm9kZS5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRpZ2l0ID0gdGltZUFycltpXTtcclxuICAgICAgICAgICAgICAgIC8vIGRlYnVnZ2VyO1xyXG4gICAgICAgICAgICAgICAgc3ByaXRlLnNwcml0ZUZyYW1lID0gdGhpcy5mb250Ll9zcHJpdGVGcmFtZXNbbmFtZSArIGRpZ2l0ICsgXCJcIl07XHJcbiAgICAgICAgICAgICAgICAvLyDlsIboioLngrnmt7vliqDliLDnm67moIfoioLngrnkuItcclxuICAgICAgICAgICAgICAgIG5vZGUueCA9IGkgKiB3aWR0aDtcclxuICAgICAgICAgICAgICAgIGlmKGkgPiAxKSBub2RlLnggKz0gMzU7XHJcbiAgICAgICAgICAgICAgICBub2RlLnBhcmVudCA9IHRhcmdldE5vZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIC8vIHN0YXRpYyBjYWxjdWxhdGVBbmRDb252ZXJ0KG51bTE6IG51bWJlciwgbnVtMjogbnVtYmVyLCBvcGVyYXRvcjogJysnIHwgJy0nIHwgJyonIHwgJy8nLCBzcHJpdGVGcmFtZXM6IFNwcml0ZUZyYW1lW10pOiBOb2RlW10ge1xyXG4gICAgLy8gICAgIGxldCByZXN1bHQ6IG51bWJlcjtcclxuICAgIC8vICAgICBzd2l0Y2ggKG9wZXJhdG9yKSB7XHJcbiAgICAvLyAgICAgICAgIGNhc2UgJysnOlxyXG4gICAgLy8gICAgICAgICAgICAgcmVzdWx0ID0gbnVtMSArIG51bTI7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgY2FzZSAnLSc6XHJcbiAgICAvLyAgICAgICAgICAgICByZXN1bHQgPSBudW0xIC0gbnVtMjtcclxuICAgIC8vICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgLy8gICAgICAgICBjYXNlICcqJzpcclxuICAgIC8vICAgICAgICAgICAgIHJlc3VsdCA9IG51bTEgKiBudW0yO1xyXG4gICAgLy8gICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAvLyAgICAgICAgIGNhc2UgJy8nOlxyXG4gICAgLy8gICAgICAgICAgICAgcmVzdWx0ID0gbnVtMSAvIG51bTI7XHJcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcclxuICAgIC8vICAgICAgICAgZGVmYXVsdDpcclxuICAgIC8vICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcign5LiN5pSv5oyB55qE6L+Q566X56ymJyk7XHJcbiAgICAvLyAgICAgfVxyXG5cclxuICAgIC8vICAgICAvLyDlpITnkIbnu5PmnpzkuLrlsI/mlbDnmoTmg4XlhrXvvIzov5nph4znroDljZXlj5bmlbRcclxuICAgIC8vICAgICByZXN1bHQgPSBNYXRoLmZsb29yKHJlc3VsdCk7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMubnVtYmVyVG9JbWFnZU5vZGVzKHJlc3VsdCwgc3ByaXRlRnJhbWVzKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/Pause.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'aca4aut33NCvIC0yg3JmY0h', 'Pause'); +// Script/Pause.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Pause = /** @class */ (function (_super) { + __extends(Pause, _super); + function Pause() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 0; + _this.music = null; + _this.effect = null; + _this.vibrate = null; + _this.open = null; + _this.close = null; + // mapInfo: number[][] = []; + _this.musicState = true; + _this.effectState = true; + _this.vibrateState = true; + return _this; + // update (dt) {} + } + Pause.prototype.onLoad = function () { + if (cc.fx.GameConfig.GM_INFO.musicOpen) { + this.music.getComponent(cc.Sprite).spriteFrame = this.open; + this.music.x = 278; + } + else { + this.music.getComponent(cc.Sprite).spriteFrame = this.close; + this.music.x = 161; + } + if (cc.fx.GameConfig.GM_INFO.effectOpen) { + this.effect.getComponent(cc.Sprite).spriteFrame = this.open; + this.effect.x = 278; + } + else { + this.effect.getComponent(cc.Sprite).spriteFrame = this.close; + this.effect.x = 161; + } + if (cc.fx.GameConfig.GM_INFO.vibrateOpen) { + this.vibrate.getComponent(cc.Sprite).spriteFrame = this.open; + this.vibrate.x = 278; + } + else { + this.vibrate.getComponent(cc.Sprite).spriteFrame = this.close; + this.vibrate.x = 161; + } + this.musicState = cc.fx.GameConfig.GM_INFO.musicOpen; + this.effectState = cc.fx.GameConfig.GM_INFO.effectOpen; + this.vibrateState = cc.fx.GameConfig.GM_INFO.vibrateOpen; + }; + Pause.prototype.start = function () { + }; + Pause.prototype.init = function (time) { + }; + Pause.prototype.clickMusic = function () { + var _this = this; + if (this.musicState) { + this.musicState = false; + cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; + this.setMusicConfig(); + this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.music.getComponent(cc.Sprite).spriteFrame = _this.close; + }), cc.fadeIn(0.1))); + cc.fx.AudioManager._instance.stopMusic(); + } + else { + this.musicState = true; + cc.fx.GameConfig.GM_INFO.musicOpen = this.musicState; + this.setMusicConfig(); + this.music.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.music.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.music.getComponent(cc.Sprite).spriteFrame = _this.open; + }), cc.fadeIn(0.1))); + cc.fx.AudioManager._instance.playMusicGame(); + } + }; + Pause.prototype.setMusicConfig = function () { + var audioInfo = { + "musicOpen": cc.fx.GameConfig.GM_INFO.musicOpen, + "effectOpen": cc.fx.GameConfig.GM_INFO.effectOpen, + "vibrateOpen": cc.fx.GameConfig.GM_INFO.vibrateOpen, + }; + cc.fx.StorageMessage.setStorage("music", audioInfo); + }; + Pause.prototype.clickEffect = function () { + var _this = this; + if (this.effectState) { + this.effectState = false; + cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; + this.setMusicConfig(); + this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.effect.getComponent(cc.Sprite).spriteFrame = _this.close; + }), cc.fadeIn(0.1))); + } + else { + this.effectState = true; + cc.fx.GameConfig.GM_INFO.effectOpen = this.effectState; + this.setMusicConfig(); + this.effect.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.effect.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.effect.getComponent(cc.Sprite).spriteFrame = _this.open; + }), cc.fadeIn(0.1))); + } + }; + Pause.prototype.clickVibrate = function () { + var _this = this; + if (this.vibrateState) { + this.vibrateState = false; + cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; + this.setMusicConfig(); + this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(161, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.close; + }), cc.fadeIn(0.1))); + } + else { + this.vibrateState = true; + cc.fx.GameConfig.GM_INFO.vibrateOpen = this.vibrateState; + this.setMusicConfig(); + this.vibrate.runAction(cc.sequence(cc.spawn(cc.moveTo(0.05, cc.v2(278, this.vibrate.y)), cc.fadeOut(0.05)), cc.callFunc(function () { + _this.vibrate.getComponent(cc.Sprite).spriteFrame = _this.open; + }), cc.fadeIn(0.1))); + } + }; + __decorate([ + property(cc.Node) + ], Pause.prototype, "music", void 0); + __decorate([ + property(cc.Node) + ], Pause.prototype, "effect", void 0); + __decorate([ + property(cc.Node) + ], Pause.prototype, "vibrate", void 0); + __decorate([ + property(cc.SpriteFrame) + ], Pause.prototype, "open", void 0); + __decorate([ + property(cc.SpriteFrame) + ], Pause.prototype, "close", void 0); + Pause = __decorate([ + ccclass + ], Pause); + return Pause; +}(cc.Component)); +exports.default = Pause; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxQYXVzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUc1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUkxQztJQUFtQyx5QkFBWTtJQUEvQztRQUFBLHFFQW1JQztRQWpJRyxVQUFJLEdBQVcsQ0FBQyxDQUFDO1FBR2pCLFdBQUssR0FBWSxJQUFJLENBQUM7UUFHdEIsWUFBTSxHQUFZLElBQUksQ0FBQztRQUd2QixhQUFPLEdBQVksSUFBSSxDQUFDO1FBR3hCLFVBQUksR0FBbUIsSUFBSSxDQUFDO1FBRzVCLFdBQUssR0FBbUIsSUFBSSxDQUFDO1FBRTdCLDRCQUE0QjtRQUU1QixnQkFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixpQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixrQkFBWSxHQUFZLElBQUksQ0FBQzs7UUEyRzdCLGlCQUFpQjtJQUNyQixDQUFDO0lBMUdHLHNCQUFNLEdBQU47UUFDSSxJQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUM7WUFDbEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzNELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUN0QjthQUNHO1lBQ0EsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBQzVELElBQUksQ0FB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Q0FBQztZQUN6RCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFDbEgsS0FBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsR0FBRyxLQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ3RCO0lBQ0wsQ0FBQztJQTNIRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO3dDQUNJO0lBR3RCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eUNBQ0s7SUFHdkI7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQzswQ0FDTTtJQUd4QjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO3VDQUNHO0lBRzVCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7d0NBQ0k7SUFqQlosS0FBSztRQUR6QixPQUFPO09BQ2EsS0FBSyxDQW1JekI7SUFBRCxZQUFDO0NBbklELEFBbUlDLENBbklrQyxFQUFFLENBQUMsU0FBUyxHQW1JOUM7a0JBbklvQixLQUFLIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhdXNlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBtdXNpYzogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBlZmZlY3Q6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgdmlicmF0ZTogY2MuTm9kZSA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLlNwcml0ZUZyYW1lKVxyXG4gICAgb3BlbjogY2MuU3ByaXRlRnJhbWUgPSBudWxsO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVGcmFtZSlcclxuICAgIGNsb3NlOiBjYy5TcHJpdGVGcmFtZSA9IG51bGw7XHJcbiAgICBcclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuXHJcbiAgICBtdXNpY1N0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIGVmZmVjdFN0YXRlOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHZpYnJhdGVTdGF0ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMub3BlbjtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMjc4O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgdGhpcy5tdXNpYy54ID0gMTYxO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3Blbil7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0LmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMjc4OyBcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB0aGlzLmVmZmVjdC54ID0gMTYxOyBcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuKXtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDI3ODsgXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuY2xvc2U7IFxyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGUueCA9IDE2MTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tdXNpY1N0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLm11c2ljT3BlbjtcclxuICAgICAgICB0aGlzLmVmZmVjdFN0YXRlID0gY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmVmZmVjdE9wZW47XHJcbiAgICAgICAgdGhpcy52aWJyYXRlU3RhdGUgPSBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW47XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHRpbWUpe1xyXG5cclxuICAgIH1cclxuICAgIFxyXG4gICAgY2xpY2tNdXNpYygpe1xyXG4gICAgICAgIGlmKHRoaXMubXVzaWNTdGF0ZSl7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWNTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5jbG9zZTtcclxuICAgICAgICAgICAgfSksY2MuZmFkZUluKDAuMSkpKVxyXG4gICAgICAgICAgICBjYy5meC5BdWRpb01hbmFnZXIuX2luc3RhbmNlLnN0b3BNdXNpYygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICB0aGlzLm11c2ljU3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubXVzaWNPcGVuID0gdGhpcy5tdXNpY1N0YXRlO1xyXG4gICAgICAgICAgICB0aGlzLnNldE11c2ljQ29uZmlnKCk7XHJcbiAgICAgICAgICAgIHRoaXMubXVzaWMucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5tdXNpYy55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLm11c2ljLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gdGhpcy5vcGVuO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheU11c2ljR2FtZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRNdXNpY0NvbmZpZygpe1xyXG4gICAgICAgIGxldCBhdWRpb0luZm8gPSB7XHJcbiAgICAgICAgICAgIFwibXVzaWNPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5tdXNpY09wZW4sICAgICAgICAgICAgIC8v6Z+z5LmQXHJcbiAgICAgICAgICAgIFwiZWZmZWN0T3BlblwiOiBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiwgICAgICAgICAgICAvL+mfs+aViFxyXG4gICAgICAgICAgICBcInZpYnJhdGVPcGVuXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy52aWJyYXRlT3BlbiwgICAgICAgICAgIC8v6ZyH5YqoXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNjLmZ4LlN0b3JhZ2VNZXNzYWdlLnNldFN0b3JhZ2UoXCJtdXNpY1wiLGF1ZGlvSW5mbyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tFZmZlY3QoKXtcclxuICAgICAgICBpZih0aGlzLmVmZmVjdFN0YXRlKXtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3RTdGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigxNjEsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZWZmZWN0U3RhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8uZWZmZWN0T3BlbiA9IHRoaXMuZWZmZWN0U3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy5lZmZlY3QucnVuQWN0aW9uKGNjLnNlcXVlbmNlKGNjLnNwYXduKGNjLm1vdmVUbygwLjA1LCBjYy52MigyNzgsdGhpcy5lZmZlY3QueSkpLCBjYy5mYWRlT3V0KDAuMDUpKSxjYy5jYWxsRnVuYygoKT0+e1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lZmZlY3QuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY2xpY2tWaWJyYXRlKCl7XHJcbiAgICAgICAgaWYodGhpcy52aWJyYXRlU3RhdGUpe1xyXG4gICAgICAgICAgICB0aGlzLnZpYnJhdGVTdGF0ZSA9IGZhbHNlOyBcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMTYxLHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmNsb3NlO1xyXG4gICAgICAgICAgICB9KSxjYy5mYWRlSW4oMC4xKSkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMudmlicmF0ZVN0YXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnZpYnJhdGVPcGVuID0gdGhpcy52aWJyYXRlU3RhdGU7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TXVzaWNDb25maWcoKTtcclxuICAgICAgICAgICAgdGhpcy52aWJyYXRlLnJ1bkFjdGlvbihjYy5zZXF1ZW5jZShjYy5zcGF3bihjYy5tb3ZlVG8oMC4wNSwgY2MudjIoMjc4LHRoaXMudmlicmF0ZS55KSksIGNjLmZhZGVPdXQoMC4wNSkpLGNjLmNhbGxGdW5jKCgpPT57XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpYnJhdGUuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLm9wZW47XHJcbiAgICAgICAgICAgIH0pLGNjLmZhZGVJbigwLjEpKSlcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/Load.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '454adgphRpA6oq5lB6Cg1fK', 'Load'); +// Script/Load.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.node1 = null; + _this.node2 = null; + _this.node3 = null; + _this.localTest = false; + _this.clientTestVersion = "1.0.0"; + _this.testVersion = null; + return _this; + // 3月17日 - 3月21日 工作完成内容 + // 1:游戏框架搭建 + // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) + // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 + // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 + // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 + // 6:方块的自动落点做完11个基础方块的(未做完还差11个) + // 3月24日 - 3月28日 预计完成目标 + // 1:完成全部方块的落点。 + // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 + // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 + // 4:出5关版本,配合小白备案审核。 + // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) + // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 + } + NewClass.prototype.onLoad = function () { + // cc.director.getPhysicsManager().enabled = true; + // cc.director.getPhysicsManager().debugDrawFlags = 1; + // cc.director.getPhysicsManager().enabledAccumulator = true; + // cc.PhysicsManager.VELOCITY_ITERATIONS = 20; + // cc.PhysicsManager.FIXED_TIME_STEP = 1 / 120; + // cc.PhysicsManager.POSITION_ITERATIONS = 20; + //@ts-ignore + cc.internal.inputManager._maxTouches = 1; + var manager = cc.director.getCollisionManager(); + manager.enabled = true; + this.setWX(); + cc.debug.setDisplayStats(false); + cc.tween(this.node1) + .delay(0 * 0.3) + .to(0.3, { scale: 1 }) + .to(0.3, { scale: 1.3 }) + .to(0.3, { scale: 1 }) + .union() + .repeatForever() + .start(); + cc.tween(this.node2) + .delay(1 * 0.3) + .to(0.3, { scale: 1 }) + .to(0.3, { scale: 1.3 }) + .to(0.3, { scale: 1 }) + .union() + .repeatForever() + .start(); + cc.tween(this.node3) + .delay(2 * 0.3) + .to(0.3, { scale: 1 }) + .to(0.3, { scale: 1.3 }) + .to(0.3, { scale: 1 }) + .union() + .repeatForever() + .start(); + }; + NewClass.prototype.setWX = function () { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 + wx.setPreferredFramesPerSecond(60); + // // 设置转发按钮点击后的回调 + // wx.onShareAppMessage(() => { + // return { + // title: '你想玩上怎样的游戏?', + // imageUrl: '', + // query: '' + // }; + // }); + wx.onShareAppMessage(function () { + // 用户点击了“转发”按钮 + return { + title: '你想玩上怎样的游戏?' + }; + }); + // 监听分享到朋友圈事件 + //@ts-ignore + wx.onShareTimeline(function () { + return { + title: '你想玩上怎样的游戏?' + }; + }); + wx.showShareMenu(function () { + return { + title: '你想玩上怎样的游戏?', + imageUrl: '', + query: '' + }; + }); + setTimeout(function () { + wx.showShareMenu({ + menus: ['shareAppMessage', 'shareTimeline'] + }); + }, 2000); + // 设置分享到朋友圈 + //@ts-ignore + // wx.updateShareMenu({ + // withShareTicket: true, + // success: (data) => { + // console.log('更新分享菜单成功', data); + // }, + // fail: (data) => { + // console.log('更新分享菜单失败', data); + // }, + // complete: (data) => { + // console.log('更新分享菜单完成', data); + // } + // }); + //@ts-ignore + } + }; + //判断来源 + NewClass.prototype.containsTrain = function (str) { + return /from=train/i.test(str); + }; + //开始游戏,跳转至引导页面 + NewClass.prototype.startGame = function () { + cc.director.loadScene("GameScene"); + // cc.director.loadScene("GuideScene"); + }; + //备用,用来测试跳转 指定关卡 + NewClass.prototype.clickBtn = function (event, data) { + cc.fx.GameConfig.GM_INFO.custom = parseInt(data); + cc.director.loadScene("GameScene"); + }; + //打开排行榜 + NewClass.prototype.openRank = function () { + cc.director.loadScene("RankScene"); + }; + NewClass.prototype.update = function (dt) { + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node1", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node2", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node3", void 0); + __decorate([ + property(false) + ], NewClass.prototype, "localTest", void 0); + __decorate([ + property("") + ], NewClass.prototype, "clientTestVersion", void 0); + __decorate([ + property(cc.Label) + ], NewClass.prototype, "testVersion", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Iiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eSwgcmVxdWlyZUNvbXBvbmVudH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUxOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTm9kZSlcclxuICAgIG5vZGUzOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICBAcHJvcGVydHkoZmFsc2UpXHJcbiAgICBsb2NhbFRlc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAcHJvcGVydHkoXCJcIilcclxuICAgIGNsaWVudFRlc3RWZXJzaW9uOiBzdHJpbmcgPSBcIjEuMC4wXCI7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTGFiZWwpXHJcbiAgICB0ZXN0VmVyc2lvbjogY2MuTGFiZWwgPSBudWxsO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IuZ2V0UGh5c2ljc01hbmFnZXIoKS5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmRlYnVnRHJhd0ZsYWdzID0gMTtcclxuICAgICAgICAvLyBjYy5kaXJlY3Rvci5nZXRQaHlzaWNzTWFuYWdlcigpLmVuYWJsZWRBY2N1bXVsYXRvciA9IHRydWU7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuVkVMT0NJVFlfSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vIGNjLlBoeXNpY3NNYW5hZ2VyLkZJWEVEX1RJTUVfU1RFUCA9IDEgLyAxMjA7XHJcbiAgICAgICAgLy8gY2MuUGh5c2ljc01hbmFnZXIuUE9TSVRJT05fSVRFUkFUSU9OUyA9IDIwO1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIFxyXG4gICAgICAgIGNjLmludGVybmFsLmlucHV0TWFuYWdlci5fbWF4VG91Y2hlcyA9IDFcclxuXHJcbiAgICAgICAgbGV0IG1hbmFnZXIgPSBjYy5kaXJlY3Rvci5nZXRDb2xsaXNpb25NYW5hZ2VyKCk7XHJcbiAgICAgICAgbWFuYWdlci5lbmFibGVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNldFdYKCk7XHJcblxyXG4gICAgICAgIGNjLmRlYnVnLnNldERpc3BsYXlTdGF0cyhmYWxzZSk7XHJcblxyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUxKVxyXG4gICAgICAgIC5kZWxheSgwICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUyKVxyXG4gICAgICAgIC5kZWxheSgxICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUzKVxyXG4gICAgICAgIC5kZWxheSgyICogMC4zKSBcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC50bygwLjMsIHtzY2FsZTogMS4zfSlcclxuICAgICAgICAudG8oMC4zLCB7c2NhbGU6IDF9KVxyXG4gICAgICAgIC51bmlvbigpXHJcbiAgICAgICAgLnJlcGVhdEZvcmV2ZXIoKVxyXG4gICAgICAgIC5zdGFydCgpO1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBzZXRXWCgpe1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgIHd4LnNldFByZWZlcnJlZEZyYW1lc1BlclNlY29uZCg2MCk7XHJcbiAgICAgICAgXHJcblxyXG4gICAgICAgICAgICAvLyAvLyDorr7nva7ovazlj5HmjInpkq7ngrnlh7vlkI7nmoTlm57osINcclxuICAgICAgICAgICAgLy8gd3gub25TaGFyZUFwcE1lc3NhZ2UoKCkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgLy8gICAgICAgICB0aXRsZTogJ+S9oOaDs+eOqeS4iuaAjuagt+eahOa4uOaIj++8nycsXHJcbiAgICAgICAgICAgIC8vICAgICAgICAgaW1hZ2VVcmw6ICcnLFxyXG4gICAgICAgICAgICAvLyAgICAgICAgIHF1ZXJ5OiAnJ1xyXG4gICAgICAgICAgICAvLyAgICAgfTtcclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG4gICAgICAgICAgICB3eC5vblNoYXJlQXBwTWVzc2FnZShmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIC8vIOeUqOaIt+eCueWHu+S6huKAnOi9rOWPkeKAneaMiemSrlxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuXHJcblxyXG4gICAgICAgICAgICAvLyDnm5HlkKzliIbkuqvliLDmnIvlj4vlnIjkuovku7ZcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHd4Lm9uU2hhcmVUaW1lbGluZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5L2g5oOz546p5LiK5oCO5qC355qE5ri45oiP77yfJ1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICB3eC5zaG93U2hhcmVNZW51KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkvaDmg7PnjqnkuIrmgI7moLfnmoTmuLjmiI/vvJ8nLFxyXG4gICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiAnJyxcclxuICAgICAgICAgICAgICAgICAgICBxdWVyeTogJydcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgd3guc2hvd1NoYXJlTWVudSh7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudXM6IFsnc2hhcmVBcHBNZXNzYWdlJywgJ3NoYXJlVGltZWxpbmUnXVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vIOiuvue9ruWIhuS6q+WIsOaci+WPi+WciFxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgLy8gd3gudXBkYXRlU2hhcmVNZW51KHtcclxuICAgICAgICAgICAgLy8gICAgIHdpdGhTaGFyZVRpY2tldDogdHJ1ZSxcclxuICAgICAgICAgICAgLy8gICAgIHN1Y2Nlc3M6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleaIkOWKnycsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGZhaWw6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIC8vICAgICAgICAgY29uc29sZS5sb2coJ+abtOaWsOWIhuS6q+iPnOWNleWksei0pScsIGRhdGEpO1xyXG4gICAgICAgICAgICAvLyAgICAgfSxcclxuICAgICAgICAgICAgLy8gICAgIGNvbXBsZXRlOiAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKCfmm7TmlrDliIbkuqvoj5zljZXlrozmiJAnLCBkYXRhKTtcclxuICAgICAgICAgICAgLy8gICAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yik5pat5p2l5rqQXHJcbiAgICBjb250YWluc1RyYWluKHN0cikge1xyXG4gICAgXHJcbiAgICAgICAgcmV0dXJuIC9mcm9tPXRyYWluL2kudGVzdChzdHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5byA5aeL5ri45oiP77yM6Lez6L2s6Iez5byV5a+86aG16Z2iXHJcbiAgICBzdGFydEdhbWUoKXtcclxuICAgICAgICBjYy5kaXJlY3Rvci5sb2FkU2NlbmUoXCJHYW1lU2NlbmVcIik7XHJcbiAgICAgICAgLy8gY2MuZGlyZWN0b3IubG9hZFNjZW5lKFwiR3VpZGVTY2VuZVwiKTtcclxuICAgIH1cclxuICAgIC8v5aSH55So77yM55So5p2l5rWL6K+V6Lez6L2sIOaMh+WumuWFs+WNoVxyXG4gICAgY2xpY2tCdG4oZXZlbnQsZGF0YSl7XHJcbiAgICAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmN1c3RvbSA9IHBhcnNlSW50KGRhdGEpO1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIkdhbWVTY2VuZVwiKTtcclxuICAgIH0gICBcclxuICAgIC8v5omT5byA5o6S6KGM5qacXHJcbiAgICBvcGVuUmFuaygpe1xyXG4gICAgICAgIGNjLmRpcmVjdG9yLmxvYWRTY2VuZShcIlJhbmtTY2VuZVwiKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHByb3RlY3RlZCB1cGRhdGUoZHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgfVxyXG4gICAgXHJcbi8vICAgICAz5pyIMTfml6UgLSAz5pyIMjHml6Ug5bel5L2c5a6M5oiQ5YaF5a65XHJcblxyXG4vLyAx77ya5ri45oiP5qGG5p625pCt5bu6XHJcbi8vIDLvvJrliLbkvZwxOOS4quWfuuehgOaWueWdl+mihOWItuS9kyAo5pa55Z2X5Y+v57yW6L6R6aKc6Imy5LiO6YGT5YW35ZKM54q25oCBKVxyXG4vLyAz77ya5a6M5oiQ5Zyw5Zu+55qE5pCt5bu677yM5Y+v6YWN572uOCo45Lul5YaF77yM5Lu75oSP57uE5ZCI77yM5YyF5ous5Y+v57y65Y+j5ZKM6Zqc56KN54mp6YWN572uXHJcbi8vIDTvvJrlrozmiJDlnLDlm77lopnpnaLlu7rnq4vvvIzmoLnmja4g4oaRM+S4iumdouaehOW7uueahOWcsOWbvuiHquWKqOeUn+aIkOWimeS9k+OAglxyXG4vLyA177ya5YGa5a6M5pa55Z2X55qE5Z+656GA56e75Yqo77yM6Lef6ZqP5omL5oyH77yM6YGH5Yiw5pa55Z2X5oiW6ICF5aKZ5aOB5oiW6ICF6Zqc56KN54mp6Zi756KN56e75Yqo44CCXHJcbi8vIDbvvJrmlrnlnZfnmoToh6rliqjokL3ngrnlgZrlrowxMeS4quWfuuehgOaWueWdl+eahO+8iOacquWBmuWujOi/mOW3rjEx5Liq77yJXHJcblxyXG4vLyAz5pyIMjTml6UgLSAz5pyIMjjml6Ug6aKE6K6h5a6M5oiQ55uu5qCHXHJcblxyXG4vLyAx77ya5a6M5oiQ5YWo6YOo5pa55Z2X55qE6JC954K544CCXHJcbi8vIDLvvJrlrozmiJDpl6jnmoTmkK3lu7rvvIzpl6jlj6/pgInpopzoibLvvIzlj6/pgInlvIDlhbPmiJbogIXmmJ/mmJ/nrYnnibnmrornirbmgIFcclxuLy8gM++8muWujOaIkOaWueWdl+mAmui/h+mXqOeahOa4uOaIj+mAu+i+ke+8jOS9v+a4uOaIj+WPr+S7peacgOWfuuehgOi/kOihjOeOqei1t+adpVxyXG4vLyA077ya5Ye6NeWFs+eJiOacrO+8jOmFjeWQiOWwj+eZveWkh+ahiOWuoeaguOOAglxyXG4vLyA177ya5qC55o2u5pa55Z2X77yM5Zyw5Zu+77yM5Lul5Y+K6YGT5YW377yM5Yi25L2c5Zyw5Zu+57yW6L6R5ZmoICjmlrnlnZflkozlnLDlm77liLbkvZznmoTml7blgJnpg73lt7Lnu4/ogIPomZHliLDnvJbovpHlmajnmoTpnIDmsYLkuoYpIFxyXG4vLyBcdOS8mOWFiOWItuS9nO+8jOWQjue7reW8gOWPkeaLk+WxleeOqeazleWKn+iDveaXtu+8jOWwj+eZveWPr+WQjOatpei/m+ihjOWItuS9nOWFs+WNoeOAglxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/btnControl.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '6ee6czJ4eVNb4Feiqps5SIa', 'btnControl'); +// Script/btnControl.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var btnControl = /** @class */ (function (_super) { + __extends(btnControl, _super); + function btnControl() { + return _super !== null && _super.apply(this, arguments) || this; + } + btnControl.prototype.onLoad = function () { + this._touch = true; + }; + btnControl.prototype.start = function () { + }; + btnControl.prototype.setTouch = function (type) { + this._touch = type; + }; + btnControl.prototype.update = function (dt) { + }; + btnControl = __decorate([ + ccclass + ], btnControl); + return btnControl; +}(cc.Component)); +exports.default = btnControl; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxidG5Db250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdNLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSTFDO0lBQXdDLDhCQUFZO0lBQXBEOztJQWtCQSxDQUFDO0lBYkcsMkJBQU0sR0FBTjtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwwQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELDZCQUFRLEdBQVIsVUFBUyxJQUFJO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELDJCQUFNLEdBQU4sVUFBUSxFQUFFO0lBQ1YsQ0FBQztJQWpCZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQWtCOUI7SUFBRCxpQkFBQztDQWxCRCxBQWtCQyxDQWxCdUMsRUFBRSxDQUFDLFNBQVMsR0FrQm5EO2tCQWxCb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGJ0bkNvbnRyb2wgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgX3RvdWNoOiBib29sZWFuO1xyXG5cclxuXHJcbiAgICBvbkxvYWQgKCkgeyBcclxuICAgICAgICB0aGlzLl90b3VjaCA9IHRydWU7XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUb3VjaCh0eXBlKXtcclxuICAgICAgICB0aGlzLl90b3VjaCA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ (function() { @@ -10393,7 +8604,7 @@ cc._RF.pop(); cc._RF.push(module, 'e0e34n/+FRF5JdkULm6vdT0', 'position'); // Script/position.ts -var _PROP_INFO = [{ "pos1": { "x": -60, "y": 60, "z": 0 }, "pos2": { "x": -16.442, "y": 30, "z": 0 }, "pos3": { "x": -34.362, "y": 13.246, "z": 0 }, "pos4": { "x": -17, "y": 12, "z": 0 } }, { "pos1": { "x": -126, "y": 63, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -94.792, "y": 21.675, "z": 0 }, "pos4": { "x": -20, "y": 13, "z": 0 } }, { "pos1": { "x": -60, "y": 125, "z": 0 }, "pos2": { "x": -12.792, "y": 92.675, "z": 0 }, "pos3": { "x": -27.792, "y": 23.675, "z": 0 }, "pos4": { "x": -14, "y": 24, "z": 0 } }, { "pos1": { "x": -185, "y": 63, "z": 0 }, "pos2": { "x": -34.792, "y": 37.675, "z": 0 }, "pos3": { "x": -154.792, "y": 23.675, "z": 0 }, "pos4": { "x": -22, "y": 16, "z": 0 } }, { "pos1": { "x": -57, "y": 178, "z": 0 }, "pos2": { "x": -17.792, "y": 166.675, "z": 0 }, "pos3": { "x": -31.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 37, "z": 0 } }, { "pos1": { "x": -123, "y": 127, "z": 0 }, "pos2": { "x": -25.792, "y": 99.675, "z": 0 }, "pos3": { "x": -97.792, "y": 27.675, "z": 0 }, "pos4": { "x": -27, "y": 19, "z": 0 } }, { "pos1": { "x": -62, "y": 181, "z": 0 }, "pos2": { "x": -24.792, "y": 275.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -7, "y": 39, "z": 0 } }, { "pos1": { "x": -181, "y": 180, "z": 0 }, "pos2": { "x": -31.792, "y": 163.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": -18, "y": 25, "z": 0 } }, { "pos1": { "x": -182, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 38.675, "z": 0 }, "pos3": { "x": -153.792, "y": 34.675, "z": 0 }, "pos4": { "x": -23, "y": 14, "z": 0 } }, { "pos1": { "x": -186, "y": 61, "z": 0 }, "pos2": { "x": -37.792, "y": 37.675, "z": 0 }, "pos3": { "x": -36.792, "y": 26.675, "z": 0 }, "pos4": { "x": -24, "y": 17, "z": 0 } }, { "pos1": { "x": -62, "y": 177, "z": 0 }, "pos2": { "x": 93.208, "y": 276.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": 3, "y": 31, "z": 0 } }, { "pos1": { "x": 58, "y": 179, "z": 0 }, "pos2": { "x": 205.225, "y": 154.034, "z": 0 }, "pos3": { "x": -29.642, "y": 25.691, "z": 0 }, "pos4": { "x": 7.218, "y": 29.765, "z": 0 } }, { "pos1": { "x": -57, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 37.675, "z": 0 }, "pos3": { "x": -35.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 12, "z": 0 } }, { "pos1": { "x": -180, "y": 62, "z": 0 }, "pos2": { "x": -35.792, "y": 36.675, "z": 0 }, "pos3": { "x": -271.792, "y": 24.675, "z": 0 }, "pos4": { "x": -17, "y": 20, "z": 0 } }, { "pos1": { "x": -62, "y": 178, "z": 0 }, "pos2": { "x": 87.208, "y": 164.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -6, "y": 24, "z": 0 } }, { "pos1": { "x": -176, "y": 60, "z": 0 }, "pos2": { "x": -33.792, "y": 38.675, "z": 0 }, "pos3": { "x": -154.792, "y": 29.675, "z": 0 }, "pos4": { "x": -29, "y": 16, "z": 0 } }, { "pos1": { "x": -60, "y": 181, "z": 0 }, "pos2": { "x": 95.208, "y": 155.675, "z": 0 }, "pos3": { "x": -30.792, "y": 36.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -63, "y": 178, "z": 0 }, "pos2": { "x": -21.792, "y": 156.675, "z": 0 }, "pos3": { "x": -31.792, "y": 37.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -60, "y": 183, "z": 0 }, "pos2": { "x": 88.208, "y": 162.675, "z": 0 }, "pos3": { "x": -29.792, "y": 41.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -64, "y": 58, "z": 0 }, "pos2": { "x": -26.792, "y": 32.675, "z": 0 }, "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -184, "y": 62, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -155.792, "y": 25.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -57, "y": 190, "z": 0 }, "pos2": { "x": 95.208, "y": 158.675, "z": 0 }, "pos3": { "x": -33.792, "y": 29.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -71, "y": 184, "z": 0 }, "pos2": { "x": -25.792, "y": 156.675, "z": 0 }, "pos3": { "x": -35.792, "y": 27.675, "z": 0 }, "pos4": { "x": -25, "y": 40, "z": 0 } }]; +var _PROP_INFO = [{ "pos1": { "x": -60, "y": 60, "z": 0 }, "pos2": { "x": -16.442, "y": 30, "z": 0 }, "pos3": { "x": -34.362, "y": 13.246, "z": 0 }, "pos4": { "x": -17, "y": 12, "z": 0 } }, { "pos1": { "x": -126, "y": 63, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -94.792, "y": 21.675, "z": 0 }, "pos4": { "x": -20, "y": 13, "z": 0 } }, { "pos1": { "x": -60, "y": 125, "z": 0 }, "pos2": { "x": -12.792, "y": 92.675, "z": 0 }, "pos3": { "x": -27.792, "y": 23.675, "z": 0 }, "pos4": { "x": -14, "y": 24, "z": 0 } }, { "pos1": { "x": -185, "y": 63, "z": 0 }, "pos2": { "x": -34.792, "y": 37.675, "z": 0 }, "pos3": { "x": -154.792, "y": 23.675, "z": 0 }, "pos4": { "x": -22, "y": 16, "z": 0 } }, { "pos1": { "x": -57, "y": 178, "z": 0 }, "pos2": { "x": -17.792, "y": 166.675, "z": 0 }, "pos3": { "x": -31.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 37, "z": 0 } }, { "pos1": { "x": -123, "y": 127, "z": 0 }, "pos2": { "x": -25.792, "y": 99.675, "z": 0 }, "pos3": { "x": -97.792, "y": 27.675, "z": 0 }, "pos4": { "x": -27, "y": 19, "z": 0 } }, { "pos1": { "x": -62, "y": 181, "z": 0 }, "pos2": { "x": -24.792, "y": 275.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -7, "y": 39, "z": 0 } }, { "pos1": { "x": -181, "y": 180, "z": 0 }, "pos2": { "x": -31.792, "y": 163.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": -18, "y": 25, "z": 0 } }, { "pos1": { "x": -182, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 38.675, "z": 0 }, "pos3": { "x": -153.792, "y": 34.675, "z": 0 }, "pos4": { "x": -23, "y": 14, "z": 0 } }, { "pos1": { "x": -186, "y": 61, "z": 0 }, "pos2": { "x": -37.792, "y": 37.675, "z": 0 }, "pos3": { "x": -36.792, "y": 26.675, "z": 0 }, "pos4": { "x": -24, "y": 17, "z": 0 } }, { "pos1": { "x": -62, "y": 177, "z": 0 }, "pos2": { "x": 93.208, "y": 276.675, "z": 0 }, "pos3": { "x": -33.792, "y": 34.675, "z": 0 }, "pos4": { "x": 3, "y": 31, "z": 0 } }, { "pos1": { "x": 58, "y": 179, "z": 0 }, "pos2": { "x": 205.225, "y": 154.034, "z": 0 }, "pos3": { "x": -29.642, "y": 25.691, "z": 0 }, "pos4": { "x": 7.218, "y": 29.765, "z": 0 } }, { "pos1": { "x": -57, "y": 182, "z": 0 }, "pos2": { "x": -25.792, "y": 37.675, "z": 0 }, "pos3": { "x": -35.792, "y": 33.675, "z": 0 }, "pos4": { "x": -14, "y": 12, "z": 0 } }, { "pos1": { "x": -180, "y": 62, "z": 0 }, "pos2": { "x": -35.792, "y": 36.675, "z": 0 }, "pos3": { "x": -271.792, "y": 24.675, "z": 0 }, "pos4": { "x": -17, "y": 20, "z": 0 } }, { "pos1": { "x": -62, "y": 178, "z": 0 }, "pos2": { "x": 87.208, "y": 164.675, "z": 0 }, "pos3": { "x": -31.792, "y": 35.675, "z": 0 }, "pos4": { "x": -6, "y": 24, "z": 0 } }, { "pos1": { "x": -176, "y": 60, "z": 0 }, "pos2": { "x": -33.792, "y": 38.675, "z": 0 }, "pos3": { "x": -154.792, "y": 29.675, "z": 0 }, "pos4": { "x": -29, "y": 16, "z": 0 } }, { "pos1": { "x": -60, "y": 181, "z": 0 }, "pos2": { "x": 95.208, "y": 155.675, "z": 0 }, "pos3": { "x": -30.792, "y": 36.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -63, "y": 178, "z": 0 }, "pos2": { "x": -21.792, "y": 156.675, "z": 0 }, "pos3": { "x": -31.792, "y": 37.675, "z": 0 }, "pos4": { "x": -12, "y": 32, "z": 0 } }, { "pos1": { "x": -60, "y": 183, "z": 0 }, "pos2": { "x": 88.208, "y": 162.675, "z": 0 }, "pos3": { "x": -29.792, "y": 41.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -64, "y": 58, "z": 0 }, "pos2": { "x": -26.792, "y": 32.675, "z": 0 }, "pos3": { "x": -34.792, "y": 23.675, "z": 0 }, "pos4": { "x": -12, "y": 18, "z": 0 } }, { "pos1": { "x": -184, "y": 62, "z": 0 }, "pos2": { "x": -25.792, "y": 34.675, "z": 0 }, "pos3": { "x": -155.792, "y": 25.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -57, "y": 190, "z": 0 }, "pos2": { "x": 95.208, "y": 158.675, "z": 0 }, "pos3": { "x": -33.792, "y": 29.675, "z": 0 }, "pos4": { "x": -18, "y": 26, "z": 0 } }, { "pos1": { "x": -71, "y": 184, "z": 0 }, "pos2": { "x": -25.792, "y": 156.675, "z": 0 }, "pos3": { "x": -35.792, "y": 27.675, "z": 0 }, "pos4": { "x": -25, "y": 40, "z": 0 } }]; cc._RF.pop(); } @@ -10423,106 +8634,106 @@ cc._RF.pop(); cc._RF.push(module, '7d800jRKkRGfqSS3fhSet26', 'peizhi'); // Script/peizhi.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.node1 = null; - _this.node2 = null; - _this.node3 = null; - _this.localTest = false; - _this.clientTestVersion = "1.0.0"; - _this.testVersion = null; - return _this; - // 3月17日 - 3月21日 工作完成内容 - // 1:游戏框架搭建 - // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) - // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 - // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 - // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 - // 6:方块的自动落点做完11个基础方块的(未做完还差11个) - // 3月24日 - 3月28日 预计完成目标 - // 1:完成全部方块的落点。 - // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 - // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 - // 4:出5关版本,配合小白备案审核。 - // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) - // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 - } - NewClass.prototype.start = function () { - // cc.fx.AudioManager.Instance.init(); - // this.testVersion.string = this.clientTestVersion; - // cc.director.loadScene("GameScene"); - // cc.director.preloadScene("GameScene", ()=>{ - // // debugger; - // }) - }; - //判断来源 - NewClass.prototype.containsTrain = function (str) { - return /from=train/i.test(str); - }; - //开始游戏,跳转至引导页面 - NewClass.prototype.startGame = function () { - cc.director.loadScene("GameScene"); - // cc.director.loadScene("GuideScene"); - }; - //备用,用来测试跳转 指定关卡 - NewClass.prototype.clickBtn = function (event, data) { - cc.fx.GameConfig.GM_INFO.custom = parseInt(data); - cc.director.loadScene("GameScene"); - }; - //打开排行榜 - NewClass.prototype.openRank = function () { - cc.director.loadScene("RankScene"); - }; - NewClass.prototype.update = function (dt) { - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node1", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node2", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "node3", void 0); - __decorate([ - property(false) - ], NewClass.prototype, "localTest", void 0); - __decorate([ - property("") - ], NewClass.prototype, "clientTestVersion", void 0); - __decorate([ - property(cc.Label) - ], NewClass.prototype, "testVersion", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property, requireComponent = _a.requireComponent; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.node1 = null; + _this.node2 = null; + _this.node3 = null; + _this.localTest = false; + _this.clientTestVersion = "1.0.0"; + _this.testVersion = null; + return _this; + // 3月17日 - 3月21日 工作完成内容 + // 1:游戏框架搭建 + // 2:制作18个基础方块预制体 (方块可编辑颜色与道具和状态) + // 3:完成地图的搭建,可配置8*8以内,任意组合,包括可缺口和障碍物配置 + // 4:完成地图墙面建立,根据 ↑3上面构建的地图自动生成墙体。 + // 5:做完方块的基础移动,跟随手指,遇到方块或者墙壁或者障碍物阻碍移动。 + // 6:方块的自动落点做完11个基础方块的(未做完还差11个) + // 3月24日 - 3月28日 预计完成目标 + // 1:完成全部方块的落点。 + // 2:完成门的搭建,门可选颜色,可选开关或者星星等特殊状态 + // 3:完成方块通过门的游戏逻辑,使游戏可以最基础运行玩起来 + // 4:出5关版本,配合小白备案审核。 + // 5:根据方块,地图,以及道具,制作地图编辑器 (方块和地图制作的时候都已经考虑到编辑器的需求了) + // 优先制作,后续开发拓展玩法功能时,小白可同步进行制作关卡。 + } + NewClass.prototype.start = function () { + // cc.fx.AudioManager.Instance.init(); + // this.testVersion.string = this.clientTestVersion; + // cc.director.loadScene("GameScene"); + // cc.director.preloadScene("GameScene", ()=>{ + // // debugger; + // }) + }; + //判断来源 + NewClass.prototype.containsTrain = function (str) { + return /from=train/i.test(str); + }; + //开始游戏,跳转至引导页面 + NewClass.prototype.startGame = function () { + cc.director.loadScene("GameScene"); + // cc.director.loadScene("GuideScene"); + }; + //备用,用来测试跳转 指定关卡 + NewClass.prototype.clickBtn = function (event, data) { + cc.fx.GameConfig.GM_INFO.custom = parseInt(data); + cc.director.loadScene("GameScene"); + }; + //打开排行榜 + NewClass.prototype.openRank = function () { + cc.director.loadScene("RankScene"); + }; + NewClass.prototype.update = function (dt) { + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node1", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node2", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "node3", void 0); + __decorate([ + property(false) + ], NewClass.prototype, "localTest", void 0); + __decorate([ + property("") + ], NewClass.prototype, "clientTestVersion", void 0); + __decorate([ + property(cc.Label) + ], NewClass.prototype, "testVersion", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; cc._RF.pop(); } @@ -10541,7 +8752,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Sdk/DouyinEntranceView.js'; + var __filename = 'preview-scripts/assets/Script/lq_collide_system/lq_collide_config.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -10549,61 +8760,45 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '8a024+q5K9MrpxcaTvucSDB', 'DouyinEntranceView'); -// Script/Sdk/DouyinEntranceView.ts +cc._RF.push(module, '4bd21i88J9KfoWB6fqk7oW1', 'lq_collide_config'); +// Script/lq_collide_system/lq_collide_config.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DouyinEntranceView = void 0; -var MiniGameSdk_1 = require("./MiniGameSdk"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var DouyinEntranceView = /** @class */ (function (_super) { - __extends(DouyinEntranceView, _super); - function DouyinEntranceView() { - return _super !== null && _super.apply(this, arguments) || this; - } - DouyinEntranceView.prototype.start = function () { - }; - DouyinEntranceView.prototype.update = function (deltaTime) { - }; - DouyinEntranceView.prototype.onCloseClick = function () { - this.node.active = false; - }; - DouyinEntranceView.prototype.onNavigateToDouyinClick = function () { - MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.navigateToSidebar(function (success) { - if (success) { - console.log('跳转成功'); - } - else { - console.log('跳转失败'); - } - }); - }; - DouyinEntranceView = __decorate([ - ccclass - ], DouyinEntranceView); - return DouyinEntranceView; -}(cc.Component)); -exports.DouyinEntranceView = DouyinEntranceView; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQCollideConfig = exports.LQCollideInfoList = void 0; +var LQCollideInfoList; +(function (LQCollideInfoList) { + LQCollideInfoList[LQCollideInfoList["default"] = 0] = "default"; + LQCollideInfoList[LQCollideInfoList["role"] = 1] = "role"; + LQCollideInfoList[LQCollideInfoList["role_bullet"] = 2] = "role_bullet"; + LQCollideInfoList[LQCollideInfoList["enemy"] = 3] = "enemy"; + LQCollideInfoList[LQCollideInfoList["enemy_bullet"] = 4] = "enemy_bullet"; + LQCollideInfoList[LQCollideInfoList["prop"] = 5] = "prop"; +})(LQCollideInfoList = exports.LQCollideInfoList || (exports.LQCollideInfoList = {})); +var LQCollideConfig = /** @class */ (function () { + function LQCollideConfig() { + } + LQCollideConfig.switch_auto_run = true; + LQCollideConfig.switch_print_log = true; + LQCollideConfig.switch_quad_tree = false; + LQCollideConfig.max_node_len = 10; + LQCollideConfig.per_frame = 60; + LQCollideConfig.max_node_level = 4; + LQCollideConfig.active_area_x = 0; + LQCollideConfig.active_area_y = 0; + LQCollideConfig.active_area_width = 1000; + LQCollideConfig.active_area_height = 1000; + LQCollideConfig.collide_group_map = { + "default": { id: 1, category: 1, index: 0, mask: 1 }, + "role": { id: 2, category: 2, index: 1, mask: 56 }, + "role_bullet": { id: 3, category: 4, index: 2, mask: 8 }, + "enemy": { id: 4, category: 8, index: 3, mask: 6 }, + "enemy_bullet": { id: 5, category: 16, index: 4, mask: 2 }, + "prop": { id: 6, category: 32, index: 5, mask: 2 }, + }; + return LQCollideConfig; +}()); +exports.LQCollideConfig = LQCollideConfig; cc._RF.pop(); } @@ -10616,13 +8811,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXERvdXlpbkVudHJhbmNlVmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQTRDO0FBQ3RDLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBSTVDO0lBQXdDLHNDQUFZO0lBQXBEOztJQXVCQSxDQUFDO0lBdEJHLGtDQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsbUNBQU0sR0FBTixVQUFPLFNBQWlCO0lBRXhCLENBQUM7SUFFRCx5Q0FBWSxHQUFaO1FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFRCxvREFBdUIsR0FBdkI7UUFFSSx5QkFBVyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFVBQUMsT0FBZ0I7WUFDNUQsSUFBSSxPQUFPLEVBQUU7Z0JBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQzthQUN2QjtpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3ZCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBdEJRLGtCQUFrQjtRQUQ5QixPQUFPO09BQ0ssa0JBQWtCLENBdUI5QjtJQUFELHlCQUFDO0NBdkJELEFBdUJDLENBdkJ1QyxFQUFFLENBQUMsU0FBUyxHQXVCbkQ7QUF2QlksZ0RBQWtCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWluaUdhbWVTZGsgfSBmcm9tIFwiLi9NaW5pR2FtZVNka1wiO1xyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBjbGFzcyBEb3V5aW5FbnRyYW5jZVZpZXcgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhcnQoKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShkZWx0YVRpbWU6IG51bWJlcikge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBvbkNsb3NlQ2xpY2soKSB7XHJcbiAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTmF2aWdhdGVUb0RvdXlpbkNsaWNrKCkge1xyXG5cclxuICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLm5hdmlnYXRlVG9TaWRlYmFyKChzdWNjZXNzOiBib29sZWFuKSA9PiB7IC8vIOi3s+i9rOWIsOaKlumfs+S+p+i+ueagj1xyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOaIkOWKnycpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+i3s+i9rOWksei0pScpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9jb2xsaWRlX3N5c3RlbVxcbHFfY29sbGlkZV9jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBWSxpQkFFWDtBQUZELFdBQVksaUJBQWlCO0lBQ3pCLCtEQUFPLENBQUE7SUFBRSx5REFBSSxDQUFBO0lBQUUsdUVBQVcsQ0FBQTtJQUFFLDJEQUFLLENBQUE7SUFBRSx5RUFBWSxDQUFBO0lBQUUseURBQUksQ0FBQTtBQUN6RCxDQUFDLEVBRlcsaUJBQWlCLEdBQWpCLHlCQUFpQixLQUFqQix5QkFBaUIsUUFFNUI7QUFFRDtJQUFBO0lBbUJBLENBQUM7SUFsQmlCLCtCQUFlLEdBQVksSUFBSSxDQUFDO0lBQ2hDLGdDQUFnQixHQUFZLElBQUksQ0FBQztJQUNqQyxnQ0FBZ0IsR0FBWSxLQUFLLENBQUM7SUFDbEMsNEJBQVksR0FBVyxFQUFFLENBQUM7SUFDMUIseUJBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsOEJBQWMsR0FBVyxDQUFDLENBQUM7SUFDM0IsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsNkJBQWEsR0FBVyxDQUFDLENBQUM7SUFDMUIsaUNBQWlCLEdBQVcsSUFBSSxDQUFDO0lBQ2pDLGtDQUFrQixHQUFXLElBQUksQ0FBQztJQUNsQyxpQ0FBaUIsR0FBRztRQUM5QixTQUFTLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2xELE1BQU0sRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUM7UUFDaEQsYUFBYSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztRQUN0RCxPQUFPLEVBQUUsRUFBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFDO1FBQ2hELGNBQWMsRUFBRSxFQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUM7UUFDeEQsTUFBTSxFQUFFLEVBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBQztLQUNuRCxDQUFBO0lBQ0wsc0JBQUM7Q0FuQkQsQUFtQkMsSUFBQTtBQW5CWSwwQ0FBZSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIExRQ29sbGlkZUluZm9MaXN0IHtcclxuICAgIGRlZmF1bHQsIHJvbGUsIHJvbGVfYnVsbGV0LCBlbmVteSwgZW5lbXlfYnVsbGV0LCBwcm9wXHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBMUUNvbGxpZGVDb25maWcge1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfYXV0b19ydW46IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHVibGljIHN0YXRpYyBzd2l0Y2hfcHJpbnRfbG9nOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBzdGF0aWMgc3dpdGNoX3F1YWRfdHJlZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZW46IG51bWJlciA9IDEwO1xyXG4gICAgcHVibGljIHN0YXRpYyBwZXJfZnJhbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcHVibGljIHN0YXRpYyBtYXhfbm9kZV9sZXZlbDogbnVtYmVyID0gNDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeDogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfeTogbnVtYmVyID0gMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgYWN0aXZlX2FyZWFfd2lkdGg6IG51bWJlciA9IDEwMDA7XHJcbiAgICBwdWJsaWMgc3RhdGljIGFjdGl2ZV9hcmVhX2hlaWdodDogbnVtYmVyID0gMTAwMDtcclxuICAgIHB1YmxpYyBzdGF0aWMgY29sbGlkZV9ncm91cF9tYXAgPSB7XHJcbiAgICAgICAgXCJkZWZhdWx0XCI6IHtpZDogMSwgY2F0ZWdvcnk6IDEsIGluZGV4OiAwLCBtYXNrOiAxfSxcclxuICAgICAgICBcInJvbGVcIjoge2lkOiAyLCBjYXRlZ29yeTogMiwgaW5kZXg6IDEsIG1hc2s6IDU2fSxcclxuICAgICAgICBcInJvbGVfYnVsbGV0XCI6IHtpZDogMywgY2F0ZWdvcnk6IDQsIGluZGV4OiAyLCBtYXNrOiA4fSxcclxuICAgICAgICBcImVuZW15XCI6IHtpZDogNCwgY2F0ZWdvcnk6IDgsIGluZGV4OiAzLCBtYXNrOiA2fSxcclxuICAgICAgICBcImVuZW15X2J1bGxldFwiOiB7aWQ6IDUsIGNhdGVnb3J5OiAxNiwgaW5kZXg6IDQsIG1hc2s6IDJ9LFxyXG4gICAgICAgIFwicHJvcFwiOiB7aWQ6IDYsIGNhdGVnb3J5OiAzMiwgaW5kZXg6IDUsIG1hc2s6IDJ9LFxyXG4gICAgfVxyXG59Il19 //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/btnControl.js'; + var __filename = 'preview-scripts/assets/Script/Sdk/MiniGameManager.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -10630,52 +8825,341 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '6ee6czJ4eVNb4Feiqps5SIa', 'btnControl'); -// Script/btnControl.ts +cc._RF.push(module, '0d272pXVChFDqi5FXTD2JlR', 'MiniGameManager'); +// Script/Sdk/MiniGameManager.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var btnControl = /** @class */ (function (_super) { - __extends(btnControl, _super); - function btnControl() { - return _super !== null && _super.apply(this, arguments) || this; - } - btnControl.prototype.onLoad = function () { - this._touch = true; - }; - btnControl.prototype.start = function () { - }; - btnControl.prototype.setTouch = function (type) { - this._touch = type; - }; - btnControl.prototype.update = function (dt) { - }; - btnControl = __decorate([ - ccclass - ], btnControl); - return btnControl; -}(cc.Component)); -exports.default = btnControl; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MiniGameManager = void 0; +var MiniGameSdk_1 = require("./MiniGameSdk"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var EWechatAD; +(function (EWechatAD) { + EWechatAD["CUMSTOM_01"] = "adunit-f7c2417eb2c2e473"; +})(EWechatAD || (EWechatAD = {})); +var MiniGameManager = /** @class */ (function (_super) { + __extends(MiniGameManager, _super); + function MiniGameManager() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.entranceView = null; + return _this; + } + MiniGameManager_1 = MiniGameManager; + Object.defineProperty(MiniGameManager, "instance", { + get: function () { + if (!MiniGameManager_1._instance) { + MiniGameManager_1._instance = new MiniGameManager_1(); + } + return MiniGameManager_1._instance; + }, + enumerable: false, + configurable: true + }); + MiniGameManager.prototype.start = function () { + // 禁用游戏入口视图 + // this.entranceView.active = false; + // MiniGameSdk.API.getUserProfile(this.setUserId); + // cc.fx.GameTool.setUserInfo(""); + this.onGetLoginCode(); + // 尝试获取游戏入口按钮,如果存在则直接返回,不进行后续操作 + // let buttonEntrance = this.node.getChildByName('Btns')?.getChildByName('Button_EntranceView'); + // if (buttonEntrance) { + // return; + // } + // 如果是字节跳动小游戏环境,检查侧边栏是否存在 + if (MiniGameSdk_1.MiniGameSdk.isBytedance()) { + //抖音环境,检测侧边栏存在 + MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.checkSideBar(function (success) { + // 根据侧边栏存在性激活或禁用游戏入口按钮 + // buttonEntrance.active = success; + }); + } + else { + // 非抖音小游戏环境,直接激活游戏入口按钮 + // 非抖音环境,正常显示按钮 + // buttonEntrance.active = true; + } + // 设置监听器,以处理来自侧边栏的交互事件 + MiniGameSdk_1.MiniGameSdk.BytedanceSidebar.listenFromSidebar(function (success) { + // 如果交互成功,显示奖励提示 + if (success) { + MiniGameSdk_1.MiniGameSdk.API.showToast('侧边栏奖励', 5); + } + }); + }; + MiniGameManager.prototype.update = function (deltaTime) { + }; + /** + * 弹出广告横幅。 + * 此方法用于加载并显示广告横幅。它首先加载指定广告位的横幅广告,然后显示广告。 + * 加载广告和显示广告是通过MiniGameSdk.AdvertManager的实例方法来实现的。 + * + * @remarks + * 此方法提供了两种显示横幅广告的方式: + * 1. 默认方式:调用showBanner方法显示广告,系统会自动选择显示位置。 + * 2. 指定位置方式:可以通过传入额外的参数来指定广告显示在屏幕的顶部或底部,或者通过坐标指定显示位置。 + * + * 示例代码中注释掉了两种显示广告的具体方法,可以根据实际需求选择使用。 + */ + MiniGameManager.prototype.onShowBanner = function () { + // 加载指定广告位的横幅广告。 + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadBanner('adunit-4e7ef467e3eaab51'); + // 默认方式显示横幅广告。 + // 方法1:默认调用 + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showBanner(); + // 示例:指定屏幕底部正中显示横幅广告。 + // 方法2:指定屏幕顶部或底部正中 + // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', MiniGameSdk.EAdBannerLocation.BOTTOM); + // 示例:通过坐标指定位置显示横幅广告。 + // 方法2:指定坐标 + // MiniGameSdk.AdvertManager.instance.showBanner('adunit-4e7ef467e3eaab51', { top: 10, left: 10 }); + }; + /** + * 隐藏广告横幅的函数。 + * + * 该函数调用MiniGameSdk.AdvertManager实例的方法,用于隐藏广告横幅。 + * 当需要暂时停止展示广告或用户主动请求隐藏广告时,可以调用此函数。 + * + * @remarks + * 此函数不接受任何参数,也不返回任何值。 + * 它单纯地触发广告横幅的隐藏操作,具体实现依赖于AdvertManager的实现。 + */ + MiniGameManager.prototype.onHideBanner = function () { + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideBanner(); + }; + /** + * 显示插屏广告的函数。 + * + * 此函数调用MiniGameSdk.AdvertManager实例的方法,以显示一个指定的插屏广告。 + * 它使用了硬编码的广告单元标识符,这意味着它专为特定的广告位设计。 + * 在实际应用中,可能需要根据应用的配置或用户的特定条件来动态选择广告单元标识符。 + */ + MiniGameManager.prototype.onShowInterstitial = function () { + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showInterstitial('adunit-eadd67851d3050ad'); + }; + /** + * 调用广告管理器加载并展示自定义广告。 + * 此方法首先通过广告管理器的实例加载指定的自定义广告单元,然后展示这个自定义广告。 + * 加载和展示广告是广告管理系统中的常见操作,这里通过两步分别完成加载和展示的过程, + * 以确保广告在展示前正确且充分地被加载。 + */ + MiniGameManager.prototype.onShowCustom = function () { + // 加载指定的自定义广告单元。 + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.loadCustom(EWechatAD.CUMSTOM_01); + // 展示已加载的自定义广告。 + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showCustom(EWechatAD.CUMSTOM_01); + }; + /** + * 隐藏自定义广告。 + * + * 本函数调用MiniGameSdk.AdvertManager.instance.hideCustom()来隐藏自定义广告。 + * 这是对接广告管理系统的一部分,用于控制广告的显示与隐藏。 + * 在需要隐藏自定义广告的场景下,调用此函数即可实现相应功能。 + */ + MiniGameManager.prototype.onHideCustom = function () { + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.hideCustom(EWechatAD.CUMSTOM_01); + }; + /** + * 触发显示视频广告的函数。 + * 通过调用MiniGameSdk.AdvertManager.instance.showVideo方法,显示一个视频广告,并根据用户观看广告的情况执行相应的逻辑。 + * + * @remarks + * 此函数首先传入一个广告单元ID,用于标识要显示的视频广告。然后传入一个回调函数,该回调函数在用户观看广告后被调用,无论用户是完成了观看、拒绝了观看还是观看过程中发生了错误。 + * 回调函数接收两个参数:一个是用户观看广告的结果,另一个是用户观看的广告数量。根据观看结果的不同,显示不同的提示信息。 + */ + MiniGameManager.prototype.onShowVideo = function () { + // 广告单元ID,用于标识要显示的视频广告 + // 广告单元ID的样例 + //抖音形如: 1re3nfqkmy81m4m8ge + //微信形如: adunit-a7718f6e195e42fe + MiniGameSdk_1.MiniGameSdk.AdvertManager.instance.showVideo('1re3nfqkmy81m4m8ge', function (res, count) { + // 输出用户观看的广告数量 + console.log('用户看的视频广告个数是:', count); + // 根据用户观看广告的结果,执行不同的逻辑 + switch (res) { + case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ACCEPT: + // 用户完成了广告观看,显示奖励提示 + MiniGameSdk_1.MiniGameSdk.API.showToast('用户看完广告,可以奖励'); + break; + case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.REJECT: + // 用户拒绝了广告观看,显示不奖励提示 + MiniGameSdk_1.MiniGameSdk.API.showToast('用户拒绝掉广告,不奖励'); + break; + case MiniGameSdk_1.MiniGameSdk.EAdVideoResult.ERROR: + // 广告播放发生错误,显示错误提示 + MiniGameSdk_1.MiniGameSdk.API.showToast('播放广告发生错误,不奖励'); + break; + default: + // 其他情况,不作处理 + break; + } + }); + }; + /** + * 引导用户分享应用给朋友。 + * + * 通过调用MiniGameSdk的API分享功能,向用户的朋友圈发送邀请,邀请他们一起玩游戏。 + * 这是一个重要的推广手段,可以增加应用的曝光度和用户量。 + * + * @remarks + * 此方法中调用的API依赖于特定的小游戏平台,因此在不同的平台上可能需要不同的实现。 + */ + MiniGameManager.prototype.onShare = function () { + MiniGameSdk_1.MiniGameSdk.API.shareAppToFriends('来玩游戏吧'); + }; + /** + * 显示一个toast提示。 + * + * 通过调用MiniGameSdk的API方法来显示一个简短的提示信息。toast是一种轻量级的提示方式,用于在界面上短暂地展示一些信息,不影响用户操作。 + * 这里使用了固定的提示文本 '这是一个toast',在实际应用中,可以根据需要动态设置提示文本。 + */ + MiniGameManager.prototype.onShowToast = function () { + MiniGameSdk_1.MiniGameSdk.API.showToast('这是一个toast'); + }; + /** + * 触发设备振动功能。 + * + * 该方法用于调用MiniGameSdk提供的API,以实现设备的振动功能。当需要提醒用户或提供触觉反馈时,可以调用此方法。 + * 例如,在游戏或应用中,当用户完成特定操作或发生特定事件时,可以通过振动给予用户反馈。 + * + * @remarks + * 此方法无参数,也不返回任何值。 + */ + MiniGameManager.prototype.onVirbrate = function () { + MiniGameSdk_1.MiniGameSdk.API.vibrate(); + }; + /** + * 重新启动游戏实例。 + * + * 此函数调用MiniGameSdk中的API重新启动游戏。重新启动操作可能是为了初始化游戏环境、重置游戏状态或处理其他需要重启的场景。 + * 调用此函数后,游戏将会重新开始,当前的游戏状态将会被清除。 + * + * @remarks + * 此函数不接受任何参数。 + * + * @returns 无返回值。 + */ + MiniGameManager.prototype.onReboot = function () { + MiniGameSdk_1.MiniGameSdk.API.reboot(); + }; + /** + * 当前函数用于在迷你游戏中实现退出功能。 + * 它调用了MiniGameSdk提供的API方法来触发退出操作。 + * 该方法通常在需要结束当前迷你游戏或返回到上一级菜单时被调用。 + */ + MiniGameManager.prototype.onExit = function () { + MiniGameSdk_1.MiniGameSdk.API.exit(); + }; + /** + * 显示分享菜单。 + * + * 通过调用MiniGameSdk的API方法,触发显示分享菜单的操作。此函数旨在提供一个统一的入口, + * 以便在需要时轻松调用分享功能,而无需直接与具体的SDK接口交互。 + * + * @remarks + * 此方法不接受任何参数,也不返回任何值。 + */ + MiniGameManager.prototype.onShowShareMenu = function () { + MiniGameSdk_1.MiniGameSdk.API.showShareMenu(); + }; + /** + * 导航到指定的小游戏。 + * + * 本函数用于触发导航到一个特定的小游戏。这需要提供目标小游戏的ID, + * 以便系统能够正确地将用户重定向到目标小游戏。 + * + * 注意:这里的'xxx'是占位符,实际使用时需要替换为具体的小游戏ID。 + */ + MiniGameManager.prototype.onNavigate = function () { + MiniGameSdk_1.MiniGameSdk.API.navigateTo('xxx'); // xxx替换为你的小游戏id + }; + /** + * 激活字节跳动入口视图。 + * + * 此方法用于将字节跳动入口视图设置为活跃状态。当需要在用户界面中显示字节跳动的入口时, + * 可以调用此方法来激活相应的视图元素,使其对用户可见。 + */ + MiniGameManager.prototype.onBytedanceEntranceView = function () { + // this.entranceView.active = true; + }; + /** + * 请求登录代码 + * + * 本函数用于触发小程序的登录流程,获取微信或头条等第三方平台的登录代码。 + * 这些代码可以用于后续的用户身份验证和数据同步流程。 + */ + MiniGameManager.prototype.onGetLoginCode = function () { + // 调用MiniGameSdk的API登录方法,传入一个回调函数处理登录结果 + MiniGameSdk_1.MiniGameSdk.API.login(function (code, anonymousCode) { + // 打印微信或头条的登录代码 + console.log('Wechat Or Bytedance Code:', code); + // 打印头条的匿名登录代码 + // console.log('Bytedance Anonymous Code:', anonymousCode); + if (code) { + // cc.fx.GameTool.getUserId(code, data => this.setUserId(data)); + } + }); + }; + // setUserId(data){ + // cc.fx.GameConfig.GM_INFO.userId = data.data.userId; + // MiniGameSdk.API.getUserInfo(this.setUserInfo); + // } + // setUserInfo(data){ + // console.log("获取到的用户信息",data.userInfo); + // var useData = { + // "gameId": cc.fx.GameConfig.GM_INFO.gameId, + // "userId": cc.fx.GameConfig.GM_INFO.userId, + // "nickName":data.userInfo.nickName, + // "pic": data.userInfo.avatarUrl + // } + // console.log("即将上传的用户信息:",cc.fx.GameConfig.GM_INFO.userId,data.userInfo.nickName,data.userInfo.avatarUrl); + // console.log("Post数据:",useData); + // cc.fx.GameTool.setUserInfo(useData,(res)=>{ + // console.log("上传成功:",res); + // }); + // } + /** + * 创建并显示游戏圈按钮 + * + * 本函数通过调用MiniGameSdk的GameClub实例方法,实现游戏俱乐部的创建和显示。 + * 它首先配置俱乐部的图标类型和位置大小,然后创建俱乐部,最后显示俱乐部。 + * 这样做是为了在小游戏内创建并展示一个游戏俱乐部的图标,供玩家加入或互动。 + */ + MiniGameManager.prototype.onCreateClub = function () { + // 配置俱乐部图标为绿色,设置图标的位置为顶部200像素,左侧0像素 + MiniGameSdk_1.MiniGameSdk.GameClub.instance.create(MiniGameSdk_1.MiniGameSdk.EGameClubIcon.GREEN, { top: 200, left: 0 }, { width: 50, height: 50 }); + // 显示游戏俱乐部图标 + MiniGameSdk_1.MiniGameSdk.GameClub.instance.show(); + }; + var MiniGameManager_1; + __decorate([ + property(cc.Node) + ], MiniGameManager.prototype, "entranceView", void 0); + MiniGameManager = MiniGameManager_1 = __decorate([ + ccclass + ], MiniGameManager); + return MiniGameManager; +}(cc.Component)); +exports.MiniGameManager = MiniGameManager; cc._RF.pop(); } @@ -10688,228 +9172,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxidG5Db250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUdNLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSTFDO0lBQXdDLDhCQUFZO0lBQXBEOztJQWtCQSxDQUFDO0lBYkcsMkJBQU0sR0FBTjtRQUNJLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCwwQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELDZCQUFRLEdBQVIsVUFBUyxJQUFJO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELDJCQUFNLEdBQU4sVUFBUSxFQUFFO0lBQ1YsQ0FBQztJQWpCZ0IsVUFBVTtRQUQ5QixPQUFPO09BQ2EsVUFBVSxDQWtCOUI7SUFBRCxpQkFBQztDQWxCRCxBQWtCQyxDQWxCdUMsRUFBRSxDQUFDLFNBQVMsR0FrQm5EO2tCQWxCb0IsVUFBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGJ0bkNvbnRyb2wgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgX3RvdWNoOiBib29sZWFuO1xyXG5cclxuXHJcbiAgICBvbkxvYWQgKCkgeyBcclxuICAgICAgICB0aGlzLl90b3VjaCA9IHRydWU7XHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBzZXRUb3VjaCh0eXBlKXtcclxuICAgICAgICB0aGlzLl90b3VjaCA9IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdCkge1xyXG4gICAgfVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Barrier.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '90c37YHUUVPsY0mlNmom67u', 'Barrier'); -// Script/Barrier.ts - -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("./Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Block = /** @class */ (function (_super) { - __extends(Block, _super); - function Block() { - var _this = _super !== null && _super.apply(this, arguments) || this; - // 新增缓存变量 - _this.selfBoxColliders = []; - _this.allBoxColliders = []; - // @property({ - // tooltip: '碰撞形状,None就是无敌,不参与碰撞', - // type: cc.Enum(BlockType), - // // default: BlockType.Nomal, - // displayName: '碰撞形状' - // }) - // LIFE-CYCLE CALLBACKS: - // @property(cc.SpriteAtlas) - // UI: cc.SpriteAtlas = null; - _this.initialTouchOffset = null; - _this.offsetTolerance = 100; // 偏移容忍度; - _this.touchPoint = null; //触摸点 - _this.isTouch = false; //是否触摸 - _this.posX = 0; //地图块的X坐标 - _this.posY = 0; //地图块的Y坐标 - _this.moveLeft = true; //是否可以左移; - _this.moveRight = true; //是否可以右移; - _this.moveUp = true; //是否可以上移; - _this.moveDown = true; //是否可以下移; - _this.moveCorner = 0; //是否碰撞角落 - _this.moveY = 0; //是否可以上下移动; - _this.moveX = 0; //是否可以左右移动; - _this.touchPointX = 0; //触摸点X坐标; - _this.touchPointY = 0; //触摸点Y坐标; - _this.blockId = 0; //方块ID; - _this.level = 0; //叠加方块层数; - _this.pz = false; - return _this; - } - Block.prototype.onLoad = function () { - // this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); - // this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); - // this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); - // this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); - this.pz = false; - this.stacking = cc.v2(0, 0); - // this.selfBoxColliders = this.node.getComponentsInChildren(cc.BoxCollider) - // .filter(collider => collider.tag < 4); - }; - Block.prototype.start = function () { - }; - Block.prototype.jsonDeepClone = function (obj) { - return JSON.parse(JSON.stringify(obj)); - }; - Block.prototype.init = function (block_Info, posX, posY, node) { - this.block_Info = this.jsonDeepClone(block_Info); - var mapInfo = Map_1.default._instance.mapInfo; - console.log("block_Info", this.block_Info); - for (var i = 0; i < mapInfo.length; i++) { - var blockRect = mapInfo[i].getBoundingBox(); - // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 - var point = cc.v2(this.node.position.x - 5, this.node.position.y + 10); - if (blockRect.contains(point)) { - this.posX = mapInfo[i].getComponent("MapBlock").posX; - this.posY = mapInfo[i].getComponent("MapBlock").posY; - this.level = 50 + this.posX - this.posY * 3; - this.node.zIndex = this.level; - this.node.x = mapInfo[i].x + 65; - this.node.y = mapInfo[i].y - 60; - i = 10000; - break; - } - } - }; - Block = __decorate([ - ccclass - ], Block); - return Block; -}(cc.Component)); -exports.default = Block; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCYXJyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZCQUFnQztBQUUxQixJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUFtQyx5QkFBWTtJQUEvQztRQUFBLHFFQTBGQztRQXhGRyxTQUFTO1FBQ0Qsc0JBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUN4QyxxQkFBZSxHQUFxQixFQUFFLENBQUM7UUFDL0MsY0FBYztRQUNkLHNDQUFzQztRQUN0QyxnQ0FBZ0M7UUFDaEMsbUNBQW1DO1FBQ25DLDBCQUEwQjtRQUMxQixLQUFLO1FBS0wsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1Qiw2QkFBNkI7UUFDckIsd0JBQWtCLEdBQVksSUFBSSxDQUFDO1FBQ25DLHFCQUFlLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVTtRQUd6QyxnQkFBVSxHQUFZLElBQUksQ0FBQyxDQUFLLEtBQUs7UUFDckMsYUFBTyxHQUFZLEtBQUssQ0FBQyxDQUFPLE1BQU07UUFDdEMsVUFBSSxHQUFXLENBQUMsQ0FBQyxDQUFlLFNBQVM7UUFDekMsVUFBSSxHQUFXLENBQUMsQ0FBQyxDQUFlLFNBQVM7UUFDekMsY0FBUSxHQUFZLElBQUksQ0FBQyxDQUFNLFNBQVM7UUFDeEMsZUFBUyxHQUFZLElBQUksQ0FBQyxDQUFLLFNBQVM7UUFDeEMsWUFBTSxHQUFZLElBQUksQ0FBQyxDQUFRLFNBQVM7UUFDeEMsY0FBUSxHQUFZLElBQUksQ0FBQyxDQUFNLFNBQVM7UUFDeEMsZ0JBQVUsR0FBVyxDQUFDLENBQUMsQ0FBUSxRQUFRO1FBQ3ZDLFdBQUssR0FBVyxDQUFDLENBQUMsQ0FBVSxXQUFXO1FBQ3ZDLFdBQUssR0FBVyxDQUFDLENBQUMsQ0FBVSxXQUFXO1FBQ3ZDLGlCQUFXLEdBQVcsQ0FBQyxDQUFDLENBQVEsU0FBUztRQUN6QyxpQkFBVyxHQUFXLENBQUMsQ0FBQyxDQUFRLFNBQVM7UUFDekMsYUFBTyxHQUFXLENBQUMsQ0FBQyxDQUFZLE9BQU87UUFFdkMsV0FBSyxHQUFXLENBQUMsQ0FBQyxDQUFZLFNBQVM7UUFDdkMsUUFBRSxHQUFZLEtBQUssQ0FBQzs7SUFvRHhCLENBQUM7SUExQ0csc0JBQU0sR0FBTjtRQUNJLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLDRFQUE0RTtRQUM1RSx5Q0FBeUM7SUFDN0MsQ0FBQztJQUdELHFCQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsNkJBQWEsR0FBYixVQUFpQixHQUFNO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELG9CQUFJLEdBQUosVUFBSyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sR0FBRyxhQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUM1QyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVDLCtDQUErQztZQUMvQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ3RFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNWLE1BQU07YUFDVDtTQUNKO0lBRUwsQ0FBQztJQXhGZ0IsS0FBSztRQUR6QixPQUFPO09BQ2EsS0FBSyxDQTBGekI7SUFBRCxZQUFDO0NBMUZELEFBMEZDLENBMUZrQyxFQUFFLENBQUMsU0FBUyxHQTBGOUM7a0JBMUZvQixLQUFLIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbGxpc2lvbkRldGVjdGlvbiBmcm9tIFwiLi9Db2xsaXNpb25EZXRlY3Rpb25cIjtcclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuL01hcFwiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJsb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyDmlrDlop7nvJPlrZjlj5jph49cclxuICAgIHByaXZhdGUgc2VsZkJveENvbGxpZGVyczogY2MuQm94Q29sbGlkZXJbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBhbGxCb3hDb2xsaWRlcnM6IGNjLkJveENvbGxpZGVyW10gPSBbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7XHJcbiAgICAvLyAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgLy8gICAgIHR5cGU6IGNjLkVudW0oQmxvY2tUeXBlKSxcclxuICAgIC8vICAgICAvLyBkZWZhdWx0OiBCbG9ja1R5cGUuTm9tYWwsXHJcbiAgICAvLyAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7lvaLnirYnXHJcbiAgICAvLyB9KVxyXG5cclxuXHJcblxyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG4gICAgLy8gQHByb3BlcnR5KGNjLlNwcml0ZUF0bGFzKVxyXG4gICAgLy8gVUk6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuICAgIHByaXZhdGUgaW5pdGlhbFRvdWNoT2Zmc2V0OiBjYy5WZWMyID0gbnVsbDtcclxuICAgIHByaXZhdGUgb2Zmc2V0VG9sZXJhbmNlID0gMTAwOyAvLyDlgY/np7vlrrnlv43luqY7IFxyXG5cclxuICAgIGFsbEJsb2NrczogYW55OyAgICAgICAvL+aJgOacieeahOaWueWdlyznlKjkuo7orqHnrpdwb3NYLHBvc1nmtojpmaRcclxuICAgIHRvdWNoUG9pbnQ6IGNjLlZlYzIgPSBudWxsOyAgICAgLy/op6bmkbjngrlcclxuICAgIGlzVG91Y2g6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAgLy/mmK/lkKbop6bmkbhcclxuICAgIHBvc1g6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRY5Z2Q5qCHXHJcbiAgICBwb3NZOiBudW1iZXIgPSAwOyAgICAgICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qEWeWdkOagh1xyXG4gICAgbW92ZUxlZnQ6IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5bem56e7O1xyXG4gICAgbW92ZVJpZ2h0OiBib29sZWFuID0gdHJ1ZTsgICAgIC8v5piv5ZCm5Y+v5Lul5Y+z56e7O1xyXG4gICAgbW92ZVVwOiBib29sZWFuID0gdHJ1ZTsgICAgICAgIC8v5piv5ZCm5Y+v5Lul5LiK56e7O1xyXG4gICAgbW92ZURvd246IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5LiL56e7O1xyXG4gICAgbW92ZUNvcm5lcjogbnVtYmVyID0gMDsgICAgICAgIC8v5piv5ZCm56Kw5pKe6KeS6JC9XHJcbiAgICBtb3ZlWTogbnVtYmVyID0gMDsgICAgICAgICAgLy/mmK/lkKblj6/ku6XkuIrkuIvnp7vliqg7XHJcbiAgICBtb3ZlWDogbnVtYmVyID0gMDsgICAgICAgICAgLy/mmK/lkKblj6/ku6Xlt6blj7Pnp7vliqg7XHJcbiAgICB0b3VjaFBvaW50WDogbnVtYmVyID0gMDsgICAgICAgIC8v6Kem5pG454K5WOWdkOaghztcclxuICAgIHRvdWNoUG9pbnRZOiBudW1iZXIgPSAwOyAgICAgICAgLy/op6bmkbjngrlZ5Z2Q5qCHO1xyXG4gICAgYmxvY2tJZDogbnVtYmVyID0gMDsgICAgICAgICAgICAvL+aWueWdl0lEO1xyXG4gICAgc3RhY2tpbmc6IGNjLlZlYzI7ICAgICAgICAvL+WPoOWKoOaWueWdl1xyXG4gICAgbGV2ZWw6IG51bWJlciA9IDA7ICAgICAgICAgICAgLy/lj6DliqDmlrnlnZflsYLmlbA7XHJcbiAgICBwejogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgY29sbGlkZXI6IGFueTtcclxuICAgIGJsb2NrX0luZm86IGFueTtcclxuICAgIF90b3VjaExpc3RlbmVyOiBhbnk7XHJcbiAgICByZWxhdGl2ZV9Qb3NpdGlvbjogY2MuVmVjMjsgIC8v54K55Ye75ZKM5pa55Z2X55u45a+55L2N572uXHJcbiAgICBwcml2YXRlIF9ldmVudE1hbmFnZXI6IGFueTtcclxuICAgIGhpdDogY2MuTm9kZTtcclxuXHJcblxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICAvLyB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfU1RBUlQsIHRoaXMudG91Y2hTdGFydCwgdGhpcyk7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX01PVkUsIHRoaXMudG91Y2hNb3ZlLCB0aGlzKTsgIFxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9DQU5DRUwsIHRoaXMudG91Y2hFbmQsIHRoaXMpOyAgXHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgdGhpcy50b3VjaEVuZCwgdGhpcyk7ICBcclxuICAgICAgICB0aGlzLnB6ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFja2luZyA9IGNjLnYyKDAsIDApO1xyXG4gICAgICAgIC8vIHRoaXMuc2VsZkJveENvbGxpZGVycyA9IHRoaXMubm9kZS5nZXRDb21wb25lbnRzSW5DaGlsZHJlbihjYy5Cb3hDb2xsaWRlcilcclxuICAgICAgICAvLyAuZmlsdGVyKGNvbGxpZGVyID0+IGNvbGxpZGVyLnRhZyA8IDQpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAganNvbkRlZXBDbG9uZTxUPihvYmo6IFQpOiBUIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KGJsb2NrX0luZm8sIHBvc1gsIHBvc1ksIG5vZGUpIHtcclxuICAgICAgICB0aGlzLmJsb2NrX0luZm8gPSB0aGlzLmpzb25EZWVwQ2xvbmUoYmxvY2tfSW5mbyk7XHJcbiAgICAgICAgbGV0IG1hcEluZm8gPSBNYXBDb25yb2xlci5faW5zdGFuY2UubWFwSW5mbztcclxuICAgICAgICBjb25zb2xlLmxvZyhcImJsb2NrX0luZm9cIiwgdGhpcy5ibG9ja19JbmZvKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcEluZm8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGJsb2NrUmVjdCA9IG1hcEluZm9baV0uZ2V0Qm91bmRpbmdCb3goKTtcclxuICAgICAgICAgICAgLy8g5L2/55SoIGNjLkludGVyc2VjdGlvbi5wb2ludEluUmVjdCDmlrnms5XliKTmlq3ngrnmmK/lkKblnKjnn6nlvaLojIPlm7TlhoVcclxuICAgICAgICAgICAgbGV0IHBvaW50ID0gY2MudjIodGhpcy5ub2RlLnBvc2l0aW9uLnggLSA1LCB0aGlzLm5vZGUucG9zaXRpb24ueSArIDEwKVxyXG4gICAgICAgICAgICBpZiAoYmxvY2tSZWN0LmNvbnRhaW5zKHBvaW50KSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NYID0gbWFwSW5mb1tpXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NZID0gbWFwSW5mb1tpXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCA9IDUwICsgdGhpcy5wb3NYIC0gdGhpcy5wb3NZICogMztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSBtYXBJbmZvW2ldLnggKyA2NTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS55ID0gbWFwSW5mb1tpXS55IC0gNjA7XHJcbiAgICAgICAgICAgICAgICBpID0gMTAwMDA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Lock.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '41cb8ugLSBH/5aNhnsJ5lX7', 'Lock'); -// Script/prop/Lock.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var NumberToImage_1 = require("../NumberToImage"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Lock = /** @class */ (function (_super) { - __extends(Lock, _super); - function Lock() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 0; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Lock.prototype.onLoad = function () { - }; - Lock.prototype.start = function () { - }; - Lock.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - }; - Lock.prototype.reduce = function () { - this.time -= 1; - NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); - if (this.time <= 0) { - this.node.parent.getComponent("Block").type = 0; - this.node.destroy(); - this.node.removeFromParent(); - } - }; - Lock = __decorate([ - ccclass - ], Lock); - return Lock; -}(cc.Component)); -exports.default = Lock; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxMb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR2xGLGtEQUE2QztBQUV2QyxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQStCQztRQTdCRyxVQUFJLEdBQVcsQ0FBQyxDQUFDOztRQTRCakIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQkcsNEJBQTRCO0lBRTVCLHFCQUFNLEdBQU47SUFFQSxDQUFDO0lBRUQsb0JBQUssR0FBTDtJQUNBLENBQUM7SUFFRCxtQkFBSSxHQUFKLFVBQUssSUFBSTtRQUNMLElBQUcsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDL0MsdUJBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDO0lBRXBHLENBQUM7SUFFRCxxQkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDZix1QkFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEcsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ2hELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1NBQ2hDO0lBQ0wsQ0FBQztJQTVCZ0IsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQStCeEI7SUFBRCxXQUFDO0NBL0JELEFBK0JDLENBL0JpQyxFQUFFLENBQUMsU0FBUyxHQStCN0M7a0JBL0JvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuaW1wb3J0IE51bWJlclRvSW1hZ2UgZnJvbSBcIi4uL051bWJlclRvSW1hZ2VcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLy8gbWFwSW5mbzogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lKXtcclxuICAgICAgICBpZih0aW1lKSB0aGlzLnRpbWUgPSB0aW1lO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsMjAsOCxcImxvY2tfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlZHVjZSgpe1xyXG4gICAgICAgIHRoaXMudGltZSAtPSAxO1xyXG4gICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSwyMCw4LFwibG9ja19cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICBpZih0aGlzLnRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikudHlwZSA9IDA7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXE1pbmlHYW1lTWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsNkNBQTRDO0FBQ3RDLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBQzVDLElBQUssU0FFSjtBQUZELFdBQUssU0FBUztJQUNWLG1EQUFzQyxDQUFBO0FBQzFDLENBQUMsRUFGSSxTQUFTLEtBQVQsU0FBUyxRQUViO0FBR0Q7SUFBcUMsbUNBQVk7SUFBakQ7UUFBQSxxRUEyVUM7UUF4VUcsa0JBQVksR0FBWSxJQUFJLENBQUM7O0lBd1VqQyxDQUFDO3dCQTNVWSxlQUFlO0lBa0J4QixzQkFBVywyQkFBUTthQUFuQjtZQUNJLElBQUksQ0FBQyxpQkFBZSxDQUFDLFNBQVMsRUFBRTtnQkFDNUIsaUJBQWUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxpQkFBZSxFQUFFLENBQUM7YUFDckQ7WUFDRCxPQUFPLGlCQUFlLENBQUMsU0FBUyxDQUFDO1FBQ3JDLENBQUM7OztPQUFBO0lBRUQsK0JBQUssR0FBTDtRQUNJLFdBQVc7UUFDWCxvQ0FBb0M7UUFDcEMsa0RBQWtEO1FBQ2xELGtDQUFrQztRQUNsQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsK0JBQStCO1FBQy9CLGdHQUFnRztRQUNoRyx3QkFBd0I7UUFDeEIsY0FBYztRQUNkLElBQUk7UUFFSix5QkFBeUI7UUFFekIsSUFBSSx5QkFBVyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzNCLGNBQWM7WUFDZCx5QkFBVyxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxVQUFDLE9BQWdCO2dCQUN2RCxzQkFBc0I7Z0JBQ3RCLG1DQUFtQztZQUN2QyxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDSCxzQkFBc0I7WUFDdEIsZUFBZTtZQUNmLGdDQUFnQztTQUNuQztRQUVELHNCQUFzQjtRQUN0Qix5QkFBVyxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLFVBQUMsT0FBZ0I7WUFDNUQsZ0JBQWdCO1lBQ2hCLElBQUksT0FBTyxFQUFFO2dCQUNULHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDekM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxnQ0FBTSxHQUFOLFVBQU8sU0FBaUI7SUFFeEIsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsc0NBQVksR0FBWjtRQUNJLGdCQUFnQjtRQUNoQix5QkFBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFFekUsY0FBYztRQUNkLFdBQVc7UUFDWCx5QkFBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFaEQscUJBQXFCO1FBQ3JCLGtCQUFrQjtRQUNsQixtSEFBbUg7UUFFbkgscUJBQXFCO1FBQ3JCLFdBQVc7UUFDWCxvR0FBb0c7SUFDeEcsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILHNDQUFZLEdBQVo7UUFDSSx5QkFBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILDRDQUFrQixHQUFsQjtRQUNJLHlCQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHNDQUFZLEdBQVo7UUFDSSxnQkFBZ0I7UUFDaEIseUJBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDcEUsZUFBZTtRQUNmLHlCQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxzQ0FBWSxHQUFaO1FBQ0kseUJBQVcsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxxQ0FBVyxHQUFYO1FBQ0ksc0JBQXNCO1FBQ3RCLFlBQVk7UUFDWiwwQkFBMEI7UUFDMUIsK0JBQStCO1FBQy9CLHlCQUFXLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsVUFBQyxHQUErQixFQUFFLEtBQWE7WUFDOUcsY0FBYztZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRW5DLHNCQUFzQjtZQUN0QixRQUFRLEdBQUcsRUFBRTtnQkFDVCxLQUFLLHlCQUFXLENBQUMsY0FBYyxDQUFDLE1BQU07b0JBQ2xDLG1CQUFtQjtvQkFDbkIseUJBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUN6QyxNQUFNO2dCQUNWLEtBQUsseUJBQVcsQ0FBQyxjQUFjLENBQUMsTUFBTTtvQkFDbEMsb0JBQW9CO29CQUNwQix5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1YsS0FBSyx5QkFBVyxDQUFDLGNBQWMsQ0FBQyxLQUFLO29CQUNqQyxrQkFBa0I7b0JBQ2xCLHlCQUFXLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztvQkFDMUMsTUFBTTtnQkFDVjtvQkFDSSxZQUFZO29CQUNaLE1BQU07YUFDYjtRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsaUNBQU8sR0FBUDtRQUNJLHlCQUFXLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHFDQUFXLEdBQVg7UUFDSSx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsb0NBQVUsR0FBVjtRQUNJLHlCQUFXLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsa0NBQVEsR0FBUjtRQUNJLHlCQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0NBQU0sR0FBTjtRQUNJLHlCQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILHlDQUFlLEdBQWY7UUFDSSx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILG9DQUFVLEdBQVY7UUFDSSx5QkFBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0I7SUFDdkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsaURBQXVCLEdBQXZCO1FBQ0ksbUNBQW1DO0lBQ3ZDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILHdDQUFjLEdBQWQ7UUFDSSx1Q0FBdUM7UUFDdkMseUJBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFVBQUMsSUFBWSxFQUFFLGFBQXFCO1lBQ3RELGVBQWU7WUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLDJCQUEyQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQy9DLGNBQWM7WUFDZCwyREFBMkQ7WUFDM0QsSUFBRyxJQUFJLEVBQUM7Z0JBQ0osaUVBQWlFO2FBQ3BFO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLDBEQUEwRDtJQUMxRCxxREFBcUQ7SUFDckQsSUFBSTtJQUVKLHFCQUFxQjtJQUNyQiw2Q0FBNkM7SUFDN0Msc0JBQXNCO0lBQ3RCLHFEQUFxRDtJQUNyRCxxREFBcUQ7SUFDckQsNkNBQTZDO0lBQzdDLHlDQUF5QztJQUV6QyxRQUFRO0lBQ1IsZ0hBQWdIO0lBQ2hILHNDQUFzQztJQUN0QyxrREFBa0Q7SUFDbEQsb0NBQW9DO0lBQ3BDLFVBQVU7SUFDVixJQUFJO0lBRUo7Ozs7OztPQU1HO0lBQ0gsc0NBQVksR0FBWjtRQUNJLG1DQUFtQztRQUNuQyx5QkFBVyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUNoQyx5QkFBVyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQy9CLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEVBQ3JCLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMvQixZQUFZO1FBQ1oseUJBQVcsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pDLENBQUM7O0lBdlVEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7eURBQ1c7SUFIcEIsZUFBZTtRQUQzQixPQUFPO09BQ0ssZUFBZSxDQTJVM0I7SUFBRCxzQkFBQztDQTNVRCxBQTJVQyxDQTNVb0MsRUFBRSxDQUFDLFNBQVMsR0EyVWhEO0FBM1VZLDBDQUFlIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmltcG9ydCB7IE1pbmlHYW1lU2RrIH0gZnJvbSBcIi4vTWluaUdhbWVTZGtcIjtcclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuZW51bSBFV2VjaGF0QUQge1xyXG4gICAgQ1VNU1RPTV8wMSA9ICdhZHVuaXQtZjdjMjQxN2ViMmMyZTQ3MydcclxufVxyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGNsYXNzIE1pbmlHYW1lTWFuYWdlciBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcblxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBlbnRyYW5jZVZpZXc6IGNjLk5vZGUgPSBudWxsO1xyXG4gICAgLyoqXHJcbiAgICAgKiDlvIDlp4vmuLjmiI/liY3nmoTliJ3lp4vljJbmk43kvZzjgIJcclxuICAgICAqIOS4u+imgei0n+i0o+ajgOafpeW5tuWkhOeQhua4uOaIj+WFpeWPo+aMiemSrueahOa/gOa0u+eKtuaAge+8jOS7peWPiuWcqOeJueWumueOr+Wig+S4i+iuvue9ruS+p+i+ueagj+eahOebkeWQrOWZqOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmVtYXJrc1xyXG4gICAgICog5q2k5pa55rOV6aaW5YWI5bCG5ri45oiP5YWl5Y+j6KeG5Zu+6K6+5Li66Z2e5r+A5rS754q25oCB77yM5Lul5YeG5aSH6L+b6KGM5ZCO57ut55qE5qOA5p+l5ZKM6K6+572u44CCXHJcbiAgICAgKiDlpoLmnpzlvZPliY3njq/looPmmK/mipbpn7PlsI/muLjmiI/vvIzkvJrmo4Dmn6XmmK/lkKblrZjlnKjkvqfovrnmoI/vvIzlubbmoLnmja7mo4Dmn6Xnu5Pmnpzmv4DmtLvmiJbnpoHnlKjmuLjmiI/lhaXlj6PmjInpkq7jgIJcclxuICAgICAqIOWvueS6jumdnuaKlumfs+Wwj+a4uOaIj+eOr+Wig++8jOebtOaOpea/gOa0u+a4uOaIj+WFpeWPo+aMiemSruOAglxyXG4gICAgICog5q2k5aSW77yM5peg6K66546v5aKD5aaC5L2V77yM6YO95Lya6K6+572u5LiA5Liq55uR5ZCs5Zmo77yM5Lul5aSE55CG5p2l6Ieq5L6n6L655qCP55qE5LqL5Lu277yM5aaC5oiQ5Yqf6Kem5Y+R5pe25pi+56S65aWW5Yqx5o+Q56S644CCXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2lkOmFueTtcclxuICAgIHByaXZhdGUgX3VzZXJEYXRhOmFueTtcclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IE1pbmlHYW1lTWFuYWdlcjtcclxuICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogTWluaUdhbWVNYW5hZ2VyIHtcclxuICAgICAgICBpZiAoIU1pbmlHYW1lTWFuYWdlci5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgTWluaUdhbWVNYW5hZ2VyLl9pbnN0YW5jZSA9IG5ldyBNaW5pR2FtZU1hbmFnZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIE1pbmlHYW1lTWFuYWdlci5faW5zdGFuY2U7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhcnQoKSB7XHJcbiAgICAgICAgLy8g56aB55So5ri45oiP5YWl5Y+j6KeG5Zu+XHJcbiAgICAgICAgLy8gdGhpcy5lbnRyYW5jZVZpZXcuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgLy8gTWluaUdhbWVTZGsuQVBJLmdldFVzZXJQcm9maWxlKHRoaXMuc2V0VXNlcklkKTtcclxuICAgICAgICAvLyBjYy5meC5HYW1lVG9vbC5zZXRVc2VySW5mbyhcIlwiKTtcclxuICAgICAgICB0aGlzLm9uR2V0TG9naW5Db2RlKCk7XHJcbiAgICAgICAgLy8g5bCd6K+V6I635Y+W5ri45oiP5YWl5Y+j5oyJ6ZKu77yM5aaC5p6c5a2Y5Zyo5YiZ55u05o6l6L+U5Zue77yM5LiN6L+b6KGM5ZCO57ut5pON5L2cXHJcbiAgICAgICAgLy8gbGV0IGJ1dHRvbkVudHJhbmNlID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKCdCdG5zJyk/LmdldENoaWxkQnlOYW1lKCdCdXR0b25fRW50cmFuY2VWaWV3Jyk7XHJcbiAgICAgICAgLy8gaWYgKGJ1dHRvbkVudHJhbmNlKSB7XHJcbiAgICAgICAgLy8gICAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIOWmguaenOaYr+Wtl+iKgui3s+WKqOWwj+a4uOaIj+eOr+Wig++8jOajgOafpeS+p+i+ueagj+aYr+WQpuWtmOWcqFxyXG5cclxuICAgICAgICBpZiAoTWluaUdhbWVTZGsuaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAvL+aKlumfs+eOr+Wig++8jOajgOa1i+S+p+i+ueagj+WtmOWcqFxyXG4gICAgICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLmNoZWNrU2lkZUJhcigoc3VjY2VzczogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8g5qC55o2u5L6n6L655qCP5a2Y5Zyo5oCn5r+A5rS75oiW56aB55So5ri45oiP5YWl5Y+j5oyJ6ZKuXHJcbiAgICAgICAgICAgICAgICAvLyBidXR0b25FbnRyYW5jZS5hY3RpdmUgPSBzdWNjZXNzO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDpnZ7mipbpn7PlsI/muLjmiI/njq/looPvvIznm7TmjqXmv4DmtLvmuLjmiI/lhaXlj6PmjInpkq5cclxuICAgICAgICAgICAgLy8g6Z2e5oqW6Z+z546v5aKD77yM5q2j5bi45pi+56S65oyJ6ZKuXHJcbiAgICAgICAgICAgIC8vIGJ1dHRvbkVudHJhbmNlLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDorr7nva7nm5HlkKzlmajvvIzku6XlpITnkIbmnaXoh6rkvqfovrnmoI/nmoTkuqTkupLkuovku7ZcclxuICAgICAgICBNaW5pR2FtZVNkay5CeXRlZGFuY2VTaWRlYmFyLmxpc3RlbkZyb21TaWRlYmFyKChzdWNjZXNzOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgIC8vIOWmguaenOS6pOS6kuaIkOWKn++8jOaYvuekuuWlluWKseaPkOekulxyXG4gICAgICAgICAgICBpZiAoc3VjY2Vzcykge1xyXG4gICAgICAgICAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdCgn5L6n6L655qCP5aWW5YqxJywgNSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGUoZGVsdGFUaW1lOiBudW1iZXIpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlvLnlh7rlub/lkYrmqKrluYXjgIJcclxuICAgICAqIOatpOaWueazleeUqOS6juWKoOi9veW5tuaYvuekuuW5v+WRiuaoquW5heOAguWug+mmluWFiOWKoOi9veaMh+WumuW5v+WRiuS9jeeahOaoquW5heW5v+WRiu+8jOeEtuWQjuaYvuekuuW5v+WRiuOAglxyXG4gICAgICog5Yqg6L295bm/5ZGK5ZKM5pi+56S65bm/5ZGK5piv6YCa6L+HTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlcueahOWunuS+i+aWueazleadpeWunueOsOeahOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmVtYXJrc1xyXG4gICAgICog5q2k5pa55rOV5o+Q5L6b5LqG5Lik56eN5pi+56S65qiq5bmF5bm/5ZGK55qE5pa55byP77yaXHJcbiAgICAgKiAxLiDpu5jorqTmlrnlvI/vvJrosIPnlKhzaG93QmFubmVy5pa55rOV5pi+56S65bm/5ZGK77yM57O757uf5Lya6Ieq5Yqo6YCJ5oup5pi+56S65L2N572u44CCXHJcbiAgICAgKiAyLiDmjIflrprkvY3nva7mlrnlvI/vvJrlj6/ku6XpgJrov4fkvKDlhaXpop3lpJbnmoTlj4LmlbDmnaXmjIflrprlub/lkYrmmL7npLrlnKjlsY/luZXnmoTpobbpg6jmiJblupXpg6jvvIzmiJbogIXpgJrov4flnZDmoIfmjIflrprmmL7npLrkvY3nva7jgIJcclxuICAgICAqIFxyXG4gICAgICog56S65L6L5Luj56CB5Lit5rOo6YeK5o6J5LqG5Lik56eN5pi+56S65bm/5ZGK55qE5YW35L2T5pa55rOV77yM5Y+v5Lul5qC55o2u5a6e6ZmF6ZyA5rGC6YCJ5oup5L2/55So44CCXHJcbiAgICAgKi9cclxuICAgIG9uU2hvd0Jhbm5lcigpIHtcclxuICAgICAgICAvLyDliqDovb3mjIflrprlub/lkYrkvY3nmoTmqKrluYXlub/lkYrjgIJcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLmxvYWRCYW5uZXIoJ2FkdW5pdC00ZTdlZjQ2N2UzZWFhYjUxJyk7XHJcblxyXG4gICAgICAgIC8vIOm7mOiupOaWueW8j+aYvuekuuaoquW5heW5v+WRiuOAglxyXG4gICAgICAgIC8vIOaWueazlTHvvJrpu5jorqTosIPnlKhcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dCYW5uZXIoKTtcclxuXHJcbiAgICAgICAgLy8g56S65L6L77ya5oyH5a6a5bGP5bmV5bqV6YOo5q2j5Lit5pi+56S65qiq5bmF5bm/5ZGK44CCXHJcbiAgICAgICAgLy8g5pa55rOVMu+8muaMh+WumuWxj+W5lemhtumDqOaIluW6lemDqOato+S4rVxyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0Jhbm5lcignYWR1bml0LTRlN2VmNDY3ZTNlYWFiNTEnLCBNaW5pR2FtZVNkay5FQWRCYW5uZXJMb2NhdGlvbi5CT1RUT00pOyBcclxuXHJcbiAgICAgICAgLy8g56S65L6L77ya6YCa6L+H5Z2Q5qCH5oyH5a6a5L2N572u5pi+56S65qiq5bmF5bm/5ZGK44CCXHJcbiAgICAgICAgLy8g5pa55rOVMu+8muaMh+WumuWdkOagh1xyXG4gICAgICAgIC8vIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0Jhbm5lcignYWR1bml0LTRlN2VmNDY3ZTNlYWFiNTEnLCB7IHRvcDogMTAsIGxlZnQ6IDEwIH0pOyBcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOmakOiXj+W5v+WRiuaoquW5heeahOWHveaVsOOAglxyXG4gICAgICogXHJcbiAgICAgKiDor6Xlh73mlbDosIPnlKhNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2Vy5a6e5L6L55qE5pa55rOV77yM55So5LqO6ZqQ6JeP5bm/5ZGK5qiq5bmF44CCXHJcbiAgICAgKiDlvZPpnIDopoHmmoLml7blgZzmraLlsZXnpLrlub/lkYrmiJbnlKjmiLfkuLvliqjor7fmsYLpmpDol4/lub/lkYrml7bvvIzlj6/ku6XosIPnlKjmraTlh73mlbDjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOS4jeaOpeWPl+S7u+S9leWPguaVsO+8jOS5n+S4jei/lOWbnuS7u+S9leWAvOOAglxyXG4gICAgICog5a6D5Y2V57qv5Zyw6Kem5Y+R5bm/5ZGK5qiq5bmF55qE6ZqQ6JeP5pON5L2c77yM5YW35L2T5a6e546w5L6d6LWW5LqOQWR2ZXJ0TWFuYWdlcueahOWunueOsOOAglxyXG4gICAgICovXHJcbiAgICBvbkhpZGVCYW5uZXIoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5oaWRlQmFubmVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmmL7npLrmj5LlsY/lub/lkYrnmoTlh73mlbDjgIJcclxuICAgICAqIFxyXG4gICAgICog5q2k5Ye95pWw6LCD55SoTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlcuWunuS+i+eahOaWueazle+8jOS7peaYvuekuuS4gOS4quaMh+WumueahOaPkuWxj+W5v+WRiuOAglxyXG4gICAgICog5a6D5L2/55So5LqG56Gs57yW56CB55qE5bm/5ZGK5Y2V5YWD5qCH6K+G56ym77yM6L+Z5oSP5ZGz552A5a6D5LiT5Li654m55a6a55qE5bm/5ZGK5L2N6K6+6K6h44CCXHJcbiAgICAgKiDlnKjlrp7pmYXlupTnlKjkuK3vvIzlj6/og73pnIDopoHmoLnmja7lupTnlKjnmoTphY3nva7miJbnlKjmiLfnmoTnibnlrprmnaHku7bmnaXliqjmgIHpgInmi6nlub/lkYrljZXlhYPmoIfor4bnrKbjgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93SW50ZXJzdGl0aWFsKCkge1xyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2Uuc2hvd0ludGVyc3RpdGlhbCgnYWR1bml0LWVhZGQ2Nzg1MWQzMDUwYWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOiwg+eUqOW5v+WRiueuoeeQhuWZqOWKoOi9veW5tuWxleekuuiHquWumuS5ieW5v+WRiuOAglxyXG4gICAgICog5q2k5pa55rOV6aaW5YWI6YCa6L+H5bm/5ZGK566h55CG5Zmo55qE5a6e5L6L5Yqg6L295oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK5Y2V5YWD77yM54S25ZCO5bGV56S66L+Z5Liq6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiDliqDovb3lkozlsZXnpLrlub/lkYrmmK/lub/lkYrnrqHnkIbns7vnu5/kuK3nmoTluLjop4Hmk43kvZzvvIzov5nph4zpgJrov4fkuKTmraXliIbliKvlrozmiJDliqDovb3lkozlsZXnpLrnmoTov4fnqIvvvIxcclxuICAgICAqIOS7peehruS/neW5v+WRiuWcqOWxleekuuWJjeato+ehruS4lOWFheWIhuWcsOiiq+WKoOi9veOAglxyXG4gICAgICovXHJcbiAgICBvblNob3dDdXN0b20oKSB7XHJcbiAgICAgICAgLy8g5Yqg6L295oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK5Y2V5YWD44CCXHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5sb2FkQ3VzdG9tKEVXZWNoYXRBRC5DVU1TVE9NXzAxKTtcclxuICAgICAgICAvLyDlsZXnpLrlt7LliqDovb3nmoToh6rlrprkuYnlub/lkYrjgIJcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dDdXN0b20oRVdlY2hhdEFELkNVTVNUT01fMDEpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6ZqQ6JeP6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiBcclxuICAgICAqIOacrOWHveaVsOiwg+eUqE1pbmlHYW1lU2RrLkFkdmVydE1hbmFnZXIuaW5zdGFuY2UuaGlkZUN1c3RvbSgp5p2l6ZqQ6JeP6Ieq5a6a5LmJ5bm/5ZGK44CCXHJcbiAgICAgKiDov5nmmK/lr7nmjqXlub/lkYrnrqHnkIbns7vnu5/nmoTkuIDpg6jliIbvvIznlKjkuo7mjqfliLblub/lkYrnmoTmmL7npLrkuI7pmpDol4/jgIJcclxuICAgICAqIOWcqOmcgOimgemakOiXj+iHquWumuS5ieW5v+WRiueahOWcuuaZr+S4i++8jOiwg+eUqOatpOWHveaVsOWNs+WPr+WunueOsOebuOW6lOWKn+iDveOAglxyXG4gICAgICovXHJcbiAgICBvbkhpZGVDdXN0b20oKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5oaWRlQ3VzdG9tKEVXZWNoYXRBRC5DVU1TVE9NXzAxKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOinpuWPkeaYvuekuuinhumikeW5v+WRiueahOWHveaVsOOAglxyXG4gICAgICog6YCa6L+H6LCD55SoTWluaUdhbWVTZGsuQWR2ZXJ0TWFuYWdlci5pbnN0YW5jZS5zaG93VmlkZW/mlrnms5XvvIzmmL7npLrkuIDkuKrop4bpopHlub/lkYrvvIzlubbmoLnmja7nlKjmiLfop4LnnIvlub/lkYrnmoTmg4XlhrXmiafooYznm7jlupTnmoTpgLvovpHjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOmmluWFiOS8oOWFpeS4gOS4quW5v+WRiuWNleWFg0lE77yM55So5LqO5qCH6K+G6KaB5pi+56S655qE6KeG6aKR5bm/5ZGK44CC54S25ZCO5Lyg5YWl5LiA5Liq5Zue6LCD5Ye95pWw77yM6K+l5Zue6LCD5Ye95pWw5Zyo55So5oi36KeC55yL5bm/5ZGK5ZCO6KKr6LCD55So77yM5peg6K6655So5oi35piv5a6M5oiQ5LqG6KeC55yL44CB5ouS57ud5LqG6KeC55yL6L+Y5piv6KeC55yL6L+H56iL5Lit5Y+R55Sf5LqG6ZSZ6K+v44CCXHJcbiAgICAgKiDlm57osIPlh73mlbDmjqXmlLbkuKTkuKrlj4LmlbDvvJrkuIDkuKrmmK/nlKjmiLfop4LnnIvlub/lkYrnmoTnu5PmnpzvvIzlj6bkuIDkuKrmmK/nlKjmiLfop4LnnIvnmoTlub/lkYrmlbDph4/jgILmoLnmja7op4LnnIvnu5PmnpznmoTkuI3lkIzvvIzmmL7npLrkuI3lkIznmoTmj5DnpLrkv6Hmga/jgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93VmlkZW8oKSB7XHJcbiAgICAgICAgLy8g5bm/5ZGK5Y2V5YWDSUTvvIznlKjkuo7moIfor4bopoHmmL7npLrnmoTop4bpopHlub/lkYpcclxuICAgICAgICAvLyDlub/lkYrljZXlhYNJROeahOagt+S+i1xyXG4gICAgICAgIC8v5oqW6Z+z5b2i5aaCOiAxcmUzbmZxa215ODFtNG04Z2VcclxuICAgICAgICAvL+W+ruS/oeW9ouWmgjogYWR1bml0LWE3NzE4ZjZlMTk1ZTQyZmVcclxuICAgICAgICBNaW5pR2FtZVNkay5BZHZlcnRNYW5hZ2VyLmluc3RhbmNlLnNob3dWaWRlbygnMXJlM25mcWtteTgxbTRtOGdlJywgKHJlczogTWluaUdhbWVTZGsuRUFkVmlkZW9SZXN1bHQsIGNvdW50OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgLy8g6L6T5Ye655So5oi36KeC55yL55qE5bm/5ZGK5pWw6YePXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfnlKjmiLfnnIvnmoTop4bpopHlub/lkYrkuKrmlbDmmK86JywgY291bnQpO1xyXG5cclxuICAgICAgICAgICAgLy8g5qC55o2u55So5oi36KeC55yL5bm/5ZGK55qE57uT5p6c77yM5omn6KGM5LiN5ZCM55qE6YC76L6RXHJcbiAgICAgICAgICAgIHN3aXRjaCAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIE1pbmlHYW1lU2RrLkVBZFZpZGVvUmVzdWx0LkFDQ0VQVDpcclxuICAgICAgICAgICAgICAgICAgICAvLyDnlKjmiLflrozmiJDkuoblub/lkYrop4LnnIvvvIzmmL7npLrlpZblirHmj5DnpLpcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KCfnlKjmiLfnnIvlrozlub/lkYrvvIzlj6/ku6XlpZblirEnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgTWluaUdhbWVTZGsuRUFkVmlkZW9SZXN1bHQuUkVKRUNUOlxyXG4gICAgICAgICAgICAgICAgICAgIC8vIOeUqOaIt+aLkue7neS6huW5v+WRiuingueci++8jOaYvuekuuS4jeWlluWKseaPkOekulxyXG4gICAgICAgICAgICAgICAgICAgIE1pbmlHYW1lU2RrLkFQSS5zaG93VG9hc3QoJ+eUqOaIt+aLkue7neaOieW5v+WRiu+8jOS4jeWlluWKsScpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSBNaW5pR2FtZVNkay5FQWRWaWRlb1Jlc3VsdC5FUlJPUjpcclxuICAgICAgICAgICAgICAgICAgICAvLyDlub/lkYrmkq3mlL7lj5HnlJ/plJnor6/vvIzmmL7npLrplJnor6/mj5DnpLpcclxuICAgICAgICAgICAgICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hvd1RvYXN0KCfmkq3mlL7lub/lkYrlj5HnlJ/plJnor6/vvIzkuI3lpZblirEnKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5YW25LuW5oOF5Ya177yM5LiN5L2c5aSE55CGXHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW8leWvvOeUqOaIt+WIhuS6q+W6lOeUqOe7meaci+WPi+OAglxyXG4gICAgICogXHJcbiAgICAgKiDpgJrov4fosIPnlKhNaW5pR2FtZVNka+eahEFQSeWIhuS6q+WKn+iDve+8jOWQkeeUqOaIt+eahOaci+WPi+WciOWPkemAgemCgOivt++8jOmCgOivt+S7luS7rOS4gOi1t+eOqea4uOaIj+OAglxyXG4gICAgICog6L+Z5piv5LiA5Liq6YeN6KaB55qE5o6o5bm/5omL5q6177yM5Y+v5Lul5aKe5Yqg5bqU55So55qE5pud5YWJ5bqm5ZKM55So5oi36YeP44CCXHJcbiAgICAgKiBcclxuICAgICAqIEByZW1hcmtzXHJcbiAgICAgKiDmraTmlrnms5XkuK3osIPnlKjnmoRBUEnkvp3otZbkuo7nibnlrprnmoTlsI/muLjmiI/lubPlj7DvvIzlm6DmraTlnKjkuI3lkIznmoTlubPlj7DkuIrlj6/og73pnIDopoHkuI3lkIznmoTlrp7njrDjgIJcclxuICAgICAqL1xyXG4gICAgb25TaGFyZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuc2hhcmVBcHBUb0ZyaWVuZHMoJ+adpeeOqea4uOaIj+WQpycpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pi+56S65LiA5LiqdG9hc3Tmj5DnpLrjgIJcclxuICAgICAqIFxyXG4gICAgICog6YCa6L+H6LCD55SoTWluaUdhbWVTZGvnmoRBUEnmlrnms5XmnaXmmL7npLrkuIDkuKrnroDnn63nmoTmj5DnpLrkv6Hmga/jgIJ0b2FzdOaYr+S4gOenjei9u+mHj+e6p+eahOaPkOekuuaWueW8j++8jOeUqOS6juWcqOeVjOmdouS4iuefreaaguWcsOWxleekuuS4gOS6m+S/oeaBr++8jOS4jeW9seWTjeeUqOaIt+aTjeS9nOOAglxyXG4gICAgICog6L+Z6YeM5L2/55So5LqG5Zu65a6a55qE5o+Q56S65paH5pysICfov5nmmK/kuIDkuKp0b2FzdCfvvIzlnKjlrp7pmYXlupTnlKjkuK3vvIzlj6/ku6XmoLnmja7pnIDopoHliqjmgIHorr7nva7mj5DnpLrmlofmnKzjgIJcclxuICAgICAqL1xyXG4gICAgb25TaG93VG9hc3QoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dUb2FzdCgn6L+Z5piv5LiA5LiqdG9hc3QnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOinpuWPkeiuvuWkh+aMr+WKqOWKn+iDveOAglxyXG4gICAgICogXHJcbiAgICAgKiDor6Xmlrnms5XnlKjkuo7osIPnlKhNaW5pR2FtZVNka+aPkOS+m+eahEFQSe+8jOS7peWunueOsOiuvuWkh+eahOaMr+WKqOWKn+iDveOAguW9k+mcgOimgeaPkOmGkueUqOaIt+aIluaPkOS+m+inpuinieWPjemmiOaXtu+8jOWPr+S7peiwg+eUqOatpOaWueazleOAglxyXG4gICAgICog5L6L5aaC77yM5Zyo5ri45oiP5oiW5bqU55So5Lit77yM5b2T55So5oi35a6M5oiQ54m55a6a5pON5L2c5oiW5Y+R55Sf54m55a6a5LqL5Lu25pe277yM5Y+v5Lul6YCa6L+H5oyv5Yqo57uZ5LqI55So5oi35Y+N6aaI44CCXHJcbiAgICAgKiBcclxuICAgICAqIEByZW1hcmtzXHJcbiAgICAgKiDmraTmlrnms5Xml6Dlj4LmlbDvvIzkuZ/kuI3ov5Tlm57ku7vkvZXlgLzjgIJcclxuICAgICAqL1xyXG4gICAgb25WaXJicmF0ZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkudmlicmF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6YeN5paw5ZCv5Yqo5ri45oiP5a6e5L6L44CCXHJcbiAgICAgKiBcclxuICAgICAqIOatpOWHveaVsOiwg+eUqE1pbmlHYW1lU2Rr5Lit55qEQVBJ6YeN5paw5ZCv5Yqo5ri45oiP44CC6YeN5paw5ZCv5Yqo5pON5L2c5Y+v6IO95piv5Li65LqG5Yid5aeL5YyW5ri45oiP546v5aKD44CB6YeN572u5ri45oiP54q25oCB5oiW5aSE55CG5YW25LuW6ZyA6KaB6YeN5ZCv55qE5Zy65pmv44CCXHJcbiAgICAgKiDosIPnlKjmraTlh73mlbDlkI7vvIzmuLjmiI/lsIbkvJrph43mlrDlvIDlp4vvvIzlvZPliY3nmoTmuLjmiI/nirbmgIHlsIbkvJrooqvmuIXpmaTjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOWHveaVsOS4jeaOpeWPl+S7u+S9leWPguaVsOOAglxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyDml6Dov5Tlm57lgLzjgIJcclxuICAgICAqL1xyXG4gICAgb25SZWJvb3QoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnJlYm9vdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5b2T5YmN5Ye95pWw55So5LqO5Zyo6L+35L2g5ri45oiP5Lit5a6e546w6YCA5Ye65Yqf6IO944CCXHJcbiAgICAgKiDlroPosIPnlKjkuoZNaW5pR2FtZVNka+aPkOS+m+eahEFQSeaWueazleadpeinpuWPkemAgOWHuuaTjeS9nOOAglxyXG4gICAgICog6K+l5pa55rOV6YCa5bi45Zyo6ZyA6KaB57uT5p2f5b2T5YmN6L+35L2g5ri45oiP5oiW6L+U5Zue5Yiw5LiK5LiA57qn6I+c5Y2V5pe26KKr6LCD55So44CCXHJcbiAgICAgKi9cclxuICAgIG9uRXhpdCgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkuZXhpdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pi+56S65YiG5Lqr6I+c5Y2V44CCXHJcbiAgICAgKiBcclxuICAgICAqIOmAmui/h+iwg+eUqE1pbmlHYW1lU2Rr55qEQVBJ5pa55rOV77yM6Kem5Y+R5pi+56S65YiG5Lqr6I+c5Y2V55qE5pON5L2c44CC5q2k5Ye95pWw5peo5Zyo5o+Q5L6b5LiA5Liq57uf5LiA55qE5YWl5Y+j77yMXHJcbiAgICAgKiDku6Xkvr/lnKjpnIDopoHml7bovbvmnb7osIPnlKjliIbkuqvlip/og73vvIzogIzml6DpnIDnm7TmjqXkuI7lhbfkvZPnmoRTREvmjqXlj6PkuqTkupLjgIJcclxuICAgICAqIFxyXG4gICAgICogQHJlbWFya3NcclxuICAgICAqIOatpOaWueazleS4jeaOpeWPl+S7u+S9leWPguaVsO+8jOS5n+S4jei/lOWbnuS7u+S9leWAvOOAglxyXG4gICAgICovXHJcbiAgICBvblNob3dTaGFyZU1lbnUoKSB7XHJcbiAgICAgICAgTWluaUdhbWVTZGsuQVBJLnNob3dTaGFyZU1lbnUoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWvvOiIquWIsOaMh+WumueahOWwj+a4uOaIj+OAglxyXG4gICAgICogXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7op6blj5Hlr7zoiKrliLDkuIDkuKrnibnlrprnmoTlsI/muLjmiI/jgILov5npnIDopoHmj5Dkvpvnm67moIflsI/muLjmiI/nmoRJRO+8jFxyXG4gICAgICog5Lul5L6/57O757uf6IO95aSf5q2j56Gu5Zyw5bCG55So5oi36YeN5a6a5ZCR5Yiw55uu5qCH5bCP5ri45oiP44CCXHJcbiAgICAgKiBcclxuICAgICAqIOazqOaEj++8mui/memHjOeahCd4eHgn5piv5Y2g5L2N56ym77yM5a6e6ZmF5L2/55So5pe26ZyA6KaB5pu/5o2i5Li65YW35L2T55qE5bCP5ri45oiPSUTjgIJcclxuICAgICAqL1xyXG4gICAgb25OYXZpZ2F0ZSgpIHtcclxuICAgICAgICBNaW5pR2FtZVNkay5BUEkubmF2aWdhdGVUbygneHh4Jyk7IC8vIHh4eOabv+aNouS4uuS9oOeahOWwj+a4uOaIj2lkXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmv4DmtLvlrZfoioLot7PliqjlhaXlj6Pop4blm77jgIJcclxuICAgICAqIFxyXG4gICAgICog5q2k5pa55rOV55So5LqO5bCG5a2X6IqC6Lez5Yqo5YWl5Y+j6KeG5Zu+6K6+572u5Li65rS76LeD54q25oCB44CC5b2T6ZyA6KaB5Zyo55So5oi355WM6Z2i5Lit5pi+56S65a2X6IqC6Lez5Yqo55qE5YWl5Y+j5pe277yMXHJcbiAgICAgKiDlj6/ku6XosIPnlKjmraTmlrnms5XmnaXmv4DmtLvnm7jlupTnmoTop4blm77lhYPntKDvvIzkvb/lhbblr7nnlKjmiLflj6/op4HjgIJcclxuICAgICAqL1xyXG4gICAgb25CeXRlZGFuY2VFbnRyYW5jZVZpZXcoKSB7XHJcbiAgICAgICAgLy8gdGhpcy5lbnRyYW5jZVZpZXcuYWN0aXZlID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOivt+axgueZu+W9leS7o+eggVxyXG4gICAgICogXHJcbiAgICAgKiDmnKzlh73mlbDnlKjkuo7op6blj5HlsI/nqIvluo/nmoTnmbvlvZXmtYHnqIvvvIzojrflj5blvq7kv6HmiJblpLTmnaHnrYnnrKzkuInmlrnlubPlj7DnmoTnmbvlvZXku6PnoIHjgIJcclxuICAgICAqIOi/meS6m+S7o+eggeWPr+S7peeUqOS6juWQjue7reeahOeUqOaIt+i6q+S7vemqjOivgeWSjOaVsOaNruWQjOatpea1geeoi+OAglxyXG4gICAgICovXHJcbiAgICBvbkdldExvZ2luQ29kZSgpIHtcclxuICAgICAgICAvLyDosIPnlKhNaW5pR2FtZVNka+eahEFQSeeZu+W9leaWueazle+8jOS8oOWFpeS4gOS4quWbnuiwg+WHveaVsOWkhOeQhueZu+W9lee7k+aenFxyXG4gICAgICAgIE1pbmlHYW1lU2RrLkFQSS5sb2dpbigoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgLy8g5omT5Y2w5b6u5L+h5oiW5aS05p2h55qE55m75b2V5Luj56CBXHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXZWNoYXQgT3IgQnl0ZWRhbmNlIENvZGU6JywgY29kZSk7XHJcbiAgICAgICAgICAgIC8vIOaJk+WNsOWktOadoeeahOWMv+WQjeeZu+W9leS7o+eggVxyXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnQnl0ZWRhbmNlIEFub255bW91cyBDb2RlOicsIGFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICBpZihjb2RlKXtcclxuICAgICAgICAgICAgICAgIC8vIGNjLmZ4LkdhbWVUb29sLmdldFVzZXJJZChjb2RlLCBkYXRhID0+IHRoaXMuc2V0VXNlcklkKGRhdGEpKTsgXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBzZXRVc2VySWQoZGF0YSl7XHJcbiAgICAvLyAgICAgY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLnVzZXJJZCA9IGRhdGEuZGF0YS51c2VySWQ7XHJcbiAgICAvLyAgICAgTWluaUdhbWVTZGsuQVBJLmdldFVzZXJJbmZvKHRoaXMuc2V0VXNlckluZm8pO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIHNldFVzZXJJbmZvKGRhdGEpe1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwi6I635Y+W5Yiw55qE55So5oi35L+h5oGvXCIsZGF0YS51c2VySW5mbyk7XHJcbiAgICAvLyAgICAgdmFyIHVzZURhdGEgPSB7XHJcbiAgICAvLyAgICAgICAgIFwiZ2FtZUlkXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5nYW1lSWQsXHJcbiAgICAvLyAgICAgICAgIFwidXNlcklkXCI6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy51c2VySWQsXHJcbiAgICAvLyAgICAgICAgIFwibmlja05hbWVcIjpkYXRhLnVzZXJJbmZvLm5pY2tOYW1lLFxyXG4gICAgLy8gICAgICAgICBcInBpY1wiOiBkYXRhLnVzZXJJbmZvLmF2YXRhclVybFxyXG4gICAgICAgICAgIFxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICBjb25zb2xlLmxvZyhcIuWNs+WwhuS4iuS8oOeahOeUqOaIt+S/oeaBrzpcIixjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udXNlcklkLGRhdGEudXNlckluZm8ubmlja05hbWUsZGF0YS51c2VySW5mby5hdmF0YXJVcmwpO1xyXG4gICAgLy8gICAgIGNvbnNvbGUubG9nKFwiUG9zdOaVsOaNrjpcIix1c2VEYXRhKTtcclxuICAgIC8vICAgICBjYy5meC5HYW1lVG9vbC5zZXRVc2VySW5mbyh1c2VEYXRhLChyZXMpPT57XHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKFwi5LiK5Lyg5oiQ5YqfOlwiLHJlcyk7XHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJvlu7rlubbmmL7npLrmuLjmiI/lnIjmjInpkq5cclxuICAgICAqIFxyXG4gICAgICog5pys5Ye95pWw6YCa6L+H6LCD55SoTWluaUdhbWVTZGvnmoRHYW1lQ2x1YuWunuS+i+aWueazle+8jOWunueOsOa4uOaIj+S/seS5kOmDqOeahOWIm+W7uuWSjOaYvuekuuOAglxyXG4gICAgICog5a6D6aaW5YWI6YWN572u5L+x5LmQ6YOo55qE5Zu+5qCH57G75Z6L5ZKM5L2N572u5aSn5bCP77yM54S25ZCO5Yib5bu65L+x5LmQ6YOo77yM5pyA5ZCO5pi+56S65L+x5LmQ6YOo44CCXHJcbiAgICAgKiDov5nmoLflgZrmmK/kuLrkuoblnKjlsI/muLjmiI/lhoXliJvlu7rlubblsZXnpLrkuIDkuKrmuLjmiI/kv7HkuZDpg6jnmoTlm77moIfvvIzkvpvnjqnlrrbliqDlhaXmiJbkupLliqjjgIJcclxuICAgICAqL1xyXG4gICAgb25DcmVhdGVDbHViKCkge1xyXG4gICAgICAgIC8vIOmFjee9ruS/seS5kOmDqOWbvuagh+S4uue7v+iJsu+8jOiuvue9ruWbvuagh+eahOS9jee9ruS4uumhtumDqDIwMOWDj+e0oO+8jOW3puS+pzDlg4/ntKBcclxuICAgICAgICBNaW5pR2FtZVNkay5HYW1lQ2x1Yi5pbnN0YW5jZS5jcmVhdGUoXHJcbiAgICAgICAgICAgIE1pbmlHYW1lU2RrLkVHYW1lQ2x1Ykljb24uR1JFRU4sXHJcbiAgICAgICAgICAgIHsgdG9wOiAyMDAsIGxlZnQ6IDAgfSxcclxuICAgICAgICAgICAgeyB3aWR0aDogNTAsIGhlaWdodDogNTAgfSk7XHJcbiAgICAgICAgLy8g5pi+56S65ri45oiP5L+x5LmQ6YOo5Zu+5qCHXHJcbiAgICAgICAgTWluaUdhbWVTZGsuR2FtZUNsdWIuaW5zdGFuY2Uuc2hvdygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ (function() { @@ -10926,92 +9189,92 @@ cc._RF.pop(); cc._RF.push(module, 'ad8cbbzCohCR5uifssdRTf+', 'Freeze'); // Script/prop/Freeze.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var NumberToImage_1 = require("../NumberToImage"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Freeze = /** @class */ (function (_super) { - __extends(Freeze, _super); - function Freeze() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - _this.freeze = null; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Freeze.prototype.onLoad = function () { - }; - Freeze.prototype.start = function () { - }; - Freeze.prototype.init = function (time, type) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); - // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - }; - Freeze.prototype.reduce = function (number) { - var _this = this; - this.time -= number; - if (this.time <= 0) - this.time = 0; - NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); - // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - if (this.time <= 0) { - this.node.getChildByName("bingkuai").active = true; - var skeleton = this.node.getChildByName("bingkuai").getComponent(sp.Skeleton); - skeleton.setAnimation(1, "bingkuai", false); - this.node.getChildByName("icon").active = true; - this.node.getChildByName("time").active = false; - cc.tween(this.node.getChildByName("icon")) - .to(0.5, { opacity: 0 }) - .start(); - // this.node.getChildByName("icon").getComponent(cc.Sprite).setMaterial(0,this.freeze); - // this.node.children.forEach(element => { - // element.destroy(); - // }); - setTimeout(function () { - _this.node.parent.getComponent("Block").resetFreeze(); - _this.node.destroy(); - _this.node.removeFromParent(); - }, 600); - } - }; - __decorate([ - property(cc.Material) - ], Freeze.prototype, "freeze", void 0); - Freeze = __decorate([ - ccclass - ], Freeze); - return Freeze; -}(cc.Component)); -exports.default = Freeze; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var NumberToImage_1 = require("../NumberToImage"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Freeze = /** @class */ (function (_super) { + __extends(Freeze, _super); + function Freeze() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + _this.freeze = null; + return _this; + // update (dt) {} + } + // mapInfo: number[][] = []; + Freeze.prototype.onLoad = function () { + }; + Freeze.prototype.start = function () { + }; + Freeze.prototype.init = function (time, type) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); + // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + }; + Freeze.prototype.reduce = function (number) { + var _this = this; + this.time -= number; + if (this.time <= 0) + this.time = 0; + NumberToImage_1.default.numberToImageNodes(this.time, 40, 25, "ice_", this.node.getChildByName("time"), false); + // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + if (this.time <= 0) { + this.node.getChildByName("bingkuai").active = true; + var skeleton = this.node.getChildByName("bingkuai").getComponent(sp.Skeleton); + skeleton.setAnimation(1, "bingkuai", false); + this.node.getChildByName("icon").active = true; + this.node.getChildByName("time").active = false; + cc.tween(this.node.getChildByName("icon")) + .to(0.5, { opacity: 0 }) + .start(); + // this.node.getChildByName("icon").getComponent(cc.Sprite).setMaterial(0,this.freeze); + // this.node.children.forEach(element => { + // element.destroy(); + // }); + setTimeout(function () { + _this.node.parent.getComponent("Block").resetFreeze(); + _this.node.destroy(); + _this.node.removeFromParent(); + }, 600); + } + }; + __decorate([ + property(cc.Material) + ], Freeze.prototype, "freeze", void 0); + Freeze = __decorate([ + ccclass + ], Freeze); + return Freeze; +}(cc.Component)); +exports.default = Freeze; cc._RF.pop(); } @@ -11025,443 +9288,6 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxGcmVlemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHbEYsa0RBQTZDO0FBRXZDLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSzFDO0lBQW9DLDBCQUFZO0lBQWhEO1FBQUEscUVBc0RDO1FBcERHLFVBQUksR0FBVyxFQUFFLENBQUM7UUFHbEIsWUFBTSxHQUFnQixJQUFJLENBQUM7O1FBZ0QzQixpQkFBaUI7SUFDckIsQ0FBQztJQS9DRyw0QkFBNEI7SUFFNUIsdUJBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxzQkFBSyxHQUFMO0lBRUEsQ0FBQztJQUVELHFCQUFJLEdBQUosVUFBSyxJQUFJLEVBQUMsSUFBSTtRQUNWLElBQUcsSUFBSTtZQUFFLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDL0MsdUJBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hHLHlGQUF5RjtJQUU3RixDQUFDO0lBRUQsdUJBQU0sR0FBTixVQUFPLE1BQU07UUFBYixpQkF5QkM7UUF4QkcsSUFBSSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUM7UUFDcEIsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtRQUNoQyx1QkFBYSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEcseUZBQXlGO1FBQ3pGLElBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLEVBQUM7WUFDZCxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ25ELElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEYsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUNoRCxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2lCQUN6QyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUN2QixLQUFLLEVBQUUsQ0FBQztZQUVULHVGQUF1RjtZQUN2RiwwQ0FBMEM7WUFDMUMseUJBQXlCO1lBQ3pCLE1BQU07WUFDTixVQUFVLENBQUM7Z0JBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyRCxLQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNwQixLQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7SUFDTCxDQUFDO0lBN0NEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7MENBQ0s7SUFMVixNQUFNO1FBRDFCLE9BQU87T0FDYSxNQUFNLENBc0QxQjtJQUFELGFBQUM7Q0F0REQsQUFzREMsQ0F0RG1DLEVBQUUsQ0FBQyxTQUFTLEdBc0QvQztrQkF0RG9CLE1BQU0iLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZyZWV6ZSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICB0aW1lOiBudW1iZXIgPSA2MDtcclxuXHJcbiAgICBAcHJvcGVydHkoY2MuTWF0ZXJpYWwpXHJcbiAgICBmcmVlemU6IGNjLk1hdGVyaWFsID0gbnVsbDtcclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lLHR5cGUpe1xyXG4gICAgICAgIGlmKHRpbWUpIHRoaXMudGltZSA9IHRpbWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSw0MCwyNSxcImljZV9cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy50aW1lLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJlZHVjZShudW1iZXIpe1xyXG4gICAgICAgIHRoaXMudGltZSAtPSBudW1iZXI7XHJcbiAgICAgICAgaWYodGhpcy50aW1lIDw9IDApIHRoaXMudGltZSA9IDBcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsNDAsMjUsXCJpY2VfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIGlmKHRoaXMudGltZSA8PSAwKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYmluZ2t1YWlcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29uc3Qgc2tlbGV0b24gPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJiaW5na3VhaVwiKS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xyXG4gICAgICAgICAgICBza2VsZXRvbi5zZXRBbmltYXRpb24oMSxcImJpbmdrdWFpXCIsZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJpY29uXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikpXHJcbiAgICAgICAgICAgIC50bygwLjUsIHsgb3BhY2l0eTogMCB9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc2V0TWF0ZXJpYWwoMCx0aGlzLmZyZWV6ZSk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5jaGlsZHJlbi5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAvLyAgICAgZWxlbWVudC5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzZXRGcmVlemUoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgICAgICB9LCA2MDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Adhesive.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '5fc5bz1aV5PKIBJQh99jpm2', 'Adhesive'); -// Script/prop/Adhesive.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Adhesive = /** @class */ (function (_super) { - __extends(Adhesive, _super); - function Adhesive() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - _this.pos = { x: 0, y: 0 }; - return _this; - } - Adhesive.prototype.onLoad = function () { - this.pos.x = this.pos.y = 0; - this.target = null; - }; - Adhesive.prototype.start = function () { - }; - Adhesive.prototype.init = function (node) { - this.pos.x = node.x - this.node.x; - this.pos.y = node.y - this.node.y; - this.target = node; - }; - Adhesive.prototype.remove = function () { - var _this = this; - this.target = null; - for (var j = 0; j < this.node.children.length; j++) { - if (this.node.children[j].active == true) { - this.node.children[j].getComponent(sp.Skeleton).setAnimation(0, "animation", false); - } - } - setTimeout(function () { - _this.node.active = false; - }, 2000); - }; - Adhesive.prototype.update = function (dt) { - if (this.target != null) { - this.node.x = this.target.x - this.pos.x; - this.node.y = this.target.y - this.pos.y; - } - }; - Adhesive = __decorate([ - ccclass - ], Adhesive); - return Adhesive; -}(cc.Component)); -exports.default = Adhesive; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxBZGhlc2l2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUk1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVDQztRQXJDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFNBQUcsR0FBUSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDOztJQW9DNUIsQ0FBQztJQWpDRyx5QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx3QkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELHVCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx5QkFBTSxHQUFOO1FBQUEsaUJBVUM7UUFURyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixLQUFJLElBQUksQ0FBQyxHQUFFLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQzNDLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBQztnQkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQzthQUNyRjtTQUNKO1FBQ0QsVUFBVSxDQUFDO1lBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFHRCx5QkFBTSxHQUFOLFVBQVEsRUFBRTtRQUNOLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBdENnQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBdUM1QjtJQUFELGVBQUM7Q0F2Q0QsQUF1Q0MsQ0F2Q3FDLEVBQUUsQ0FBQyxTQUFTLEdBdUNqRDtrQkF2Q29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkaGVzaXZlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcG9zOiBhbnkgPSB7eDogMCwgeTogMH07XHJcbiAgICB0YXJnZXQ6IGFueTtcclxuXHJcbiAgICBvbkxvYWQgKCkgeyBcclxuICAgICAgICB0aGlzLnBvcy54ID0gdGhpcy5wb3MueSA9IDA7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdChub2RlKXtcclxuICAgICAgICB0aGlzLnBvcy54ID0gbm9kZS54IC0gdGhpcy5ub2RlLng7XHJcbiAgICAgICAgdGhpcy5wb3MueSA9IG5vZGUueSAtIHRoaXMubm9kZS55O1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmUoKXtcclxuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XHJcbiAgICAgICAgZm9yKGxldCBqID0wOyBqPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGorKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltqXS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5bal0uZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMCxcImFuaW1hdGlvblwiLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0sIDIwMDApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcbiAgICAgICAgaWYodGhpcy50YXJnZXQgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS54ID0gdGhpcy50YXJnZXQueCAtIHRoaXMucG9zLng7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS55ID0gdGhpcy50YXJnZXQueSAtIHRoaXMucG9zLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Star.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'd773dbWW6tAz6F+Z0L3IXUx', 'Star'); -// Script/prop/Star.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("../Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Star = /** @class */ (function (_super) { - __extends(Star, _super); - function Star() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - // mapInfo: number[][] = []; - _this.star_SpriteFrame = null; - return _this; - // update (dt) {} - } - Star.prototype.onLoad = function () { - }; - Star.prototype.start = function () { - }; - Star.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - this.schedule(this.updateTime, 1); - }; - Star.prototype.updateTime = function () { - this.time--; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - if (this.time <= 0) { - this.unschedule(this.updateTime); - this.node.destroy(); - Map_1.default._instance.failLevel(); - // this.node.destroy(); - } - }; - __decorate([ - property(cc.SpriteAtlas) - ], Star.prototype, "star_SpriteFrame", void 0); - Star = __decorate([ - ccclass - ], Star); - return Star; -}(cc.Component)); -exports.default = Star; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxTdGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUUzQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQW1DQztRQWpDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBRWxCLDRCQUE0QjtRQUU1QixzQkFBZ0IsR0FBbUIsSUFBSSxDQUFDOztRQTRCeEMsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQkcscUJBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxvQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELG1CQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBRyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBMUJEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7a0RBQ2U7SUFOdkIsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQW1DeEI7SUFBRCxXQUFDO0NBbkNELEFBbUNDLENBbkNpQyxFQUFFLENBQUMsU0FBUyxHQW1DN0M7a0JBbkNvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGFyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG5cclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIHN0YXJfU3ByaXRlRnJhbWU6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgIH0gXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQodGltZSl7XHJcbiAgICAgICAgaWYodGltZSkgdGhpcy50aW1lID0gdGltZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHVwZGF0ZVRpbWUoKXtcclxuICAgICAgICB0aGlzLnRpbWUgLS07XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIGlmKHRoaXMudGltZSA8PSAwKXtcclxuICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMudXBkYXRlVGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_platform_util.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '35875T0lsRL3rzhNkUdX4/G', 'lq_platform_util'); -// Script/lq_base/util/lq_platform_util.ts - -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQPlatformUtil = void 0; -var lq_const_1 = require("../data/lq_const"); -var LQPlatformUtil = /** @class */ (function () { - function LQPlatformUtil() { - } - LQPlatformUtil.init = function () { - if (typeof qq !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.qq; - } - else if (typeof swan !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.baidu; - } - else if (typeof tt !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.tt; - var info = tt.getSystemInfoSync(); - switch (info.appName) { - case 'Toutiao': - this.byte_dance_type = lq_const_1.LQByteDanceType.tt; - break; - case 'news_article_lite': - this.byte_dance_type = lq_const_1.LQByteDanceType.tt_lite; - break; - case 'Douyin': - this.byte_dance_type = lq_const_1.LQByteDanceType.douyin; - break; - case 'douyin_lite': - this.byte_dance_type = lq_const_1.LQByteDanceType.douyin_lite; - break; - case 'PPX': - this.byte_dance_type = lq_const_1.LQByteDanceType.ppx; - break; - case 'devtools': - this.byte_dance_type = lq_const_1.LQByteDanceType.devtools; - break; - } - } - else if (typeof qg !== 'undefined') { - if (!!qg.getBattle) { - this.platform_type = lq_const_1.LQPlatformType.oppo; - } - else { - this.platform_type = lq_const_1.LQPlatformType.vivo; - } - } - else if (typeof wx !== 'undefined') { - this.platform_type = lq_const_1.LQPlatformType.wx; - } - else if (typeof jsb !== 'undefined') { - if (cc.sys.os === cc.sys.OS_ANDROID) { - this.platform_type = lq_const_1.LQPlatformType.android; - } - else if (cc.sys.os === cc.sys.OS_IOS) { - this.platform_type = lq_const_1.LQPlatformType.ios; - } - else { - this.platform_type = lq_const_1.LQPlatformType.unknown; - } - } - else if (cc.sys.isBrowser) { - this.platform_type = lq_const_1.LQPlatformType.browser; - } - }; - LQPlatformUtil.get_platform = function () { - return this.platform_type; - }; - LQPlatformUtil.get_byte_dance = function () { - return this.byte_dance_type; - }; - LQPlatformUtil.is_wx = function () { - return this.platform_type === lq_const_1.LQPlatformType.wx; - }; - LQPlatformUtil.is_tt = function () { - return this.platform_type === lq_const_1.LQPlatformType.tt; - }; - LQPlatformUtil.is_oppo = function () { - return this.platform_type === lq_const_1.LQPlatformType.oppo; - }; - LQPlatformUtil.is_vivo = function () { - return this.platform_type === lq_const_1.LQPlatformType.vivo; - }; - LQPlatformUtil.is_ov = function () { - return this.platform_type === lq_const_1.LQPlatformType.oppo || this.platform_type === lq_const_1.LQPlatformType.vivo; - }; - LQPlatformUtil.is_browser = function () { - return this.platform_type === lq_const_1.LQPlatformType.browser; - }; - LQPlatformUtil.is_android = function () { - return this.platform_type === lq_const_1.LQPlatformType.android; - }; - LQPlatformUtil.is_ios = function () { - return this.platform_type === lq_const_1.LQPlatformType.ios; - }; - LQPlatformUtil.is_native = function () { - return this.platform_type === lq_const_1.LQPlatformType.android || this.platform_type === lq_const_1.LQPlatformType.ios; - }; - LQPlatformUtil.is_qq = function () { - return this.platform_type === lq_const_1.LQPlatformType.qq; - }; - LQPlatformUtil.is_baidu = function () { - return this.platform_type === lq_const_1.LQPlatformType.baidu; - }; - LQPlatformUtil.is_kwaigame = function () { - return this.platform_type === lq_const_1.LQPlatformType.kwaigame; - }; - return LQPlatformUtil; -}()); -exports.LQPlatformUtil = LQPlatformUtil; -LQPlatformUtil.init(); -if (LQPlatformUtil.is_tt()) { - // console.log('---------当前平台:' + LQPlatformUtil.get_byte_dance()); -} -else { - // console.log('---------当前平台:' + LQPlatformUtil.get_platform()); -} - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wbGF0Zm9ybV91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRTtBQUVqRTtJQUFBO0lBNEdBLENBQUM7SUF4R2lCLG1CQUFJLEdBQWxCO1FBQ0ksSUFBSSxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyx5QkFBYyxDQUFDLEVBQUUsQ0FBQztTQUMxQzthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcseUJBQWMsQ0FBQyxLQUFLLENBQUM7U0FDN0M7YUFBTSxJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRTtZQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLHlCQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsS0FBSyxTQUFTO29CQUNWLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLE1BQU07Z0JBQ1YsS0FBSyxtQkFBbUI7b0JBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxPQUFPLENBQUM7b0JBQy9DLE1BQU07Z0JBQ1YsS0FBSyxRQUFRO29CQUNULElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxNQUFNLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1YsS0FBSyxhQUFhO29CQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxXQUFXLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1YsS0FBSyxLQUFLO29CQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxHQUFHLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1YsS0FBSyxV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dUJBQVEsR0FBdEI7UUFDSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUsseUJBQWMsQ0FBQyxLQUFLLENBQUM7SUFDdkQsQ0FBQztJQUVhLDBCQUFXLEdBQXpCO1FBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsUUFBUSxDQUFDO0lBQzFELENBQUM7SUFDTCxxQkFBQztBQUFELENBNUdBLEFBNEdDLElBQUE7QUE1R1ksd0NBQWM7QUE4RzNCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0QixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUN4QixtRUFBbUU7Q0FDdEU7S0FBTTtJQUNILGlFQUFpRTtDQUNwRSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TFFCeXRlRGFuY2VUeXBlLCBMUVBsYXRmb3JtVHlwZX0gZnJvbSBcIi4uL2RhdGEvbHFfY29uc3RcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBsYXRmb3JtVXRpbCB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBwbGF0Zm9ybV90eXBlOiBMUVBsYXRmb3JtVHlwZTtcclxuICAgIHByaXZhdGUgc3RhdGljIGJ5dGVfZGFuY2VfdHlwZTogTFFCeXRlRGFuY2VUeXBlO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW5pdCgpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHFxICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5xcTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzd2FuICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0dCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0dC5nZXRTeXN0ZW1JbmZvU3luYygpO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGluZm8uYXBwTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnVG91dGlhbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICduZXdzX2FydGljbGVfbGl0ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHRfbGl0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvdXlpbic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZG91eWluO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZG91eWluX2xpdGUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnl0ZV9kYW5jZV90eXBlID0gTFFCeXRlRGFuY2VUeXBlLmRvdXlpbl9saXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnUFBYJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ5dGVfZGFuY2VfdHlwZSA9IExRQnl0ZURhbmNlVHlwZS5wcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkZXZ0b29scyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZGV2dG9vbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBxZyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgaWYgKCEhcWcuZ2V0QmF0dGxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5vcHBvO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS53eDtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBqc2IgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGlmIChjYy5zeXMub3MgPT09IGNjLnN5cy5PU19BTkRST0lEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNjLnN5cy5vcyA9PT0gY2Muc3lzLk9TX0lPUykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudW5rbm93bjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2Muc3lzLmlzQnJvd3Nlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9wbGF0Zm9ybSgpOiBMUVBsYXRmb3JtVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ieXRlX2RhbmNlKCk6IExRQnl0ZURhbmNlVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZV9kYW5jZV90eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfd3goKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUud3g7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc190dCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS50dDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX29wcG8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUub3BwbztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX3Zpdm8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX292KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLm9wcG8gfHwgdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS52aXZvO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYnJvd3NlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYW5kcm9pZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfaW9zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmlvcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX25hdGl2ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkIHx8IHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfcXEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUucXE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc19iYWlkdSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX2t3YWlnYW1lKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmt3YWlnYW1lO1xyXG4gICAgfVxyXG59XHJcblxyXG5MUVBsYXRmb3JtVXRpbC5pbml0KCk7XHJcbmlmIChMUVBsYXRmb3JtVXRpbC5pc190dCgpKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnLS0tLS0tLS0t5b2T5YmN5bmz5Y+wOicgKyBMUVBsYXRmb3JtVXRpbC5nZXRfYnl0ZV9kYW5jZSgpKTtcclxufSBlbHNlIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCctLS0tLS0tLS3lvZPliY3lubPlj7A6JyArIExRUGxhdGZvcm1VdGlsLmdldF9wbGF0Zm9ybSgpKTtcclxufVxyXG4iXX0= -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/prop/Key.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '92465qnUTJDw5STq1t7oelo', 'Key'); -// Script/prop/Key.ts - -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var Map_1 = require("../Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var Key = /** @class */ (function (_super) { - __extends(Key, _super); - function Key() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this.time = 60; - return _this; - // update (dt) {} - } - // mapInfo: number[][] = []; - Key.prototype.onLoad = function () { - }; - Key.prototype.start = function () { - }; - Key.prototype.init = function (time) { - if (time) - this.time = time; - this.node.getChildByName("time").active = true; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - this.schedule(this.updateTime, 1); - }; - Key.prototype.updateTime = function () { - this.time--; - this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); - if (this.time <= 0) { - this.unschedule(this.updateTime); - this.node.destroy(); - Map_1.default._instance.failLevel(); - // this.node.destroy(); - } - }; - Key = __decorate([ - ccclass - ], Key); - return Key; -}(cc.Component)); -exports.default = Key; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxLZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsOEJBQWlDO0FBRTNCLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSzFDO0lBQWlDLHVCQUFZO0lBQTdDO1FBQUEscUVBaUNDO1FBL0JHLFVBQUksR0FBVyxFQUFFLENBQUM7O1FBOEJsQixpQkFBaUI7SUFDckIsQ0FBQztJQTdCRyw0QkFBNEI7SUFFNUIsb0JBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxtQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELGtCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBRyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0Qsd0JBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBOUJnQixHQUFHO1FBRHZCLE9BQU87T0FDYSxHQUFHLENBaUN2QjtJQUFELFVBQUM7Q0FqQ0QsQUFpQ0MsQ0FqQ2dDLEVBQUUsQ0FBQyxTQUFTLEdBaUM1QztrQkFqQ29CLEdBQUciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEtleSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICB0aW1lOiBudW1iZXIgPSA2MDtcclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHRpbWUpe1xyXG4gICAgICAgIGlmKHRpbWUpIHRoaXMudGltZSA9IHRpbWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnRpbWUudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMudXBkYXRlVGltZSwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICB1cGRhdGVUaW1lKCl7XHJcbiAgICAgICAgdGhpcy50aW1lIC0tO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnRpbWUudG9TdHJpbmcoKTtcclxuICAgICAgICBpZih0aGlzLnRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuZmFpbExldmVsKCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -12116,7 +9942,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_game_util.js'; + var __filename = 'preview-scripts/assets/Script/Sdk/MiniGameSdk.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -12124,149 +9950,1158 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '63c53CB9dhL/phFOPtTeuF7', 'lq_game_util'); -// Script/lq_base/util/lq_game_util.ts +cc._RF.push(module, 'c1af9nd7gNA95YJ04h9DdNX', 'MiniGameSdk'); +// Script/Sdk/MiniGameSdk.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQGameUtil = void 0; -var director = cc.director; -var tween = cc.tween; -var visibleRect = cc.visibleRect; -var find = cc.find; -var LQGameUtil = /** @class */ (function () { - function LQGameUtil() { - } - LQGameUtil.get_image = function (url, callback, cache) { - if (cache === void 0) { cache = true; } - if (!url || url === '') { - callback(false, undefined); - return; - } - if (this.image_cache[url]) { - callback(true, this.image_cache[url]); - return; - } - // cc.loader.load( - // {url: url, type: 'png'}, - // (err: string, texture: Texture2D | undefined) => { - // if (err) { - // // console.error('err:' + err); - // callback(false, undefined); - // return; - // } - // const frame = new SpriteFrame(texture); - // callback(true, frame); - // if (cache) { - // this.image_cache[url] = frame; - // } - // }); - }; - LQGameUtil.canvas_policy = function (c, width, height) { - // @ts-ignore - var ratio = visibleRect.height / visibleRect.width; - if (ratio > height / width) { - c.fitHeight = false; - c.fitWidth = true; - } - else { - c.fitHeight = true; - c.fitWidth = false; - } - return c.fitHeight; - }; - LQGameUtil.recursion_node_property = function (node, p) { - if (node.parent) { - // @ts-ignore - p.value *= node.parent[p.key]; - this.recursion_node_property(node.parent, p); - } - }; - /** - * - * @param path - * eg.'Canvas>node_main>btn_start' - */ - LQGameUtil.find_node = function (path) { - if (!path || path.length <= 0) { - console.warn('路径不正确'); - return undefined; - } - var arr = path.split('/'); - var root = find(arr[0]); - if (!root) { - console.warn('没找到节点:' + arr[0]); - return undefined; - } - var node = root; - for (var i = 1; i < arr.length; i++) { - var temp = node.getChildByName(arr[i]); - if (!temp) { - console.warn('没找到节点:' + arr[i]); - return undefined; - } - node = temp; - } - return node; - }; - LQGameUtil.wait = function (time) { - return new Promise(function (resolve) { - tween(director.getScene()).delay(time).call(function () { - resolve(); - }).start(); - }); - }; - LQGameUtil.set_clip = function (clip, off, flip_x, flip_y) { - var s = function (arr) { - for (var i = 0; i < arr.length; i++) { - if (i % 2 === 0) { - if (flip_x) { - arr[i] = -arr[i]; - } - arr[i] += off.x; - } - else { - if (flip_y) { - arr[i] = -arr[i]; - } - arr[i] += off.y; - } - } - }; - var pos_arr = clip.curveData.props.position; - for (var i = 0; i < pos_arr.length; i++) { - var motionPath = pos_arr[i].motionPath; - var value = pos_arr[i].value; - if (motionPath) { - for (var i_1 = 0; i_1 < motionPath.length; i_1++) { - s(motionPath[i_1]); - } - } - s(value); - } - }; - LQGameUtil.scroll_layout = function (layout, speed) { - if (speed === void 0) { speed = 50; } - layout.updateLayout(); - var len = layout.type === cc.Layout.Type.HORIZONTAL ? layout.node.width : layout.node.height; - var time = len / speed; - if (layout.type === cc.Layout.Type.HORIZONTAL) { - var offset_1 = layout.node.anchorX === 1 ? layout.node.width * 0.5 : -layout.node.width * 0.5; - layout.node.runAction(cc.repeatForever(cc.sequence(cc.moveBy(time, cc.v2(offset_1, 0)), cc.callFunc(function () { - layout.node.x -= offset_1; - })))); - } - else if (layout.type === cc.Layout.Type.VERTICAL || layout.type === cc.Layout.Type.GRID) { - var offset_2 = layout.node.anchorY === 1 ? layout.node.height * 0.5 : -layout.node.height * 0.5; - layout.node.runAction(cc.repeatForever(cc.sequence(cc.moveBy(time, cc.v2(0, offset_2)), cc.callFunc(function () { - layout.node.y -= offset_2; - })))); - } - }; - LQGameUtil.image_cache = {}; - return LQGameUtil; -}()); -exports.LQGameUtil = LQGameUtil; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MiniGameSdk = void 0; +/** + * 小游戏平台SDK工具封装,目前只支持微信和抖音平台 + */ +var MiniGameSdk; +(function (MiniGameSdk) { + function isWechat() { + //@ts-ignore + return window.wx !== null && window.wx !== undefined; + } + MiniGameSdk.isWechat = isWechat; + function isBytedance() { + //@ts-ignore + return window.tt !== null && window.tt !== undefined; + } + MiniGameSdk.isBytedance = isBytedance; + function getSysWinSize() { + var sys; + if (isWechat()) { + // @ts-ignore + sys = wx.getSystemInfoSync(); + } + else if (isBytedance()) { + // @ts-ignore + sys = tt.getSystemInfoSync(); + } + var size = { width: 0, height: 0 }; + if (sys) { + size.width = sys.windowWidth; + size.height = sys.windowHeight; + } + return size; + } + /** + * 插屏广告。微信抖音都支持! + */ + var ADInterstitial = /** @class */ (function () { + function ADInterstitial(adUid) { + this._adUid = adUid; + } + Object.defineProperty(ADInterstitial.prototype, "aduid", { + get: function () { + return this._adUid; + }, + enumerable: false, + configurable: true + }); + ADInterstitial.prototype.show = function () { + var _this = this; + var _a, _b; + // @ts-ignore + if (isWechat() && !wx.createInterstitialAd) { + console.warn('wechat unsupport interstitial AD!'); + this._interstitial = null; + return; + } + // @ts-ignore + if (isBytedance() && !tt.createInterstitialAd) { + console.warn('bytedance unsupport interstitial AD!'); + this._interstitial = null; + return; + } + if (this._interstitial) { + this._interstitial.load(); + } + else { + if (isWechat()) { + // @ts-ignore + this._interstitial = wx.createInterstitialAd({ adUnitId: this._adUid }); + } + else if (isBytedance()) { + // @ts-ignore + this._interstitial = tt.createInterstitialAd({ adUnitId: this._adUid }); + } + else { + this._interstitial = null; + } + (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.onLoad(function () { + console.log('load interstitial ad success'); + _this._interstitial.show().catch(function (err) { + console.log('catch interstitial ad error:', err); + }); + }); + (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.onError(function (err) { + console.log('interstitial ad on error:', err); + }); + } + }; + ADInterstitial.prototype.destory = function () { + var _a; + (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destroy(); + }; + return ADInterstitial; + }()); + var ADBanner = /** @class */ (function () { + /** + * 抖音和微信都支持 + * 横幅广告。预估宽度默认为300,预估高度为140。如果你不确定就按默认值来。 + * @param adUid 广告UID,后端配置 + * @param isTop 是否在屏幕顶部展示。内部会自动居中计算位置。 + * @param bannerWidth 横幅广告的预估宽度。默认300 + * @param autoShow 广告加载完成后是否立刻显示,默认为不显示 + */ + function ADBanner(adUid, param, bannerWidth, autoShow) { + if (bannerWidth === void 0) { bannerWidth = 300; } + if (autoShow === void 0) { autoShow = false; } + this._adUid = adUid; + this.create(autoShow, bannerWidth, param); // 默认300比较合适 + } + Object.defineProperty(ADBanner.prototype, "aduid", { + get: function () { + return this._adUid; + }, + enumerable: false, + configurable: true + }); + ADBanner.prototype.create = function (autoShow, bannerWidth, param) { + var _this = this; + var _a, _b; + if (!isWechat() && !isBytedance()) { + this._banner = null; + return; + } + this.destroy(); + var winSize = getSysWinSize(); + var height = bannerWidth * 0.4; + var top = 0, left = 0; + if (typeof param === "boolean") { + left = (winSize.width - bannerWidth) / 2; + top = param ? 5 : (winSize.height - height); + } + else { + left = param.left; + top = param.top; + } + var params = { + adUnitId: this._adUid, + adIntervals: 30, + style: { left: left, top: top, width: bannerWidth } + }; + if (isWechat()) { + // @ts-ignore + this._banner = wx.createBannerAd(params); + } + else if (isBytedance()) { + // @ts-ignore + this._banner = tt.createBannerAd(params); + } + else { + this._banner = null; + } + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.onError(function (err) { + console.log('ad banner error:', err); + }); + (_b = this._banner) === null || _b === void 0 ? void 0 : _b.onLoad(function () { + autoShow && _this._banner.show(); + }); + }; + ADBanner.prototype.show = function () { + var _a; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.show(); + }; + ADBanner.prototype.hide = function () { + var _a; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); + }; + ADBanner.prototype.destroy = function () { + var _a; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); + }; + return ADBanner; + }()); + var ADCustom = /** @class */ (function () { + /** + * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持! + * @param adUid 广告UID,后端配置 + * @param top 从左上角开始,距离屏幕顶部的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 + * @param left 从左上角开始,距离屏幕最左边的距离。注意:这个数据为设备屏幕宽度width。如果需要获取屏幕的像素,需要乘以设备像素比Pixel-Ratio,例如iPhone 13 Pro的Pixel-Ratio为3,像素为Width*3。 + * @param scale 原生模板广告的尺寸,默认为1,即100%。此值在微信服务后端广告中获得,默认为100%,目前有100%,90%,80%三种,一般情况不用修改。若有修改,记得传入值,例如90%就传入0.9。 + */ + function ADCustom(adUid, top, left, scale) { + if (top === void 0) { top = 0; } + if (left === void 0) { left = 0; } + if (scale === void 0) { scale = 1.0; } + this._adUid = adUid; + this.createCustomAd(top, left, scale); + } + Object.defineProperty(ADCustom.prototype, "aduid", { + get: function () { + return this._adUid; + }, + enumerable: false, + configurable: true + }); + ADCustom.prototype.createCustomAd = function (top, left, scale) { + var _a; + if (!isWechat()) { // only wechat support custom ad + this._adCustom = null; + console.log('Only wechat support Custom Ad'); + return; + } + this.destroy(); + // 原生模板5个应用宽度为375,若设置了缩放比例,则宽度也需要设置 + // let width = 375 * this._scale; + // let newLeft = (sys.windowWidth - width) / 2; + // let newTop = sys.windowHeight / 2; // 120是预估高度 + // @ts-ignore + this._adCustom = wx.createCustomAd({ + adUnitId: this._adUid, + //@ts-ignore + style: { left: left, top: top, fixed: true } + }); + (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.onError(function (err) { + console.log('ad custom error:', err); + }); + }; + ADCustom.prototype.show = function () { + var _a; + (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.show(); + }; + ADCustom.prototype.hide = function () { + var _a; + (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.hide(); + }; + ADCustom.prototype.destroy = function () { + var _a; + (_a = this._adCustom) === null || _a === void 0 ? void 0 : _a.destroy(); + }; + return ADCustom; + }()); + /** + * 视频广告用户点击行为结果 + */ + var EAdVideoResult; + (function (EAdVideoResult) { + /** + * 用户看完了广告,游戏可发放奖励。 + */ + EAdVideoResult[EAdVideoResult["ACCEPT"] = 0] = "ACCEPT"; + /** + * 用户中途关闭了广告,即未看完状态。不可发放奖励。 + */ + EAdVideoResult[EAdVideoResult["REJECT"] = 1] = "REJECT"; + /** + * 广告组件内部发生了错误。不可发放奖励。 + */ + EAdVideoResult[EAdVideoResult["ERROR"] = 2] = "ERROR"; + })(EAdVideoResult = MiniGameSdk.EAdVideoResult || (MiniGameSdk.EAdVideoResult = {})); + var ADVideo = /** @class */ (function () { + function ADVideo(adUid) { + this._adVideo = null; + this._adUid = adUid; + } + Object.defineProperty(ADVideo.prototype, "aduid", { + get: function () { + return this._adUid; + }, + enumerable: false, + configurable: true + }); + /** + * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount + * @param onResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 + * @param target onResult的拥有者 + * @param maxVideoCount 可以连续看最大视频个数,可最大化商业效率。默认为3个。 + * @returns + */ + ADVideo.prototype.show = function (onResult, target, maxVideoCount) { + var _this = this; + var _a, _b, _c, _d, _e; + if (maxVideoCount === void 0) { maxVideoCount = 3; } + var callback = function (state, count) { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, state, count); + }; + if (!isWechat() && !isBytedance()) { + callback(EAdVideoResult.ACCEPT, 1); + this._adVideo = null; + return; + } + var onAdVideoClosed = function (res) { + var _a; + (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); + if (isWechat()) { + if (res && res.isEnded || res === undefined) { + callback(EAdVideoResult.ACCEPT, 1); + } + else { + callback(EAdVideoResult.REJECT, 0); + } + } + else if (isBytedance()) { + var resConverted = res; + if (resConverted && resConverted.count > 0) { + callback(EAdVideoResult.ACCEPT, resConverted.count); + } + else { + callback(EAdVideoResult.REJECT, 0); + } + } + }; + (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.offClose(onAdVideoClosed); + if (isWechat()) { + // @ts-ignore + this._adVideo = wx.createRewardedVideoAd({ + adUnitId: this._adUid + }); + } + else if (isBytedance()) { + // @ts-ignore + this._adVideo = tt.createRewardedVideoAd({ + adUnitId: this._adUid, + multiton: true, + multitonRewardMsg: ['多1次奖励', '再多一次奖励', '再多一次奖励'], + multitonRewardTimes: maxVideoCount, + }); + } + else { + this._adVideo = null; + } + (_b = this._adVideo) === null || _b === void 0 ? void 0 : _b.onLoad(function () { + console.log('Ad load success'); + }); + (_c = this._adVideo) === null || _c === void 0 ? void 0 : _c.onError(function (err) { + console.log('Ad video error:', err); + callback(EAdVideoResult.ERROR, 0); + }); + (_d = this._adVideo) === null || _d === void 0 ? void 0 : _d.onClose(onAdVideoClosed); + (_e = this._adVideo) === null || _e === void 0 ? void 0 : _e.show().catch(function () { + var _a; + (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.load().then(function () { var _a; return (_a = _this._adVideo) === null || _a === void 0 ? void 0 : _a.show(); }).catch(function (err) { + console.log('Catch video ad error:', err); + callback(EAdVideoResult.ERROR, 0); + }); + }); + }; + ADVideo.prototype.destory = function () { + var _a; + (_a = this._adVideo) === null || _a === void 0 ? void 0 : _a.destory(); + }; + return ADVideo; + }()); + var EAdBannerLocation; + (function (EAdBannerLocation) { + /** + * 屏幕顶部 + */ + EAdBannerLocation[EAdBannerLocation["TOP"] = 0] = "TOP"; + /** + * 屏幕底部 + */ + EAdBannerLocation[EAdBannerLocation["BOTTOM"] = 1] = "BOTTOM"; + })(EAdBannerLocation = MiniGameSdk.EAdBannerLocation || (MiniGameSdk.EAdBannerLocation = {})); + var AdvertManager = /** @class */ (function () { + function AdvertManager() { + this._customs = {}; + } + Object.defineProperty(AdvertManager, "instance", { + get: function () { + if (!AdvertManager._instance) { + AdvertManager._instance = new AdvertManager(); + } + return AdvertManager._instance; + }, + enumerable: false, + configurable: true + }); + /** + * 预加载横幅广告,不会显示。只有你在调用showBanner时才会显示。 + * 可重复调用,但是会销毁上一次的实例。一般情况,全局有一个就行了,太多占用内存,而且没必要。 + * @param adUid 广告UID + * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 + * @param scale 默认为跟屏幕一样的宽度,可以通过设置缩放比例来调整大小。当然,平台有规定最大或最小宽度,函数内部会自动计算。 + */ + AdvertManager.prototype.loadBanner = function (adUid, location, scale) { + var _a; + if (location === void 0) { location = EAdBannerLocation.TOP; } + if (scale === void 0) { scale = 1.0; } + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); + var size = getSysWinSize(); + // 当 style.width 小于 300 时,会取作 300。 当 style.width 大于屏幕宽度时,会取作屏幕宽度。 + var width = size.width * scale; + width = width < 300 ? 300 : width; // 最小值矫正 + width = width > size.width ? size.width : width; //最大值矫正 + this._banner = typeof location === 'number' ? new ADBanner(adUid, location === EAdBannerLocation.TOP, width, false) : new ADBanner(adUid, location, width, false); + }; + /** + * 显示横幅广告 + */ + AdvertManager.prototype.showBanner = function () { + if (this._banner) { + this._banner.show(); + } + else { + console.warn('MiniGameSDK: banner is null, you must call loadBanner(...) first!'); + } + }; + /** + * 隐藏横幅广告 + */ + AdvertManager.prototype.hideBanner = function () { + var _a; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.hide(); + }; + /** + * 弹出插屏广告 + * @param adUid 广告单元id + */ + AdvertManager.prototype.showInterstitial = function (adUid) { + var _a; + if (this._interstitial && this._interstitial.aduid === adUid) { + this._interstitial.show(); + } + else { + (_a = this._interstitial) === null || _a === void 0 ? void 0 : _a.destory(); + this._interstitial = new ADInterstitial(adUid); + this._interstitial.show(); + } + }; + /** + * 加载原生模板广告,不会显示。只有你在调用showCustom时才会显示。 + * 由于原生模板广告在微信服务后端可以定制宽度大小,个数,缩放比例等,所以位置调整要根据设置的宽度来定。抖音不支持本函数,会调用无效! + * @param adUid 广告ID + * @param location 位置有两种情况:1、可以传入枚举值,默认上方; 2、可以自定义位置传入IPosition,注意IPosition中的top和left跟平台的top,left是一致(没有乘以设备像素比ratio),需要开发者自己调试位置 + * @param scale 缩放比例,默认是1,即不缩放。这个缩放并不是自己填,而是根据微信MP后台你配置的原生模板广告的缩放比例填,目前有100%,90%,80%三种,一般情况不用修改。若有后台修改,记得传入值,例如90%就传入0.9。 + */ + AdvertManager.prototype.loadCustom = function (adUid, location, scale) { + if (location === void 0) { location = { top: 0, left: 0 }; } + if (scale === void 0) { scale = 1; } + // this._custom?.destroy(); + // this._custom = new ADCustom(adUid, location.top, location.left, scale); + if (this._customs[adUid]) { + console.log(adUid + " has been loaded."); + return; + } + this._customs[adUid] = new ADCustom(adUid, location.top, location.left, scale); + }; + /** + * 显示自定义广告。 + * @param adUid 广告的唯一标识符。使用此标识符来查找和显示特定的自定义广告。 + * + * 此方法尝试根据提供的adUid显示一个自定义广告。如果给定的adUid对应的自定义广告已加载, + * 则调用该广告的显示方法。如果广告未加载,则在控制台输出警告信息。 + */ + AdvertManager.prototype.showCustom = function (adUid) { + if (this._customs[adUid]) { + this._customs[adUid].show(); + } + else { + console.warn("You have not load " + adUid + " of Custom AD, can not show!"); + } + }; + /** + * 隐藏指定的自定义广告单元 + * + * 此方法用于隐藏通过广告单元标识符(adUid)指定的自定义广告。如果指定的广告单元已加载并显示, + * 则将其隐藏;如果广告单元未加载,则在控制台输出警告信息。 + * + * @param adUid 广告单元标识符,用于唯一标识一个自定义广告单元。 + */ + AdvertManager.prototype.hideCustom = function (adUid) { + if (this._customs[adUid]) { + this._customs[adUid].hide(); + } + else { + console.warn("You have not load " + adUid + " of Custom AD, can not hide!"); + } + }; + /** + * 由于微信和抖音视频广告机制不同,微信可以看的视频广告个数只有0和1个,抖音平台则可以看0~maxVideoCount + * @param adUid 广告ID。如果与上一次UID不同,则内部会重新创建实例。开发者完全不用关心这个细节。 + * @param onVideoResult 两个参数:第一个res是EAdVideoResult定义,第二count是用户看了多少个视频广告。 + * @param target onVideoResult的拥有者 + * @param maxVideoCount 最大视频个数。默认是3,仅对抖音平台生效。微信平台看完视频count的结果永远是1或0 + */ + AdvertManager.prototype.showVideo = function (adUid, onVideoResult, target, maxVideoCount) { + var _a; + if (maxVideoCount === void 0) { maxVideoCount = 3; } + if (this._video && this._video.aduid === adUid) { + this._video.show(onVideoResult, target, maxVideoCount); + } + else { + (_a = this._video) === null || _a === void 0 ? void 0 : _a.destory(); + this._video = new ADVideo(adUid); + this._video.show(onVideoResult, target, maxVideoCount); + } + }; + /** + * 销毁内部所有实例,清空内存 + */ + AdvertManager.prototype.destroyAll = function () { + var _a, _b, _c, _d; + (_a = this._banner) === null || _a === void 0 ? void 0 : _a.destroy(); + this._banner = null; + (_b = this._interstitial) === null || _b === void 0 ? void 0 : _b.destory(); + this._interstitial = null; + (_c = this._video) === null || _c === void 0 ? void 0 : _c.destory(); + this._video = null; + if (this._customs) { + for (var val in this._customs) { + (_d = this._customs[val]) === null || _d === void 0 ? void 0 : _d.destroy(); + } + this._customs = {}; + } + }; + return AdvertManager; + }()); + MiniGameSdk.AdvertManager = AdvertManager; + var EGameClubIcon; + (function (EGameClubIcon) { + /** 绿色图标 */ + EGameClubIcon["GREEN"] = "green"; + /** 红色图标 */ + EGameClubIcon["WHITE"] = "white"; + /** 有黑色圆角背景的白色图标 */ + EGameClubIcon["DARK"] = "dark"; + /** 有白色圆角背景的绿色图标 */ + EGameClubIcon["LIGHT"] = "light"; + })(EGameClubIcon = MiniGameSdk.EGameClubIcon || (MiniGameSdk.EGameClubIcon = {})); + var GameClub = /** @class */ (function () { + function GameClub() { + } + Object.defineProperty(GameClub, "instance", { + get: function () { + if (!this._instance) { + this._instance = new GameClub(); + } + return this._instance; + }, + enumerable: false, + configurable: true + }); + /** + * 创建游戏圈按钮 + * @param icon + * @param position + * @param size + * @param openLink + */ + GameClub.prototype.create = function (icon, position, size, openLink) { + if (icon === void 0) { icon = EGameClubIcon.GREEN; } + if (position === void 0) { position = { top: 0, left: 0 }; } + if (size === void 0) { size = { width: 40, height: 40 }; } + if (isWechat()) { + // @ts-ignore + this._club = wx.createGameClubButton({ + icon: icon, + style: { + left: position.left, + top: position.top, + width: size.width, + height: size.height + }, + openlink: openLink + }); + } + }; + GameClub.prototype.show = function () { + var _a; + (_a = this._club) === null || _a === void 0 ? void 0 : _a.show(); + }; + GameClub.prototype.hide = function () { + var _a; + (_a = this._club) === null || _a === void 0 ? void 0 : _a.hide(); + }; + GameClub.prototype.destory = function () { + var _a; + (_a = this._club) === null || _a === void 0 ? void 0 : _a.destroy(); + }; + return GameClub; + }()); + MiniGameSdk.GameClub = GameClub; + /** + * 振动类型 + */ + var EVirbrateType; + (function (EVirbrateType) { + /** + * 短振动 + */ + EVirbrateType[EVirbrateType["SHORT"] = 0] = "SHORT"; + /** + * 长振动 + */ + EVirbrateType[EVirbrateType["LONG"] = 1] = "LONG"; + })(EVirbrateType = MiniGameSdk.EVirbrateType || (MiniGameSdk.EVirbrateType = {})); + /** + * 抖音侧边栏专属接口 + */ + var BytedanceSidebar = /** @class */ (function () { + function BytedanceSidebar() { + } + /** + * 本游戏在抖音环境下启动监控,需要放在全局环境中,保证能第一时间启动。因为可能监听抖音失败(抖音小游戏官方的说明)! + * @param onResult 包含一个boolean参数的函数 + * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 + */ + BytedanceSidebar.listenFromSidebar = function (onResult, target) { + if (!isBytedance()) { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + return; + } + // @ts-ignore + tt.onShow(function (res) { + console.log('onShow launch res:', res); + if (res.scene === '021036') { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); + console.log('launch from sidebar'); + } + else { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + console.log('NOT launch from douyin sidebar!'); + } + }); + // @ts-ignore + var options = tt.getLaunchOptionsSync(); + if (options && options.scene === '021036') { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); + } + }; + /** + * 检测抖音侧边栏是否存在 + * @param onResult 包含一个boolean参数的函数 + * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 + * @returns + */ + BytedanceSidebar.checkSideBar = function (onResult, target) { + if (!isBytedance()) { + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + return; + } + //@ts-ignore + tt.checkScene({ + scene: "sidebar", + success: function (res) { + console.log("check scene success: ", res.isExist); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, res.isExist); + }, + fail: function (res) { + console.log("check scene fail:", res); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + } + }); + }; + /** + * 跳转到抖音侧边栏 + * @param onResult 包含一个boolean参数的函数 + * @param target 上述函数的拥有者,如果是类的成员函数,需要传入this。普通或匿名函数忽略即可。 + * @returns + */ + BytedanceSidebar.navigateToSidebar = function (onResult, target) { + if (!isBytedance()) { + console.log("not douyin platform!"); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + return; + } + // @ts-ignore + tt.navigateToScene({ + scene: "sidebar", + success: function () { + console.log("navigate success"); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, true); + }, + fail: function (res) { + console.log("navigate failed reason:", res); + onResult === null || onResult === void 0 ? void 0 : onResult.call(target, false); + }, + }); + }; + return BytedanceSidebar; + }()); + MiniGameSdk.BytedanceSidebar = BytedanceSidebar; + /** + * 平台常用API合集 + */ + var API = /** @class */ (function () { + function API() { + } + /** + * 分享app给朋友,微信小游戏分享是没有onSuccess回调的。 + * @param title 标题 + * @param description 细节描述信息 + * @param imageUrl 图片地址 + * @param query 查询信息 + * @param onSuccess 抖音会回调,微信不会回调 + */ + API.shareAppToFriends = function (title, description, imageUrl, query, onSuccess) { + if (description === void 0) { description = ''; } + if (isWechat()) { + try { + //@ts-ignore + wx.shareAppMessage({ + title: title, + imageUrl: imageUrl, + query: query, + }); + } + catch (err) { + console.log("share faild: " + err); + } + } + if (isBytedance()) { + //@ts-ignore + tt.shareAppMessage({ + title: title, + desc: description, + imageUrl: imageUrl !== null && imageUrl !== void 0 ? imageUrl : '', + query: query !== null && query !== void 0 ? query : '', + success: function (res) { + console.log('share success:', res); + onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); + }, + fail: function (res) { + console.log('share fail:', res); + } + }); + } + }; + /** + * 显示提示信息 + * @param title 标题 + * @param duration 时长(单位:秒) + * @returns + */ + API.showToast = function (title, duration) { + if (duration === void 0) { duration = 2; } + if (isWechat()) { + // @ts-ignore + wx.showToast({ + title: title, + icon: 'none', + duration: duration * 500 + }); + } + }; + /** + * 设备震动效果,默认为短震动。注意:可能一些机型不会生效,具体看平台方的说明 + * @param type MiniGameSdk.API.EVirbrateType + */ + API.vibrate = function (type) { + if (type === void 0) { type = EVirbrateType.SHORT; } + if (isWechat()) { + switch (type) { + case EVirbrateType.SHORT: + //@ts-ignore + wx.vibrateShort({ + success: function (res) { + console.log('vibrate success:', res); + }, + fail: function (res) { + console.log('vibrateShort failed', res); + }, + }); + break; + case EVirbrateType.LONG: + //@ts-ignore + wx.vibrateLong({ + success: function (res) { + console.log('vibrate success', res); + }, + fail: function (res) { + console.log("vibrateLong failed", res); + }, + }); + break; + default: + break; + } + } + if (isBytedance()) { + switch (type) { + case EVirbrateType.SHORT: + //@ts-ignore + tt.vibrateShort({ + success: function (res) { + console.log('vibrate success:', res); + }, + fail: function (res) { + console.log('vibrateShort failed', res); + }, + }); + break; + case EVirbrateType.LONG: + //@ts-ignore + tt.vibrateLong({ + success: function (res) { + console.log('vibrate success', res); + }, + fail: function (res) { + console.log("vibrateLong failed", res); + }, + }); + break; + default: + break; + } + } + }; + /** + * 重启小游戏 + */ + API.reboot = function () { + if (isWechat()) { + //@ts-ignore + wx.restartMiniProgram({ + success: function () { + console.log('restart success'); + }, + fail: function () { + console.log('restart failed'); + } + }); + } + if (isBytedance()) { + try { + // @ts-ignore + tt.restartMiniProgramSync(); + } + catch (error) { + console.log("restartMiniProgramSync", error); + } + } + }; + /** + * 退出小游戏 + */ + API.exit = function () { + if (isWechat()) { + //@ts-ignore + wx.exitMiniProgram({ + success: function () { + console.log('exit success'); + }, + fail: function () { + console.log('exit failed'); + } + }); + } + if (isBytedance()) { + // @ts-ignore + tt.exitMiniProgram({ + success: function (res) { + console.log("exit success:", res === null || res === void 0 ? void 0 : res.data); + }, + fail: function (res) { + console.log("exit fail:", res === null || res === void 0 ? void 0 : res.errMsg); + }, + }); + } + }; + /** + * 显示转发按钮。通常在刚进入游戏的时候调用。 + * 主要是打开平台“...”这个按钮里面的分享菜单,一般默认是关闭的,需要调用这个函数打开。可以让用户分享你的游戏入口。 + */ + API.showShareMenu = function () { + if (isWechat()) { + //@ts-ignore + wx.showShareMenu({ + withShareTicket: true, + menus: ['shareAppMessage', 'shareTimeline'], + success: function () { }, + fail: function () { }, + complete: function () { } + }); + } + }; + /** + * 微信小游戏:跳转到另外一款小游戏 + * 抖音小游戏:跳转到指定的视频界面 + * @param targetId 微信小游戏appid或者视频界面 + */ + API.navigateTo = function (targetId, onSuccess) { + if (isWechat()) { + // @ts-ignore + wx.navigateToMiniProgram({ + appId: targetId, + extraData: { + foo: 'bar' + }, + envVersion: 'develop', + success: function (res) { + onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); + } + }); + } + if (isBytedance()) { + // @ts-ignore + tt.navigateToVideoView({ + videoId: targetId, + success: function (res) { + onSuccess === null || onSuccess === void 0 ? void 0 : onSuccess(); + }, + fail: function (err) { + console.log("bytedance navigateToVideoView fail", err); + }, + }); + } + }; + /** + * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session + * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null + */ + API.login = function (callback) { + var loginPlatform = function () { + if (isWechat()) { + //@ts-ignore + wx.login({ + success: function (res) { + if (res.code) { + API._loginCode = res.code; + API._loginAnonymousCode = null; + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + } + else { + console.log('login error:', res.errMsg); + } + }, + fail: function () { + API._loginCode = null; + API._loginAnonymousCode = null; + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + console.log('login fail'); + } + }); + } + else if (isBytedance()) { + //@ts-ignore + tt.login({ + force: true, + success: function (res) { + var _a, _b; + console.log("login " + res.code + " " + res.anonymousCode); + if (res.code) { + API._loginCode = (_a = res.code) === null || _a === void 0 ? void 0 : _a.toString(); + API._loginAnonymousCode = (_b = res.anonymousCode) === null || _b === void 0 ? void 0 : _b.toString(); + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + } + else { + console.log('login error:', res.errMsg); + } + }, + fail: function (res) { + API._loginCode = null; + API._loginAnonymousCode = null; + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + console.log("login fail", res); + }, + }); + } + else { + API._loginCode = null; + API._loginAnonymousCode = null; + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + console.log('not mini game platform, login codes are all null'); + } + }; + if (!API._loginCode) { + loginPlatform(); + } + else { + if (isWechat()) { + //@ts-ignore + wx.checkSession({ + success: function () { + console.log("session is valid, use current code:", API._loginCode); + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + }, + fail: function () { + console.log("session expired"); + loginPlatform(); + } + }); + } + else if (isBytedance()) { + //@ts-ignore + tt.checkSession({ + success: function () { + console.log("session is valid, user current code: " + API._loginCode + ", " + API._loginAnonymousCode); + callback === null || callback === void 0 ? void 0 : callback(API._loginCode, API._loginAnonymousCode); + }, + fail: function () { + console.log("session expired"); + loginPlatform(); + }, + }); + } + else { + console.log('not mini game platform, login null'); + callback === null || callback === void 0 ? void 0 : callback(null, null); + } + } + }; + /** + * 小游戏平台登录功能。微信返回code,抖音返回code和anonymousCode。用于登录的凭证,需要把这个code传回你的服务器程序中去调用code2Session + * @param callback (code, anonymousCode) 第一个参数为code,微信和抖音都支持;第二个参数为匿名设备ID,仅抖音支持,失败都返回null + */ + API.getUserInfo = function (callback) { + //@ts-ignore + tt.getUserInfo({ + withCredentials: true, + success: function (res) { + API._userInfo = res; + callback(API._userInfo); + }, + fail: function (err) { + callback(err); + } + }); + }; + /** + * 调用微信云函数。由于参数需要自定义,所以为any,需要自行解释。函数只完成通道和处理一场的作用 + * @param callback 返回云函数调用结果。需要检查返回参数是否为空,失败的时候为空 + * @param name 云函数的名字 + * @param data 云函数的内容 + */ + API.callWechatCloudFunction = function (callback, name, data) { + if (!isWechat()) { + console.log('Not wechat platform, not support callWechatCloudFunction'); + return; + } + this.login(function (code, anonymousCode) { + if (!API._hasInitWechatCloudFunction) { + //@ts-ignore + wx.cloud.init(); + API._hasInitWechatCloudFunction = true; + } + //@ts-ignore + wx.cloud.callFunction({ + name: name, + data: data, + success: function (res) { return callback === null || callback === void 0 ? void 0 : callback(res); }, + fail: function (err) { + console.log('wechat cloud function error:', err); + callback === null || callback === void 0 ? void 0 : callback(null); + } + }); + }); + }; + /** + * 存储用户信息,数据量不能大。可以考虑用于分数排行榜。用户之间可共享排行数据。 + * @param key + * @param value + */ + API.setUserCloudStorage = function (key, value) { + if (isWechat()) { + // @ts-ignore + wx.setUserCloudStorage({ + KVDataList: [{ key: key, value: value }], + success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, + fail: function (err) { return console.log('set cloud storage error:', err); } + }); + } + if (isBytedance()) { + // @ts-ignore + tt.setUserCloudStorage({ + KVDataList: [{ key: key, value: value, }], + success: function () { return console.log("set cloud storage success:" + key + ", value:" + value); }, + fail: function (err) { return console.log('set cloud storage error:', err); } + }); + } + }; + /* + * 数数平台初始化以及登录 + */ + API.shushu_Init = function () { + if (typeof wx !== 'undefined' && wx !== null) { + console.log("开始接入数数平台"); + //getWechatGameVersion + var appId = "121591378fc1423893deb12041413eb3"; + var test = cc.fx.GameTool.getWechatGameVersion(); + if (test == "正式版") { + appId = "87d18958cea145f29d3265470ecd3486"; + } + var config = { + // appId: "73e1ec654f15b47a1a7354fbabec05ad", // 项目 APP ID + appId: appId, + serverUrl: "https://data.nika4fun.com", + autoTrack: { + appShow: true, + appHide: true // 自动采集 ta_mg_hide + } + }; + // 创建 TA 实例 + API._ta = new ThinkingAnalyticsAPI(config); + //var deviceId = API._ta.getDeviceId(); + API._ta.login(cc.fx.GameConfig.GM_INFO.openid); + var result = "success"; + API.shushu_Track("login", result); + // 初始化 + API._ta.init(); + API.shushu_SetSuperProperties(); + //console.log("数数平台初始化成功!"); + // this.TA.clearSuperProperties(); + //设置用户属性 + // this.TA.userSet({ username: "大核桃" }); + } + }; + API.shushu_userSet = function (time) { + if (typeof wx !== 'undefined' && wx !== null) { + console.log("设置用户注册属性"); + API._ta.userSet({ register_time: time }); + } + }; + /* + * 数数平台设置动态公共属性 + */ + API.shushu_SetSuperProperties = function () { + if (typeof wx !== 'undefined' && wx !== null && API._ta) { + var versionData = "1.3"; + // API._ta.userSetOnce({ register_time:time}); + var superProperties = { + current_level: (cc.fx.GameConfig.GM_INFO.level + 1), + current_health: cc.fx.GameConfig.GM_INFO.hp, + tmp_coin: cc.fx.GameConfig.GM_INFO.coin, + version: versionData + }; + API._ta.setSuperProperties(superProperties); //设置公共事件属性 + } + }; + API.getWechatGameVersion = function () { + if (typeof wx !== 'undefined' && wx !== null) { + // @ts-ignore + var accountInfo = wx.getAccountInfoSync(); + return accountInfo.miniProgram.version; + } + }; + /* + * 数数平台具体埋点 + */ + API.shushu_Track = function (name, data, callback) { + if (typeof wx !== 'undefined' && wx !== null) { + if (API._ta) { + // 假设 track 方法返回一个 Promise + API._ta.track(name, // 事件名称 + data // 事件属性 + ); + } + } + }; + API._loginCode = null; + API._loginAnonymousCode = null; + API._hasInitWechatCloudFunction = false; + API._userInfo = null; + API._ta = null; + return API; + }()); + MiniGameSdk.API = API; +})(MiniGameSdk = exports.MiniGameSdk || (exports.MiniGameSdk = {})); cc._RF.pop(); } @@ -12279,61 +11114,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9nYW1lX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTyxRQUFRLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztBQUM5QixJQUFPLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBR3hCLElBQU8sV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFDcEMsSUFBTyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUd0QjtJQUFBO0lBeUlBLENBQUM7SUF0SWlCLG9CQUFTLEdBQXZCLFVBQXdCLEdBQVcsRUFBRSxRQUFpRSxFQUFFLEtBQVk7UUFBWixzQkFBQSxFQUFBLFlBQVk7UUFDaEgsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO1lBQ3BCLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDM0IsT0FBTztTQUNWO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RDLE9BQU87U0FDVjtRQUNELGtCQUFrQjtRQUNsQiwrQkFBK0I7UUFDL0IseURBQXlEO1FBQ3pELHFCQUFxQjtRQUNyQiw4Q0FBOEM7UUFDOUMsMENBQTBDO1FBQzFDLHNCQUFzQjtRQUN0QixZQUFZO1FBQ1osa0RBQWtEO1FBQ2xELGlDQUFpQztRQUNqQyx1QkFBdUI7UUFDdkIsNkNBQTZDO1FBQzdDLFlBQVk7UUFDWixVQUFVO0lBQ2QsQ0FBQztJQUVhLHdCQUFhLEdBQTNCLFVBQTRCLENBQVMsRUFBRSxLQUFhLEVBQUUsTUFBYztRQUNoRSxhQUFhO1FBQ2IsSUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsS0FBSyxD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LGFBQWEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUM5QyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFNLENBQUMsQ0FBQyxFQUNqQyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUNSLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLFFBQU0sQ0FBQztZQUM1QixDQUFDLENBQUMsQ0FDTCxDQUFDLENBQUMsQ0FBQztTQUNQO0lBQ0wsQ0FBQztJQXRJYyxzQkFBVyxHQUFtQyxFQUFFLENBQUM7SUF3SXBFLGlCQUFDO0NBeklELEFBeUlDLElBQUE7QUF6SVksZ0NBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3ByaXRlRnJhbWUgPSBjYy5TcHJpdGVGcmFtZTtcclxuaW1wb3J0IGRpcmVjdG9yID0gY2MuZGlyZWN0b3I7XHJcbmltcG9ydCB0d2VlbiA9IGNjLnR3ZWVuO1xyXG5pbXBvcnQgVGV4dHVyZTJEID0gY2MuVGV4dHVyZTJEO1xyXG5pbXBvcnQgQ2FudmFzID0gY2MuQ2FudmFzO1xyXG5pbXBvcnQgdmlzaWJsZVJlY3QgPSBjYy52aXNpYmxlUmVjdDtcclxuaW1wb3J0IGZpbmQgPSBjYy5maW5kO1xyXG5pbXBvcnQgTm9kZSA9IGNjLk5vZGU7XHJcblxyXG5leHBvcnQgY2xhc3MgTFFHYW1lVXRpbCB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBpbWFnZV9jYWNoZTogeyBba2V5OiBzdHJpbmddOiBTcHJpdGVGcmFtZSB9ID0ge307XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRfaW1hZ2UodXJsOiBzdHJpbmcsIGNhbGxiYWNrOiAoc3VjY2VzczogYm9vbGVhbiwgc2Y6IFNwcml0ZUZyYW1lIHwgdW5kZWZpbmVkKSA9PiB2b2lkLCBjYWNoZSA9IHRydWUpIHtcclxuICAgICAgICBpZiAoIXVybCB8fCB1cmwgPT09ICcnKSB7XHJcbiAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB1bmRlZmluZWQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmltYWdlX2NhY2hlW3VybF0pIHtcclxuICAgICAgICAgICAgY2FsbGJhY2sodHJ1ZSwgdGhpcy5pbWFnZV9jYWNoZVt1cmxdKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjYy5sb2FkZXIubG9hZChcclxuICAgICAgICAvLyAgICAge3VybDogdXJsLCB0eXBlOiAncG5nJ30sXHJcbiAgICAgICAgLy8gICAgIChlcnI6IHN0cmluZywgdGV4dHVyZTogVGV4dHVyZTJEIHwgdW5kZWZpbmVkKSA9PiB7XHJcbiAgICAgICAgLy8gICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgLy8gY29uc29sZS5lcnJvcignZXJyOicgKyBlcnIpO1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIGNhbGxiYWNrKGZhbHNlLCB1bmRlZmluZWQpO1xyXG4gICAgICAgIC8vICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAvLyAgICAgICAgIH1cclxuICAgICAgICAvLyAgICAgICAgIGNvbnN0IGZyYW1lID0gbmV3IFNwcml0ZUZyYW1lKHRleHR1cmUpO1xyXG4gICAgICAgIC8vICAgICAgICAgY2FsbGJhY2sodHJ1ZSwgZnJhbWUpO1xyXG4gICAgICAgIC8vICAgICAgICAgaWYgKGNhY2hlKSB7XHJcbiAgICAgICAgLy8gICAgICAgICAgICAgdGhpcy5pbWFnZV9jYWNoZVt1cmxdID0gZnJhbWU7XHJcbiAgICAgICAgLy8gICAgICAgICB9XHJcbiAgICAgICAgLy8gICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgY2FudmFzX3BvbGljeShjOiBDYW52YXMsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgIGNvbnN0IHJhdGlvID0gdmlzaWJsZVJlY3QuaGVpZ2h0IC8gdmlzaWJsZVJlY3Qud2lkdGg7XHJcbiAgICAgICAgaWYgKHJhdGlvID4gaGVpZ2h0IC8gd2lkdGgpIHtcclxuICAgICAgICAgICAgYy5maXRIZWlnaHQgPSBmYWxzZTtcclxuICAgICAgICAgICAgYy5maXRXaWR0aCA9IHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYy5maXRIZWlnaHQgPSB0cnVlO1xyXG4gICAgICAgICAgICBjLmZpdFdpZHRoID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjLmZpdEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIHJlY3Vyc2lvbl9ub2RlX3Byb3BlcnR5KG5vZGU6IE5vZGUsIHA6IHsga2V5OiBzdHJpbmcsIHZhbHVlOiBudW1iZXIgfSkge1xyXG4gICAgICAgIGlmIChub2RlLnBhcmVudCkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHAudmFsdWUgKj0gbm9kZS5wYXJlbnRbcC5rZXldO1xyXG4gICAgICAgICAgICB0aGlzLnJlY3Vyc2lvbl9ub2RlX3Byb3BlcnR5KG5vZGUucGFyZW50LCBwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHBhdGhcclxuICAgICAqIGVnLidDYW52YXM+bm9kZV9tYWluPmJ0bl9zdGFydCdcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBmaW5kX25vZGUocGF0aDogc3RyaW5nKTogTm9kZSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgaWYgKCFwYXRoIHx8IHBhdGgubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKCfot6/lvoTkuI3mraPnoa4nKTtcclxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgYXJyID0gcGF0aC5zcGxpdCgnLycpO1xyXG4gICAgICAgIGNvbnN0IHJvb3QgPSBmaW5kKGFyclswXSk7XHJcbiAgICAgICAgaWYgKCFyb290KSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybign5rKh5om+5Yiw6IqC54K5OicgKyBhcnJbMF0pO1xyXG4gICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbm9kZSA9IHJvb3Q7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgY29uc3QgdGVtcCA9IG5vZGUuZ2V0Q2hpbGRCeU5hbWUoYXJyW2ldKTtcclxuICAgICAgICAgICAgaWYgKCF0ZW1wKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oJ+ayoeaJvuWIsOiKgueCuTonICsgYXJyW2ldKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbm9kZSA9IHRlbXA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBub2RlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgd2FpdCh0aW1lOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgdHdlZW4oZGlyZWN0b3IuZ2V0U2NlbmUoKSkuZGVsYXkodGltZSkuY2FsbCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgIH0pLnN0YXJ0KCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBzZXRfY2xpcChjbGlwOiBjYy5BbmltYXRpb25DbGlwLCBvZmY6IGNjLlZlYzIsIGZsaXBfeDogYm9vbGVhbiwgZmxpcF95OiBib29sZWFuKSB7XHJcbiAgICAgICAgbGV0IHMgPSAoYXJyOiBudW1iZXJbXSkgPT4ge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGkgJSAyID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZsaXBfeCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJbaV0gPSAtYXJyW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhcnJbaV0gKz0gb2ZmLng7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmbGlwX3kpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyW2ldID0gLWFycltpXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYXJyW2ldICs9IG9mZi55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBwb3NfYXJyID0gY2xpcC5jdXJ2ZURhdGEucHJvcHMucG9zaXRpb247XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NfYXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1vdGlvblBhdGggPSBwb3NfYXJyW2ldLm1vdGlvblBhdGg7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcG9zX2FycltpXS52YWx1ZTtcclxuICAgICAgICAgICAgaWYgKG1vdGlvblBhdGgpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW90aW9uUGF0aC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgICAgICAgIHMobW90aW9uUGF0aFtpXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcyh2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgc2Nyb2xsX2xheW91dChsYXlvdXQ6IGNjLkxheW91dCwgc3BlZWQ6IG51bWJlciA9IDUwKSB7XHJcbiAgICAgICAgbGF5b3V0LnVwZGF0ZUxheW91dCgpO1xyXG4gICAgICAgIGNvbnN0IGxlbiA9IGxheW91dC50eXBlID09PSBjYy5MYXlvdXQuVHlwZS5IT1JJWk9OVEFMID8gbGF5b3V0Lm5vZGUud2lkdGggOiBsYXlvdXQubm9kZS5oZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgdGltZSA9IGxlbiAvIHNwZWVkO1xyXG4gICAgICAgIGlmIChsYXlvdXQudHlwZSA9PT0gY2MuTGF5b3V0LlR5cGUuSE9SSVpPTlRBTCkge1xyXG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gbGF5b3V0Lm5vZGUuYW5jaG9yWCA9PT0gMSA/IGxheW91dC5ub2RlLndpZHRoICogMC41IDogLWxheW91dC5ub2RlLndpZHRoICogMC41O1xyXG4gICAgICAgICAgICBsYXlvdXQubm9kZS5ydW5BY3Rpb24oY2MucmVwZWF0Rm9yZXZlcihjYy5zZXF1ZW5jZShcclxuICAgICAgICAgICAgICAgIGNjLm1vdmVCeSh0aW1lLCBjYy52MihvZmZzZXQsIDApKSxcclxuICAgICAgICAgICAgICAgIGNjLmNhbGxGdW5jKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsYXlvdXQubm9kZS54IC09IG9mZnNldDtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICkpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGxheW91dC50eXBlID09PSBjYy5MYXlvdXQuVHlwZS5WRVJUSUNBTCB8fCBsYXlvdXQudHlwZSA9PT0gY2MuTGF5b3V0LlR5cGUuR1JJRCkge1xyXG4gICAgICAgICAgICBsZXQgb2Zmc2V0ID0gbGF5b3V0Lm5vZGUuYW5jaG9yWSA9PT0gMSA/IGxheW91dC5ub2RlLmhlaWdodCAqIDAuNSA6IC1sYXlvdXQubm9kZS5oZWlnaHQgKiAwLjU7XHJcbiAgICAgICAgICAgIGxheW91dC5ub2RlLnJ1bkFjdGlvbihjYy5yZXBlYXRGb3JldmVyKGNjLnNlcXVlbmNlKFxyXG4gICAgICAgICAgICAgICAgY2MubW92ZUJ5KHRpbWUsIGNjLnYyKDAsIG9mZnNldCkpLFxyXG4gICAgICAgICAgICAgICAgY2MuY2FsbEZ1bmMoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGxheW91dC5ub2RlLnkgLT0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKSkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn0iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxTZGtcXE1pbmlHYW1lU2RrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsSUFBaUIsV0FBVyxDQXlxQzNCO0FBenFDRCxXQUFpQixXQUFXO0lBWXhCLFNBQWdCLFFBQVE7UUFDcEIsWUFBWTtRQUNaLE9BQU8sTUFBTSxDQUFDLEVBQUUsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUM7SUFDekQsQ0FBQztJQUhlLG9CQUFRLFdBR3ZCLENBQUE7SUFFRCxTQUFnQixXQUFXO1FBQ3ZCLFlBQVk7UUFDWixPQUFPLE1BQU0sQ0FBQyxFQUFFLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxFQUFFLEtBQUssU0FBUyxDQUFDO0lBQ3pELENBQUM7SUFIZSx1QkFBVyxjQUcxQixDQUFBO0lBR0QsU0FBUyxhQUFhO1FBQ2xCLElBQUksR0FBUSxDQUFDO1FBQ2IsSUFBSSxRQUFRLEVBQUUsRUFBRTtZQUNaLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7YUFBTSxJQUFJLFdBQVcsRUFBRSxFQUFFO1lBQ3RCLGFBQWE7WUFDYixHQUFHLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDaEM7UUFFRCxJQUFJLElBQUksR0FBVSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzFDLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQzdCLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztTQUNsQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNIO1FBUUksd0JBQVksS0FBYTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtB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ZWMsY0FBVSxHQUFXLElBQUksQ0FBQztRQUMxQix1QkFBbUIsR0FBVyxJQUFJLENBQUM7UUFDbkMsK0JBQTJCLEdBQVksS0FBSyxDQUFDO1FBQzdDLGFBQVMsR0FBUSxJQUFJLENBQUM7UUFDdEIsT0FBRyxHQUFRLElBQUksQ0FBQztRQXllbkMsVUFBQztLQTllRCxBQThlQyxJQUFBO0lBOWVZLGVBQUcsTUE4ZWYsQ0FBQTtBQUVMLENBQUMsRUF6cUNnQixXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQXlxQzNCIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOWwj+a4uOaIj+W5s+WPsFNES+W3peWFt+Wwgeijhe+8jOebruWJjeWPquaUr+aMgeW+ruS/oeWSjOaKlumfs+W5s+WPsFxyXG4gKi9cclxuZXhwb3J0IG5hbWVzcGFjZSBNaW5pR2FtZVNkayB7XHJcblxyXG4gICAgaW50ZXJmYWNlIElTaXplIHtcclxuICAgICAgICB3aWR0aDogbnVtYmVyO1xyXG4gICAgICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBpbnRlcmZhY2UgSVBvc2l0aW9uIHtcclxuICAgICAgICB0b3A6IG51bWJlcjtcclxuICAgICAgICBsZWZ0OiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzV2VjaGF0KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiB3aW5kb3cud3ggIT09IG51bGwgJiYgd2luZG93Lnd4ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGZ1bmN0aW9uIGlzQnl0ZWRhbmNlKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIHJldHVybiB3aW5kb3cudHQgIT09IG51bGwgJiYgd2luZG93LnR0ICE9PSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGZ1bmN0aW9uIGdldFN5c1dpblNpemUoKTogSVNpemUge1xyXG4gICAgICAgIGxldCBzeXM6IGFueTtcclxuICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHN5cyA9IHd4LmdldFN5c3RlbUluZm9TeW5jKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgc3lzID0gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBzaXplOiBJU2l6ZSA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xyXG4gICAgICAgIGlmIChzeXMpIHtcclxuICAgICAgICAgICAgc2l6ZS53aWR0aCA9IHN5cy53aW5kb3dXaWR0aDtcclxuICAgICAgICAgICAgc2l6ZS5oZWlnaHQgPSBzeXMud2luZG93SGVpZ2h0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDmj5LlsY/lub/lkYrjgILlvq7kv6Hmipbpn7Ppg73mlK/mjIHvvIFcclxuICAgICAqL1xyXG4gICAgY2xhc3MgQURJbnRlcnN0aXRpYWwge1xyXG4gICAgICAgIHByaXZhdGUgX2FkVWlkOiBzdHJpbmc7XHJcbiAgICAgICAgcHJpdmF0ZSBfaW50ZXJzdGl0aWFsOiBhbnk7XHJcblxyXG4gICAgICAgIGdldCBhZHVpZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkVWlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3RydWN0b3IoYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICB0aGlzLl9hZFVpZCA9IGFkVWlkO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2hvdygpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSAmJiAhd3guY3JlYXRlSW50ZXJzdGl0aWFsQWQpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybignd2VjaGF0IHVuc3VwcG9ydCBpbnRlcnN0aXRpYWwgQUQhJyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpICYmICF0dC5jcmVhdGVJbnRlcnN0aXRpYWxBZCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdieXRlZGFuY2UgdW5zdXBwb3J0IGludGVyc3RpdGlhbCBBRCEnKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5faW50ZXJzdGl0aWFsKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwubG9hZCgpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gd3guY3JlYXRlSW50ZXJzdGl0aWFsQWQoeyBhZFVuaXRJZDogdGhpcy5fYWRVaWQgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gdHQuY3JlYXRlSW50ZXJzdGl0aWFsQWQoeyBhZFVuaXRJZDogdGhpcy5fYWRVaWQgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5vbkxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2FkIGludGVyc3RpdGlhbCBhZCBzdWNjZXNzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsLnNob3coKS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhdGNoIGludGVyc3RpdGlhbCBhZCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsPy5vbkVycm9yKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdpbnRlcnN0aXRpYWwgYWQgb24gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlc3RvcnkoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbD8uZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBjbGFzcyBBREJhbm5lciB7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRVaWQ6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF9iYW5uZXI6IGFueTtcclxuXHJcbiAgICAgICAgZ2V0IGFkdWlkKCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fYWRVaWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmipbpn7Plkozlvq7kv6Hpg73mlK/mjIFcclxuICAgICAgICAgKiDmqKrluYXlub/lkYrjgILpooTkvLDlrr3luqbpu5jorqTkuLozMDDvvIzpooTkvLDpq5jluqbkuLoxNDDjgILlpoLmnpzkvaDkuI3noa7lrprlsLHmjInpu5jorqTlgLzmnaXjgIJcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKVUlE77yM5ZCO56uv6YWN572uXHJcbiAgICAgICAgICogQHBhcmFtIGlzVG9wIOaYr+WQpuWcqOWxj+W5lemhtumDqOWxleekuuOAguWGhemDqOS8muiHquWKqOWxheS4reiuoeeul+S9jee9ruOAglxyXG4gICAgICAgICAqIEBwYXJhbSBiYW5uZXJXaWR0aCDmqKrluYXlub/lkYrnmoTpooTkvLDlrr3luqbjgILpu5jorqQzMDBcclxuICAgICAgICAgKiBAcGFyYW0gYXV0b1Nob3cg5bm/5ZGK5Yqg6L295a6M5oiQ5ZCO5piv5ZCm56uL5Yi75pi+56S677yM6buY6K6k5Li65LiN5pi+56S6XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgY29uc3RydWN0b3IoYWRVaWQ6IHN0cmluZywgcGFyYW06IGJvb2xlYW4gfCBJUG9zaXRpb24sIGJhbm5lcldpZHRoOiBudW1iZXIgPSAzMDAsIGF1dG9TaG93OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICAgICAgdGhpcy5jcmVhdGUoYXV0b1Nob3csIGJhbm5lcldpZHRoLCBwYXJhbSk7IC8vIOm7mOiupDMwMOavlOi+g+WQiOmAglxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBjcmVhdGUoYXV0b1Nob3c6IGJvb2xlYW4sIGJhbm5lcldpZHRoOiBudW1iZXIsIHBhcmFtOiBib29sZWFuIHwgSVBvc2l0aW9uKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNXZWNoYXQoKSAmJiAhaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7XHJcblxyXG4gICAgICAgICAgICBsZXQgd2luU2l6ZSA9IGdldFN5c1dpblNpemUoKTtcclxuXHJcbiAgICAgICAgICAgIGxldCBoZWlnaHQgPSBiYW5uZXJXaWR0aCAqIDAuNDtcclxuICAgICAgICAgICAgbGV0IHRvcCA9IDAsIGxlZnQgPSAwO1xyXG5cclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gXCJib29sZWFuXCIpIHtcclxuICAgICAgICAgICAgICAgIGxlZnQgPSAod2luU2l6ZS53aWR0aCAtIGJhbm5lcldpZHRoKSAvIDJcclxuICAgICAgICAgICAgICAgIHRvcCA9IHBhcmFtID8gNSA6ICh3aW5TaXplLmhlaWdodCAtIGhlaWdodCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZWZ0ID0gcGFyYW0ubGVmdDtcclxuICAgICAgICAgICAgICAgIHRvcCA9IHBhcmFtLnRvcDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZCxcclxuICAgICAgICAgICAgICAgIGFkSW50ZXJ2YWxzOiAzMCwvLyDoh6rliqjliLfmlrDpopHnjofkuI3og73lsI/kuo4zMOenklxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgbGVmdDogbGVmdCwgdG9wOiB0b3AsIHdpZHRoOiBiYW5uZXJXaWR0aCB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSB3eC5jcmVhdGVCYW5uZXJBZChwYXJhbXMpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IHR0LmNyZWF0ZUJhbm5lckFkKHBhcmFtcyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9iYW5uZXIgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/Lm9uRXJyb3IoKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnYWQgYmFubmVyIGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5vbkxvYWQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgYXV0b1Nob3cgJiYgdGhpcy5fYmFubmVyLnNob3coKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzaG93KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LnNob3coKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGhpZGUoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdHJveSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsYXNzIEFEQ3VzdG9tIHtcclxuICAgICAgICBwcml2YXRlIF9hZFVpZDogc3RyaW5nO1xyXG4gICAgICAgIHByaXZhdGUgX2FkQ3VzdG9tOiBhbnk7XHJcblxyXG4gICAgICAgIGdldCBhZHVpZCgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2FkVWlkO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlLHkuo7ljp/nlJ/mqKHmnb/lub/lkYrlnKjlvq7kv6HmnI3liqHlkI7nq6/lj6/ku6XlrprliLblrr3luqblpKflsI/vvIzkuKrmlbDvvIznvKnmlL7mr5TkvovnrYnvvIzmiYDku6XkvY3nva7osIPmlbTopoHmoLnmja7orr7nva7nmoTlrr3luqbmnaXlrprjgILmipbpn7PkuI3mlK/mjIHvvIFcclxuICAgICAgICAgKiBAcGFyYW0gYWRVaWQg5bm/5ZGKVUlE77yM5ZCO56uv6YWN572uXHJcbiAgICAgICAgICogQHBhcmFtIHRvcCDku47lt6bkuIrop5LlvIDlp4vvvIzot53nprvlsY/luZXpobbpg6jnmoTot53nprvjgILms6jmhI/vvJrov5nkuKrmlbDmja7kuLrorr7lpIflsY/luZXlrr3luqZ3aWR0aOOAguWmguaenOmcgOimgeiOt+WPluWxj+W5leeahOWDj+e0oO+8jOmcgOimgeS5mOS7peiuvuWkh+WDj+e0oOavlFBpeGVsLVJhdGlv77yM5L6L5aaCaVBob25lIDEzIFByb+eahFBpeGVsLVJhdGlv5Li6M++8jOWDj+e0oOS4uldpZHRoKjPjgIJcclxuICAgICAgICAgKiBAcGFyYW0gbGVmdCDku47lt6bkuIrop5LlvIDlp4vvvIzot53nprvlsY/luZXmnIDlt6bovrnnmoTot53nprvjgILms6jmhI/vvJrov5nkuKrmlbDmja7kuLrorr7lpIflsY/luZXlrr3luqZ3aWR0aOOAguWmguaenOmcgOimgeiOt+WPluWxj+W5leeahOWDj+e0oO+8jOmcgOimgeS5mOS7peiuvuWkh+WDj+e0oOavlFBpeGVsLVJhdGlv77yM5L6L5aaCaVBob25lIDEzIFByb+eahFBpeGVsLVJhdGlv5Li6M++8jOWDj+e0oOS4uldpZHRoKjPjgIJcclxuICAgICAgICAgKiBAcGFyYW0gc2NhbGUg5Y6f55Sf5qih5p2/5bm/5ZGK55qE5bC65a+477yM6buY6K6k5Li6Me+8jOWNszEwMCXjgILmraTlgLzlnKjlvq7kv6HmnI3liqHlkI7nq6/lub/lkYrkuK3ojrflvpfvvIzpu5jorqTkuLoxMDAl77yM55uu5YmN5pyJMTAwJe+8jDkwJe+8jDgwJeS4ieenje+8jOS4gOiIrOaDheWGteS4jeeUqOS/ruaUueOAguiLpeacieS/ruaUue+8jOiusOW+l+S8oOWFpeWAvO+8jOS+i+WmgjkwJeWwseS8oOWFpTAuOeOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcsIHRvcDogbnVtYmVyID0gMCwgbGVmdDogbnVtYmVyID0gMCwgc2NhbGU6IG51bWJlciA9IDEuMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hZFVpZCA9IGFkVWlkO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUN1c3RvbUFkKHRvcCwgbGVmdCwgc2NhbGUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcHJpdmF0ZSBjcmVhdGVDdXN0b21BZCh0b3A6IG51bWJlciwgbGVmdDogbnVtYmVyLCBzY2FsZTogbnVtYmVyKSB7XHJcbiAgICAgICAgICAgIGlmICghaXNXZWNoYXQoKSkgeyAvLyBvbmx5IHdlY2hhdCBzdXBwb3J0IGN1c3RvbSBhZFxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20gPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ09ubHkgd2VjaGF0IHN1cHBvcnQgQ3VzdG9tIEFkJyk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAvLyDljp/nlJ/mqKHmnb815Liq5bqU55So5a695bqm5Li6Mzc177yM6Iul6K6+572u5LqG57yp5pS+5q+U5L6L77yM5YiZ5a695bqm5Lmf6ZyA6KaB6K6+572uXHJcbiAgICAgICAgICAgIC8vIGxldCB3aWR0aCA9IDM3NSAqIHRoaXMuX3NjYWxlO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmV3TGVmdCA9IChzeXMud2luZG93V2lkdGggLSB3aWR0aCkgLyAyO1xyXG4gICAgICAgICAgICAvLyBsZXQgbmV3VG9wID0gc3lzLndpbmRvd0hlaWdodCAvIDI7IC8vIDEyMOaYr+mihOS8sOmrmOW6plxyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbSA9IHd4LmNyZWF0ZUN1c3RvbUFkKHtcclxuICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZCxcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHsgbGVmdDogbGVmdCwgdG9wOiB0b3AsIGZpeGVkOiB0cnVlIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbT8ub25FcnJvcigoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdhZCBjdXN0b20gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNob3coKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2FkQ3VzdG9tPy5zaG93KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaWRlKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9hZEN1c3RvbT8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdHJveSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRDdXN0b20/LmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKlxyXG4gICAgICog6KeG6aKR5bm/5ZGK55So5oi354K55Ye76KGM5Li657uT5p6cXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBlbnVtIEVBZFZpZGVvUmVzdWx0IHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlKjmiLfnnIvlrozkuoblub/lkYrvvIzmuLjmiI/lj6/lj5HmlL7lpZblirHjgIJcclxuICAgICAgICAgKi9cclxuICAgICAgICBBQ0NFUFQsXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOeUqOaIt+S4remAlOWFs+mXreS6huW5v+WRiu+8jOWNs+acqueci+WujOeKtuaAgeOAguS4jeWPr+WPkeaUvuWlluWKseOAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIFJFSkVDVCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bm/5ZGK57uE5Lu25YaF6YOo5Y+R55Sf5LqG6ZSZ6K+v44CC5LiN5Y+v5Y+R5pS+5aWW5Yqx44CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgRVJST1IsXHJcbiAgICB9XHJcblxyXG4gICAgY2xhc3MgQURWaWRlbyB7XHJcbiAgICAgICAgcHJpdmF0ZSBfYWRVaWQ6IHN0cmluZztcclxuICAgICAgICBwcml2YXRlIF9hZFZpZGVvOiBhbnkgPSBudWxsO1xyXG5cclxuICAgICAgICBnZXQgYWR1aWQoKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9hZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0cnVjdG9yKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRVaWQgPSBhZFVpZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOeUseS6juW+ruS/oeWSjOaKlumfs+inhumikeW5v+WRiuacuuWItuS4jeWQjO+8jOW+ruS/oeWPr+S7peeci+eahOinhumikeW5v+WRiuS4quaVsOWPquaciTDlkowx5Liq77yM5oqW6Z+z5bmz5Y+w5YiZ5Y+v5Lul55yLMH5tYXhWaWRlb0NvdW50XHJcbiAgICAgICAgICogQHBhcmFtIG9uUmVzdWx0IOS4pOS4quWPguaVsO+8muesrOS4gOS4qnJlc+aYr0VBZFZpZGVvUmVzdWx05a6a5LmJ77yM56ys5LqMY291bnTmmK/nlKjmiLfnnIvkuoblpJrlsJHkuKrop4bpopHlub/lkYrjgIJcclxuICAgICAgICAgKiBAcGFyYW0gdGFyZ2V0IG9uUmVzdWx055qE5oul5pyJ6ICFXHJcbiAgICAgICAgICogQHBhcmFtIG1heFZpZGVvQ291bnQg5Y+v5Lul6L+e57ut55yL5pyA5aSn6KeG6aKR5Liq5pWw77yM5Y+v5pyA5aSn5YyW5ZWG5Lia5pWI546H44CC6buY6K6k5Li6M+S4quOAglxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHNob3cob25SZXN1bHQ6IChyZXM6IEVBZFZpZGVvUmVzdWx0LCBjb3VudDogbnVtYmVyKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnksIG1heFZpZGVvQ291bnQ6IG51bWJlciA9IDMpOiB2b2lkIHtcclxuICAgICAgICAgICAgbGV0IGNhbGxiYWNrID0gKHN0YXRlOiBFQWRWaWRlb1Jlc3VsdCwgY291bnQ6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBzdGF0ZSwgY291bnQpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoIWlzV2VjaGF0KCkgJiYgIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LkFDQ0VQVCwgMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvID0gbnVsbDtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IG9uQWRWaWRlb0Nsb3NlZCA9IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub2ZmQ2xvc2Uob25BZFZpZGVvQ2xvc2VkKTtcclxuICAgICAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAmJiByZXMuaXNFbmRlZCB8fCByZXMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5BQ0NFUFQsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LlJFSkVDVCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlc0NvbnZlcnRlZCA9IHJlcyBhcyB7IGlzRW5kZWQ6IGJvb2xlYW4sIGNvdW50OiBudW1iZXIgfTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzQ29udmVydGVkICYmIHJlc0NvbnZlcnRlZC5jb3VudCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soRUFkVmlkZW9SZXN1bHQuQUNDRVBULCByZXNDb252ZXJ0ZWQuY291bnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LlJFSkVDVCwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vZmZDbG9zZShvbkFkVmlkZW9DbG9zZWQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGlzV2VjaGF0KCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8gPSB3eC5jcmVhdGVSZXdhcmRlZFZpZGVvQWQoe1xyXG4gICAgICAgICAgICAgICAgICAgIGFkVW5pdElkOiB0aGlzLl9hZFVpZFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbyA9IHR0LmNyZWF0ZVJld2FyZGVkVmlkZW9BZCh7XHJcbiAgICAgICAgICAgICAgICAgICAgYWRVbml0SWQ6IHRoaXMuX2FkVWlkLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uUmV3YXJkTXNnOiBbJ+WkmjHmrKHlpZblirEnLCAn5YaN5aSa5LiA5qyh5aWW5YqxJywgJ+WGjeWkmuS4gOasoeWlluWKsSddLFxyXG4gICAgICAgICAgICAgICAgICAgIG11bHRpdG9uUmV3YXJkVGltZXM6IG1heFZpZGVvQ291bnQsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2FkVmlkZW8gPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ub25Mb2FkKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdBZCBsb2FkIHN1Y2Nlc3MnKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vbkVycm9yKChlcnI6IHsgZXJyTXNnOiBzdHJpbmcsIGVyckNvZGU6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnQWQgdmlkZW8gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgIGNhbGxiYWNrKEVBZFZpZGVvUmVzdWx0LkVSUk9SLCAwKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5vbkNsb3NlKG9uQWRWaWRlb0Nsb3NlZCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5zaG93KCkuY2F0Y2goKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8ubG9hZCgpLnRoZW4oKCkgPT5cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9hZFZpZGVvPy5zaG93KCkpLmNhdGNoKChlcnI6IHsgZXJyTXNnOiBzdHJpbmcsIGVyckNvZGU6IG51bWJlciB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdDYXRjaCB2aWRlbyBhZCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhFQWRWaWRlb1Jlc3VsdC5FUlJPUiwgMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZGVzdG9yeSgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYWRWaWRlbz8uZGVzdG9yeSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQgZW51bSBFQWRCYW5uZXJMb2NhdGlvbiB7XHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5bGP5bmV6aG26YOoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgVE9QLFxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlsY/luZXlupXpg6hcclxuICAgICAgICAgKi9cclxuICAgICAgICBCT1RUT00sXHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIEFkdmVydE1hbmFnZXIge1xyXG5cclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEFkdmVydE1hbmFnZXI7XHJcblxyXG4gICAgICAgIHN0YXRpYyBnZXQgaW5zdGFuY2UoKTogQWR2ZXJ0TWFuYWdlciB7XHJcbiAgICAgICAgICAgIGlmICghQWR2ZXJ0TWFuYWdlci5faW5zdGFuY2UpIHtcclxuICAgICAgICAgICAgICAgIEFkdmVydE1hbmFnZXIuX2luc3RhbmNlID0gbmV3IEFkdmVydE1hbmFnZXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gQWR2ZXJ0TWFuYWdlci5faW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIF92aWRlbzogQURWaWRlbztcclxuICAgICAgICBwcml2YXRlIF9pbnRlcnN0aXRpYWw6IEFESW50ZXJzdGl0aWFsO1xyXG4gICAgICAgIHByaXZhdGUgX2Jhbm5lcjogQURCYW5uZXI7XHJcbiAgICAgICAgcHJpdmF0ZSBfY3VzdG9tczogUmVjb3JkPHN0cmluZywgQURDdXN0b20+ID0ge307XHJcblxyXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6aKE5Yqg6L295qiq5bmF5bm/5ZGK77yM5LiN5Lya5pi+56S644CC5Y+q5pyJ5L2g5Zyo6LCD55Soc2hvd0Jhbm5lcuaXtuaJjeS8muaYvuekuuOAglxyXG4gICAgICAgICAqIOWPr+mHjeWkjeiwg+eUqO+8jOS9huaYr+S8mumUgOavgeS4iuS4gOasoeeahOWunuS+i+OAguS4gOiIrOaDheWGte+8jOWFqOWxgOacieS4gOS4quWwseihjOS6hu+8jOWkquWkmuWNoOeUqOWGheWtmO+8jOiAjOS4lOayoeW/heimgeOAglxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYpVSURcclxuICAgICAgICAgKiBAcGFyYW0gbG9jYXRpb24g5L2N572u5pyJ5Lik56eN5oOF5Ya177yaMeOAgeWPr+S7peS8oOWFpeaemuS4vuWAvO+8jOm7mOiupOS4iuaWuTsgMuOAgeWPr+S7peiHquWumuS5ieS9jee9ruS8oOWFpUlQb3NpdGlvbu+8jOazqOaEj0lQb3NpdGlvbuS4reeahHRvcOWSjGxlZnTot5/lubPlj7DnmoR0b3AsbGVmdOaYr+S4gOiHtO+8iOayoeacieS5mOS7peiuvuWkh+WDj+e0oOavlHJhdGlv77yJ77yM6ZyA6KaB5byA5Y+R6ICF6Ieq5bex6LCD6K+V5L2N572uXHJcbiAgICAgICAgICogQHBhcmFtIHNjYWxlIOm7mOiupOS4uui3n+Wxj+W5leS4gOagt+eahOWuveW6pu+8jOWPr+S7pemAmui/h+iuvue9rue8qeaUvuavlOS+i+adpeiwg+aVtOWkp+Wwj+OAguW9k+eEtu+8jOW5s+WPsOacieinhOWumuacgOWkp+aIluacgOWwj+WuveW6pu+8jOWHveaVsOWGhemDqOS8muiHquWKqOiuoeeul+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBsb2FkQmFubmVyKGFkVWlkOiBzdHJpbmcsIGxvY2F0aW9uOiBFQWRCYW5uZXJMb2NhdGlvbiB8IElQb3NpdGlvbiA9IEVBZEJhbm5lckxvY2F0aW9uLlRPUCwgc2NhbGU6IG51bWJlciA9IDEuMCkge1xyXG4gICAgICAgICAgICB0aGlzLl9iYW5uZXI/LmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgbGV0IHNpemU6IElTaXplID0gZ2V0U3lzV2luU2l6ZSgpO1xyXG4gICAgICAgICAgICAvLyDlvZMgc3R5bGUud2lkdGgg5bCP5LqOIDMwMCDml7bvvIzkvJrlj5bkvZwgMzAw44CCIOW9kyBzdHlsZS53aWR0aCDlpKfkuo7lsY/luZXlrr3luqbml7bvvIzkvJrlj5bkvZzlsY/luZXlrr3luqbjgIJcclxuICAgICAgICAgICAgbGV0IHdpZHRoID0gc2l6ZS53aWR0aCAqIHNjYWxlO1xyXG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoIDwgMzAwID8gMzAwIDogd2lkdGg7IC8vIOacgOWwj+WAvOefq+ato1xyXG4gICAgICAgICAgICB3aWR0aCA9IHdpZHRoID4gc2l6ZS53aWR0aCA/IHNpemUud2lkdGggOiB3aWR0aDsgLy/mnIDlpKflgLznn6vmraNcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyID0gdHlwZW9mIGxvY2F0aW9uID09PSAnbnVtYmVyJyA/IG5ldyBBREJhbm5lcihhZFVpZCwgbG9jYXRpb24gPT09IEVBZEJhbm5lckxvY2F0aW9uLlRPUCwgd2lkdGgsIGZhbHNlKSA6IG5ldyBBREJhbm5lcihhZFVpZCwgbG9jYXRpb24sIHdpZHRoLCBmYWxzZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmmL7npLrmqKrluYXlub/lkYpcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc2hvd0Jhbm5lcigpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2Jhbm5lcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fYmFubmVyLnNob3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignTWluaUdhbWVTREs6IGJhbm5lciBpcyBudWxsLCB5b3UgbXVzdCBjYWxsIGxvYWRCYW5uZXIoLi4uKSBmaXJzdCEnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6ZqQ6JeP5qiq5bmF5bm/5ZGKXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIGhpZGVCYW5uZXIoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lcj8uaGlkZSgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5by55Ye65o+S5bGP5bm/5ZGKXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiuWNleWFg2lkXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dJbnRlcnN0aXRpYWwoYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5faW50ZXJzdGl0aWFsICYmIHRoaXMuX2ludGVyc3RpdGlhbC5hZHVpZCA9PT0gYWRVaWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbC5zaG93KCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWw/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ludGVyc3RpdGlhbCA9IG5ldyBBREludGVyc3RpdGlhbChhZFVpZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWwuc2hvdygpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDliqDovb3ljp/nlJ/mqKHmnb/lub/lkYrvvIzkuI3kvJrmmL7npLrjgILlj6rmnInkvaDlnKjosIPnlKhzaG93Q3VzdG9t5pe25omN5Lya5pi+56S644CCXHJcbiAgICAgICAgICog55Sx5LqO5Y6f55Sf5qih5p2/5bm/5ZGK5Zyo5b6u5L+h5pyN5Yqh5ZCO56uv5Y+v5Lul5a6a5Yi25a695bqm5aSn5bCP77yM5Liq5pWw77yM57yp5pS+5q+U5L6L562J77yM5omA5Lul5L2N572u6LCD5pW06KaB5qC55o2u6K6+572u55qE5a695bqm5p2l5a6a44CC5oqW6Z+z5LiN5pSv5oyB5pys5Ye95pWw77yM5Lya6LCD55So5peg5pWI77yBXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiklEXHJcbiAgICAgICAgICogQHBhcmFtIGxvY2F0aW9uIOS9jee9ruacieS4pOenjeaDheWGte+8mjHjgIHlj6/ku6XkvKDlhaXmnprkuL7lgLzvvIzpu5jorqTkuIrmlrk7IDLjgIHlj6/ku6Xoh6rlrprkuYnkvY3nva7kvKDlhaVJUG9zaXRpb27vvIzms6jmhI9JUG9zaXRpb27kuK3nmoR0b3DlkoxsZWZ06Lef5bmz5Y+w55qEdG9wLGxlZnTmmK/kuIDoh7TvvIjmsqHmnInkuZjku6Xorr7lpIflg4/ntKDmr5RyYXRpb++8ie+8jOmcgOimgeW8gOWPkeiAheiHquW3seiwg+ivleS9jee9rlxyXG4gICAgICAgICAqIEBwYXJhbSBzY2FsZSDnvKnmlL7mr5TkvovvvIzpu5jorqTmmK8x77yM5Y2z5LiN57yp5pS+44CC6L+Z5Liq57yp5pS+5bm25LiN5piv6Ieq5bex5aGr77yM6ICM5piv5qC55o2u5b6u5L+hTVDlkI7lj7DkvaDphY3nva7nmoTljp/nlJ/mqKHmnb/lub/lkYrnmoTnvKnmlL7mr5TkvovloavvvIznm67liY3mnIkxMDAl77yMOTAl77yMODAl5LiJ56eN77yM5LiA6Iis5oOF5Ya15LiN55So5L+u5pS544CC6Iul5pyJ5ZCO5Y+w5L+u5pS577yM6K6w5b6X5Lyg5YWl5YC877yM5L6L5aaCOTAl5bCx5Lyg5YWlMC4544CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIGxvYWRDdXN0b20oYWRVaWQ6IHN0cmluZywgbG9jYXRpb246IElQb3NpdGlvbiA9IHsgdG9wOiAwLCBsZWZ0OiAwIH0sIHNjYWxlOiBudW1iZXIgPSAxKSB7XHJcbiAgICAgICAgICAgIC8vIHRoaXMuX2N1c3RvbT8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLl9jdXN0b20gPSBuZXcgQURDdXN0b20oYWRVaWQsIGxvY2F0aW9uLnRvcCwgbG9jYXRpb24ubGVmdCwgc2NhbGUpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VzdG9tc1thZFVpZF0pIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2FkVWlkfSBoYXMgYmVlbiBsb2FkZWQuYCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbYWRVaWRdID0gbmV3IEFEQ3VzdG9tKGFkVWlkLCBsb2NhdGlvbi50b3AsIGxvY2F0aW9uLmxlZnQsIHNjYWxlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuuiHquWumuS5ieW5v+WRiuOAglxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYrnmoTllK/kuIDmoIfor4bnrKbjgILkvb/nlKjmraTmoIfor4bnrKbmnaXmn6Xmib7lkozmmL7npLrnibnlrprnmoToh6rlrprkuYnlub/lkYrjgIJcclxuICAgICAgICAgKiBcclxuICAgICAgICAgKiDmraTmlrnms5XlsJ3or5XmoLnmja7mj5DkvpvnmoRhZFVpZOaYvuekuuS4gOS4quiHquWumuS5ieW5v+WRiuOAguWmguaenOe7meWumueahGFkVWlk5a+55bqU55qE6Ieq5a6a5LmJ5bm/5ZGK5bey5Yqg6L2977yMXHJcbiAgICAgICAgICog5YiZ6LCD55So6K+l5bm/5ZGK55qE5pi+56S65pa55rOV44CC5aaC5p6c5bm/5ZGK5pyq5Yqg6L2977yM5YiZ5Zyo5o6n5Yi25Y+w6L6T5Ye66K2m5ZGK5L+h5oGv44CCXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgcHVibGljIHNob3dDdXN0b20oYWRVaWQ6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fY3VzdG9tc1thZFVpZF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbYWRVaWRdLnNob3coKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybihgWW91IGhhdmUgbm90IGxvYWQgJHthZFVpZH0gb2YgQ3VzdG9tIEFELCBjYW4gbm90IHNob3chYCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmakOiXj+aMh+WumueahOiHquWumuS5ieW5v+WRiuWNleWFg1xyXG4gICAgICAgICAqIFxyXG4gICAgICAgICAqIOatpOaWueazleeUqOS6jumakOiXj+mAmui/h+W5v+WRiuWNleWFg+agh+ivhuespu+8iGFkVWlk77yJ5oyH5a6a55qE6Ieq5a6a5LmJ5bm/5ZGK44CC5aaC5p6c5oyH5a6a55qE5bm/5ZGK5Y2V5YWD5bey5Yqg6L295bm25pi+56S677yMXHJcbiAgICAgICAgICog5YiZ5bCG5YW26ZqQ6JeP77yb5aaC5p6c5bm/5ZGK5Y2V5YWD5pyq5Yqg6L2977yM5YiZ5Zyo5o6n5Yi25Y+w6L6T5Ye66K2m5ZGK5L+h5oGv44CCXHJcbiAgICAgICAgICogXHJcbiAgICAgICAgICogQHBhcmFtIGFkVWlkIOW5v+WRiuWNleWFg+agh+ivhuespu+8jOeUqOS6juWUr+S4gOagh+ivhuS4gOS4quiHquWumuS5ieW5v+WRiuWNleWFg+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHB1YmxpYyBoaWRlQ3VzdG9tKGFkVWlkOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX2N1c3RvbXNbYWRVaWRdKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jdXN0b21zW2FkVWlkXS5oaWRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYFlvdSBoYXZlIG5vdCBsb2FkICR7YWRVaWR9IG9mIEN1c3RvbSBBRCwgY2FuIG5vdCBoaWRlIWApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnlLHkuo7lvq7kv6Hlkozmipbpn7Pop4bpopHlub/lkYrmnLrliLbkuI3lkIzvvIzlvq7kv6Hlj6/ku6XnnIvnmoTop4bpopHlub/lkYrkuKrmlbDlj6rmnIkw5ZKMMeS4qu+8jOaKlumfs+W5s+WPsOWImeWPr+S7peecizB+bWF4VmlkZW9Db3VudFxyXG4gICAgICAgICAqIEBwYXJhbSBhZFVpZCDlub/lkYpJROOAguWmguaenOS4juS4iuS4gOasoVVJROS4jeWQjO+8jOWImeWGhemDqOS8mumHjeaWsOWIm+W7uuWunuS+i+OAguW8gOWPkeiAheWujOWFqOS4jeeUqOWFs+W/g+i/meS4que7huiKguOAglxyXG4gICAgICAgICAqIEBwYXJhbSBvblZpZGVvUmVzdWx0IOS4pOS4quWPguaVsO+8muesrOS4gOS4qnJlc+aYr0VBZFZpZGVvUmVzdWx05a6a5LmJ77yM56ys5LqMY291bnTmmK/nlKjmiLfnnIvkuoblpJrlsJHkuKrop4bpopHlub/lkYrjgIIgXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldCBvblZpZGVvUmVzdWx055qE5oul5pyJ6ICFXHJcbiAgICAgICAgICogQHBhcmFtIG1heFZpZGVvQ291bnQg5pyA5aSn6KeG6aKR5Liq5pWw44CC6buY6K6k5pivM++8jOS7heWvueaKlumfs+W5s+WPsOeUn+aViOOAguW+ruS/oeW5s+WPsOeci+WujOinhumikWNvdW5055qE57uT5p6c5rC46L+c5pivMeaIljBcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgc2hvd1ZpZGVvKGFkVWlkOiBzdHJpbmcsIG9uVmlkZW9SZXN1bHQ6IChyZXM6IEVBZFZpZGVvUmVzdWx0LCBjb3VudDogbnVtYmVyKSA9PiB2b2lkLCB0YXJnZXQ/OiBhbnksIG1heFZpZGVvQ291bnQ6IG51bWJlciA9IDMpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuX3ZpZGVvICYmIHRoaXMuX3ZpZGVvLmFkdWlkID09PSBhZFVpZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8uc2hvdyhvblZpZGVvUmVzdWx0LCB0YXJnZXQsIG1heFZpZGVvQ291bnQpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvID0gbmV3IEFEVmlkZW8oYWRVaWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fdmlkZW8uc2hvdyhvblZpZGVvUmVzdWx0LCB0YXJnZXQsIG1heFZpZGVvQ291bnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDplIDmr4HlhoXpg6jmiYDmnInlrp7kvovvvIzmuIXnqbrlhoXlrZhcclxuICAgICAgICAgKi9cclxuICAgICAgICBwdWJsaWMgZGVzdHJveUFsbCgpIHtcclxuICAgICAgICAgICAgdGhpcy5fYmFubmVyPy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX2Jhbm5lciA9IG51bGw7XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9pbnRlcnN0aXRpYWw/LmRlc3RvcnkoKTtcclxuICAgICAgICAgICAgdGhpcy5faW50ZXJzdGl0aWFsID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvPy5kZXN0b3J5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3ZpZGVvID0gbnVsbDtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9jdXN0b21zKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB2YWwgaW4gdGhpcy5fY3VzdG9tcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2N1c3RvbXNbdmFsXT8uZGVzdHJveSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VzdG9tcyA9IHt9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydCBlbnVtIEVHYW1lQ2x1Ykljb24ge1xyXG4gICAgICAgIC8qKiDnu7/oibLlm77moIcgKi9cclxuICAgICAgICBHUkVFTiA9ICdncmVlbicsXHJcblxyXG4gICAgICAgIC8qKiDnuqLoibLlm77moIcgKi9cclxuICAgICAgICBXSElURSA9ICd3aGl0ZScsXHJcblxyXG4gICAgICAgIC8qKiDmnInpu5HoibLlnIbop5Log4zmma/nmoTnmb3oibLlm77moIcgKi9cclxuICAgICAgICBEQVJLID0gJ2RhcmsnLFxyXG5cclxuICAgICAgICAvKiog5pyJ55m96Imy5ZyG6KeS6IOM5pmv55qE57u/6Imy5Zu+5qCHICovXHJcbiAgICAgICAgTElHSFQgPSAnbGlnaHQnXHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0IGNsYXNzIEdhbWVDbHViIHtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfaW5zdGFuY2U6IEdhbWVDbHViO1xyXG5cclxuICAgICAgICBzdGF0aWMgZ2V0IGluc3RhbmNlKCk6IEdhbWVDbHViIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgR2FtZUNsdWIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBwcml2YXRlIF9jbHViOiBhbnk7XHJcblxyXG4gICAgICAgIHByaXZhdGUgY29uc3RydWN0b3IoKSB7XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5Yib5bu65ri45oiP5ZyI5oyJ6ZKuXHJcbiAgICAgICAgICogQHBhcmFtIGljb24gXHJcbiAgICAgICAgICogQHBhcmFtIHBvc2l0aW9uIFxyXG4gICAgICAgICAqIEBwYXJhbSBzaXplIFxyXG4gICAgICAgICAqIEBwYXJhbSBvcGVuTGluayBcclxuICAgICAgICAgKi9cclxuICAgICAgICBjcmVhdGUoaWNvbjogRUdhbWVDbHViSWNvbiA9IEVHYW1lQ2x1Ykljb24uR1JFRU4sIHBvc2l0aW9uOiBJUG9zaXRpb24gPSB7IHRvcDogMCwgbGVmdDogMCB9LCBzaXplOiBJU2l6ZSA9IHsgd2lkdGg6IDQwLCBoZWlnaHQ6IDQwIH0sIG9wZW5MaW5rPzogc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9jbHViID0gd3guY3JlYXRlR2FtZUNsdWJCdXR0b24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGljb246IGljb24sXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogcG9zaXRpb24ubGVmdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiBwb3NpdGlvbi50b3AsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBzaXplLndpZHRoLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IHNpemUuaGVpZ2h0XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBvcGVubGluazogb3BlbkxpbmtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzaG93KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5zaG93KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBoaWRlKCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5oaWRlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBkZXN0b3J5KCkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbHViPy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIOaMr+WKqOexu+Wei1xyXG4gICAgICovXHJcbiAgICBleHBvcnQgZW51bSBFVmlyYnJhdGVUeXBlIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDnn63mjK/liqhcclxuICAgICAgICAgKi9cclxuICAgICAgICBTSE9SVCxcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog6ZW/5oyv5YqoXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgTE9OR1xyXG4gICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICog5oqW6Z+z5L6n6L655qCP5LiT5bGe5o6l5Y+jXHJcbiAgICAgKi9cclxuICAgIGV4cG9ydCBjbGFzcyBCeXRlZGFuY2VTaWRlYmFyIHtcclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDmnKzmuLjmiI/lnKjmipbpn7Pnjq/looPkuIvlkK/liqjnm5HmjqfvvIzpnIDopoHmlL7lnKjlhajlsYDnjq/looPkuK3vvIzkv53or4Hog73nrKzkuIDml7bpl7TlkK/liqjjgILlm6DkuLrlj6/og73nm5HlkKzmipbpn7PlpLHotKXvvIjmipbpn7PlsI/muLjmiI/lrpjmlrnnmoTor7TmmI7vvInvvIFcclxuICAgICAgICAgKiBAcGFyYW0gb25SZXN1bHQg5YyF5ZCr5LiA5LiqYm9vbGVhbuWPguaVsOeahOWHveaVsFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQg5LiK6L+w5Ye95pWw55qE5oul5pyJ6ICF77yM5aaC5p6c5piv57G755qE5oiQ5ZGY5Ye95pWw77yM6ZyA6KaB5Lyg5YWldGhpc+OAguaZrumAmuaIluWMv+WQjeWHveaVsOW/veeVpeWNs+WPr+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBsaXN0ZW5Gcm9tU2lkZWJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgdHQub25TaG93KChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ29uU2hvdyBsYXVuY2ggcmVzOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzLnNjZW5lID09PSAnMDIxMDM2Jykge1xyXG4gICAgICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xhdW5jaCBmcm9tIHNpZGViYXInKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ05PVCBsYXVuY2ggZnJvbSBkb3V5aW4gc2lkZWJhciEnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGxldCBvcHRpb25zID0gdHQuZ2V0TGF1bmNoT3B0aW9uc1N5bmMoKTtcclxuICAgICAgICAgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zY2VuZSA9PT0gJzAyMTAzNicpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOajgOa1i+aKlumfs+S+p+i+ueagj+aYr+WQpuWtmOWcqFxyXG4gICAgICAgICAqIEBwYXJhbSBvblJlc3VsdCDljIXlkKvkuIDkuKpib29sZWFu5Y+C5pWw55qE5Ye95pWwXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldCDkuIrov7Dlh73mlbDnmoTmi6XmnInogIXvvIzlpoLmnpzmmK/nsbvnmoTmiJDlkZjlh73mlbDvvIzpnIDopoHkvKDlhaV0aGlz44CC5pmu6YCa5oiW5Yy/5ZCN5Ye95pWw5b+955Wl5Y2z5Y+v44CCXHJcbiAgICAgICAgICogQHJldHVybnMgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGNoZWNrU2lkZUJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIG9uUmVzdWx0Py5jYWxsKHRhcmdldCwgZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgdHQuY2hlY2tTY2VuZSh7XHJcbiAgICAgICAgICAgICAgICBzY2VuZTogXCJzaWRlYmFyXCIsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImNoZWNrIHNjZW5lIHN1Y2Nlc3M6IFwiLCByZXMuaXNFeGlzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgb25SZXN1bHQ/LmNhbGwodGFyZ2V0LCA8Ym9vbGVhbj5yZXMuaXNFeGlzdCk7XHJcblxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiY2hlY2sgc2NlbmUgZmFpbDpcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDot7PovazliLDmipbpn7PkvqfovrnmoI9cclxuICAgICAgICAgKiBAcGFyYW0gb25SZXN1bHQg5YyF5ZCr5LiA5LiqYm9vbGVhbuWPguaVsOeahOWHveaVsFxyXG4gICAgICAgICAqIEBwYXJhbSB0YXJnZXQg5LiK6L+w5Ye95pWw55qE5oul5pyJ6ICF77yM5aaC5p6c5piv57G755qE5oiQ5ZGY5Ye95pWw77yM6ZyA6KaB5Lyg5YWldGhpc+OAguaZrumAmuaIluWMv+WQjeWHveaVsOW/veeVpeWNs+WPr+OAglxyXG4gICAgICAgICAqIEByZXR1cm5zIFxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBuYXZpZ2F0ZVRvU2lkZWJhcihvblJlc3VsdDogKHN1Y2Nlc3M6IGJvb2xlYW4pID0+IHZvaWQsIHRhcmdldD86IGFueSkge1xyXG4gICAgICAgICAgICBpZiAoIWlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibm90IGRvdXlpbiBwbGF0Zm9ybSFcIik7XHJcbiAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0dC5uYXZpZ2F0ZVRvU2NlbmUoe1xyXG4gICAgICAgICAgICAgICAgc2NlbmU6IFwic2lkZWJhclwiLFxyXG4gICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibmF2aWdhdGUgc3VjY2Vzc1wiKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwibmF2aWdhdGUgZmFpbGVkIHJlYXNvbjpcIiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBvblJlc3VsdD8uY2FsbCh0YXJnZXQsIGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOW5s+WPsOW4uOeUqEFQSeWQiOmbhlxyXG4gICAgICovXHJcbiAgICBleHBvcnQgY2xhc3MgQVBJIHtcclxuICAgICAgICBwcml2YXRlIHN0YXRpYyBfbG9naW5Db2RlOiBzdHJpbmcgPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF9sb2dpbkFub255bW91c0NvZGU6IHN0cmluZyA9IG51bGw7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX2hhc0luaXRXZWNoYXRDbG91ZEZ1bmN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgX3VzZXJJbmZvOiBhbnkgPSBudWxsO1xyXG4gICAgICAgIHByaXZhdGUgc3RhdGljIF90YTogYW55ID0gbnVsbDtcclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5YiG5LqrYXBw57uZ5pyL5Y+L77yM5b6u5L+h5bCP5ri45oiP5YiG5Lqr5piv5rKh5pyJb25TdWNjZXNz5Zue6LCD55qE44CCXHJcbiAgICAgICAgICogQHBhcmFtIHRpdGxlIOagh+mimFxyXG4gICAgICAgICAqIEBwYXJhbSBkZXNjcmlwdGlvbiDnu4boioLmj4/ov7Dkv6Hmga8gXHJcbiAgICAgICAgICogQHBhcmFtIGltYWdlVXJsIOWbvueJh+WcsOWdgFxyXG4gICAgICAgICAqIEBwYXJhbSBxdWVyeSDmn6Xor6Lkv6Hmga9cclxuICAgICAgICAgKiBAcGFyYW0gb25TdWNjZXNzIOaKlumfs+S8muWbnuiwg++8jOW+ruS/oeS4jeS8muWbnuiwg1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBzaGFyZUFwcFRvRnJpZW5kcyh0aXRsZTogc3RyaW5nLCBkZXNjcmlwdGlvbjogc3RyaW5nID0gJycsIGltYWdlVXJsPzogc3RyaW5nLCBxdWVyeT86IHN0cmluZywgb25TdWNjZXNzPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB3eC5zaGFyZUFwcE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlVXJsOiBpbWFnZVVybCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHF1ZXJ5LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNoYXJlIGZhaWxkOiAke2Vycn1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdHQuc2hhcmVBcHBNZXNzYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VVcmw6IGltYWdlVXJsID8/ICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyAnJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzaGFyZSBzdWNjZXNzOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz8uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzaGFyZSBmYWlsOicsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuuaPkOekuuS/oeaBr1xyXG4gICAgICAgICAqIEBwYXJhbSB0aXRsZSDmoIfpophcclxuICAgICAgICAgKiBAcGFyYW0gZHVyYXRpb24g5pe26ZW/77yI5Y2V5L2N77ya56eS77yJXHJcbiAgICAgICAgICogQHJldHVybnMgXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIHNob3dUb2FzdCh0aXRsZTogc3RyaW5nLCBkdXJhdGlvbjogbnVtYmVyID0gMikge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGUsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbiAqIDUwMFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDorr7lpIfpnIfliqjmlYjmnpzvvIzpu5jorqTkuLrnn63pnIfliqjjgILms6jmhI/vvJrlj6/og73kuIDkupvmnLrlnovkuI3kvJrnlJ/mlYjvvIzlhbfkvZPnnIvlubPlj7DmlrnnmoTor7TmmI5cclxuICAgICAgICAgKiBAcGFyYW0gdHlwZSBNaW5pR2FtZVNkay5BUEkuRVZpcmJyYXRlVHlwZVxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyB2aWJyYXRlKHR5cGU6IEVWaXJicmF0ZVR5cGUgPSBFVmlyYnJhdGVUeXBlLlNIT1JUKSB7XHJcbiAgICAgICAgICAgIGlmIChpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNlIEVWaXJicmF0ZVR5cGUuU0hPUlQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3eC52aWJyYXRlU2hvcnQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3M6JywgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGVTaG9ydCBmYWlsZWQnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRVZpcmJyYXRlVHlwZS5MT05HOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgd3gudmlicmF0ZUxvbmcoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd2aWJyYXRlIHN1Y2Nlc3MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgdmlicmF0ZUxvbmcgZmFpbGVkYCwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNhc2UgRVZpcmJyYXRlVHlwZS5TSE9SVDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR0LnZpYnJhdGVTaG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGUgc3VjY2VzczonLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygndmlicmF0ZVNob3J0IGZhaWxlZCcsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzZSBFVmlyYnJhdGVUeXBlLkxPTkc6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0dC52aWJyYXRlTG9uZyh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZpYnJhdGUgc3VjY2VzcycsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbChyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGB2aWJyYXRlTG9uZyBmYWlsZWRgLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDph43lkK/lsI/muLjmiI9cclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgcmVib290KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5yZXN0YXJ0TWluaVByb2dyYW0oe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jlc3RhcnQgc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3Jlc3RhcnQgZmFpbGVkJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHR0LnJlc3RhcnRNaW5pUHJvZ3JhbVN5bmMoKTtcclxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHJlc3RhcnRNaW5pUHJvZ3JhbVN5bmNgLCBlcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOmAgOWHuuWwj+a4uOaIj1xyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBleGl0KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5leGl0TWluaVByb2dyYW0oe1xyXG4gICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2V4aXQgc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZXhpdCBmYWlsZWQnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHR0LmV4aXRNaW5pUHJvZ3JhbSh7XHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXM6IGFueSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImV4aXQgc3VjY2VzczpcIiwgcmVzPy5kYXRhKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWwocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJleGl0IGZhaWw6XCIsIHJlcz8uZXJyTXNnKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qKlxyXG4gICAgICAgICAqIOaYvuekuui9rOWPkeaMiemSruOAgumAmuW4uOWcqOWImui/m+WFpea4uOaIj+eahOaXtuWAmeiwg+eUqOOAglxyXG4gICAgICAgICAqIOS4u+imgeaYr+aJk+W8gOW5s+WPsOKAnC4uLuKAnei/meS4quaMiemSrumHjOmdoueahOWIhuS6q+iPnOWNle+8jOS4gOiIrOm7mOiupOaYr+WFs+mXreeahO+8jOmcgOimgeiwg+eUqOi/meS4quWHveaVsOaJk+W8gOOAguWPr+S7peiuqeeUqOaIt+WIhuS6q+S9oOeahOa4uOaIj+WFpeWPo+OAglxyXG4gICAgICAgICAqL1xyXG4gICAgICAgIHN0YXRpYyBzaG93U2hhcmVNZW51KCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB3eC5zaG93U2hhcmVNZW51KHtcclxuICAgICAgICAgICAgICAgICAgICB3aXRoU2hhcmVUaWNrZXQ6IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVudXM6IFsnc2hhcmVBcHBNZXNzYWdlJywgJ3NoYXJlVGltZWxpbmUnXSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4geyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyoqXHJcbiAgICAgICAgICog5b6u5L+h5bCP5ri45oiP77ya6Lez6L2s5Yiw5Y+m5aSW5LiA5qy+5bCP5ri45oiPXHJcbiAgICAgICAgICog5oqW6Z+z5bCP5ri45oiP77ya6Lez6L2s5Yiw5oyH5a6a55qE6KeG6aKR55WM6Z2iXHJcbiAgICAgICAgICogQHBhcmFtIHRhcmdldElkIOW+ruS/oeWwj+a4uOaIj2FwcGlk5oiW6ICF6KeG6aKR55WM6Z2iXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIG5hdmlnYXRlVG8odGFyZ2V0SWQ6IHN0cmluZywgb25TdWNjZXNzPzogKCkgPT4gdm9pZCkge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3gubmF2aWdhdGVUb01pbmlQcm9ncmFtKHtcclxuICAgICAgICAgICAgICAgICAgICBhcHBJZDogdGFyZ2V0SWQsXHJcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFEYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvbzogJ2JhcidcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGVudlZlcnNpb246ICdkZXZlbG9wJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uU3VjY2Vzcz8uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5uYXZpZ2F0ZVRvVmlkZW9WaWV3KHtcclxuICAgICAgICAgICAgICAgICAgICB2aWRlb0lkOiB0YXJnZXRJZCxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzPy4oKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZhaWw6IChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcImJ5dGVkYW5jZSBuYXZpZ2F0ZVRvVmlkZW9WaWV3IGZhaWxcIiwgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlsI/muLjmiI/lubPlj7DnmbvlvZXlip/og73jgILlvq7kv6Hov5Tlm55jb2Rl77yM5oqW6Z+z6L+U5ZueY29kZeWSjGFub255bW91c0NvZGXjgILnlKjkuo7nmbvlvZXnmoTlh63or4HvvIzpnIDopoHmiorov5nkuKpjb2Rl5Lyg5Zue5L2g55qE5pyN5Yqh5Zmo56iL5bqP5Lit5Y676LCD55SoY29kZTJTZXNzaW9uXHJcbiAgICAgICAgICogQHBhcmFtIGNhbGxiYWNrIChjb2RlLCBhbm9ueW1vdXNDb2RlKSDnrKzkuIDkuKrlj4LmlbDkuLpjb2Rl77yM5b6u5L+h5ZKM5oqW6Z+z6YO95pSv5oyB77yb56ys5LqM5Liq5Y+C5pWw5Li65Yy/5ZCN6K6+5aSHSUTvvIzku4Xmipbpn7PmlK/mjIHvvIzlpLHotKXpg73ov5Tlm55udWxsXHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGxvZ2luKGNhbGxiYWNrOiAoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgbGV0IGxvZ2luUGxhdGZvcm0gPSAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmxvZ2luKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogeyBjb2RlOiBhbnk7IGVyck1zZzogYW55OyB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IHJlcy5jb2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Bbm9ueW1vdXNDb2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2dpbiBlcnJvcjonLCByZXMuZXJyTXNnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkNvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2xvZ2luIGZhaWwnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzQnl0ZWRhbmNlKCkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgICAgICB0dC5sb2dpbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgbG9naW4gJHtyZXMuY29kZX0gJHtyZXMuYW5vbnltb3VzQ29kZX1gKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Db2RlID0gcmVzLmNvZGU/LnRvU3RyaW5nKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVBJLl9sb2dpbkFub255bW91c0NvZGUgPSByZXMuYW5vbnltb3VzQ29kZT8udG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdsb2dpbiBlcnJvcjonLCByZXMuZXJyTXNnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgbG9naW4gZmFpbGAsIHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fbG9naW5Db2RlID0gbnVsbDtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdub3QgbWluaSBnYW1lIHBsYXRmb3JtLCBsb2dpbiBjb2RlcyBhcmUgYWxsIG51bGwnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICBpZiAoIUFQSS5fbG9naW5Db2RlKSB7XHJcbiAgICAgICAgICAgICAgICBsb2dpblBsYXRmb3JtKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmNoZWNrU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBpcyB2YWxpZCwgdXNlIGN1cnJlbnQgY29kZTpgLCBBUEkuX2xvZ2luQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKEFQSS5fbG9naW5Db2RlLCBBUEkuX2xvZ2luQW5vbnltb3VzQ29kZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBleHBpcmVkYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dpblBsYXRmb3JtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNCeXRlZGFuY2UoKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHR0LmNoZWNrU2Vzc2lvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3MoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2Vzc2lvbiBpcyB2YWxpZCwgdXNlciBjdXJyZW50IGNvZGU6ICR7QVBJLl9sb2dpbkNvZGV9LCAke0FQSS5fbG9naW5Bbm9ueW1vdXNDb2RlfWApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihBUEkuX2xvZ2luQ29kZSwgQVBJLl9sb2dpbkFub255bW91c0NvZGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsKCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNlc3Npb24gZXhwaXJlZGApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9naW5QbGF0Zm9ybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vdCBtaW5pIGdhbWUgcGxhdGZvcm0sIGxvZ2luIG51bGwnKTtcclxuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjaz8uKG51bGwsIG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8qKlxyXG4gICAgICAgICAqIOWwj+a4uOaIj+W5s+WPsOeZu+W9leWKn+iDveOAguW+ruS/oei/lOWbnmNvZGXvvIzmipbpn7Pov5Tlm55jb2Rl5ZKMYW5vbnltb3VzQ29kZeOAgueUqOS6jueZu+W9leeahOWHreivge+8jOmcgOimgeaKiui/meS4qmNvZGXkvKDlm57kvaDnmoTmnI3liqHlmajnqIvluo/kuK3ljrvosIPnlKhjb2RlMlNlc3Npb25cclxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sgKGNvZGUsIGFub255bW91c0NvZGUpIOesrOS4gOS4quWPguaVsOS4umNvZGXvvIzlvq7kv6Hlkozmipbpn7Ppg73mlK/mjIHvvJvnrKzkuozkuKrlj4LmlbDkuLrljL/lkI3orr7lpIdJRO+8jOS7heaKlumfs+aUr+aMge+8jOWksei0pemDvei/lOWbnm51bGxcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgZ2V0VXNlckluZm8oY2FsbGJhY2s6ICh1c2VySW5mbzogYW55KSA9PiB2b2lkKSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0dC5nZXRVc2VySW5mbyh7XHJcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXHJcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX3VzZXJJbmZvID0gcmVzO1xyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKEFQSS5fdXNlckluZm8pO1xyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGZhaWw6IChlcnI6IGFueSkgPT57XHJcbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDosIPnlKjlvq7kv6HkupHlh73mlbDjgILnlLHkuo7lj4LmlbDpnIDopoHoh6rlrprkuYnvvIzmiYDku6XkuLphbnnvvIzpnIDopoHoh6rooYzop6Pph4rjgILlh73mlbDlj6rlrozmiJDpgJrpgZPlkozlpITnkIbkuIDlnLrnmoTkvZznlKhcclxuICAgICAgICAgKiBAcGFyYW0gY2FsbGJhY2sg6L+U5Zue5LqR5Ye95pWw6LCD55So57uT5p6c44CC6ZyA6KaB5qOA5p+l6L+U5Zue5Y+C5pWw5piv5ZCm5Li656m677yM5aSx6LSl55qE5pe25YCZ5Li656m6XHJcbiAgICAgICAgICogQHBhcmFtIG5hbWUg5LqR5Ye95pWw55qE5ZCN5a2XXHJcbiAgICAgICAgICogQHBhcmFtIGRhdGEg5LqR5Ye95pWw55qE5YaF5a65XHJcbiAgICAgICAgICovXHJcbiAgICAgICAgc3RhdGljIGNhbGxXZWNoYXRDbG91ZEZ1bmN0aW9uKGNhbGxiYWNrOiAocmVzOiBhbnkpID0+IHZvaWQsIG5hbWU6IHN0cmluZywgZGF0YToge30pIHtcclxuICAgICAgICAgICAgaWYgKCFpc1dlY2hhdCgpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnTm90IHdlY2hhdCBwbGF0Zm9ybSwgbm90IHN1cHBvcnQgY2FsbFdlY2hhdENsb3VkRnVuY3Rpb24nKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5sb2dpbigoY29kZTogc3RyaW5nLCBhbm9ueW1vdXNDb2RlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghQVBJLl9oYXNJbml0V2VjaGF0Q2xvdWRGdW5jdGlvbikge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgICAgIHd4LmNsb3VkLmluaXQoKTtcclxuICAgICAgICAgICAgICAgICAgICBBUEkuX2hhc0luaXRXZWNoYXRDbG91ZEZ1bmN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guY2xvdWQuY2FsbEZ1bmN0aW9uKHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKHJlczogYW55KSA9PiBjYWxsYmFjaz8uKHJlcyksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCd3ZWNoYXQgY2xvdWQgZnVuY3Rpb24gZXJyb3I6JywgZXJyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2s/LihudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKipcclxuICAgICAgICAgKiDlrZjlgqjnlKjmiLfkv6Hmga/vvIzmlbDmja7ph4/kuI3og73lpKfjgILlj6/ku6XogIPomZHnlKjkuo7liIbmlbDmjpLooYzmppzjgILnlKjmiLfkuYvpl7Tlj6/lhbHkuqvmjpLooYzmlbDmja7jgIJcclxuICAgICAgICAgKiBAcGFyYW0ga2V5IFxyXG4gICAgICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAgICAgKi9cclxuICAgICAgICBzdGF0aWMgc2V0VXNlckNsb3VkU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICBpZiAoaXNXZWNoYXQoKSkge1xyXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgd3guc2V0VXNlckNsb3VkU3RvcmFnZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgS1ZEYXRhTGlzdDogW3sga2V5OiBrZXksIHZhbHVlOiB2YWx1ZSB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChpc0J5dGVkYW5jZSgpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0dC5zZXRVc2VyQ2xvdWRTdG9yYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICBLVkRhdGFMaXN0OiBbeyBrZXk6IGtleSwgdmFsdWU6IHZhbHVlLCB9XSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiBjb25zb2xlLmxvZyhgc2V0IGNsb3VkIHN0b3JhZ2Ugc3VjY2Vzczoke2tleX0sIHZhbHVlOiR7dmFsdWV9YCksXHJcbiAgICAgICAgICAgICAgICAgICAgZmFpbDogKGVycjogYW55KSA9PiBjb25zb2xlLmxvZygnc2V0IGNsb3VkIHN0b3JhZ2UgZXJyb3I6JywgZXJyKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICAvKlxyXG4gICAgICAgICog5pWw5pWw5bmz5Y+w5Yid5aeL5YyW5Lul5Y+K55m75b2VXHJcbiAgICAgICAgKi9cclxuXHJcbiAgICAgICAgc3RhdGljIHNodXNodV9Jbml0KCl7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLlvIDlp4vmjqXlhaXmlbDmlbDlubPlj7BcIik7XHJcbiAgICAgICAgICAgICAgICAvL2dldFdlY2hhdEdhbWVWZXJzaW9uXHJcbiAgICAgICAgICAgICAgICBsZXQgYXBwSWQgPSBcIjEyMTU5MTM3OGZjMTQyMzg5M2RlYjEyMDQxNDEzZWIzXCI7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGVzdCA9IGNjLmZ4LkdhbWVUb29sLmdldFdlY2hhdEdhbWVWZXJzaW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZih0ZXN0ID09IFwi5q2j5byP54mIXCIpe1xyXG4gICAgICAgICAgICAgICAgICAgIGFwcElkID0gXCI4N2QxODk1OGNlYTE0NWYyOWQzMjY1NDcwZWNkMzQ4NlwiO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdmFyIGNvbmZpZyA9IHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBhcHBJZDogXCI3M2UxZWM2NTRmMTViNDdhMWE3MzU0ZmJhYmVjMDVhZFwiLCAvLyDpobnnm64gQVBQIElEXHJcbiAgICAgICAgICAgICAgICAgICAgYXBwSWQ6YXBwSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgc2VydmVyVXJsOiBcImh0dHBzOi8vZGF0YS5uaWthNGZ1bi5jb21cIiwgLy8g5LiK5oql5Zyw5Z2AXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1RyYWNrOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcFNob3c6IHRydWUsIC8vIOiHquWKqOmHh+mbhiB0YV9tZ19zaG93XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEhpZGU6IHRydWUgLy8g6Ieq5Yqo6YeH6ZuGIHRhX21nX2hpZGVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgLy8g5Yib5bu6IFRBIOWunuS+i1xyXG4gICAgICAgICAgICAgICAgQVBJLl90YSA9IG5ldyBUaGlua2luZ0FuYWx5dGljc0FQSShjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgLy92YXIgZGV2aWNlSWQgPSBBUEkuX3RhLmdldERldmljZUlkKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgQVBJLl90YS5sb2dpbihjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ub3BlbmlkKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IFwic3VjY2Vzc1wiO1xyXG4gICAgICAgICAgICAgICAgQVBJLnNodXNodV9UcmFjayhcImxvZ2luXCIscmVzdWx0KTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDliJ3lp4vljJZcclxuICAgICAgICAgICAgICAgIEFQSS5fdGEgLmluaXQoKTsgXHJcblxyXG4gICAgICAgICAgICAgICAgQVBJLnNodXNodV9TZXRTdXBlclByb3BlcnRpZXMoKTtcclxuICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coXCLmlbDmlbDlubPlj7DliJ3lp4vljJbmiJDlip8hXCIpO1xyXG4gICAgICAgICAgICAgICAgLy8gdGhpcy5UQS5jbGVhclN1cGVyUHJvcGVydGllcygpO1xyXG4gICAgICAgICAgICAgICAgLy/orr7nva7nlKjmiLflsZ7mgKdcclxuICAgICAgICAgICAgICAgIC8vIHRoaXMuVEEudXNlclNldCh7IHVzZXJuYW1lOiBcIuWkp+aguOahg1wiIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzdGF0aWMgc2h1c2h1X3VzZXJTZXQodGltZSl7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygd3ghPT0gJ3VuZGVmaW5lZCcgJiYgd3ghPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCLorr7nva7nlKjmiLfms6jlhozlsZ7mgKdcIik7XHJcbiAgICAgICAgICAgICAgICBBUEkuX3RhLnVzZXJTZXQoeyByZWdpc3Rlcl90aW1lOnRpbWV9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAqIOaVsOaVsOW5s+WPsOiuvue9ruWKqOaAgeWFrOWFseWxnuaAp1xyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIHN0YXRpYyBzaHVzaHVfU2V0U3VwZXJQcm9wZXJ0aWVzKCl7XHJcbiAgICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsICYmIEFQSS5fdGEpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHZlcnNpb25EYXRhID0gXCIxLjNcIjtcclxuICAgICAgICAgICAgICAgIC8vIEFQSS5fdGEudXNlclNldE9uY2UoeyByZWdpc3Rlcl90aW1lOnRpbWV9KTtcclxuICAgICAgICAgICAgICAgIHZhciBzdXBlclByb3BlcnRpZXMgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudF9sZXZlbCA6IChjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8ubGV2ZWwrMSksIC8v5b2T5YmN5YWz5Y2h562J57qnICBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2hlYWx0aDogY2MuZnguR2FtZUNvbmZpZy5HTV9JTkZPLmhwLCAgICAgICAgLy/lvZPliY3kvZPlipvlgLxcclxuICAgICAgICAgICAgICAgICAgICB0bXBfY29pbiA6IGNjLmZ4LkdhbWVDb25maWcuR01fSU5GTy5jb2luLC8v5b2T5YmN6YeR5biBXHJcbiAgICAgICAgICAgICAgICAgICAgdmVyc2lvbjogdmVyc2lvbkRhdGFcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICBBUEkuX3RhLnNldFN1cGVyUHJvcGVydGllcyhzdXBlclByb3BlcnRpZXMpOy8v6K6+572u5YWs5YWx5LqL5Lu25bGe5oCnXHJcbiAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc3RhdGljIGdldFdlY2hhdEdhbWVWZXJzaW9uKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIHd4IT09ICd1bmRlZmluZWQnICYmIHd4IT09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFjY291bnRJbmZvID0gd3guZ2V0QWNjb3VudEluZm9TeW5jKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYWNjb3VudEluZm8ubWluaVByb2dyYW0udmVyc2lvbjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLypcclxuICAgICAgICAqIOaVsOaVsOW5s+WPsOWFt+S9k+Wfi+eCuVxyXG4gICAgICAgICovXHJcblxyXG4gICAgICAgIHN0YXRpYyBzaHVzaHVfVHJhY2sobmFtZSwgZGF0YSwgY2FsbGJhY2s/OiAoc3VjY2VzczogYm9vbGVhbiwgZXJyb3I/OiBhbnkpID0+IHZvaWQpIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCE9PSAndW5kZWZpbmVkJyAmJiB3eCE9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoQVBJLl90YSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOWBh+iuviB0cmFjayDmlrnms5Xov5Tlm57kuIDkuKogUHJvbWlzZVxyXG4gICAgICAgICAgICAgICAgICAgIEFQSS5fdGEudHJhY2soXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIC8vIOS6i+S7tuWQjeensFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhIC8vIOS6i+S7tuWxnuaApyBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxufSJdfQ== //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'c9ad1iUTB1PyqJ3cmtMGJ31', 'use_v2.1-2.2.1_cc.Toggle_event_1'); -// migration/use_v2.1-2.2.1_cc.Toggle_event_1.js - -"use strict"; - -/* - * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. - * You do not need to manually add this script in any other project. - * If you don't use cc.Toggle in your project, you can delete this script directly. - * If your project is hosted in VCS such as git, submit this script together. - * - * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, - * 你无需在任何其它项目中手动添加此脚本。 - * 如果你的项目中没用到 Toggle,可直接删除该脚本。 - * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 - */ - -if (cc.Toggle) { - // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code - // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 - cc.Toggle._triggerEventInScript_isChecked = true; -} - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnRfMS5qcyJdLCJuYW1lcyI6WyJjYyIsIlRvZ2dsZSIsIl90cmlnZ2VyRXZlbnRJblNjcmlwdF9pc0NoZWNrZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJQSxFQUFFLENBQUNDLE1BQU0sRUFBRTtFQUNYO0VBQ0E7RUFDQUQsRUFBRSxDQUFDQyxNQUFNLENBQUNDLCtCQUErQixHQUFHLElBQUk7QUFDcEQiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFRoaXMgc2NyaXB0IGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IENvY29zIENyZWF0b3IgYW5kIGlzIG9ubHkgdXNlZCBmb3IgcHJvamVjdHMgY29tcGF0aWJsZSB3aXRoIHRoZSB2Mi4xLjAg772eIDIuMi4xIHZlcnNpb24uXHJcbiAqIFlvdSBkbyBub3QgbmVlZCB0byBtYW51YWxseSBhZGQgdGhpcyBzY3JpcHQgaW4gYW55IG90aGVyIHByb2plY3QuXHJcbiAqIElmIHlvdSBkb24ndCB1c2UgY2MuVG9nZ2xlIGluIHlvdXIgcHJvamVjdCwgeW91IGNhbiBkZWxldGUgdGhpcyBzY3JpcHQgZGlyZWN0bHkuXHJcbiAqIElmIHlvdXIgcHJvamVjdCBpcyBob3N0ZWQgaW4gVkNTIHN1Y2ggYXMgZ2l0LCBzdWJtaXQgdGhpcyBzY3JpcHQgdG9nZXRoZXIuXHJcbiAqXHJcbiAqIOatpOiEmuacrOeUsSBDb2NvcyBDcmVhdG9yIOiHquWKqOeUn+aIkO+8jOS7heeUqOS6juWFvOWuuSB2Mi4xLjAgfiAyLjIuMSDniYjmnKznmoTlt6XnqIvvvIxcclxuICog5L2g5peg6ZyA5Zyo5Lu75L2V5YW25a6D6aG555uu5Lit5omL5Yqo5re75Yqg5q2k6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruS4reayoeeUqOWIsCBUb2dnbGXvvIzlj6/nm7TmjqXliKDpmaTor6XohJrmnKzjgIJcclxuICog5aaC5p6c5L2g55qE6aG555uu5pyJ5omY566h5LqOIGdpdCDnrYnniYjmnKzlupPvvIzor7flsIbmraTohJrmnKzkuIDlubbkuIrkvKDjgIJcclxuICovXHJcblxyXG5pZiAoY2MuVG9nZ2xlKSB7XHJcbiAgICAvLyBXaGV0aGVyIHRvIHRyaWdnZXIgJ3RvZ2dsZScgYW5kICdjaGVja0V2ZW50cycgZXZlbnRzIHdoZW4gbW9kaWZ5aW5nICd0b2dnbGUuaXNDaGVja2VkJyBpbiB0aGUgY29kZVxyXG4gICAgLy8g5Zyo5Luj56CB5Lit5L+u5pS5ICd0b2dnbGUuaXNDaGVja2VkJyDml7bmmK/lkKbop6blj5EgJ3RvZ2dsZScg5LiOICdjaGVja0V2ZW50cycg5LqL5Lu2XHJcbiAgICBjYy5Ub2dnbGUuX3RyaWdnZXJFdmVudEluU2NyaXB0X2lzQ2hlY2tlZCA9IHRydWU7XHJcbn1cclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_interface.js'; + var __filename = 'preview-scripts/assets/Script/prop/Boom.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -12341,11 +11128,91 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '41e45V6/vBNz5ftgHCoFmei', 'lq_interface'); -// Script/lq_base/data/lq_interface.ts +cc._RF.push(module, '3c749iEEwlAMKPyjGEkwU2l', 'Boom'); +// Script/prop/Boom.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("../Map"); +var NumberToImage_1 = require("../NumberToImage"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Boom = /** @class */ (function (_super) { + __extends(Boom, _super); + function Boom() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + return _this; + // update (dt) {} + } + // mapInfo: number[][] = []; + Boom.prototype.onLoad = function () { + }; + Boom.prototype.start = function () { + }; + Boom.prototype.init = function (time) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); + // this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + }; + Boom.prototype.startBoom = function () { + this.schedule(this.updateTime, 1); + }; + Boom.prototype.stopBoom = function () { + this.unschedule(this.updateTime); + this.node.parent.getComponent("Block").resetFreeze(); + this.node.destroy(); + }; + Boom.prototype.updateTime = function () { + var _this = this; + this.time--; + NumberToImage_1.default.numberToImageNodes(this.time, 20, 8, "lock_", this.node.getChildByName("time"), false); + if (this.time <= 0) { + this.unschedule(this.updateTime); + this.node.getChildByName("zhandan").active = true; + var skeleton = this.node.getChildByName("zhandan").getComponent(sp.Skeleton); + skeleton.setAnimation(1, "eff", false); + // 监听动画完成事件 + skeleton.setCompleteListener(function () { + // 动画播放完成后销毁节点 + _this.node.destroy(); + }); + Map_1.default._instance.failLevel("boom"); + // this.node.destroy(); + } + }; + Boom = __decorate([ + ccclass + ], Boom); + return Boom; +}(cc.Component)); +exports.default = Boom; cc._RF.pop(); } @@ -12358,13 +11225,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBvcyB7XHJcbiAgICB4OiBudW1iZXI7XHJcbiAgICB5OiBudW1iZXI7XHJcblxyXG4gICAgc3ViKHBvczogSVBvcyk6IFZlYzI7XHJcblxyXG4gICAgYWRkKHBvczogSVBvcyk6IFZlYzI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVJlY3Qge1xyXG4gICAgeDogbnVtYmVyO1xyXG4gICAgeTogbnVtYmVyO1xyXG4gICAgd2lkdGg6IG51bWJlcjtcclxuICAgIGhlaWdodDogbnVtYmVyO1xyXG4gICAgaGFsZl93aWR0aDogbnVtYmVyO1xyXG4gICAgaGFsZl9oZWlnaHQ6IG51bWJlcjtcclxuXHJcbiAgICBzdWIocG9zOiBJUG9zKTogVmVjMjtcclxuXHJcbiAgICBhZGQocG9zOiBJUG9zKTogVmVjMjtcclxufSJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxCb29tLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUNqQyxrREFBNkM7QUFFdkMsSUFBQSxLQUFzQixFQUFFLENBQUMsVUFBVSxFQUFsQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWlCLENBQUM7QUFLMUM7SUFBa0Msd0JBQVk7SUFBOUM7UUFBQSxxRUFtREM7UUFqREcsVUFBSSxHQUFXLEVBQUUsQ0FBQzs7UUFnRGxCLGlCQUFpQjtJQUNyQixDQUFDO0lBL0NHLDRCQUE0QjtJQUU1QixxQkFBTSxHQUFOO0lBRUEsQ0FBQztJQUVELG9CQUFLLEdBQUw7SUFDQSxDQUFDO0lBRUQsbUJBQUksR0FBSixVQUFLLElBQUk7UUFDTCxJQUFHLElBQUk7WUFBRSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQzdDLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNsRyx5RkFBeUY7SUFFN0YsQ0FBQztJQUVELHdCQUFTLEdBQVQ7UUFDSSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHVCQUFRLEdBQVI7UUFDSSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUFBLGlCQWdCQztRQWZHLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLHVCQUFhLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNoRyxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFDO1lBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztZQUNsRCxJQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQy9FLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztZQUNyQyxXQUFXO1lBQ1gsUUFBUSxDQUFDLG1CQUFtQixDQUFDO2dCQUN6QixjQUFjO2dCQUNkLEtBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7WUFDSCxhQUFXLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN4Qyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBaERnQixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBbUR4QjtJQUFELFdBQUM7Q0FuREQsQUFtREMsQ0FuRGlDLEVBQUUsQ0FBQyxTQUFTLEdBbUQ3QztrQkFuRG9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5pbXBvcnQgTnVtYmVyVG9JbWFnZSBmcm9tIFwiLi4vTnVtYmVyVG9JbWFnZVwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJvb20gZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgc3RhdGljIF9pbnN0YW5jZTogYW55O1xyXG4gICAgdGltZTogbnVtYmVyID0gNjA7XHJcblxyXG4gICAgLy8gbWFwSW5mbzogbnVtYmVyW11bXSA9IFtdO1xyXG5cclxuICAgIG9uTG9hZCAoKSB7XHJcblxyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdCh0aW1lKXtcclxuICAgICAgICBpZih0aW1lKSB0aGlzLnRpbWUgPSB0aW1lO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgIE51bWJlclRvSW1hZ2UubnVtYmVyVG9JbWFnZU5vZGVzKHRoaXMudGltZSwyMCw4LFwibG9ja19cIix0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLGZhbHNlKTtcclxuICAgICAgICAvLyB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmdldENvbXBvbmVudChjYy5MYWJlbCkuc3RyaW5nID0gdGhpcy50aW1lLnRvU3RyaW5nKCk7XHJcbiAgIFxyXG4gICAgfVxyXG5cclxuICAgIHN0YXJ0Qm9vbSgpe1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBzdG9wQm9vbSgpe1xyXG4gICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVRpbWUpO1xyXG4gICAgICAgIHRoaXMubm9kZS5wYXJlbnQuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzZXRGcmVlemUoKTtcclxuICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgfVxyXG5cclxuICAgIFxyXG4gICAgdXBkYXRlVGltZSgpe1xyXG4gICAgICAgIHRoaXMudGltZSAtLTtcclxuICAgICAgICBOdW1iZXJUb0ltYWdlLm51bWJlclRvSW1hZ2VOb2Rlcyh0aGlzLnRpbWUsMjAsOCxcImxvY2tfXCIsdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKSxmYWxzZSk7XHJcbiAgICAgICAgaWYodGhpcy50aW1lIDw9IDApe1xyXG4gICAgICAgICAgICB0aGlzLnVuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiemhhbmRhblwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBjb25zdCBza2VsZXRvbiA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInpoYW5kYW5cIikuZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKTtcclxuICAgICAgICAgICAgc2tlbGV0b24uc2V0QW5pbWF0aW9uKDEsXCJlZmZcIixmYWxzZSk7XHJcbiAgICAgICAgICAgIC8vIOebkeWQrOWKqOeUu+WujOaIkOS6i+S7tlxyXG4gICAgICAgICAgICBza2VsZXRvbi5zZXRDb21wbGV0ZUxpc3RlbmVyKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vIOWKqOeUu+aSreaUvuWujOaIkOWQjumUgOavgeiKgueCuVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoXCJib29tXCIpO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_data.js'; + var __filename = 'preview-scripts/assets/Script/prop/Key.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -12372,90 +11239,74 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'a54702UNV9NA7pYgQd6eA5/', 'lq_data'); -// Script/lq_base/data/lq_data.ts +cc._RF.push(module, '92465qnUTJDw5STq1t7oelo', 'Key'); +// Script/prop/Key.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQPlatformData = exports.LQShareData = exports.LQNativeComponent = exports.LQRect = void 0; -var Vec2 = cc.Vec2; -var Rect = cc.Rect; -var LQRect = /** @class */ (function () { - function LQRect(x, y, width, height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - this.half_width = width * 0.5; - this.half_height = height * 0.5; - } - LQRect.prototype.top_left = function () { - return new Vec2(this.x - this.half_width, this.y + this.half_height); - }; - LQRect.prototype.top_right = function () { - return new Vec2(this.x + this.half_width, this.y + this.half_height); - }; - LQRect.prototype.bottom_left = function () { - return new Vec2(this.x - this.half_width, this.y - this.half_height); - }; - LQRect.prototype.bottom_right = function () { - return new Vec2(this.x + this.half_width, this.y - this.half_height); - }; - LQRect.prototype.pos = function () { - return new Vec2(this.x, this.y); - }; - LQRect.prototype.sub = function (pos) { - return new Vec2(pos.x - this.x, pos.y - this.y); - }; - LQRect.prototype.add = function (pos) { - return new Vec2(pos.x + this.x, pos.y + this.y); - }; - LQRect.prototype.to_cocos_rect = function () { - return new Rect(this.x - this.half_width, this.y - this.half_height, this.width, this.height); - }; - return LQRect; -}()); -exports.LQRect = LQRect; -var LQNativeComponent = /** @class */ (function () { - function LQNativeComponent() { - this.node_btn_arr = []; - } - return LQNativeComponent; -}()); -exports.LQNativeComponent = LQNativeComponent; -var LQShareData = /** @class */ (function () { - function LQShareData(obj) { - if (obj.title) { - this.title = obj.title; - } - if (obj.remote_url) { - this.remote_url = obj.remote_url; - } - if (obj.url_id) { - this.url_id = obj.url_id; - } - if (obj.query) { - this.query = obj.query; - } - if (obj.content) { - this.content = obj.content; - } - if (obj.extra) { - this.extra = obj.extra; - } - if (obj.type) { - this.type = obj.type; - } - } - return LQShareData; -}()); -exports.LQShareData = LQShareData; -var LQPlatformData = /** @class */ (function () { - function LQPlatformData() { - } - return LQPlatformData; -}()); -exports.LQPlatformData = LQPlatformData; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("../Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Key = /** @class */ (function (_super) { + __extends(Key, _super); + function Key() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + return _this; + // update (dt) {} + } + // mapInfo: number[][] = []; + Key.prototype.onLoad = function () { + }; + Key.prototype.start = function () { + }; + Key.prototype.init = function (time) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + this.schedule(this.updateTime, 1); + }; + Key.prototype.updateTime = function () { + this.time--; + this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + if (this.time <= 0) { + this.unschedule(this.updateTime); + this.node.destroy(); + Map_1.default._instance.failLevel(); + // this.node.destroy(); + } + }; + Key = __decorate([ + ccclass + ], Key); + return Key; +}(cc.Component)); +exports.default = Key; cc._RF.pop(); } @@ -12468,13 +11319,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLElBQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDdEIsSUFBTyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUt0QjtJQVFJLGdCQUFZLENBQVMsRUFBRSxDQUFTLEVBQUUsS0FBYSxFQUFFLE1BQWM7UUFDM0QsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDcEMsQ0FBQztJQUVNLHlCQUFRLEdBQWY7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sMEJBQVMsR0FBaEI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sNEJBQVcsR0FBbEI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sNkJBQVksR0FBbkI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sb0JBQUcsR0FBVjtRQUNJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLG9CQUFHLEdBQVYsVUFBVyxHQUFTO1FBQ2hCLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxvQkFBRyxHQUFWLFVBQVcsR0FBUztRQUNoQixPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sOEJBQWEsR0FBcEI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUNMLGFBQUM7QUFBRCxDQWhEQSxBQWdEQyxJQUFBO0FBaERZLHdCQUFNO0FBa0RuQjtJQUFBO1FBQ1csaUJBQVksR0FBVyxFQUFFLENBQUM7SUFNckMsQ0FBQztJQUFELHdCQUFDO0FBQUQsQ0FQQSxBQU9DLElBQUE7QUFQWSw4Q0FBaUI7QUFTOUI7SUFTSSxxQkFBWSxHQUE0SDtRQUNwSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDWCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUNMLGtCQUFDO0FBQUQsQ0FoQ0EsQUFnQ0MsSUFBQTtBQWhDWSxrQ0FBVztBQWtDeEI7SUFBQTtJQWlCQSxDQUFDO0lBQUQscUJBQUM7QUFBRCxDQWpCQSxBQWlCQyxJQUFBO0FBakJZLHdDQUFjIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJUG9zLCBJUmVjdH0gZnJvbSBcIi4vbHFfaW50ZXJmYWNlXCI7XHJcbmltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuaW1wb3J0IFJlY3QgPSBjYy5SZWN0O1xyXG5pbXBvcnQgU3ByaXRlID0gY2MuU3ByaXRlO1xyXG5pbXBvcnQgTGFiZWwgPSBjYy5MYWJlbDtcclxuaW1wb3J0IE5vZGUgPSBjYy5Ob2RlO1xyXG5cclxuZXhwb3J0IGNsYXNzIExRUmVjdCBpbXBsZW1lbnRzIElSZWN0IHtcclxuICAgIHB1YmxpYyB4OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgeTogbnVtYmVyO1xyXG4gICAgcHVibGljIHdpZHRoOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaGFsZl93aWR0aDogbnVtYmVyO1xyXG4gICAgcHVibGljIGhhbGZfaGVpZ2h0OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy54ID0geDtcclxuICAgICAgICB0aGlzLnkgPSB5O1xyXG4gICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcclxuICAgICAgICB0aGlzLmhhbGZfd2lkdGggPSB3aWR0aCAqIDAuNTtcclxuICAgICAgICB0aGlzLmhhbGZfaGVpZ2h0ID0gaGVpZ2h0ICogMC41O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b3BfbGVmdCgpOiBWZWMyIHtcclxuICAgICAgICByZXR1cm4gbmV3IFZlYzIodGhpcy54IC0gdGhpcy5oYWxmX3dpZHRoLCB0aGlzLnkgKyB0aGlzLmhhbGZfaGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9wX3JpZ2h0KCk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiBuZXcgVmVjMih0aGlzLnggKyB0aGlzLmhhbGZfd2lkdGgsIHRoaXMueSArIHRoaXMuaGFsZl9oZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBib3R0b21fbGVmdCgpOiBWZWMyIHtcclxuICAgICAgICByZXR1cm4gbmV3IFZlYzIodGhpcy54IC0gdGhpcy5oYWxmX3dpZHRoLCB0aGlzLnkgLSB0aGlzLmhhbGZfaGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYm90dG9tX3JpZ2h0KCk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiBuZXcgVmVjMih0aGlzLnggKyB0aGlzLmhhbGZfd2lkdGgsIHRoaXMueSAtIHRoaXMuaGFsZl9oZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwb3MoKTogY2MuVmVjMiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBWZWMyKHRoaXMueCwgdGhpcy55KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3ViKHBvczogSVBvcyk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiBuZXcgVmVjMihwb3MueCAtIHRoaXMueCwgcG9zLnkgLSB0aGlzLnkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGQocG9zOiBJUG9zKTogVmVjMiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBWZWMyKHBvcy54ICsgdGhpcy54LCBwb3MueSArIHRoaXMueSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvX2NvY29zX3JlY3QoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZWN0KHRoaXMueCAtIHRoaXMuaGFsZl93aWR0aCwgdGhpcy55IC0gdGhpcy5oYWxmX2hlaWdodCwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTFFOYXRpdmVDb21wb25lbnQge1xyXG4gICAgcHVibGljIG5vZGVfYnRuX2FycjogTm9kZVtdID0gW107XHJcbiAgICBwdWJsaWMgc3ByaXRlX2xvZ28hOiBTcHJpdGU7XHJcbiAgICBwdWJsaWMgc3ByaXRlX2ltZyE6IFNwcml0ZTtcclxuICAgIHB1YmxpYyBzcHJpdGVfYWRfdGlwITogU3ByaXRlO1xyXG4gICAgcHVibGljIGxhYmVsX3RpdGxlITogTGFiZWw7XHJcbiAgICBwdWJsaWMgbGFiZWxfZGVzYyE6IExhYmVsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTFFTaGFyZURhdGEge1xyXG4gICAgcHVibGljIHRpdGxlITogc3RyaW5nO1xyXG4gICAgcHVibGljIHJlbW90ZV91cmwhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdXJsX2lkITogc3RyaW5nO1xyXG4gICAgcHVibGljIHF1ZXJ5ITogc3RyaW5nO1xyXG4gICAgcHVibGljIGNvbnRlbnQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZXh0cmEhOiBhbnk7XHJcbiAgICBwdWJsaWMgdHlwZSE6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihvYmo/OiB7IHRpdGxlPzogc3RyaW5nLCByZW1vdGVfdXJsPzogc3RyaW5nLCB1cmxfaWQ/OiBzdHJpbmcsIHF1ZXJ5Pzogc3RyaW5nLCBjb250ZW50Pzogc3RyaW5nLCBleHRyYT86IGFueSwgdHlwZT86IHN0cmluZyB9KSB7XHJcbiAgICAgICAgaWYgKG9iai50aXRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gb2JqLnRpdGxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLnJlbW90ZV91cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdGVfdXJsID0gb2JqLnJlbW90ZV91cmw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmoudXJsX2lkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsX2lkID0gb2JqLnVybF9pZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai5xdWVyeSkge1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gb2JqLnF1ZXJ5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gb2JqLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmouZXh0cmEpIHtcclxuICAgICAgICAgICAgdGhpcy5leHRyYSA9IG9iai5leHRyYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai50eXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IG9iai50eXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExRUGxhdGZvcm1EYXRhIHtcclxuICAgIHB1YmxpYyBhcHBfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgcHJpbnRfbG9nITogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBzaG93X3NoYXJlX21lbnUhOiBib29sZWFuO1xyXG4gICAgcHVibGljIGtlZXBfc2NyZWVuX29uITogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBiYW5uZXJfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYmFubmVyX3dpZHRoITogbnVtYmVyO1xyXG4gICAgcHVibGljIGludGVyc3RpdGlhbF9pZCE6IHN0cmluZztcclxuICAgIHB1YmxpYyBuYXRpdmVfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdmlkZW9faWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgaXNfdmlkZW9fZnJlZSE6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgaXNfY2FjaGVfdmlkZW8hOiBib29sZWFuO1xyXG4gICAgcHVibGljIGFkX3R5cGUhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYWRfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYWRfa2V5ITogc3RyaW5nO1xyXG4gICAgcHVibGljIHN3aXRjaF9hZCE6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgc2hhcmVfZGF0YV9hcnIhOiBMUVNoYXJlRGF0YVtdO1xyXG59Il19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxLZXkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjtBQUNwQix3RUFBd0U7QUFDeEUsbUJBQW1CO0FBQ25CLGtGQUFrRjtBQUNsRiw4QkFBOEI7QUFDOUIsa0ZBQWtGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbEYsOEJBQWlDO0FBRTNCLElBQUEsS0FBc0IsRUFBRSxDQUFDLFVBQVUsRUFBbEMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFpQixDQUFDO0FBSzFDO0lBQWlDLHVCQUFZO0lBQTdDO1FBQUEscUVBaUNDO1FBL0JHLFVBQUksR0FBVyxFQUFFLENBQUM7O1FBOEJsQixpQkFBaUI7SUFDckIsQ0FBQztJQTdCRyw0QkFBNEI7SUFFNUIsb0JBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxtQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELGtCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBRyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0Qsd0JBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBOUJnQixHQUFHO1FBRHZCLE9BQU87T0FDYSxHQUFHLENBaUN2QjtJQUFELFVBQUM7Q0FqQ0QsQUFpQ0MsQ0FqQ2dDLEVBQUUsQ0FBQyxTQUFTLEdBaUM1QztrQkFqQ29CLEdBQUciLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEtleSBleHRlbmRzIGNjLkNvbXBvbmVudCB7XHJcbiAgICBzdGF0aWMgX2luc3RhbmNlOiBhbnk7XHJcbiAgICB0aW1lOiBudW1iZXIgPSA2MDtcclxuXHJcbiAgICAvLyBtYXBJbmZvOiBudW1iZXJbXVtdID0gW107XHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuXHJcbiAgICB9IFxyXG5cclxuICAgIHN0YXJ0ICgpIHtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHRpbWUpe1xyXG4gICAgICAgIGlmKHRpbWUpIHRoaXMudGltZSA9IHRpbWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnRpbWUudG9TdHJpbmcoKTtcclxuICAgICAgICB0aGlzLnNjaGVkdWxlKHRoaXMudXBkYXRlVGltZSwgMSk7XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICB1cGRhdGVUaW1lKCl7XHJcbiAgICAgICAgdGhpcy50aW1lIC0tO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcInRpbWVcIikuZ2V0Q29tcG9uZW50KGNjLkxhYmVsKS5zdHJpbmcgPSB0aGlzLnRpbWUudG9TdHJpbmcoKTtcclxuICAgICAgICBpZih0aGlzLnRpbWUgPD0gMCl7XHJcbiAgICAgICAgICAgIHRoaXMudW5zY2hlZHVsZSh0aGlzLnVwZGF0ZVRpbWUpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZGVzdHJveSgpO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuZmFpbExldmVsKCk7XHJcbiAgICAgICAgICAgIC8vIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHVwZGF0ZSAoZHQpIHt9XHJcbn1cclxuIl19 //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/Block.js'; + var __filename = 'preview-scripts/assets/Script/prop/Star.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -12482,1225 +11333,78 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'c58deN2u1NGZL8nJwvnu1PR', 'Block'); -// Script/Block.ts +cc._RF.push(module, 'd773dbWW6tAz6F+Z0L3IXUx', 'Star'); +// Script/prop/Star.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PathType = exports.BlockColor = exports.BlockType = void 0; -var lq_collide_system_1 = require("./lq_collide_system/lq_collide_system"); -var Map_1 = require("./Map"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var BlockType; -(function (BlockType) { - /*普通地块 */ - BlockType[BlockType["\u666E\u901A\u5757"] = 0] = "\u666E\u901A\u5757"; - /*起点地块 */ - BlockType[BlockType["\u53E0\u52A0\u5757\u4E0B"] = 1] = "\u53E0\u52A0\u5757\u4E0B"; - /*湿地 */ - BlockType[BlockType["\u94A5\u5319\u5757"] = 2] = "\u94A5\u5319\u5757"; - /*山峰 */ - BlockType[BlockType["\u4E0A\u9501\u5757"] = 3] = "\u4E0A\u9501\u5757"; - /*终点地块 */ - BlockType[BlockType["\u51BB\u7ED3\u5757"] = 4] = "\u51BB\u7ED3\u5757"; - /*息壤 */ - BlockType[BlockType["\u661F\u661F\u5757"] = 5] = "\u661F\u661F\u5757"; - /*加固 */ - BlockType[BlockType["\u70B8\u5F39\u5757"] = 6] = "\u70B8\u5F39\u5757"; - /*加固 */ - BlockType[BlockType["\u6C34\u5E73\u5757"] = 7] = "\u6C34\u5E73\u5757"; - /*加固 */ - BlockType[BlockType["\u5782\u76F4\u5757"] = 8] = "\u5782\u76F4\u5757"; - /*加固 */ - BlockType[BlockType["\u7C98\u5408\u5757"] = 9] = "\u7C98\u5408\u5757"; - /*加固 */ - BlockType[BlockType["\u53E0\u52A0\u5757\u4E0A"] = 10] = "\u53E0\u52A0\u5757\u4E0A"; -})(BlockType = exports.BlockType || (exports.BlockType = {})); -var BlockColor; -(function (BlockColor) { - /*起点地块 */ - BlockColor[BlockColor["\u7D2B\u8272"] = 0] = "\u7D2B\u8272"; - /*湿地 */ - BlockColor[BlockColor["\u9EC4\u8272"] = 1] = "\u9EC4\u8272"; - /*山峰 */ - BlockColor[BlockColor["\u7EFF\u8272"] = 2] = "\u7EFF\u8272"; - /*终点地块 */ - BlockColor[BlockColor["\u84DD\u8272"] = 3] = "\u84DD\u8272"; - /*息壤 */ - BlockColor[BlockColor["\u7C89\u8272"] = 4] = "\u7C89\u8272"; - /*加固 */ - BlockColor[BlockColor["\u6A58\u9EC4\u8272"] = 5] = "\u6A58\u9EC4\u8272"; - /*加固 */ - BlockColor[BlockColor["\u9752\u8272"] = 6] = "\u9752\u8272"; - /*加固 */ - BlockColor[BlockColor["\u767D\u8272"] = 7] = "\u767D\u8272"; - /*加固 */ - BlockColor[BlockColor["\u7EA2\u8272"] = 8] = "\u7EA2\u8272"; - /*加固 */ - BlockColor[BlockColor["\u7070\u8272"] = 9] = "\u7070\u8272"; -})(BlockColor = exports.BlockColor || (exports.BlockColor = {})); -var PathType; -(function (PathType) { - PathType["err"] = "err"; - PathType["up"] = "up"; - PathType["down"] = "down"; - PathType["left"] = "left"; - PathType["right"] = "right"; - PathType["up_left"] = "up_left"; - PathType["up_right"] = "up_right"; - PathType["down_left"] = "down_left"; - PathType["down_right"] = "down_right"; - PathType["left_up"] = "left_up"; - PathType["left_down"] = "left_down"; - PathType["right_up"] = "right_up"; - PathType["right_down"] = "right_down"; -})(PathType = exports.PathType || (exports.PathType = {})); -var Block = /** @class */ (function (_super) { - __extends(Block, _super); - function Block() { - var _this = _super !== null && _super.apply(this, arguments) || this; - // 新增缓存变量 - _this.moveInterval = 0; // 约 60 FPS - _this.lastMoveTime = 0; // 上下两个值来调节跟手,一个是时间轴,一个是距离轴 - _this.maxSpeed = 300; // 最大移动距离 - // private otherCollider: cc.Collider = null; - // @property({ - // tooltip: '碰撞形状,None就是无敌,不参与碰撞', - // type: cc.Enum(BlockType), - // // default: BlockType.Nomal, - // displayName: '碰撞形状' - // }) - _this.type = BlockType.普通块; - _this.color = BlockColor.紫色; - _this.heng = 1; - _this.shu = 1; - _this.ice_SpriteFrame = null; - // LIFE-CYCLE CALLBACKS: - // @property(cc.SpriteAtlas) - // UI: cc.SpriteAtlas = null; - _this.initialTouchOffset = null; - _this.offsetTolerance = 100; // 偏移容忍度; - _this.touchPoint = null; //触摸点 - _this.isTouch = false; //是否触摸 - _this.posX = 0; //地图块的X坐标 - _this.posY = 0; //地图块的Y坐标 - _this.moveLeft = true; //是否可以左移; - _this.moveRight = true; //是否可以右移; - _this.moveUp = true; //是否可以上移; - _this.moveDown = true; //是否可以下移; - _this.moveCorner = 0; //是否碰撞角落 - _this.moveY = 0; //是否可以上下移动; - _this.moveX = 0; //是否可以左右移动; - _this.touchPointX = 0; //触摸点X坐标; - _this.touchPointY = 0; //触摸点Y坐标; - _this.blockId = 0; //方块ID; - _this.level = 0; //叠加方块层数; - _this.pz = false; - _this.over = false; //方块是否失效已消失 - _this.touchDelta = cc.v2(0, 0); - _this.checkCollision = false; - return _this; - } - Block.prototype.onLoad = function () { - this.pz = false; - this.stacking = cc.v2(0, 0); - this.adhesive = cc.v2(0, 0); - this.adhesiveNode = []; - this.collider = this.node.getComponent(cc.PolygonCollider); - this.over = false; - this.checkCollision = false; - }; - Block.prototype.start = function () { - }; - Block.prototype.jsonDeepClone = function (obj) { - return JSON.parse(JSON.stringify(obj)); - }; - //createAd 为是否创建粘合快图片 - Block.prototype.init = function (block_Info, posX, posY, node, createAd) { - var _this = this; - this.block_Info = this.jsonDeepClone(block_Info); - if (node) - this.block_Info.node = node; - this.type = block_Info.type; - this.color = block_Info.color; - this.blockId = block_Info.id; - // if(posX&&posY){ - // this.posX = posX; - // this.posY = posY; - // } - // console.log("方块层级",this.node.zIndex); - this.initColor(); - this.initType(); - this.initBlocks(); - if (this.type != BlockType.叠加块上) { - this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); - this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); - this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); - this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); - this.node['_touchListener'].setSwallowTouches(false); - setTimeout(function () { - if (_this.type == BlockType.粘合块) { - // 计算位置偏移 - var posOffset_1 = cc.v2(_this.node.x - _this.block_Info.node.x, _this.node.y - _this.block_Info.node.y); - if (createAd) { - if (_this.node.zIndex >= _this.block_Info.node.zIndex) - _this.createAdhesive(); - else - _this.block_Info.node.getComponent("Block").createAdhesive(); - } - var targetNames_1 = ['top', 'down', 'left', 'right']; - _this.block_Info.node.children.forEach(function (child) { - if (child instanceof cc.Node && targetNames_1.includes(child.name) && child.getComponent("lq_collide").data_string != "-1") { - var clonedChild = cc.instantiate(child); - clonedChild.getComponent("lq_collide").data_string = "-1"; - clonedChild.parent = _this.node; - // 获取子节点相对于父节点的位置 - var relativePos = child.getPosition(); - // 调整子节点位置以保证相对位置不变 - clonedChild.setPosition(relativePos.x - posOffset_1.x, relativePos.y - posOffset_1.y); - } - }); - _this.adhesive = posOffset_1; - } - }, 100); - var mapInfo = Map_1.default._instance.mapInfo; - for (var i = 0; i < mapInfo.length; i++) { - var blockRect = mapInfo[i].getBoundingBox(); - // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 - var point = cc.v2(this.node.position.x - 5, this.node.position.y + 10); - if (blockRect.contains(point)) { - this.posX = mapInfo[i].getComponent("MapBlock").posX; - this.posY = mapInfo[i].getComponent("MapBlock").posY; - this.setMapBlock(); - this.level = 50 + this.posX - this.posY * 3; - this.node.zIndex = this.level; - this.node.x = mapInfo[i].x + 65; - this.node.y = mapInfo[i].y - 60; - i = 10000; - this.hit = new cc.Node(); - this.hit.addComponent(cc.Sprite); - this.hit.parent = this.node; - var name = "xz_" + this.block_Info.block; - this.hit.getComponent(cc.Sprite).spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; - this.hit.setAnchorPoint(this.node.anchorX, this.node.anchorY); - this.hit.setPosition(13, -11); - if (this.hit.anchorX == 0.5) - this.hit.setPosition(0, -11); - else if (this.hit.anchorX == 0.33) - this.hit.setPosition(-13, -11); - else if (this.hit.anchorX == 0.66) - this.hit.setPosition(2, -9); - // this.hit.opacity = 0; - this.hit.active = false; - break; - } - } - } - }; - //初始化方块类型 - Block.prototype.initType = function () { - var _a; - var posConfig = cc.fx.GameConfig.PROP_INFO[this.block_Info.block]; - switch (this.type) { - case BlockType.炸弹块: - var boom = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - boom.parent = this.node; - boom.setPosition(posConfig.pos1.x, posConfig.pos1.y); - if ((_a = this.block_Info) === null || _a === void 0 ? void 0 : _a.boomTime) - boom.getComponent("Boom").init(this.block_Info.boomTime); - break; - case BlockType.星星块: - var star = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - star.anchorX = this.node.anchorX; - star.anchorY = this.node.anchorY; - star.getComponent(cc.Sprite).spriteFrame = star.getComponent("Star").star_SpriteFrame.getSpriteFrame("star_" + this.block_Info.block); - star.parent = this.node; - star.setPosition(posConfig.pos4.x - 10, posConfig.pos4.y); - case BlockType.钥匙块: - var key = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - key.parent = this.node; - key.setPosition(posConfig.pos1.x, posConfig.pos1.y); - break; - case BlockType.上锁块: - var lock = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - lock.parent = this.node; - lock.setPosition(posConfig.pos1.x, posConfig.pos1.y); - lock.getComponent("Lock").init(this.block_Info.lockTime); - break; - case BlockType.冻结块: - var freeze = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - freeze.parent = this.node; - var name = "ice_" + this.block_Info.block; - var spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; - freeze.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; - var freezeX = posConfig.pos6.x - (this.node.width * (this.node.anchorX - 0.5)); - var freezeY = posConfig.pos6.y + this.node.height / 2; - freeze.setPosition(freezeX, freezeY); - freeze.getComponent("Freeze").init(this.block_Info.freezeTime); - freeze.getChildByName("time").setPosition(posConfig.pos5.x - 10 - freezeX, posConfig.pos5.y - 2 - freezeY); - break; - case BlockType.水平块: - var horizontal = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - horizontal.parent = this.node; - var heng = "heng" + this.heng; - horizontal.getChildByName(heng).active = true; - horizontal.setPosition(posConfig.pos2.x - 3, posConfig.pos2.y); - break; - case BlockType.垂直块: - var vertical = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); - vertical.parent = this.node; - var shu = "shu" + this.shu; - vertical.getChildByName(shu).active = true; - vertical.setPosition(posConfig.pos3.x, posConfig.pos3.y); - break; - case BlockType.叠加块上: - this.moveStack = false; - this.node.off(cc.Node.EventType.TOUCH_START); - this.node.off(cc.Node.EventType.TOUCH_MOVE); - this.node.off(cc.Node.EventType.TOUCH_CANCEL); - this.node.off(cc.Node.EventType.TOUCH_END); - // this.selfBoxColliders = []; - this.node.zIndex = 201; - var pos = this.getStackingPos(); - this.node.setPosition(this.node.x + pos.x, this.node.y + pos.y); - this.stacking = cc.v2(this.node.x - this.block_Info.node.x, this.node.y - this.block_Info.node.y); - this.block_Info.node.getComponent("Block").block_Info.node = this.node; - this.node.scaleX *= 0.7; - this.node.scaleY *= 0.7; - for (var i = 0; i < this.node.children.length; i++) { - if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") - this.node.children[i].active = false; - } - break; - } - }; - //初始化方块颜色 - Block.prototype.initColor = function () { - var name = this.color + "color" + this.block_Info.block; - var number = Math.floor((this.color - 1) / 2); - var blockSpriteFrame = Map_1.default._instance.Block_Color[number]._spriteFrames; - var spriteFrame = blockSpriteFrame[name]; - // if(this.type == BlockType.冻结块){ - // name = "ice_"+this.block_Info.block; - // spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; - // } - this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }; - //创建粘合快连接处 - Block.prototype.createAdhesive = function () { - var box = []; - for (var i = 0; i < this.allBlocks.length; i++) { - box.push(cc.v2(this.allBlocks[i].x + this.posX, this.allBlocks[i].y + this.posY)); - } - var otherBox = []; - for (var i = 0; i < this.block_Info.node.getComponent("Block").allBlocks.length; i++) { - otherBox.push(cc.v2(this.block_Info.node.getComponent("Block").allBlocks[i].x + this.block_Info.node.getComponent("Block").posX, this.block_Info.node.getComponent("Block").allBlocks[i].y + this.block_Info.node.getComponent("Block").posY)); - } - for (var k = 0; k < box.length; k++) { - for (var j = 0; j < otherBox.length; j++) { - if ((box[k].x == otherBox[j].x + 1 || box[k].x == otherBox[j].x - 1) && (box[k].y == otherBox[j].y)) { - //在X轴 相邻 - var left = box[k].x == otherBox[j].x + 1 ? "left" : "right"; - this.addAdhesive(left, box[k]); - otherBox.splice(j, 1); - j--; // 调整索引 - if (j < 0) - break; - } - if ((box[k].y == otherBox[j].y + 1 || box[k].y == otherBox[j].y - 1) && (box[k].x == otherBox[j].x)) { - //在Y轴 相邻 - var down = box[k].y == otherBox[j].y + 1 ? "down" : "up"; - this.addAdhesive(down, box[k]); - otherBox.splice(j, 1); - j--; // 调整索引 - if (j < 0) - break; - } - } - } - // let adhesive = cc.instantiate(MapConroler._instance.Block_Prop[this.type]); - }; - //具体添加粘合快锁链方法 - Block.prototype.addAdhesive = function (diraction, box) { - var pos = cc.v2(box.x - this.posX, box.y - this.posY); - var adhesive = cc.instantiate(Map_1.default._instance.Block_Prop[10]); - adhesive.parent = this.node.parent.getChildByName("Adhesive"); - // adhesive.parent = this.node.getChildByName("adhesive"); - adhesive.setPosition(120 * pos.x - 65 + this.node.x, 120 * pos.y + 60 + this.node.y); - if (diraction == "left" || diraction == "right") { - adhesive.getChildByName("heng").active = true; - adhesive.getChildByName("heng").x = -60; - if (diraction == "right") - adhesive.getChildByName("heng").x = 60; - adhesive.getChildByName("heng").x += 9; - adhesive.getChildByName("heng").y += 7; - } - else { - adhesive.getChildByName("shu").active = true; - adhesive.getChildByName("shu").y = -60; - if (diraction == "up") - adhesive.getChildByName("shu").y = 60; - } - adhesive.getComponent("Adhesive").init(this.node); - this.adhesiveNode.push(adhesive); - }; - Block.prototype.removeAdhesive = function () { - if (this.adhesiveNode.length > 0) { - for (var i = 0; i < this.adhesiveNode.length; i++) { - var adhesive = this.adhesiveNode[i]; - adhesive.getComponent("Adhesive").remove(); - } - } - }; - //方块落点 - Block.prototype.blockFall = function (point) { - if (this.over == true) - return; - // // 假设 MapConroler 有网格信息,这里简单示例 - var mapWidth = Map_1.default._instance.mapWidth; - var mapHeight = Map_1.default._instance.mapHeight; - var cellSize = 120; // 每个格子的大小,根据实际情况调整 - // 计算点所在的网格坐标 - var gridX = Math.floor((point.x + (mapWidth * cellSize / 2)) / cellSize); - var gridY = Math.floor((point.y + (mapHeight * cellSize / 2)) / cellSize); - // 检查网格坐标是否越界 - if (gridX >= 0 && gridX < mapWidth && gridY >= 0 && gridY < mapHeight) { - var mapBlock = Map_1.default._instance.mapBlocksWall[gridX][gridY]; - var blockRect = mapBlock.getBoundingBox(); - // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 - if (blockRect.contains(point)) { - //寻找落点 - this.removeMapBlock(); - this.posX = mapBlock.getComponent("MapBlock").posX; - this.posY = mapBlock.getComponent("MapBlock").posY; - this.setMapBlock(); - this.level = 50 + this.posX - this.posY * 3; - this.node.zIndex = this.level; - // console.log("方块层级",this.node.zIndex); - this.node.x = mapBlock.x + 65; - this.node.y = mapBlock.y - 60; - if (this.type == 9) { - if (this.block_Info.node) { - this.block_Info.node.x = this.node.x - this.adhesive.x; - this.block_Info.node.y = this.node.y - this.adhesive.y; - } - } - else if (this.type == 1) { - this.block_Info.node.getComponent("Block").moveStack = false; - this.block_Info.node.x = this.node.x + this.block_Info.node.getComponent("Block").stacking.x; - this.block_Info.node.y = this.node.y + this.block_Info.node.getComponent("Block").stacking.y; - } - } - } - var jg = Map_1.default._instance.checkPass(this.node, this.allBlocks); - if (jg >= 0) { - this.over = true; - Map_1.default._instance.changeState(); - this.removeBoxCollider(); - this.removeMapBlock(); - this.removeAction(jg); - } - else { - Map_1.default._instance.upDoor(this.color); - this.setVibrate("medium", 1); - //@ts-ignore - } - }; - Block.prototype.removeBoxCollider = function () { - for (var i = 0; i < this.node.children.length; i++) { - if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") - this.node.children[i].destroy(); - } - }; - Block.prototype.removeAction = function (diraction) { - var _this = this; - this.node.off(cc.Node.EventType.TOUCH_START); - this.node.off(cc.Node.EventType.TOUCH_MOVE); - this.node.off(cc.Node.EventType.TOUCH_CANCEL); - this.node.off(cc.Node.EventType.TOUCH_END); - this.node.addComponent(cc.Mask); - var self = this; - var pos = this.node.getPosition(); - if (this.type == BlockType.叠加块下) { - var scaleX = this.node.scaleX; - var scaleY = this.node.scaleY; - this.block_Info.node.getComponent("Block").restoreNomal(this.posX, this.posY, true); - cc.tween(this.block_Info.node) - .to(0.3, { position: pos, scaleX: scaleX > 0 ? 1 : -1, scaleY: scaleY > 0 ? 1 : -1 }) - .start(); - } - else if (this.type == BlockType.粘合块) { - this.removeAdhesive(); - this.block_Info.node.getComponent("Block").removeAdhesive(); - this.block_Info.node.getComponent("Block").restoreNomal(this.block_Info.node.getComponent("Block").posX, this.block_Info.node.getComponent("Block").posY, false); - this.block_Info.node = null; - } - else if (this.type == BlockType.炸弹块) { - this.node.getChildByName("boom").getComponent("Boom").stopBoom(); - } - var time = 0.33; - // this.node.zIndex = 0; - var width = Math.floor(this.node.width / 120); - var height = Math.floor(this.node.height / 120); - setTimeout(function () { - cc.fx.AudioManager._instance.playEffect("xiaochu", null); - }, 300); - this.setVibrate("light", 3); - if (diraction == 0) { - time = 0.33 * height; - // time = 0.99; - for (var i = 0; i < this.node.children.length; i++) { - cc.tween(this.node.children[i]) - .to(time, { y: this.node.children[i].y + this.node.children[0].height }) - .start(); - } - } - else if (diraction == 1) { - time = 0.33 * height; - // time = 0.99 - for (var i = 0; i < this.node.children.length; i++) { - cc.tween(this.node.children[i]) - .to(time, { y: this.node.children[i].y - this.node.children[0].height }) - .start(); - } - } - else if (diraction == 2) { - time = 0.33 * width; - // time = 0.99 - for (var i = 0; i < this.node.children.length; i++) { - cc.tween(this.node.children[i]) - .to(time, { x: this.node.children[i].x - this.node.children[0].width }) - .start(); - } - } - else if (diraction == 3) { - time = 0.33 * width; - // time = 0.99 - for (var i = 0; i < this.node.children.length; i++) { - cc.tween(this.node.children[i]) - .to(time, { x: this.node.children[i].x + this.node.children[0].width }) - .start(); - } - } - setTimeout(function () { - var tempColor = _this.color; - setTimeout(function () { - Map_1.default._instance.upDoor(tempColor); - }, 250); - Map_1.default._instance.nextLevel(); - _this.node.active = false; - _this.node.removeFromParent(); - // this.node.active = false; - // this.node.removeFromParent(); - }, time * 1000); - }; - Block.prototype.touchStart = function (event) { - if (this.over || Map_1.default._instance.gameOver) - return; - // 返回世界坐标 - var touchLoc = event.getLocation(); - // https://docs.cocos.com/creator/api/zh/classes/Intersection.html 检测辅助类 - // let pos = this.collider.world.points - if (!this.collider.world) { - return; - } - // 判断触摸点是否在多边形内 - if (cc.Intersection.pointInPolygon(touchLoc, this.collider.world.points)) { - if (Map_1.default._instance.hammer) { - this.eliminate(); - this.isTouch = false; - Map_1.default._instance.hammerMask.active = false; - Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("destroyBtn").getComponent("btnControl").setTouch(true); - return false; - } - if (this.type != BlockType.上锁块 && this.type != BlockType.冻结块) { - Map_1.default._instance.startUpdate(); - cc.fx.AudioManager._instance.playEffect("hit", null); - this.node.zIndex = 200; - if (this.type == 9) { - if (this.block_Info.node) { - this.block_Info.node.zIndex = 200; - this.block_Info.node.getComponent("Block").hit.active = true; - Map_1.default._instance.downDoor(this.block_Info.node.getComponent("Block").color, this.block_Info.node.getComponent("Block").type); - } - } - else if (this.type == 1) { - this.block_Info.node.getComponent("Block").moveStack = true; - } - var touchPoint = event.getLocation(); - var local = this.node.parent.convertToNodeSpaceAR(touchPoint); - this.touchPointX = local.x; - this.touchPointY = local.y; - this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; - this.isTouch = true; - this.moveCorner = 0; - this.relative_Position = cc.v2(this.node.x - local.x, this.node.y - local.y); - Map_1.default._instance.changeRiseFall(this.color, true); - Map_1.default._instance.downDoor(this.color, this.type); - this.setVibrate("light", 1); - if (this.hit) - this.hit.active = true; - return true; - } - else { - this.isTouch = false; - return false; - } - } - else { - this.isTouch = false; - return false; - } - }; - Block.prototype.touchEnd = function (event) { - if (Map_1.default._instance.gameOver) - return; - if (this.isTouch) { - this.touchDelta = cc.v2(0, 0); - this.checkCollision = false; - Map_1.default._instance.changeRiseFall(this.color, false); - cc.fx.AudioManager._instance.playEffect("down", null); - Map_1.default._instance.removeOneBlock(); - this.isTouch = false; - this.node.zIndex = this.level; - this.hit.active = false; - if (this.type == 9) { - if (this.block_Info.node) { - this.block_Info.node.getComponent("Block").hit.active = false; - // this.block_Info.node.getComponent("Block").isTouch = false; - } - } - this.touchPoint = event.getLocation(); - var local = cc.v2(this.node.x - 50, this.node.y + 50); - if (this.type != 10) { - //@ts-ignore - this.blockFall(local); - if (this.type == 9) { - if (this.block_Info.node) { - var localTemp = cc.v2(this.block_Info.node.x - 50, this.block_Info.node.y + 50); - this.block_Info.node.getComponent("Block").blockFall(localTemp); - } - } - } - this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; - } - }; - Block.prototype.touchMove = function (event) { - if (Map_1.default._instance.gameOver) - return; - // const currentTime = Date.now(); - // // 如果距离上次移动时间小于间隔时间,直接返回 - // if (currentTime - this.lastMoveTime < this.moveInterval) { - // return; - // } - // this.lastMoveTime = currentTime; - if (this.isTouch) { - var delta = event.getDelta(); - var touchPoint = event.getLocation(); - var local = this.node.parent.convertToNodeSpaceAR(touchPoint); - this.touchPointX = local.x; - this.touchPointY = local.y; - delta.x = this.touchPointX - this.node.x + this.relative_Position.x; - delta.y = this.touchPointY - this.node.y + this.relative_Position.y; - // 限制移动速度 - this.touchPointX = local.x; - this.touchPointY = local.y; - delta.x = this.touchPointX - this.node.x + this.relative_Position.x; - delta.y = this.touchPointY - this.node.y + this.relative_Position.y; - // 限制移动速度 - delta.x = Math.max(-this.maxSpeed, Math.min(this.maxSpeed, delta.x)); - delta.y = Math.max(-this.maxSpeed, Math.min(this.maxSpeed, delta.y)); - // 记录触摸移动的增量 - this.touchDelta = delta; - } - }; - //超出限制判断 - Block.prototype.exceeds = function (stepx, stepy) { - }; - Block.prototype.eliminate = function () { - var _this = this; - //锤子状态消失 - Map_1.default._instance.pause = true; - Map_1.default._instance.hammer = false; - //如果方块是有特殊状态,则特殊处理 - if (this.type == BlockType.冻结块) { - this.node.getChildByName("freeze").getComponent("Freeze").reduce(2); - return; - } - else if (this.type == BlockType.上锁块) { - this.node.getChildByName("lock").getComponent("Lock").reduce(); - return; - } - //如果方块可以消除 - Map_1.default._instance.blockNum -= 1; - Map_1.default._instance.special_Treatment(this.node); - var self = this; - this.removeMapBlock(); - setTimeout(function () { - var pos = _this.node.getPosition(); - if (self.type == BlockType.叠加块下) { - var scaleX = self.node.scaleX; - var scaleY = self.node.scaleY; - self.block_Info.node.getComponent("Block").restoreNomal(_this.posX, _this.posY, true); - cc.tween(self.block_Info.node) - .to(0.1, { position: pos, scaleX: scaleX > 0 ? 1 : -1, scaleY: scaleY > 0 ? 1 : -1 }) - .start(); - } - else if (self.type == BlockType.粘合块) { - self.block_Info.node.getComponent("Block").restoreNomal(self.block_Info.node.getComponent("Block").posX, self.block_Info.node.getComponent("Block").posY, false); - } - else if (self.type == BlockType.炸弹块) { - _this.node.getChildByName("boom").getComponent("Boom").stopBoom(); - } - Map_1.default._instance.nextLevel(); - _this.node.active = false; - _this.node.removeFromParent(); - }, 200); - }; - Block.prototype.setVibrate = function (type, count) { - // return; - if (!cc.fx.GameConfig.GM_INFO.vibrateOpen) { - return; - } - if (count == 1) { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 - //@ts-ignore - wx.vibrateShort({ - type: type, - success: function () { - }, - fail: function (err) { - } - }); - } - else { - } - return; - } - var time = 150; - for (var i = 0; i < 4; i++) { - setTimeout(function () { - //@ts-ignore - if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 - //@ts-ignore - wx.vibrateShort({ - type: type, - success: function () { - }, - fail: function (err) { - } - }); - } - else { - } - }, time * i); - } - }; - Block.prototype.setMoveCorner = function (diraction) { - return; - }; - Block.prototype.cmupdate = function () { - var cm = cc.director.getCollisionManager(); - cm.update(); - }; - Block.prototype.restoreNomal = function (posX, posY, type) { - this.type = 0; - this.block_Info.node = null; - this.moveStack = false; - this.posX = posX; - this.posY = posY; - this.setMapBlock(); - this.level = 50 + this.posX - this.posY * 3; - this.node.zIndex = this.level; - var j = 1000; - for (var i = 0; i < this.node.children.length; i++) { - if (this.node.children[i].name == "New Node") { - j = i; - } - if (i > j) { - this.node.children[i].active = false; - } - } - if (type) { - for (var i = 0; i < this.node.children.length; i++) { - if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") - this.node.children[i].active = true; - } - } - this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); - this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); - this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); - this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); - this.node['_touchListener'].setSwallowTouches(false); - this.hit = new cc.Node(); - this.hit.addComponent(cc.Sprite); - this.hit.parent = this.node; - var name = "xz_" + this.block_Info.block; - this.hit.getComponent(cc.Sprite).spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; - this.hit.setAnchorPoint(this.node.anchorX, this.node.anchorY); - this.hit.setPosition(13, -11); - if (this.hit.anchorX == 0.5) - this.hit.setPosition(0, -11); - else if (this.hit.anchorX == 0.33) - this.hit.setPosition(-13, -11); - else if (this.hit.anchorX == 0.66) - this.hit.setPosition(2, -9); - this.hit.active = false; - }; - //冻结状态恢复为常规状态 - Block.prototype.resetFreeze = function () { - this.type = 0; - this.block_Info.type = 0; - var name = this.color + "color" + this.block_Info.block; - var number = Math.floor((this.color - 1) / 2); - var blockSpriteFrame = Map_1.default._instance.Block_Color[number]._spriteFrames; - var spriteFrame = blockSpriteFrame[name]; - this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; - }; - Block.prototype.initBlocks = function () { - this.allBlocks = []; - switch (this.block_Info.block) { - case 0: - var pos = cc.v2(0, 0); - this.allBlocks = [pos]; - break; - case 1: - var pos1 = cc.v2(0, 0); - var pos2 = cc.v2(-1, 0); - this.allBlocks = [pos1, pos2]; - break; - case 2: - var pos3 = cc.v2(0, 0); - var pos4 = cc.v2(0, 1); - this.allBlocks = [pos3, pos4]; - break; - case 3: - var pos5 = cc.v2(0, 0); - var pos6 = cc.v2(-1, 0); - var pos7 = cc.v2(-2, 0); - this.allBlocks = [pos5, pos6, pos7]; - break; - case 4: - var pos8 = cc.v2(0, 0); - var pos9 = cc.v2(0, 1); - var pos10 = cc.v2(0, 2); - this.allBlocks = [pos8, pos9, pos10]; - break; - case 5: - var pos11 = cc.v2(0, 0); - var pos12 = cc.v2(-1, 0); - var pos13 = cc.v2(-1, 1); - var pos14 = cc.v2(0, 1); - this.allBlocks = [pos11, pos12, pos13, pos14]; - break; - case 6: - var pos15 = cc.v2(0, 0); - var pos16 = cc.v2(0, 1); - var pos17 = cc.v2(0, 2); - var pos18 = cc.v2(-1, 2); - this.allBlocks = [pos15, pos16, pos17, pos18]; - break; - case 7: - var pos19 = cc.v2(0, 0); - var pos20 = cc.v2(0, 1); - var pos21 = cc.v2(-1, 1); - var pos22 = cc.v2(-2, 1); - this.allBlocks = [pos19, pos20, pos21, pos22]; - break; - case 8: - var pos23 = cc.v2(0, 0); - var pos24 = cc.v2(-1, 0); - var pos25 = cc.v2(-1, 1); - var pos26 = cc.v2(-1, 2); - this.allBlocks = [pos23, pos24, pos25, pos26]; - break; - case 9: - var pos27 = cc.v2(0, 0); - var pos28 = cc.v2(-1, 0); - var pos29 = cc.v2(-2, 0); - var pos30 = cc.v2(0, 1); - this.allBlocks = [pos27, pos28, pos29, pos30]; - break; - case 10: - var pos31 = cc.v2(0, 0); - var pos32 = cc.v2(1, 2); - var pos33 = cc.v2(0, 1); - var pos34 = cc.v2(0, 2); - this.allBlocks = [pos31, pos32, pos33, pos34]; - break; - case 11: - var pos35 = cc.v2(0, 0); - var pos36 = cc.v2(2, 1); - var pos37 = cc.v2(1, 1); - var pos38 = cc.v2(0, 1); - this.allBlocks = [pos35, pos36, pos37, pos38]; - break; - case 12: - var pos39 = cc.v2(0, 0); - var pos40 = cc.v2(0, 1); - var pos41 = cc.v2(0, 2); - var pos42 = cc.v2(-1, 0); - this.allBlocks = [pos39, pos40, pos41, pos42]; - break; - case 13: - var pos43 = cc.v2(0, 0); - var pos44 = cc.v2(-1, 0); - var pos45 = cc.v2(-2, 0); - var pos46 = cc.v2(-2, 1); - this.allBlocks = [pos43, pos44, pos45, pos46]; - break; - case 14: - var pos47 = cc.v2(0, 0); - var pos48 = cc.v2(0, 1); - var pos49 = cc.v2(-1, 1); - var pos50 = cc.v2(1, 1); - this.allBlocks = [pos47, pos48, pos49, pos50]; - break; - case 15: - var pos51 = cc.v2(0, 0); - var pos52 = cc.v2(-1, 0); - var pos53 = cc.v2(-2, 0); - var pos54 = cc.v2(-1, 1); - this.allBlocks = [pos51, pos52, pos53, pos54]; - break; - case 16: - var pos55 = cc.v2(0, 0); - var pos56 = cc.v2(1, 1); - var pos57 = cc.v2(0, 1); - var pos58 = cc.v2(0, 2); - this.allBlocks = [pos55, pos56, pos57, pos58]; - break; - case 17: - var pos59 = cc.v2(0, 0); - var pos60 = cc.v2(0, 1); - var pos61 = cc.v2(0, 2); - var pos62 = cc.v2(-1, 1); - this.allBlocks = [pos59, pos60, pos61, pos62]; - break; - case 18: - var pos63 = cc.v2(0, 0); - var pos64 = cc.v2(0, 1); - var pos65 = cc.v2(0, 2); - var pos66 = cc.v2(1, 1); - var pos67 = cc.v2(-1, 1); - this.allBlocks = [pos63, pos64, pos65, pos66, pos67]; - break; - case 19: - var pos68 = cc.v2(0, 0); - var pos69 = cc.v2(0, 1); - var pos70 = cc.v2(-1, 0); - this.allBlocks = [pos68, pos69, pos70]; - break; - case 20: - var pos71 = cc.v2(0, 0); - var pos72 = cc.v2(-1, 0); - var pos73 = cc.v2(-1, 1); - this.allBlocks = [pos71, pos72, pos73]; - break; - case 21: - var pos74 = cc.v2(0, 0); - var pos75 = cc.v2(0, 1); - var pos76 = cc.v2(1, 1); - this.allBlocks = [pos74, pos75, pos76]; - break; - case 22: - var pos77 = cc.v2(0, 0); - var pos78 = cc.v2(0, 1); - var pos79 = cc.v2(-1, 1); - this.allBlocks = [pos77, pos78, pos79]; - break; - } - }; - Block.prototype.setMapBlock = function () { - if (this.allBlocks.length > 0) { - for (var i = 0; i < this.allBlocks.length; i++) { - var pos = this.allBlocks[i]; - var x = this.posX + pos.x; - var y = this.posY + pos.y; - Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock").block_Id = this.node.uuid; - } - } - }; - Block.prototype.removeMapBlock = function () { - if (this.posX == 0 && this.posY == 0) { - return; - } - if (this.allBlocks) { - if (this.allBlocks.length > 0) { - for (var i = 0; i < this.allBlocks.length; i++) { - if (this.allBlocks[i]) { - var pos = this.allBlocks[i]; - var x = this.posX + pos.x; - var y = this.posY + pos.y; - if (Map_1.default._instance.mapBlocksWall[x][y]) { - if (Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock")) - Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock").block_Id = ""; - } - } - } - } - } - }; - //叠加块,位置差异,校准位置 - Block.prototype.getStackingPos = function () { - switch (this.node.name) { - case "block0": - return cc.v2(-21, 22); - case "block1": - return cc.v2(-36, 23); - case "block2": - return cc.v2(-18, 40); - case "block3": - return cc.v2(-59, 25); - case "block4": - return cc.v2(-19, 57); - case "block5": - return cc.v2(-36, 38); - case "block6": - return cc.v2(-19, 97); - case "block7": - return cc.v2(-19, 61); - case "block8": - return cc.v2(-55, 24); - case "block9": - return cc.v2(-20, 24); - case "block10": - return cc.v2(-17, 96); - case "block11": - return cc.v2(-17, 58); - case "block12": - return cc.v2(-20, 24); - case "block13": - return cc.v2(-92, 25); - case "block14": - return cc.v2(-18, 60); - case "block15": - return cc.v2(-58, 24); - case "block16": - return cc.v2(-20, 60); - case "block17": - return cc.v2(-17, 60); - case "block18": - return cc.v2(-17, 60); - case "block19": - return cc.v2(-20, 24); - case "block20": - return cc.v2(-54, 25); - case "block21": - return cc.v2(-17, 60); - case "block22": - return cc.v2(-17, 60); - } - }; - Block.prototype.update = function (dt) { - if (this.isTouch && this.touchDelta.mag() > 0) { - //this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; - var delta = this.touchDelta; - var newX = this.node.x + delta.x; - var newY = this.node.y + delta.y; - var distance = Math.sqrt(Math.pow(newX - this.node.x, 2) + Math.pow(newY - this.node.y, 2)); - var mag = Math.round(delta.mag()); - if (this.moveY === 1) { - if (this.touchPointY <= this.node.y + this.node.height / 2) { - this.moveY = 0; - } - } - else if (this.moveY === -1) { - if (this.touchPointY >= this.node.y + this.node.height / 2) { - this.moveY = 0; - } - } - if (this.moveX === 1) { - if (this.touchPointX <= this.node.x - this.node.width / 2) { - this.moveX = 0; - } - else { - } - } - else if (this.moveX === -1) { - if (this.touchPointX >= this.node.x - this.node.width / 2) { - this.moveX = 0; - } - else { - } - } - if (distance > 100) { - mag = 10; - var speedScale = 0.5; - delta.x *= speedScale; - delta.y *= speedScale; - } - else { - if (mag > 5) { - mag = Math.floor(mag / 5); - } - } - // mag = 2; - var stepx = delta.x / mag; - var stepy = delta.y / mag; - for (var index = 0; index < mag; index++) { - this.moveCorner = 0; - var tempX = this.node.x + stepx; - var tempY = this.node.y + stepy; - if (!this.checkCollision) { - if (this.type !== 8 && this.type !== 10) { - this.node.x = Math.round(tempX); - } - if (this.type !== 7 && this.type !== 10) { - this.node.y = Math.round(tempY); - } - } - else { - var isXMain = Math.abs(stepx) > Math.abs(stepy); - if (isXMain) { - if (this.node.x > tempX) { - if (this.moveLeft && this.moveX === 0 && this.type !== 8 && this.type !== 10) { - this.node.x = tempX; - } - if (this.moveX !== 0) { - this.moveX = 0; - } - } - else if (this.node.x <= tempX) { - if (this.moveRight && this.moveX === 0 && this.type !== 8 && this.type !== 10) { - this.node.x = tempX; - } - if (this.moveX !== 0) { - this.moveX = 0; - } - } - if (this.node.y > tempY) { - if (this.moveDown && this.moveY === 0 && this.type !== 7 && this.type !== 10) { - this.node.y = tempY; - } - if (this.moveY !== 0) { - this.moveY = 0; - } - } - else if (this.node.y <= tempY) { - if (this.moveUp && this.moveY === 0 && this.type !== 7 && this.type !== 10) { - this.node.y = tempY; - } - if (this.moveY !== 0) { - this.moveY = 0; - } - } - } - else { - if (this.node.y > tempY) { - if (this.moveDown && this.moveY === 0 && this.type !== 7 && this.type !== 10) { - this.node.y = tempY; - } - if (this.moveY !== 0) { - this.moveY = 0; - } - } - else if (this.node.y <= tempY) { - if (this.moveUp && this.moveY === 0 && this.type !== 7 && this.type !== 10) { - this.node.y = tempY; - } - if (this.moveY !== 0) { - this.moveY = 0; - } - } - if (this.node.x > tempX) { - if (this.moveLeft && this.moveX === 0 && this.type !== 8 && this.type !== 10) { - this.node.x = tempX; - } - if (this.moveX !== 0) { - this.moveX = 0; - } - } - else if (this.node.x <= tempX) { - if (this.moveRight && this.moveX === 0 && this.type !== 8 && this.type !== 10) { - this.node.x = tempX; - } - if (this.moveX !== 0) { - this.moveX = 0; - } - } - } - } - lq_collide_system_1.LQCollideSystem.update_logic(dt); - } - // 移动完成后重置触摸增量 - this.touchDelta = cc.v2(0, 0); - } - if (this.type == BlockType.叠加块上 && this.moveStack == true) { - if (this.stacking.x != 0 || this.stacking.y != 0) { - this.node.x = this.block_Info.node.x + this.stacking.x; - this.node.y = this.block_Info.node.y + this.stacking.y; - } - } - if (this.block_Info) { - if (this.block_Info.node != null) { - if (this.type == BlockType.粘合块) { - if (this.adhesive.x != 0 && this.adhesive.y != 0 && this.block_Info.node != null) { - this.block_Info.node.x = this.node.x - this.adhesive.x; - this.block_Info.node.y = this.node.y - this.adhesive.y; - } - if (this.isTouch == true && this.block_Info.node.getComponent("Block").isTouch == false) { - lq_collide_system_1.LQCollideSystem.update_logic(dt); - this.block_Info.node.x = this.node.x - this.adhesive.x; - this.block_Info.node.y = this.node.y - this.adhesive.y; - } - } - } - } - }; - __decorate([ - property({ - tooltip: '碰撞形状,None就是无敌,不参与碰撞', - type: cc.Enum(BlockType), - }) - ], Block.prototype, "type", void 0); - __decorate([ - property({ - tooltip: '碰撞形状,None就是无敌,不参与碰撞', - type: cc.Enum(BlockColor), - }) - ], Block.prototype, "color", void 0); - __decorate([ - property({ - tooltip: '横向长度', - type: cc.Integer, - }) - ], Block.prototype, "heng", void 0); - __decorate([ - property({ - tooltip: '竖向长度', - type: cc.Integer, - }) - ], Block.prototype, "shu", void 0); - __decorate([ - property(cc.SpriteAtlas) - ], Block.prototype, "ice_SpriteFrame", void 0); - Block = __decorate([ - ccclass - ], Block); - return Block; -}(cc.Component)); -exports.default = Block; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("../Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Star = /** @class */ (function (_super) { + __extends(Star, _super); + function Star() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + // mapInfo: number[][] = []; + _this.star_SpriteFrame = null; + return _this; + // update (dt) {} + } + Star.prototype.onLoad = function () { + }; + Star.prototype.start = function () { + }; + Star.prototype.init = function (time) { + if (time) + this.time = time; + this.node.getChildByName("time").active = true; + this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + this.schedule(this.updateTime, 1); + }; + Star.prototype.updateTime = function () { + this.time--; + this.node.getChildByName("time").getComponent(cc.Label).string = this.time.toString(); + if (this.time <= 0) { + this.unschedule(this.updateTime); + this.node.destroy(); + Map_1.default._instance.failLevel(); + // this.node.destroy(); + } + }; + __decorate([ + property(cc.SpriteAtlas) + ], Star.prototype, "star_SpriteFrame", void 0); + Star = __decorate([ + ccclass + ], Star); + return Star; +}(cc.Component)); +exports.default = Star; cc._RF.pop(); } @@ -13713,7 +11417,7 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkVBQXdFO0FBQ3hFLDZCQUFnQztBQUUxQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUN6QyxJQUFZLFNBdUJaO0FBdkJBLFdBQVksU0FBUztJQUNsQixTQUFTO0lBQ1QscUVBQVMsQ0FBQTtJQUNULFNBQVM7SUFDVCxpRkFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULFNBQVM7SUFDVCxxRUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULE9BQU87SUFDUCxxRUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULE9BQU87SUFDUCxrRkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQXZCWSxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQXVCckI7QUFFRCxJQUFZLFVBc0JYO0FBdEJELFdBQVksVUFBVTtJQUVsQixTQUFTO0lBQ1QsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLDJEQUFRLENBQUE7SUFDUixTQUFTO0lBQ1QsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLHVFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLDJEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AsMkRBQVEsQ0FBQTtBQUNaLENBQUMsRUF0QlcsVUFBVSxHQUFWLGtCQUFV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b0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBRXJFLFNBQVM7WUFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBRXJFLFNBQVM7WUFDVCxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFD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QUFDO2dCQUNGLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixNQUFNO1lBQ1YsS0FBSyxDQUFDO2dCQUNGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssRUFBRTtnQkFDSCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssRUFBRTtnQkFDSCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztn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QUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFD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LElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjt3QkFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTs0QkFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjtxQkFDSjt5QkFBTTt3QkFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTs0QkFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjt3QkFFRCxJQUFJLElBQUksQ0FBQyxJ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d0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3FCQUMxRDtpQkFDSjthQUNSO1NBQ0o7SUFFTCxDQUFDO0lBcHBDRDtRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzNCLENBQUM7dUNBQzhCO0lBTWhDO1FBSkMsUUFBUSxDQUFDO1lBQ04sT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDNUIsQ0FBQzt3Q0FDZ0M7SUFNbEM7UUFKQyxRQUFRLENBQUM7WUFDTixPQUFPLEVBQUUsTUFBTTtZQUNmLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTztTQUNuQixDQUFDO3VDQUNlO0lBTWpCO1FBSkMsUUFBUSxDQUFDO1lBQ04sT0FBTyxFQUFFLE1BQU07WUFDZixJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU87U0FDbkIsQ0FBQztzQ0FDYztJQUdoQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO2tEQUNjO0lBeEN0QixLQUFLO1FBRHpCLE9BQU87T0FDYSxLQUFLLENBd3FDekI7SUFBRCxZQUFDO0NBeHFDRCxBQXdxQ0MsQ0F4cUNrQyxFQUFFLENBQUMsU0FBUyxHQXdxQzlDO2tCQXhxQ29CLEtBQUsiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29sbGlzaW9uRGV0ZWN0aW9uIGZyb20gXCIuL0NvbGxpc2lvbkRldGVjdGlvblwiO1xyXG5pbXBvcnQgeyBMUUNvbGxpZGVTeXN0ZW0gfSBmcm9tIFwiLi9scV9jb2xsaWRlX3N5c3RlbS9scV9jb2xsaWRlX3N5c3RlbVwiO1xyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuIGV4cG9ydCBlbnVtIEJsb2NrVHlwZXtcclxuICAgIC8q5pmu6YCa5Zyw5Z2XICovXHJcbiAgICBcIuaZrumAmuWdl1wiID0gMCwgIFxyXG4gICAgLyrotbfngrnlnLDlnZcgKi9cclxuICAgIFwi5Y+g5Yqg5Z2X5LiLXCIgPSAxLCAgXHJcbiAgICAvKua5v+WcsCAqL1xyXG4gICAgXCLpkqXljJnlnZdcIiA9IDIsICBcclxuICAgIC8q5bGx5bOwICovXHJcbiAgICBcIuS4iumUgeWdl1wiID0gMywgIFxyXG4gICAgLyrnu4jngrnlnLDlnZcgKi9cclxuICAgIFwi5Ya757uT5Z2XXCIgPSA0LCAgXHJcbiAgICAvKuaBr+WjpCAqL1xyXG4gICAgXCLmmJ/mmJ/lnZdcIiA9IDUsICAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLngrjlvLnlnZdcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuawtOW5s+Wdl1wiID0gNywgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5Z6C55u05Z2XXCIgPSA4LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLnspjlkIjlnZdcIiA9IDksICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuWPoOWKoOWdl+S4ilwiID0gMTAsICBcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQmxvY2tDb2xvcntcclxuXHJcbiAgICAvKui1t+eCueWcsOWdlyAqL1xyXG4gICAgXCLntKvoibJcIiA9IDAsICBcclxuICAgIC8q5rm/5ZywICovXHJcbiAgICBcIum7hOiJslwiID0gMSwgIFxyXG4gICAgLyrlsbHls7AgKi9cclxuICAgIFwi57u/6ImyXCIgPSAyLCAgXHJcbiAgICAvKue7iOeCueWcsOWdlyAqL1xyXG4gICAgXCLok53oibJcIiA9IDMsICBcclxuICAgIC8q5oGv5aOkICovXHJcbiAgICBcIueyieiJslwiID0gNCwgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5qmY6buE6ImyXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLpnZLoibJcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIueZveiJslwiID0gNywgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi57qi6ImyXCIgPSA4LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLngbDoibJcIiA9IDksXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFBhdGhUeXBle1xyXG4gICAgZXJyID0gXCJlcnJcIixcclxuICAgIHVwID0gXCJ1cFwiLCAgXHJcbiAgICBkb3duID0gXCJkb3duXCIsICBcclxuICAgIGxlZnQgPSBcImxlZnRcIixcclxuICAgIHJpZ2h0ID0gXCJyaWdodFwiLFxyXG4gICAgdXBfbGVmdCA9IFwidXBfbGVmdFwiLFxyXG4gICAgdXBfcmlnaHQgPSBcInVwX3JpZ2h0XCIsXHJcbiAgICBkb3duX2xlZnQgPSBcImRvd25fbGVmdFwiLFxyXG4gICAgZG93bl9yaWdodCA9IFwiZG93bl9yaWdodFwiLFxyXG4gICAgbGVmdF91cCA9IFwibGVmdF91cFwiLFxyXG4gICAgbGVmdF9kb3duID0gXCJsZWZ0X2Rvd25cIixcclxuICAgIHJpZ2h0X3VwID0gXCJyaWdodF91cFwiLFxyXG4gICAgcmlnaHRfZG93biA9IFwicmlnaHRfZG93blwiLFxyXG59XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJsb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyDmlrDlop7nvJPlrZjlj5jph49cclxuICAgIHByaXZhdGUgbW92ZUludGVydmFsID0gMDsgLy8g57qmIDYwIEZQUyBcclxuICAgIHByaXZhdGUgbGFzdE1vdmVUaW1lID0gMDsgIC8vIOS4iuS4i+S4pOS4quWAvOadpeiwg+iKgui3n+aJi++8jOS4gOS4quaYr+aXtumXtOi9tO+8jOS4gOS4quaYr+i3neemu+i9tFxyXG4gICAgcHJpdmF0ZSBtYXhTcGVlZCA9IDMwMDsgICAgLy8gIOacgOWkp+enu+WKqOi3neemu1xyXG5cclxuICAgIC8vIHByaXZhdGUgb3RoZXJDb2xsaWRlcjogY2MuQ29sbGlkZXIgPSBudWxsO1xyXG4gICAgLy8gQHByb3BlcnR5KHtcclxuICAgIC8vICAgICB0b29sdGlwOiAn56Kw5pKe5b2i54q277yMTm9uZeWwseaYr+aXoOaVjO+8jOS4jeWPguS4jueisOaSnicsXHJcbiAgICAvLyAgICAgdHlwZTogY2MuRW51bShCbG9ja1R5cGUpLFxyXG4gICAgLy8gICAgIC8vIGRlZmF1bHQ6IEJsb2NrVHlwZS5Ob21hbCxcclxuICAgIC8vICAgICBkaXNwbGF5TmFtZTogJ+eisOaSnuW9oueKtidcclxuICAgIC8vIH0pXHJcbiAgICBcclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oQmxvY2tUeXBlKSxcclxuICAgIH0pXHJcbiAgICB0eXBlOiBCbG9ja1R5cGUgPSBCbG9ja1R5cGUu5pmu6YCa5Z2XO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oQmxvY2tDb2xvciksXHJcbiAgICB9KVxyXG4gICAgY29sb3I6IEJsb2NrQ29sb3IgPSBCbG9ja0NvbG9yLue0q+iJsjtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfmqKrlkJHplb/luqYnLFxyXG4gICAgICAgIHR5cGU6IGNjLkludGVnZXIsXHJcbiAgICB9KVxyXG4gICAgaGVuZzogTnVtYmVyID0gMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfnq5blkJHplb/luqYnLFxyXG4gICAgICAgIHR5cGU6IGNjLkludGVnZXIsXHJcbiAgICB9KVxyXG4gICAgc2h1OiBOdW1iZXIgPSAxO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIGljZV9TcHJpdGVGcmFtZTogY2MuU3ByaXRlQXRsYXMgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuICAgIC8vIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIC8vIFVJOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcbiAgICBwcml2YXRlIGluaXRpYWxUb3VjaE9mZnNldDogY2MuVmVjMiA9IG51bGw7XHJcbiAgICBwcml2YXRlIG9mZnNldFRvbGVyYW5jZSA9IDEwMDsgLy8g5YGP56e75a655b+N5bqmOyBcclxuXHJcbiAgICBhbGxCbG9ja3M6YW55OyAgICAgICAvL+aJgOacieeahOaWueWdlyznlKjkuo7orqHnrpdwb3NYLHBvc1nmtojpmaRcclxuICAgIHRvdWNoUG9pbnQ6IGNjLlZlYzIgPSBudWxsOyAgICAgLy/op6bmkbjngrlcclxuICAgIGlzVG91Y2g6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAgLy/mmK/lkKbop6bmkbhcclxuICAgIHBvc1g6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRY5Z2Q5qCHXHJcbiAgICBwb3NZOiBudW1iZXIgPSAwOyAgICAgICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qEWeWdkOagh1xyXG4gICAgbW92ZUxlZnQ6IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5bem56e7O1xyXG4gICAgbW92ZVJpZ2h0OiBib29sZWFuID0gdHJ1ZTsgICAgIC8v5piv5ZCm5Y+v5Lul5Y+z56e7O1xyXG4gICAgbW92ZVVwOiBib29sZWFuID0gdHJ1ZTsgICAgICAgIC8v5piv5ZCm5Y+v5Lul5LiK56e7O1xyXG4gICAgbW92ZURvd246IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5LiL56e7O1xyXG4gICAgbW92ZUNvcm5lcjogbnVtYmVyID0gMDsgICAgICAgIC8v5piv5ZCm56Kw5pKe6KeS6JC9XHJcbiAgICBtb3ZlWTpudW1iZXIgPSAwOyAgICAgICAgICAvL+aYr+WQpuWPr+S7peS4iuS4i+enu+WKqDtcclxuICAgIG1vdmVYOm51bWJlciA9IDA7ICAgICAgICAgIC8v5piv5ZCm5Y+v5Lul5bem5Y+z56e75YqoO1xyXG4gICAgdG91Y2hQb2ludFg6IG51bWJlciA9IDA7ICAgICAgICAvL+inpuaRuOeCuVjlnZDmoIc7XHJcbiAgICB0b3VjaFBvaW50WTogbnVtYmVyID0gMDsgICAgICAgIC8v6Kem5pG454K5WeWdkOaghztcclxuICAgIGJsb2NrSWQ6IG51bWJlciA9IDA7ICAgICAgICAgICAgLy/mlrnlnZdJRDtcclxuICAgIHN0YWNraW5nOiBjYy5WZWMyOyAgICAgICAgICAgICAgLy/lj6DliqDmlrnlnZdcclxuICAgIGFkaGVzaXZlOiBjYy5WZWMyOyAgICAgICAgICAgICAgLy/nspjlkIjmlrnlnZdcclxuICAgIGxldmVsOiBudW1iZXIgPSAwOyAgICAgICAgICAgIC8v5Y+g5Yqg5pa55Z2X5bGC5pWwO1xyXG4gICAgcHo6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIG92ZXI6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAvL+aWueWdl+aYr+WQpuWkseaViOW3sua2iOWksVxyXG4gICAgY29sbGlkZXI6IGFueTtcclxuICAgIGJsb2NrX0luZm86YW55O1xyXG4gICAgX3RvdWNoTGlzdGVuZXI6IGFueTtcclxuICAgIHJlbGF0aXZlX1Bvc2l0aW9uOmNjLlZlYzI7ICAvL+eCueWHu+WSjOaWueWdl+ebuOWvueS9jee9rlxyXG4gICAgcHJpdmF0ZSBfZXZlbnRNYW5hZ2VyOiBhbnk7XHJcbiAgICBoaXQ6IGNjLk5vZGU7XHJcbiAgICBvdGhlckNvbGxpZGVyOiBhbnk7XHJcbiAgICBtb3ZlU3RhY2s6IGJvb2xlYW47XHJcbiAgICB0b3VjaERlbHRhOiBjYy5WZWMyID0gY2MudjIoMCwgMCk7IFxyXG4gICAgYWRoZXNpdmVOb2RlOiBhbnk7XHJcbiAgICBjaGVja0NvbGxpc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICB0aGlzLnB6ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFja2luZyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgdGhpcy5hZGhlc2l2ZSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgdGhpcy5hZGhlc2l2ZU5vZGUgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVyID0gdGhpcy5ub2RlLmdldENvbXBvbmVudChjYy5Qb2x5Z29uQ29sbGlkZXIpO1xyXG4gICAgICAgIHRoaXMub3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb2xsaXNpb24gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBqc29uRGVlcENsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgfVxyXG4gICAgLy9jcmVhdGVBZCDkuLrmmK/lkKbliJvlu7rnspjlkIjlv6vlm77niYdcclxuICAgIGluaXQoYmxvY2tfSW5mbyxwb3NYLHBvc1ksbm9kZSxjcmVhdGVBZCl7XHJcbiAgICAgICAgdGhpcy5ibG9ja19JbmZvID0gdGhpcy5qc29uRGVlcENsb25lKGJsb2NrX0luZm8pO1xyXG4gICAgICAgIGlmKG5vZGUpIHRoaXMuYmxvY2tfSW5mby5ub2RlID0gbm9kZTtcclxuICAgICAgICB0aGlzLnR5cGUgPSBibG9ja19JbmZvLnR5cGU7XHJcbiAgICAgICAgdGhpcy5jb2xvciA9IGJsb2NrX0luZm8uY29sb3I7XHJcbiAgICAgICAgdGhpcy5ibG9ja0lkID0gYmxvY2tfSW5mby5pZDtcclxuICAgICAgICAvLyBpZihwb3NYJiZwb3NZKXtcclxuICAgICAgICAvLyAgICAgdGhpcy5wb3NYID0gcG9zWDtcclxuICAgICAgICAvLyAgICAgdGhpcy5wb3NZID0gcG9zWTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pa55Z2X5bGC57qnXCIsdGhpcy5ub2RlLnpJbmRleCk7XHJcbiAgICAgICAgdGhpcy5pbml0Q29sb3IoKTtcclxuICAgICAgICB0aGlzLmluaXRUeXBlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0QmxvY2tzKCk7XHJcblxyXG4gICAgICAgIGlmKHRoaXMudHlwZSAhPSBCbG9ja1R5cGUu5Y+g5Yqg5Z2X5LiKKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJULCB0aGlzLnRvdWNoU3RhcnQsIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfTU9WRSwgdGhpcy50b3VjaE1vdmUsIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfQ0FOQ0VMLCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgdGhpcy50b3VjaEVuZCwgdGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZVsnX3RvdWNoTGlzdGVuZXInXS5zZXRTd2FsbG93VG91Y2hlcyhmYWxzZSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8g6K6h566X5L2N572u5YGP56e7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zT2Zmc2V0ID0gY2MudjIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54IC0gdGhpcy5ibG9ja19JbmZvLm5vZGUueCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgLSB0aGlzLmJsb2NrX0luZm8ubm9kZS55XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZihjcmVhdGVBZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS56SW5kZXggPj0gdGhpcy5ibG9ja19JbmZvLm5vZGUuekluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVBZGhlc2l2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY3JlYXRlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0TmFtZXMgPSBbJ3RvcCcsICdkb3duJywgJ2xlZnQnLCAncmlnaHQnXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgY2MuTm9kZSAmJiB0YXJnZXROYW1lcy5pbmNsdWRlcyhjaGlsZC5uYW1lKSAmJiBjaGlsZC5nZXRDb21wb25lbnQoXCJscV9jb2xsaWRlXCIpLmRhdGFfc3RyaW5nICE9IFwiLTFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkQ2hpbGQgPSBjYy5pbnN0YW50aWF0ZShjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZWRDaGlsZC5nZXRDb21wb25lbnQoXCJscV9jb2xsaWRlXCIpLmRhdGFfc3RyaW5nID0gXCItMVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVkQ2hpbGQucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5a2Q6IqC54K555u45a+55LqO54i26IqC54K555qE5L2N572uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWxhdGl2ZVBvcyA9IGNoaWxkLmdldFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDosIPmlbTlrZDoioLngrnkvY3nva7ku6Xkv53or4Hnm7jlr7nkvY3nva7kuI3lj5hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lZENoaWxkLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlUG9zLnggLSBwb3NPZmZzZXQueCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVBvcy55IC0gcG9zT2Zmc2V0LnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRoZXNpdmUgPSBwb3NPZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIGxldCBtYXBJbmZvID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEluZm87XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPG1hcEluZm8ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrUmVjdCA9IG1hcEluZm9baV0uZ2V0Qm91bmRpbmdCb3goKTtcclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqCBjYy5JbnRlcnNlY3Rpb24ucG9pbnRJblJlY3Qg5pa55rOV5Yik5pat54K55piv5ZCm5Zyo55+p5b2i6IyD5Zu05YaFXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnQgPSBjYy52Mih0aGlzLm5vZGUucG9zaXRpb24ueC01LCB0aGlzLm5vZGUucG9zaXRpb24ueSsxMClcclxuICAgICAgICAgICAgICAgIGlmKGJsb2NrUmVjdC5jb250YWlucyhwb2ludCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zWCA9IG1hcEluZm9baV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc1kgPSBtYXBJbmZvW2ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1k7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGV2ZWwgPSA1MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gbWFwSW5mb1tpXS54ICsgNjU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSBtYXBJbmZvW2ldLnkgLSA2MDtcclxuICAgICAgICAgICAgICAgICAgICBpPSAxMDAwMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdCA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gXCJ4el9cIit0aGlzLmJsb2NrX0luZm8uYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmljZV9TcHJpdGVGcmFtZS5fc3ByaXRlRnJhbWVzW25hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGl0LnNldEFuY2hvclBvaW50KHRoaXMubm9kZS5hbmNob3JYLHRoaXMubm9kZS5hbmNob3JZKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdC5zZXRQb3NpdGlvbigxMywtMTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaGl0LmFuY2hvclggPT0gMC41KSB0aGlzLmhpdC5zZXRQb3NpdGlvbigwLC0xMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmhpdC5hbmNob3JYID09IDAuMzMpIHRoaXMuaGl0LnNldFBvc2l0aW9uKC0xMywtMTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5oaXQuYW5jaG9yWCA9PSAwLjY2KSB0aGlzLmhpdC5zZXRQb3NpdGlvbigyLC05KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmhpdC5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvL+WIneWni+WMluaWueWdl+exu+Wei1xyXG4gICAgaW5pdFR5cGUoKXtcclxuICAgICAgICBsZXQgcG9zQ29uZmlnID0gY2MuZnguR2FtZUNvbmZpZy5QUk9QX0lORk9bdGhpcy5ibG9ja19JbmZvLmJsb2NrXTtcclxuICAgICAgICBcclxuICAgICAgICBzd2l0Y2godGhpcy50eXBlKXtcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu54K45by55Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IGJvb20gPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIGJvb20ucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgYm9vbS5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMS54LHBvc0NvbmZpZy5wb3MxLnkpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvPy5ib29tVGltZSkgXHJcbiAgICAgICAgICAgICAgICAgICAgYm9vbS5nZXRDb21wb25lbnQoXCJCb29tXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmJvb21UaW1lKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu5pif5pif5Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXIgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIHN0YXIuYW5jaG9yWCA9IHRoaXMubm9kZS5hbmNob3JYO1xyXG4gICAgICAgICAgICAgICAgc3Rhci5hbmNob3JZID0gdGhpcy5ub2RlLmFuY2hvclk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3Rhci5nZXRDb21wb25lbnQoXCJTdGFyXCIpLnN0YXJfU3ByaXRlRnJhbWUuZ2V0U3ByaXRlRnJhbWUoXCJzdGFyX1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jayk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHN0YXIuc2V0UG9zaXRpb24ocG9zQ29uZmlnLnBvczQueCAtIDEwLHBvc0NvbmZpZy5wb3M0LnkpO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7pkqXljJnlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBrZXkucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAga2V5LnNldFBvc2l0aW9uKHBvc0NvbmZpZy5wb3MxLngscG9zQ29uZmlnLnBvczEueSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu5LiK6ZSB5Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IGxvY2sgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIGxvY2sucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgbG9jay5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMS54LHBvc0NvbmZpZy5wb3MxLnkpO1xyXG4gICAgICAgICAgICAgICAgbG9jay5nZXRDb21wb25lbnQoXCJMb2NrXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmxvY2tUaW1lKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7lhrvnu5PlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJlZXplID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBmcmVlemUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgbGV0ICBuYW1lID0gXCJpY2VfXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNwcml0ZUZyYW1lID0gdGhpcy5pY2VfU3ByaXRlRnJhbWUuX3Nwcml0ZUZyYW1lc1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIGZyZWV6ZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgICAgICAgICAgICAgIGxldCBmcmVlemVYID0gcG9zQ29uZmlnLnBvczYueC0odGhpcy5ub2RlLndpZHRoKih0aGlzLm5vZGUuYW5jaG9yWC0wLjUpKTsgbGV0IGZyZWV6ZVkgPSBwb3NDb25maWcucG9zNi55ICsgdGhpcy5ub2RlLmhlaWdodC8yO1xyXG4gICAgICAgICAgICAgICAgZnJlZXplLnNldFBvc2l0aW9uKGZyZWV6ZVgsZnJlZXplWSk7XHJcbiAgICAgICAgICAgICAgICBmcmVlemUuZ2V0Q29tcG9uZW50KFwiRnJlZXplXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmZyZWV6ZVRpbWUpO1xyXG4gICAgICAgICAgICAgICAgZnJlZXplLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zNS54LTEwLWZyZWV6ZVgscG9zQ29uZmlnLnBvczUueS0yLWZyZWV6ZVkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQmxvY2tUeXBlLuawtOW5s+WdlzpcclxuICAgICAgICAgICAgICAgIGxldCBob3Jpem9udGFsID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIGxldCBoZW5nID0gXCJoZW5nXCIgKyB0aGlzLmhlbmc7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLmdldENoaWxkQnlOYW1lKGhlbmcpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLnNldFBvc2l0aW9uKHBvc0NvbmZpZy5wb3MyLngtMyxwb3NDb25maWcucG9zMi55KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7lnoLnm7TlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQgdmVydGljYWwgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIHZlcnRpY2FsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIGxldCBzaHUgPSBcInNodVwiICsgdGhpcy5zaHU7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC5nZXRDaGlsZEJ5TmFtZShzaHUpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMy54LHBvc0NvbmZpZy5wb3MzLnkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQmxvY2tUeXBlLuWPoOWKoOWdl+S4ijpcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZVN0YWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJUKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5vZmYoY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfTU9WRSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNlbGZCb3hDb2xsaWRlcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSAyMDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5nZXRTdGFja2luZ1BvcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnNldFBvc2l0aW9uKHRoaXMubm9kZS54ICsgcG9zLngsdGhpcy5ub2RlLnkgKyBwb3MueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNraW5nID0gY2MudjIodGhpcy5ub2RlLnggLSB0aGlzLmJsb2NrX0luZm8ubm9kZS54LHRoaXMubm9kZS55IC0gdGhpcy5ibG9ja19JbmZvLm5vZGUueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuc2NhbGVYICo9IDAuNztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZVkgKj0gMC43O1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImxlZnRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInJpZ2h0XCIgfHwgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLm5hbWUgPT0gXCJ0b3BcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImRvd25cIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yid5aeL5YyW5pa55Z2X6aKc6ImyXHJcbiAgICBpbml0Q29sb3IoKXsgICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb2xvcitcImNvbG9yXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG5cclxuICAgICAgICBsZXQgbnVtYmVyID0gTWF0aC5mbG9vcigodGhpcy5jb2xvci0xKS8yKTtcclxuXHJcbiAgICAgICAgbGV0IGJsb2NrU3ByaXRlRnJhbWUgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfQ29sb3JbbnVtYmVyXS5fc3ByaXRlRnJhbWVzO1xyXG4gICAgICAgIHZhciBzcHJpdGVGcmFtZSA9IGJsb2NrU3ByaXRlRnJhbWVbbmFtZV07XHJcbiAgICAgIFxyXG4gICAgICAgIC8vIGlmKHRoaXMudHlwZSA9PSBCbG9ja1R5cGUu5Ya757uT5Z2XKXtcclxuICAgICAgICAvLyAgICAgbmFtZSA9IFwiaWNlX1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jaztcclxuICAgICAgICAvLyAgICAgc3ByaXRlRnJhbWUgPSB0aGlzLmljZV9TcHJpdGVGcmFtZS5fc3ByaXRlRnJhbWVzW25hbWVdO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwcml0ZUZyYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu657KY5ZCI5b+r6L+e5o6l5aSEXHJcbiAgICBjcmVhdGVBZGhlc2l2ZSgpe1xyXG4gICAgICAgIGxldCBib3ggPSBbXTtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmFsbEJsb2Nrcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgYm94LnB1c2goY2MudjIodGhpcy5hbGxCbG9ja3NbaV0ueCt0aGlzLnBvc1gsdGhpcy5hbGxCbG9ja3NbaV0ueSt0aGlzLnBvc1kpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG90aGVyQm94ID0gW107XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYWxsQmxvY2tzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBvdGhlckJveC5wdXNoKGNjLnYyKHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmFsbEJsb2Nrc1tpXS54K3RoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYWxsQmxvY2tzW2ldLnkrdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSkpOyBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvcihsZXQgaz0wOyBrPGJveC5sZW5ndGg7IGsrKyl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaj0wOyBqPG90aGVyQm94Lmxlbmd0aDsgaisrKXtcclxuICAgICAgICAgICAgICAgIGlmKChib3hba10ueCA9PSBvdGhlckJveFtqXS54KzEgfHwgYm94W2tdLnggPT0gb3RoZXJCb3hbal0ueC0xKSAmJiAoYm94W2tdLnkgPT0gb3RoZXJCb3hbal0ueSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5ZyoWOi9tCDnm7jpgrtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9IGJveFtrXS54ID09IG90aGVyQm94W2pdLngrMSA/IFwibGVmdFwiIDogXCJyaWdodFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQWRoZXNpdmUobGVmdCxib3hba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIG90aGVyQm94LnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBqLS07IC8vIOiwg+aVtOe0ouW8lVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGogPCAwKSBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKChib3hba10ueSA9PSBvdGhlckJveFtqXS55KzEgfHwgYm94W2tdLnkgPT0gb3RoZXJCb3hbal0ueS0xKSAmJiAoYm94W2tdLnggPT0gb3RoZXJCb3hbal0ueCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5ZyoWei9tCDnm7jpgrtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGJveFtrXS55ID09IG90aGVyQm94W2pdLnkrMSA/IFwiZG93blwiIDogXCJ1cFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQWRoZXNpdmUoZG93bixib3hba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIG90aGVyQm94LnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBqLS07IC8vIOiwg+aVtOe0ouW8lVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGogPCAwKSBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbGV0IGFkaGVzaXZlID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/lhbfkvZPmt7vliqDnspjlkIjlv6vplIHpk77mlrnms5VcclxuICAgIGFkZEFkaGVzaXZlKGRpcmFjdGlvbixib3gpe1xyXG4gICAgICAgIGxldCBwb3MgPSBjYy52Mihib3gueCAtIHRoaXMucG9zWCxib3gueSAtIHRoaXMucG9zWSk7XHJcbiAgICAgICAgbGV0IGFkaGVzaXZlID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbMTBdKTtcclxuICAgICAgICBhZGhlc2l2ZS5wYXJlbnQgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIik7XHJcbiAgICAgICAgLy8gYWRoZXNpdmUucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYWRoZXNpdmVcIik7XHJcbiAgICAgICAgYWRoZXNpdmUuc2V0UG9zaXRpb24oIDEyMCpwb3MueCAtIDY1ICsgdGhpcy5ub2RlLngsIDEyMCpwb3MueSArIDYwICsgdGhpcy5ub2RlLnkpO1xyXG4gICAgICAgIGlmKGRpcmFjdGlvbiA9PSBcImxlZnRcIiB8fCBkaXJhY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgYWRoZXNpdmUuZ2V0Q2hpbGRCeU5hbWUoXCJoZW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGFkaGVzaXZlLmdldENoaWxkQnlOYW1lKFwiaGVuZ1wiKS54ID0gLTYwO1xyXG4gICAgICAgICAgICBpZihkaXJhY3Rpb24gPT0gXCJyaWdodFwiKSBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueCA9IDYwO1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueCArPSA5O1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueSArPSA3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS55ID0gLTYwO1xyXG4gICAgICAgICAgICBpZihkaXJhY3Rpb24gPT0gXCJ1cFwiKSBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS55ID0gNjA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkaGVzaXZlLmdldENvbXBvbmVudChcIkFkaGVzaXZlXCIpLmluaXQodGhpcy5ub2RlKTtcclxuICAgICAgICB0aGlzLmFkaGVzaXZlTm9kZS5wdXNoKGFkaGVzaXZlKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBZGhlc2l2ZSgpe1xyXG4gICAgICAgIGlmKHRoaXMuYWRoZXNpdmVOb2RlLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmFkaGVzaXZlTm9kZS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWRoZXNpdmUgPSB0aGlzLmFkaGVzaXZlTm9kZVtpXTtcclxuICAgICAgICAgICAgICAgIGFkaGVzaXZlLmdldENvbXBvbmVudChcIkFkaGVzaXZlXCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5pa55Z2X6JC954K5XHJcbiAgICBibG9ja0ZhbGwocG9pbnQpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSB0cnVlKSByZXR1cm47XHJcbiAgICAgICAgLy8gLy8g5YGH6K6+IE1hcENvbnJvbGVyIOaciee9keagvOS/oeaBr++8jOi/memHjOeugOWNleekuuS+i1xyXG4gICAgICAgIGNvbnN0IG1hcFdpZHRoID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IG1hcEhlaWdodCA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgY2VsbFNpemUgPSAxMjA7IC8vIOavj+S4quagvOWtkOeahOWkp+Wwj++8jOagueaNruWunumZheaDheWGteiwg+aVtFxyXG5cclxuICAgICAgICAvLyDorqHnrpfngrnmiYDlnKjnmoTnvZHmoLzlnZDmoIdcclxuICAgICAgICBjb25zdCBncmlkWCA9IE1hdGguZmxvb3IoKHBvaW50LnggKyAobWFwV2lkdGggKiBjZWxsU2l6ZSAvIDIpKSAvIGNlbGxTaXplKTtcclxuICAgICAgICBjb25zdCBncmlkWSA9IE1hdGguZmxvb3IoKHBvaW50LnkgKyAobWFwSGVpZ2h0ICogY2VsbFNpemUgLyAyKSkgLyBjZWxsU2l6ZSk7XHJcblxyXG4gICAgICAgIC8vIOajgOafpee9keagvOWdkOagh+aYr+WQpui2iueVjFxyXG4gICAgICAgIGlmIChncmlkWCA+PSAwICYmIGdyaWRYIDwgbWFwV2lkdGggJiYgZ3JpZFkgPj0gMCAmJiBncmlkWSA8IG1hcEhlaWdodCkge1xyXG4gICAgICAgICAgICBjb25zdCBtYXBCbG9jayA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBCbG9ja3NXYWxsW2dyaWRYXVtncmlkWV07XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrUmVjdCA9IG1hcEJsb2NrLmdldEJvdW5kaW5nQm94KCk7XHJcblxyXG4gICAgICAgICAgICAvLyDkvb/nlKggY2MuSW50ZXJzZWN0aW9uLnBvaW50SW5SZWN0IOaWueazleWIpOaWreeCueaYr+WQpuWcqOefqeW9ouiMg+WbtOWGhVxyXG4gICAgICAgICAgICBpZiAoYmxvY2tSZWN0LmNvbnRhaW5zKHBvaW50KSkge1xyXG4gICAgICAgICAgICAgICAgLy/lr7vmib7okL3ngrlcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTWFwQmxvY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zWCA9IG1hcEJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1g7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvc1kgPSBtYXBCbG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCA9IDUwICsgdGhpcy5wb3NYIC0gdGhpcy5wb3NZICogMztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlnZflsYLnuqdcIix0aGlzLm5vZGUuekluZGV4KTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gbWFwQmxvY2sueCArIDY1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSBtYXBCbG9jay55IC0gNjA7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ibG9ja19JbmZvLm5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS55ID0gdGhpcy5ub2RlLnkgLSB0aGlzLmFkaGVzaXZlLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnR5cGUgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikubW92ZVN0YWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54ICsgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuc3RhY2tpbmcueDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS55ID0gdGhpcy5ub2RlLnkgKyB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5zdGFja2luZy55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICBsZXQgamcgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hlY2tQYXNzKHRoaXMubm9kZSx0aGlzLmFsbEJsb2Nrcyk7XHJcblxyXG4gICAgICAgIGlmKGpnID49IDApe1xyXG4gICAgICAgICAgICB0aGlzLm92ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlU3RhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVCb3hDb2xsaWRlcigpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZU1hcEJsb2NrKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKGpnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnVwRG9vcih0aGlzLmNvbG9yKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRWaWJyYXRlKFwibWVkaXVtXCIsMSlcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVCb3hDb2xsaWRlcigpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwibGVmdFwiIHx8IHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwicmlnaHRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInRvcFwiIHx8IHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwiZG93blwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQWN0aW9uKGRpcmFjdGlvbil7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9NT1ZFKTtcclxuICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQpO1xyXG4gICAgICAgIHRoaXMubm9kZS5hZGRDb21wb25lbnQoY2MuTWFzayk7XHJcbiAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGxldCBwb3MgPSB0aGlzLm5vZGUuZ2V0UG9zaXRpb24oKTtcclxuICAgICAgICBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLuWPoOWKoOWdl+S4iyl7XHJcbiAgICAgICAgICAgIGxldCBzY2FsZVggPSB0aGlzLm5vZGUuc2NhbGVYO1xyXG4gICAgICAgICAgICBsZXQgc2NhbGVZID0gdGhpcy5ub2RlLnNjYWxlWTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHRoaXMucG9zWCx0aGlzLnBvc1ksdHJ1ZSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmxvY2tfSW5mby5ub2RlKVxyXG4gICAgICAgICAgICAudG8oMC4zLHtwb3NpdGlvbjpwb3Msc2NhbGVYOnNjYWxlWD4wPzE6LTEsc2NhbGVZOnNjYWxlWT4wPzE6LTF9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLueymOWQiOWdlyl7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVtb3ZlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsXHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7ngrjlvLnlnZcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJib29tXCIpLmdldENvbXBvbmVudChcIkJvb21cIikuc3RvcEJvb20oKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgIFxyXG4gICAgICAgIGxldCB0aW1lID0gMC4zMztcclxuICAgICAgICAvLyB0aGlzLm5vZGUuekluZGV4ID0gMDtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKHRoaXMubm9kZS53aWR0aCAvIDEyMCk7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGguZmxvb3IodGhpcy5ub2RlLmhlaWdodCAvIDEyMCk7XHJcblxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwieGlhb2NodVwiLG51bGwpO1xyXG4gICAgICAgIH0sIDMwMCApO1xyXG4gICAgICAgIHRoaXMuc2V0VmlicmF0ZShcImxpZ2h0XCIsMylcclxuXHJcbiAgICAgICAgaWYoZGlyYWN0aW9uID09IDApe1xyXG4gICAgICAgICAgICB0aW1lID0gMC4zMypoZWlnaHQ7XHJcbiAgICAgICAgICAgIC8vIHRpbWUgPSAwLjk5O1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLm5vZGUuY2hpbGRyZW4ubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuY2hpbGRyZW5baV0pXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7eTp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueSArIHRoaXMubm9kZS5jaGlsZHJlblswXS5oZWlnaHR9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihkaXJhY3Rpb24gPT0gMSl7XHJcbiAgICAgICAgICAgIHRpbWUgPSAwLjMzKmhlaWdodDtcclxuICAgICAgICAgICAgLy8gdGltZSA9IDAuOTlcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmNoaWxkcmVuW2ldKSBcclxuICAgICAgICAgICAgICAudG8odGltZSx7eTp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueSAtIHRoaXMubm9kZS5jaGlsZHJlblswXS5oZWlnaHR9KVxyXG4gICAgICAgICAgICAgIC5zdGFydCgpOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gICBcclxuICAgICAgICBlbHNlIGlmKGRpcmFjdGlvbiA9PSAyKXtcclxuICAgICAgICAgICAgdGltZSA9IDAuMzMqd2lkdGg7XHJcbiAgICAgICAgICAgIC8vIHRpbWUgPSAwLjk5XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5jaGlsZHJlbltpXSkgXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7eDp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueCAtIHRoaXMubm9kZS5jaGlsZHJlblswXS53aWR0aH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRpcmFjdGlvbiA9PSAzKXtcclxuICAgICAgICAgICAgdGltZSA9IDAuMzMqd2lkdGhcclxuICAgICAgICAgICAgLy8gdGltZSA9IDAuOTlcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmNoaWxkcmVuW2ldKSBcclxuICAgICAgICAgICAgICAgIC50byh0aW1lLHt4OnRoaXMubm9kZS5jaGlsZHJlbltpXS54ICsgdGhpcy5ub2RlLmNoaWxkcmVuWzBdLndpZHRofSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHRlbXBDb2xvciA9IHRoaXMuY29sb3I7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnVwRG9vcih0ZW1wQ29sb3IpOyBcclxuICAgICAgICAgICAgfSwgMjUwKTtcclxuXHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5uZXh0TGV2ZWwoKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG5cclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgIH0sIHRpbWUqMTAwMCk7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBcclxuICAgIHRvdWNoU3RhcnQoZXZlbnQpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciB8fCBNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZU92ZXIpIHJldHVybjtcclxuICAgICAgICAvLyDov5Tlm57kuJbnlYzlnZDmoIdcclxuICAgICAgICBsZXQgdG91Y2hMb2MgPSBldmVudC5nZXRMb2NhdGlvbigpO1xyXG4gICAgICAgIC8vIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9hcGkvemgvY2xhc3Nlcy9JbnRlcnNlY3Rpb24uaHRtbCDmo4DmtYvovoXliqnnsbtcclxuICAgICAgICAvLyBsZXQgcG9zID0gdGhpcy5jb2xsaWRlci53b3JsZC5wb2ludHNcclxuXHJcbiAgICAgICAgaWYoIXRoaXMuY29sbGlkZXIud29ybGQpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWIpOaWreinpuaRuOeCueaYr+WQpuWcqOWkmui+ueW9ouWGhVxyXG4gICAgICAgIGlmIChjYy5JbnRlcnNlY3Rpb24ucG9pbnRJblBvbHlnb24odG91Y2hMb2MsIHRoaXMuY29sbGlkZXIud29ybGQucG9pbnRzKSkge1xyXG4gICAgICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuaGFtbWVyKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5oYW1tZXJNYXNrLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBpZih0aGlzLnR5cGUgIT0gQmxvY2tUeXBlLuS4iumUgeWdlyAmJiB0aGlzLnR5cGUgIT0gQmxvY2tUeXBlLuWGu+e7k+Wdlyl7XHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2Uuc3RhcnRVcGRhdGUoKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImhpdFwiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnpJbmRleCA9IDIwMDtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudHlwZSA9PSA5KXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmJsb2NrX0luZm8ubm9kZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLnpJbmRleCA9IDIwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaGl0LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5kb3duRG9vcih0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcix0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMudHlwZSA9PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5tb3ZlU3RhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0b3VjaFBvaW50ID0gZXZlbnQuZ2V0TG9jYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGxldCBsb2NhbCA9IHRoaXMubm9kZS5wYXJlbnQuY29udmVydFRvTm9kZVNwYWNlQVIodG91Y2hQb2ludCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnRYID0gbG9jYWwueDtcclxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hQb2ludFkgPSBsb2NhbC55O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlTGVmdCA9IHRoaXMubW92ZVJpZ2h0ID0gdGhpcy5tb3ZlVXAgPSB0aGlzLm1vdmVEb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVDb3JuZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbiA9IGNjLnYyKHRoaXMubm9kZS54LWxvY2FsLngsdGhpcy5ub2RlLnktbG9jYWwueSk7XHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlUmlzZUZhbGwodGhpcy5jb2xvcix0cnVlKTtcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5kb3duRG9vcih0aGlzLmNvbG9yLHRoaXMudHlwZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpYnJhdGUoXCJsaWdodFwiLDEpXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmhpdCkgdGhpcy5oaXQuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1RvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRvdWNoRW5kKGV2ZW50KXtcclxuICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZU92ZXIpIHJldHVybjtcclxuICAgICAgICBpZih0aGlzLmlzVG91Y2gpe1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoRGVsdGEgPSBjYy52MigwLCAwKTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0NvbGxpc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlUmlzZUZhbGwodGhpcy5jb2xvcixmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImRvd25cIixudWxsKTtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnJlbW92ZU9uZUJsb2NrKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuekluZGV4ID0gdGhpcy5sZXZlbDtcclxuICAgICAgICAgICAgdGhpcy5oaXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudHlwZSA9PSA5KXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5oaXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaXNUb3VjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnQgPSBldmVudC5nZXRMb2NhdGlvbigpO1xyXG4gICAgICAgICAgICBsZXQgbG9jYWwgPSBjYy52Mih0aGlzLm5vZGUueCAtIDUwLHRoaXMubm9kZS55ICsgNTAgKTtcclxuICAgICAgICAgICAgaWYodGhpcy50eXBlICE9IDEwKXtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja0ZhbGwobG9jYWwpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IDkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsVGVtcCA9IGNjLnYyKHRoaXMuYmxvY2tfSW5mby5ub2RlLngtNTAsdGhpcy5ibG9ja19JbmZvLm5vZGUueSs1MCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrRmFsbChsb2NhbFRlbXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm1vdmVMZWZ0ID0gdGhpcy5tb3ZlUmlnaHQgPSB0aGlzLm1vdmVVcCA9IHRoaXMubW92ZURvd24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgXHJcbiAgICB9XHJcblxyXG4gICAgdG91Y2hNb3ZlKGV2ZW50OiBjYy5FdmVudC5FdmVudFRvdWNoKSB7XHJcbiAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmdhbWVPdmVyKSByZXR1cm47XHJcbiAgICAgICAgLy8gY29uc3QgY3VycmVudFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIC8vIOWmguaenOi3neemu+S4iuasoeenu+WKqOaXtumXtOWwj+S6jumXtOmalOaXtumXtO+8jOebtOaOpei/lOWbnlxyXG4gICAgICAgIC8vIGlmIChjdXJyZW50VGltZSAtIHRoaXMubGFzdE1vdmVUaW1lIDwgdGhpcy5tb3ZlSW50ZXJ2YWwpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyB0aGlzLmxhc3RNb3ZlVGltZSA9IGN1cnJlbnRUaW1lO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc1RvdWNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhID0gZXZlbnQuZ2V0RGVsdGEoKTtcclxuICAgICAgICAgICAgY29uc3QgdG91Y2hQb2ludCA9IGV2ZW50LmdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsID0gdGhpcy5ub2RlLnBhcmVudC5jb252ZXJ0VG9Ob2RlU3BhY2VBUih0b3VjaFBvaW50KTtcclxuICAgICAgICAgICAgdGhpcy50b3VjaFBvaW50WCA9IGxvY2FsLng7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2hQb2ludFkgPSBsb2NhbC55O1xyXG4gICAgICAgICAgICBkZWx0YS54ID0gdGhpcy50b3VjaFBvaW50WCAtIHRoaXMubm9kZS54ICsgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbi54O1xyXG4gICAgICAgICAgICBkZWx0YS55ID0gdGhpcy50b3VjaFBvaW50WSAtIHRoaXMubm9kZS55ICsgIHRoaXMucmVsYXRpdmVfUG9zaXRpb24ueTtcclxuXHJcbiAgICAgICAgICAgIC8vIOmZkOWItuenu+WKqOmAn+W6plxyXG4gICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnRYID0gbG9jYWwueDtcclxuICAgICAgICAgICAgdGhpcy50b3VjaFBvaW50WSA9IGxvY2FsLnk7XHJcbiAgICAgICAgICAgIGRlbHRhLnggPSB0aGlzLnRvdWNoUG9pbnRYIC0gdGhpcy5ub2RlLnggKyB0aGlzLnJlbGF0aXZlX1Bvc2l0aW9uLng7XHJcbiAgICAgICAgICAgIGRlbHRhLnkgPSB0aGlzLnRvdWNoUG9pbnRZIC0gdGhpcy5ub2RlLnkgKyAgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbi55O1xyXG5cclxuICAgICAgICAgICAgLy8g6ZmQ5Yi256e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgIGRlbHRhLnggPSBNYXRoLm1heCgtdGhpcy5tYXhTcGVlZCwgTWF0aC5taW4odGhpcy5tYXhTcGVlZCwgZGVsdGEueCkpO1xyXG4gICAgICAgICAgICBkZWx0YS55ID0gTWF0aC5tYXgoLXRoaXMubWF4U3BlZWQsIE1hdGgubWluKHRoaXMubWF4U3BlZWQsIGRlbHRhLnkpKTtcclxuXHJcbiAgICAgICAgICAgIC8vIOiusOW9leinpuaRuOenu+WKqOeahOWinumHj1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoRGVsdGEgPSBkZWx0YTsgXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v6LaF5Ye66ZmQ5Yi25Yik5patXHJcbiAgICBleGNlZWRzKHN0ZXB4LHN0ZXB5KXtcclxuICAgICBcclxuICAgIH1cclxuXHJcbiAgICBlbGltaW5hdGUoKXtcclxuICAgICAgICAvL+mUpOWtkOeKtuaAgea2iOWksVxyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmhhbW1lciA9IGZhbHNlO1xyXG4gICAgICAgIC8v5aaC5p6c5pa55Z2X5piv5pyJ54m55q6K54q25oCB77yM5YiZ54m55q6K5aSE55CGXHJcbiAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7lhrvnu5PlnZcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuZ2V0Q29tcG9uZW50KFwiRnJlZXplXCIpLnJlZHVjZSgyKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMudHlwZSA9PSBCbG9ja1R5cGUu5LiK6ZSB5Z2XKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibG9ja1wiKS5nZXRDb21wb25lbnQoXCJMb2NrXCIpLnJlZHVjZSgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL+WmguaenOaWueWdl+WPr+S7pea2iOmZpFxyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5zcGVjaWFsX1RyZWF0bWVudCh0aGlzLm5vZGUpO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICB0aGlzLnJlbW92ZU1hcEJsb2NrKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5ub2RlLmdldFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIGlmKHNlbGYudHlwZSA9PSBCbG9ja1R5cGUu5Y+g5Yqg5Z2X5LiLKXtcclxuICAgICAgICAgICAgICAgIGxldCBzY2FsZVggPSBzZWxmLm5vZGUuc2NhbGVYO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNjYWxlWSA9IHNlbGYubm9kZS5zY2FsZVk7XHJcbiAgICAgICAgICAgICAgICBzZWxmLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5yZXN0b3JlTm9tYWwodGhpcy5wb3NYLHRoaXMucG9zWSx0cnVlKTtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHNlbGYuYmxvY2tfSW5mby5ub2RlKVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMSx7cG9zaXRpb246cG9zLHNjYWxlWDpzY2FsZVg+MD8xOi0xLHNjYWxlWTpzY2FsZVk+MD8xOi0xfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoc2VsZi50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgc2VsZi5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHNlbGYuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsXHJcbiAgICAgICAgICAgICAgICBzZWxmLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHNlbGYudHlwZSA9PSBCbG9ja1R5cGUu54K45by55Z2XKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdG9wQm9vbSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UubmV4dExldmVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gICAgfVxyXG4gICAgIFxyXG4gICAgc2V0VmlicmF0ZSh0eXBlLCBjb3VudCl7XHJcbiAgICAgICAgLy8gcmV0dXJuO1xyXG4gICAgICAgIGlmKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW4pe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvdW50ID09IDEpe1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4LnZpYnJhdGVTaG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGltZSA9IDE1MDtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTw0OyBpKyspe1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgd3gudmlicmF0ZVNob3J0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIHRpbWUqaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgc2V0TW92ZUNvcm5lcihkaXJhY3Rpb24pe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjbXVwZGF0ZSgpIHtcclxuICAgICAgICBsZXQgY206YW55ID0gY2MuZGlyZWN0b3IuZ2V0Q29sbGlzaW9uTWFuYWdlcigpOyAgICAgICAgXHJcbiAgICAgICAgY20udXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZU5vbWFsKHBvc1gscG9zWSx0eXBlKXtcclxuICAgICAgICB0aGlzLnR5cGUgPSAwO1xyXG4gICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlID0gbnVsbDtcclxuICAgICAgICB0aGlzLm1vdmVTdGFjayA9IGZhbHNlOyBcclxuICAgICAgICB0aGlzLnBvc1ggPSBwb3NYO1xyXG4gICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgIHRoaXMubGV2ZWwgPSA1MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgIGxldCBqID0gMTAwMDtcclxuICAgICAgICBmb3IobGV0IGkgPTA7IGk8IHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwiTmV3IE5vZGVcIil7XHJcbiAgICAgICAgICAgICAgICBqID0gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihpID4gail7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5baV0uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodHlwZSl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImxlZnRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInJpZ2h0XCIgfHwgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLm5hbWUgPT0gXCJ0b3BcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImRvd25cIilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5baV0uYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfU1RBUlQsIHRoaXMudG91Y2hTdGFydCwgdGhpcyk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX01PVkUsIHRoaXMudG91Y2hNb3ZlLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfQ0FOQ0VMLCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGVbJ190b3VjaExpc3RlbmVyJ10uc2V0U3dhbGxvd1RvdWNoZXMoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuaGl0ID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICB0aGlzLmhpdC5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICB0aGlzLmhpdC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IG5hbWUgPSBcInh6X1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jaztcclxuICAgICAgICB0aGlzLmhpdC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuaWNlX1Nwcml0ZUZyYW1lLl9zcHJpdGVGcmFtZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5oaXQuc2V0QW5jaG9yUG9pbnQodGhpcy5ub2RlLmFuY2hvclgsdGhpcy5ub2RlLmFuY2hvclkpO1xyXG4gICAgICAgIHRoaXMuaGl0LnNldFBvc2l0aW9uKDEzLC0xMSk7XHJcbiAgICAgICAgaWYodGhpcy5oaXQuYW5jaG9yWCA9PSAwLjUpIHRoaXMuaGl0LnNldFBvc2l0aW9uKDAsLTExKTtcclxuICAgICAgICBlbHNlIGlmKHRoaXMuaGl0LmFuY2hvclggPT0gMC4zMykgdGhpcy5oaXQuc2V0UG9zaXRpb24oLTEzLC0xMSk7XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmhpdC5hbmNob3JYID09IDAuNjYpIHRoaXMuaGl0LnNldFBvc2l0aW9uKDIsLTkpO1xyXG4gICAgICAgIHRoaXMuaGl0LmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Ya757uT54q25oCB5oGi5aSN5Li65bi46KeE54q25oCBXHJcbiAgICByZXNldEZyZWV6ZSgpe1xyXG4gICAgICAgIHRoaXMudHlwZSA9IDA7XHJcbiAgICAgICAgdGhpcy5ibG9ja19JbmZvLnR5cGUgPSAwO1xyXG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb2xvcitcImNvbG9yXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG4gICAgICAgIGxldCBudW1iZXIgPSBNYXRoLmZsb29yKCh0aGlzLmNvbG9yLTEpLzIpO1xyXG4gICAgICAgIGxldCBibG9ja1Nwcml0ZUZyYW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX0NvbG9yW251bWJlcl0uX3Nwcml0ZUZyYW1lcztcclxuICAgICAgICB2YXIgc3ByaXRlRnJhbWUgPSBibG9ja1Nwcml0ZUZyYW1lW25hbWVdO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0QmxvY2tzKCl7XHJcbiAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbXTtcclxuICAgICAgICBzd2l0Y2godGhpcy5ibG9ja19JbmZvLmJsb2NrKXtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MxLHBvczJdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczMscG9zNF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczYgPSBjYy52MigtMSwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3ID0gY2MudjIoLTIsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M1LHBvczYscG9zN107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczggPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczkgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczEwID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczgscG9zOSxwb3MxMF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczExID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxMiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczEzID0gY2MudjIoLTEsMSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczE0ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczExLHBvczEyLHBvczEzLHBvczE0XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTUgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczE2ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxNyA9IGNjLnYyKDAsMik7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTggPSBjYy52MigtMSwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczE1LHBvczE2LHBvczE3LHBvczE4XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDc6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTkgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIwID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyMSA9IGNjLnYyKC0xLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIyID0gY2MudjIoLTIsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MxOSxwb3MyMCxwb3MyMSxwb3MyMl07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA4OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIzID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyNCA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczI1ID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjYgPSBjYy52MigtMSwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczIzLHBvczI0LHBvczI1LHBvczI2XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDk6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjcgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczI4ID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjkgPSBjYy52MigtMiwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzMCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MyNyxwb3MyOCxwb3MyOSxwb3MzMF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMDpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzMSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMzIgPSBjYy52MigxLDIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczMzID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzNCA9IGNjLnYyKDAsMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MzMSxwb3MzMixwb3MzMyxwb3MzNF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzNSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMzYgPSBjYy52MigyLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczM3ID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzOCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MzNSxwb3MzNixwb3MzNyxwb3MzOF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMjpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzOSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDAgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQxID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbcG9zMzkscG9zNDAscG9zNDEscG9zNDJdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTM6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDMgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQ0ID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDUgPSBjYy52MigtMiwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0NiA9IGNjLnYyKC0yLDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbcG9zNDMscG9zNDQscG9zNDUscG9zNDZdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTQ6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDcgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQ4ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0OSA9IGNjLnYyKC0xLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUwID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczQ3LHBvczQ4LHBvczQ5LHBvczUwXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE1OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M1MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUzID0gY2MudjIoLTIsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNTQgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczUxLHBvczUyLHBvczUzLHBvczU0XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE2OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU1ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M1NiA9IGNjLnYyKDEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNTcgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU4ID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczU1LHBvczU2LHBvczU3LHBvczU4XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE3OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU5ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2MCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjEgPSBjYy52MigwLDIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczYyID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M1OSxwb3M2MCxwb3M2MSxwb3M2Ml07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxODpcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2MyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjQgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczY1ID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2NiA9IGNjLnYyKDEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjcgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczYzLHBvczY0LHBvczY1LHBvczY2LHBvczY3XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE5OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczY4ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2OSA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzAgPSBjYy52MigtMSwwKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczY4LHBvczY5LHBvczcwXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIwOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczcxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczczID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M3MSxwb3M3Mixwb3M3M107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3NCA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzUgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczc2ID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3Bvczc0LHBvczc1LHBvczc2XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIyOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczc3ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3OCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzkgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3Bvczc3LHBvczc4LHBvczc5XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TWFwQmxvY2soKXtcclxuICAgICAgICBpZih0aGlzLmFsbEJsb2Nrcy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5hbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuYWxsQmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHggPSB0aGlzLnBvc1ggKyBwb3MueDtcclxuICAgICAgICAgICAgICAgIGxldCB5ID0gdGhpcy5wb3NZICsgcG9zLnk7IFxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgPSB0aGlzLm5vZGUudXVpZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVNYXBCbG9jaygpe1xyXG4gICAgICAgIGlmKHRoaXMucG9zWCA9PSAwICYmIHRoaXMucG9zWSA9PSAwKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmFsbEJsb2Nrcyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYWxsQmxvY2tzLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5hbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYWxsQmxvY2tzW2ldKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuYWxsQmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHRoaXMucG9zWCArIHBvcy54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeSA9IHRoaXMucG9zWSArIHBvcy55OyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLy/lj6DliqDlnZfvvIzkvY3nva7lt67lvILvvIzmoKHlh4bkvY3nva5cclxuICAgIGdldFN0YWNraW5nUG9zKCl7XHJcbiAgICAgICAgc3dpdGNoKHRoaXMubm9kZS5uYW1lKXtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMSwyMik7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazFcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMzYsMjMpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2syXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE4LDQwKTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrM1wiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC01OSwyNSk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTksNTcpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2s1XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTM2LDM4KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrNlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xOSw5Nyk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazdcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTksNjEpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2s4XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTU1LDI0KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrOVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazEwXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE3LDk2KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTFcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTcsNTgpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxMlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazEzXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTkyLDI1KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTgsNjApO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxNVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC01OCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazE2XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTIwLDYwKTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTdcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTcsNjApO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxOFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xNyw2MCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazE5XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTIwLDI0KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMjBcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtNTQsMjUpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2syMVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xNyw2MCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazIyXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE3LDYwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNUb3VjaCAmJiB0aGlzLnRvdWNoRGVsdGEubWFnKCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMubW92ZUxlZnQgPSB0aGlzLm1vdmVSaWdodCA9IHRoaXMubW92ZVVwID0gdGhpcy5tb3ZlRG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZWx0YSA9IHRoaXMudG91Y2hEZWx0YTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ggPSB0aGlzLm5vZGUueCArIGRlbHRhLng7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdZID0gdGhpcy5ub2RlLnkgKyBkZWx0YS55O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLnNxcnQoTWF0aC5wb3cobmV3WCAtIHRoaXMubm9kZS54LCAyKSArIE1hdGgucG93KG5ld1kgLSB0aGlzLm5vZGUueSwgMikpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1hZyA9IE1hdGgucm91bmQoZGVsdGEubWFnKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVkgPT09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvdWNoUG9pbnRZIDw9IHRoaXMubm9kZS55ICsgdGhpcy5ub2RlLmhlaWdodC8yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmKHRoaXMubW92ZVkgPT09IC0xKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b3VjaFBvaW50WSA+PSB0aGlzLm5vZGUueSArIHRoaXMubm9kZS5oZWlnaHQvMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVYID09PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b3VjaFBvaW50WCA8PSB0aGlzLm5vZGUueCAtIHRoaXMubm9kZS53aWR0aC8yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZih0aGlzLm1vdmVYID09PSAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG91Y2hQb2ludFggPj0gdGhpcy5ub2RlLnggLSB0aGlzLm5vZGUud2lkdGgvMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiAxMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBtYWcgPSAxMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGVlZFNjYWxlID0gMC41OyBcclxuICAgICAgICAgICAgICAgICAgICBkZWx0YS54ICo9IHNwZWVkU2NhbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsdGEueSAqPSBzcGVlZFNjYWxlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWFnID4gNSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWcgPSBNYXRoLmZsb29yKG1hZyAvIDUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBtYWcgPSAyO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHggPSBkZWx0YS54IC8gbWFnO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHkgPSBkZWx0YS55IC8gbWFnO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYWc7IGluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVDb3JuZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBYID0gdGhpcy5ub2RlLnggKyBzdGVweDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wWSA9IHRoaXMubm9kZS55ICsgc3RlcHk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jaGVja0NvbGxpc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnR5cGUgIT09IDggJiYgdGhpcy50eXBlICE9PSAxMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IE1hdGgucm91bmQodGVtcFgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnR5cGUgIT09IDcgJiYgdGhpcy50eXBlICE9PSAxMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9ICBNYXRoLnJvdW5kKHRlbXBZKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1hNYWluID0gTWF0aC5hYnMoc3RlcHgpID4gTWF0aC5hYnMoc3RlcHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNYTWFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS54ID4gdGVtcFgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlTGVmdCAmJiB0aGlzLm1vdmVYID09PSAwICYmIHRoaXMudHlwZSAhPT0gOCAmJiB0aGlzLnR5cGUgIT09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gdGVtcFg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVggIT09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVYID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS54IDw9IHRlbXBYKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW92ZVJpZ2h0ICYmIHRoaXMubW92ZVggPT09IDAgJiYgdGhpcy50eXBlICE9PSA4ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0ZW1wWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWCAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnkgPiB0ZW1wWSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVEb3duICYmIHRoaXMubW92ZVkgPT09IDAgJiYgdGhpcy50eXBlICE9PSA3ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0ZW1wWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWSAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnkgPD0gdGVtcFkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlVXAgJiYgdGhpcy5tb3ZlWSA9PT0gMCAmJiB0aGlzLnR5cGUgIT09IDcgJiYgdGhpcy50eXBlICE9PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9IHRlbXBZO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVZICE9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS55ID4gdGVtcFkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlRG93biAmJiB0aGlzLm1vdmVZID09PSAwICYmIHRoaXMudHlwZSAhPT0gNyAmJiB0aGlzLnR5cGUgIT09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS55ID0gdGVtcFk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVkgIT09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVZID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS55IDw9IHRlbXBZKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW92ZVVwICYmIHRoaXMubW92ZVkgPT09IDAgJiYgdGhpcy50eXBlICE9PSA3ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0ZW1wWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWSAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnggPiB0ZW1wWCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVMZWZ0ICYmIHRoaXMubW92ZVggPT09IDAgJiYgdGhpcy50eXBlICE9PSA4ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0ZW1wWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWCAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnggPD0gdGVtcFgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlUmlnaHQgJiYgdGhpcy5tb3ZlWCA9PT0gMCAmJiB0aGlzLnR5cGUgIT09IDggJiYgdGhpcy50eXBlICE9PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IHRlbXBYO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVYICE9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgTFFDb2xsaWRlU3lzdGVtLnVwZGF0ZV9sb2dpYyhkdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyDnp7vliqjlrozmiJDlkI7ph43nva7op6bmkbjlop7ph49cclxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hEZWx0YSA9IGNjLnYyKDAsIDApOyBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLuWPoOWKoOWdl+S4iiAmJiB0aGlzLm1vdmVTdGFjayA9PSB0cnVlKXtcclxuICAgICAgICAgICAgaWYodGhpcy5zdGFja2luZy54ICE9IDAgfHwgdGhpcy5zdGFja2luZy55IT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IHRoaXMuYmxvY2tfSW5mby5ub2RlLnggKyB0aGlzLnN0YWNraW5nLng7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9IHRoaXMuYmxvY2tfSW5mby5ub2RlLnkgKyB0aGlzLnN0YWNraW5nLnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvLm5vZGUgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmFkaGVzaXZlLnggIT0wICYmIHRoaXMuYWRoZXNpdmUueSE9MCAmJiB0aGlzLmJsb2NrX0luZm8ubm9kZSE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueSA9IHRoaXMubm9kZS55IC0gdGhpcy5hZGhlc2l2ZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaXNUb3VjaCA9PSAgdHJ1ZSAmJiB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5pc1RvdWNoID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExRQ29sbGlkZVN5c3RlbS51cGRhdGVfbG9naWMoZHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueSA9IHRoaXMubm9kZS55IC0gdGhpcy5hZGhlc2l2ZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4iXX0= +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxTdGFyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRWxGLDhCQUFpQztBQUUzQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFrQyx3QkFBWTtJQUE5QztRQUFBLHFFQW1DQztRQWpDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBRWxCLDRCQUE0QjtRQUU1QixzQkFBZ0IsR0FBbUIsSUFBSSxDQUFDOztRQTRCeEMsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQkcscUJBQU0sR0FBTjtJQUVBLENBQUM7SUFFRCxvQkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELG1CQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBRyxJQUFJO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUMvQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RGLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBR0QseUJBQVUsR0FBVjtRQUNJLElBQUksQ0FBQyxJQUFJLEVBQUcsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdEYsSUFBRyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsRUFBQztZQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsYUFBVyxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNsQyx1QkFBdUI7U0FDMUI7SUFDTCxDQUFDO0lBMUJEO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUM7a0RBQ2U7SUFOdkIsSUFBSTtRQUR4QixPQUFPO09BQ2EsSUFBSSxDQW1DeEI7SUFBRCxXQUFDO0NBbkNELEFBbUNDLENBbkNpQyxFQUFFLENBQUMsU0FBUyxHQW1DN0M7a0JBbkNvQixJQUFJIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTGVhcm4gVHlwZVNjcmlwdDpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvdHlwZXNjcmlwdC5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuLi9NYXBcIjtcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuXHJcblxyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGFyIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG5cclxuICAgIC8vIG1hcEluZm86IG51bWJlcltdW10gPSBbXTtcclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIHN0YXJfU3ByaXRlRnJhbWU6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuXHJcbiAgICBvbkxvYWQgKCkge1xyXG5cclxuICAgIH0gXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQodGltZSl7XHJcbiAgICAgICAgaWYodGltZSkgdGhpcy50aW1lID0gdGltZTtcclxuICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJ0aW1lXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIHRoaXMuc2NoZWR1bGUodGhpcy51cGRhdGVUaW1lLCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBcclxuICAgIHVwZGF0ZVRpbWUoKXtcclxuICAgICAgICB0aGlzLnRpbWUgLS07XHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMudGltZS50b1N0cmluZygpO1xyXG4gICAgICAgIGlmKHRoaXMudGltZSA8PSAwKXtcclxuICAgICAgICAgICAgdGhpcy51bnNjaGVkdWxlKHRoaXMudXBkYXRlVGltZSk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5mYWlsTGV2ZWwoKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= //------QC-SOURCE-SPLIT------ (function() { @@ -13730,549 +11434,549 @@ cc._RF.pop(); cc._RF.push(module, 'd2addiRqXVKQ4YEp6sK5d6R', 'lq_collide'); // Script/lq_collide_system/lq_collide.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQCollide = void 0; -var ccclass = cc._decorator.ccclass; -var property = cc._decorator.property; -var requireComponent = cc._decorator.requireComponent; -var menu = cc._decorator.menu; -var Component = cc.Component; -var Enum = cc.Enum; -var Size = cc.Size; -var Vec2 = cc.Vec2; -var Graphics = cc.Graphics; -var Node = cc.Node; -var macro = cc.macro; -var Color = cc.Color; -var lq_const_1 = require("../lq_base/data/lq_const"); -var lq_collide_config_1 = require("./lq_collide_config"); -var lq_collide_system_1 = require("./lq_collide_system"); -var lq_data_1 = require("../lq_base/data/lq_data"); -var lq_collide_base_1 = require("./lq_collide_base"); -var lq_game_util_1 = require("../lq_base/util/lq_game_util"); -var Map_1 = require("../Map"); -var LQCollide = /** @class */ (function (_super) { - __extends(LQCollide, _super); - function LQCollide() { - var _this = _super !== null && _super.apply(this, arguments) || this; - _this._draw_collide = true; - _this.can_move = true; - _this._collide_shape = lq_const_1.LQCollideShape.Rect; - _this._collide_group_index = -1; - _this.collide_group_id = 0; - _this.collide_scle = 1; - _this._radius = 50; - _this._size = new Size(100, 100); - _this._polygon_points = [new Vec2(-45, -45), new Vec2(45, -45), new Vec2(60, 40), new Vec2(0, 70), new Vec2(-60, 40)]; - //collide碰撞位置偏移 - _this._offset = new Vec2(0, 0); - _this.data_string = ''; - //每个collide的id唯一 - _this.collide_id = 0; - //状态 - _this.collide_status = lq_const_1.LQCollideStatus.Idle; - //是否可碰撞 - _this.is_enable = true; - //是否开启碰撞前后的函数 - _this.is_open_func = true; - //碰撞类别 - _this.collide_category = 0; - //碰撞筛选 - _this.collide_mask = 0; - _this.collide_map = {}; - return _this; - } - LQCollide_1 = LQCollide; - Object.defineProperty(LQCollide.prototype, "draw_collide", { - get: function () { - return this._draw_collide; - }, - set: function (value) { - this._draw_collide = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "collide_shape", { - get: function () { - return this._collide_shape; - }, - set: function (value) { - this._collide_shape = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "collide_group_index", { - get: function () { - if (this._collide_group_index === -1) { - this._collide_group_index = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id).index; - } - return this._collide_group_index; - }, - set: function (value) { - if (this._collide_group_index === value) { - return; - } - this._collide_group_index = value; - this.collide_group_id = lq_collide_system_1.LQCollideSystem.get_group_by_index(value).id; - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "radius", { - get: function () { - return this._radius; - }, - set: function (value) { - this._radius = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "size", { - // 物体速度 - // public velocity: Vec2 = new Vec2(0, 0); - get: function () { - return this._size; - }, - set: function (value) { - this._size = value; - if (this.world_rect) { - this.world_rect.width = value.width; - this.world_rect.height = value.height; - this.world_rect.half_width = value.width * 0.5; - this.world_rect.half_height = value.height * 0.5; - } - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "offset", { - get: function () { - return this._offset; - }, - set: function (value) { - this._offset = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - Object.defineProperty(LQCollide.prototype, "polygon_points", { - get: function () { - return this._polygon_points; - }, - set: function (value) { - this._polygon_points = value; - this.draw_shape(); - }, - enumerable: false, - configurable: true - }); - //检测绘制组件是否添加 - LQCollide.prototype.checkDebugDrawValid = function () { - if (!this._debugDrawer || !this._debugDrawer.isValid) { - var node = this.node.getChildByName('Collide'); - if (!node) { - node = new Node('Collide'); - node.zIndex = macro.MAX_ZINDEX; - this.node.addChild(node); - // @ts-ignore - node._objFlags = 1096; - this._debugDrawer = node.addComponent(Graphics); - this._debugDrawer.lineWidth = 3; - this._debugDrawer.strokeColor = new Color(255, 0, 0); - this._debugDrawer.fillColor = new Color(255, 0, 0); - } - else { - this._debugDrawer = node.getComponent(Graphics); - } - } - }; - //绘制形状 - LQCollide.prototype.draw_shape = function () { - if (!this._draw_collide) { - if (this._debugDrawer) { - this._debugDrawer.clear(); - } - return; - } - this.checkDebugDrawValid(); - this._debugDrawer.clear(); - var o1 = { key: 'scaleX', value: this.node.scale }; - var o2 = { key: 'scaleY', value: this.node.scale }; - lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o1); - lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o2); - if (o1.value === 0 || o2.value === 0) { - return; - } - this._debugDrawer.node.scaleX = 1 / o1.value; - this._debugDrawer.node.scaleY = 1 / o2.value; - switch (this._collide_shape) { - case lq_const_1.LQCollideShape.Circle: - this._debugDrawer.circle(+this._offset.x, +this._offset.y, this._radius); - this._debugDrawer.stroke(); - break; - case lq_const_1.LQCollideShape.Rect: - this._debugDrawer.moveTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); - this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); - this._debugDrawer.stroke(); - break; - case lq_const_1.LQCollideShape.Polygon: - this._debugDrawer.moveTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); - for (var i = 1; i < this._polygon_points.length; i++) { - this._debugDrawer.lineTo(this._polygon_points[i].x + this._offset.x, this._polygon_points[i].y + this._offset.y); - } - this._debugDrawer.lineTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); - this._debugDrawer.stroke(); - break; - } - }; - //仅用于矩形 - LQCollide.prototype.update_size = function (width, height) { - this._size.width = width; - this.world_rect.width = width; - this.world_rect.half_width = width * 0.5; - this._size.height = height; - this.world_rect.height = height; - this.world_rect.half_height = height * 0.5; - this.draw_shape(); - }; - LQCollide.prototype.init_lq_collide = function () { - this.world_rect = new lq_data_1.LQRect(0, 0, this._size.width, this._size.height); - this.draw_shape(); - var info = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id); - this.collide_mask = info.mask; - this.collide_category = info.category; - this.collide_id = LQCollide_1.id_maker++; - this.updateCollisionArea(); - }; - LQCollide.prototype.updateCollisionArea = function () { - if (this._size.width == 0 || this._size.height == 0 || Map_1.default._instance == undefined) { - return; - } - if (Map_1.default._instance.node.scale) { - var scaleX_1 = Map_1.default._instance.node.scale; - var scaleY_1 = Map_1.default._instance.node.scale; - if (scaleX_1 === 0 || scaleX_1 == undefined || scaleX_1 == null || scaleX_1 == 1) { - return; - } - switch (this._collide_shape) { - case lq_const_1.LQCollideShape.Circle: - // 圆形碰撞区域半径更新 - this._radius = this._radius * Math.max(scaleX_1, scaleY_1); - break; - case lq_const_1.LQCollideShape.Rect: - // 矩形碰撞区域尺寸更新 - // console.log(this.data_string); - if (this._size.width !== 10 && this.data_string != "-1") { - // if(this._size.width == 105 || this._size.height == 105){} - this._size.width = this._size.width * scaleX_1; - // console.log("放大倍数",scaleX); - } - if (this._size.height !== 10 && this.data_string != "-1") { - // if(this._size.width == 105 || this._size.height == 105){} - this._size.height = this._size.height * scaleY_1; - // console.log("放大倍数",scaleY); - } - // this._size.width = this._size.width * scaleX; - // this._size.height = this._size.height * scaleY; - if (this.world_rect) { - this.world_rect.width = this._size.width; - this.world_rect.height = this._size.height; - this.world_rect.half_width = this._size.width * 0.5; - this.world_rect.half_height = this._size.height * 0.5; - } - break; - case lq_const_1.LQCollideShape.Polygon: - // 多边形碰撞点坐标更新 - this._polygon_points = this._polygon_points.map(function (point) { - return new Vec2(point.x * scaleX_1, point.y * scaleY_1); - }); - break; - } - this.draw_shape(); - } - }; - LQCollide.prototype.enable_lq_collide = function () { - if (this.collide_status === lq_const_1.LQCollideStatus.Live) { - console.warn(this.node.name + '重复添加'); - return; - } - this.is_enable = true; - this.collide_status = lq_const_1.LQCollideStatus.Live; - lq_collide_system_1.LQCollideSystem.add_collide(this); - }; - LQCollide.prototype.disable_lq_collide = function () { - if (this.collide_status !== lq_const_1.LQCollideStatus.Live) { - return; - } - this.is_enable = false; - this.collide_status = lq_const_1.LQCollideStatus.Idle; - lq_collide_system_1.LQCollideSystem.remove_collide(this); - }; - LQCollide.prototype.update_lq_collide = function () { - }; - // @ts-ignore - // public on_collide(collide: LQCollide): void { - // if(collide.node.parent.uuid == this.node.parent.uuid){ - // return; - // } - // if (LQCollideConfig.switch_print_log) { - // if(this.node.parent.getComponent("Block")){ - // let block = this.node.parent.getComponent("Block"); - // if(block.isTouch){ - // block.checkCollision = true; - // // console.log("碰撞",this.node.name); - // if(this.node.name == "top" ){ - // console.log("碰到上边缘"); - // block.moveUp = false; - // if(block.touchPointY > (this.node.parent.y+this.node.height)){ - // block.moveY = 1; - // } - // } - // if(this.node.name === "down"){ - // block.moveDown = false; - // console.log("碰到下边缘"); - // if(block.touchPointY < (this.node.parent.y )){ - // block.moveY = -1; - // } - // } - // if(this.node.name === "left" ){ - // block.moveLeft = false; - // console.log("碰到左边缘"); - // if(block.touchPointX < (this.node.parent.x - this.node.parent.width)){ - // block.moveX = -1; - // } - // } - // if(this.node.name === "right"){ - // block.moveRight = false; - // console.log("碰到右边缘"); - // if(block.touchPointX > (this.node.parent.x)){ - // block.moveX = 1; - // } - // } - // } - // } - // } - // } - //@ts-ignore - LQCollide.prototype.on_enter = function (collide) { - if (this.disableCollider(collide)) { - return; - } - // if (LQCollideConfig.switch_print_log) { - // console.log(this.node.name + ' on_enter'); - // } - }; - //@ts-ignore - LQCollide.prototype.on_exit = function (collide) { - if (this.disableCollider(collide)) { - return; - } - if (lq_collide_config_1.LQCollideConfig.switch_print_log) { - if (this.node.parent.getComponent("Block")) { - var block = this.node.parent.getComponent("Block"); - // if(!block.isTouch){ - // return; - // } - block.checkCollision = false; - if (this.node.name == "top") { - block.moveUp = true; - } - if (this.node.name === "down") { - block.moveDown = true; - } - if (this.node.name === "left") { - block.moveLeft = true; - } - if (this.node.name === "right") { - block.moveRight = true; - } - } - } - }; - LQCollide.prototype.on_collide = function (collide) { - if (this.disableCollider(collide)) { - return; - } - if (lq_collide_config_1.LQCollideConfig.switch_print_log) { - if (this.node.parent.getComponent("Block")) { - var block = this.node.parent.getComponent("Block"); - var jg = false; - if (block.isTouch) { - block.checkCollision = true; - // console.log("碰撞",this.node.name); - if (this.node.name == "top") { - // console.log(collide.node.parent.name); - block.moveUp = false; - if (block.touchPointY > (this.node.parent.y + this.node.parent.height)) { - block.moveY = 1; - } - // console.log("碰到上边缘"); - } - if (this.node.name === "down") { - block.moveDown = false; - if (block.touchPointY < (this.node.parent.y)) { - block.moveY = -1; - } - // console.log("碰到下边缘"); - } - if (this.node.name === "left") { - block.moveLeft = false; - if (block.touchPointX < (this.node.parent.x - this.node.parent.width)) { - block.moveX = -1; - } - } - if (this.node.name === "right") { - block.moveRight = false; - if (block.touchPointX > (this.node.parent.x)) { - block.moveX = 1; - } - } - } - } - } - }; - LQCollide.prototype.disableCollider = function (collide) { - var jg = false; - if (collide.node && this.node) { - if (collide.node.parent && this.node.parent) { - if (collide.node.parent.uuid == this.node.parent.uuid) { - jg = true; - } - if (this.node.parent.getComponent("Block")) { - var block = this.node.parent.getComponent("Block"); - if (block.type == 1 || block.type == 10 || block.type == 9) { - if (collide.node.parent == block.block_Info.node) { - jg = true; - } - } - } - } - } - return jg; - }; - var LQCollide_1; - LQCollide.id_maker = 1; - __decorate([ - property({ displayName: '绘制形状' }) - ], LQCollide.prototype, "draw_collide", null); - __decorate([ - property - ], LQCollide.prototype, "_draw_collide", void 0); - __decorate([ - property({ tooltip: '能否移动' }) - ], LQCollide.prototype, "can_move", void 0); - __decorate([ - property({ - tooltip: '碰撞形状,None就是无敌,不参与碰撞', - type: Enum(lq_const_1.LQCollideShape), - displayName: '碰撞形状' - }) - ], LQCollide.prototype, "collide_shape", null); - __decorate([ - property() - ], LQCollide.prototype, "_collide_shape", void 0); - __decorate([ - property({ - type: Enum(lq_collide_config_1.LQCollideInfoList), tooltip: '碰撞类别', - displayName: '碰撞类别' - }) - ], LQCollide.prototype, "collide_group_index", null); - __decorate([ - property({ serializable: false }) - ], LQCollide.prototype, "_collide_group_index", void 0); - __decorate([ - property({ visible: false }) - ], LQCollide.prototype, "collide_group_id", void 0); - __decorate([ - property({ visible: false }) - ], LQCollide.prototype, "collide_scle", void 0); - __decorate([ - property({ - tooltip: 'collide半径', - visible: function () { - // @ts-ignore - return this._collide_shape === lq_const_1.LQCollideShape.Circle; - }, - displayName: '半径' - }) - ], LQCollide.prototype, "radius", null); - __decorate([ - property() - ], LQCollide.prototype, "_radius", void 0); - __decorate([ - property({ - tooltip: 'collide长宽', - visible: function () { - // @ts-ignore - return this._collide_shape === lq_const_1.LQCollideShape.Rect; - }, - displayName: '长宽' - }) - ], LQCollide.prototype, "size", null); - __decorate([ - property() - ], LQCollide.prototype, "_size", void 0); - __decorate([ - property({ displayName: '位置偏移' }) - ], LQCollide.prototype, "offset", null); - __decorate([ - property({ - type: Vec2, - visible: function () { - // @ts-ignore - return this._collide_shape === lq_const_1.LQCollideShape.Polygon; - }, - displayName: '多边形碰撞点' - }) - ], LQCollide.prototype, "polygon_points", null); - __decorate([ - property() - ], LQCollide.prototype, "_polygon_points", void 0); - __decorate([ - property() - ], LQCollide.prototype, "_offset", void 0); - __decorate([ - property({ displayName: '自定义字符串' }) - ], LQCollide.prototype, "data_string", void 0); - LQCollide = LQCollide_1 = __decorate([ - ccclass, - requireComponent(lq_collide_base_1.LQCollideBase), - menu("lq/collide") - ], LQCollide); - return LQCollide; -}(Component)); -exports.LQCollide = LQCollide; +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQCollide = void 0; +var ccclass = cc._decorator.ccclass; +var property = cc._decorator.property; +var requireComponent = cc._decorator.requireComponent; +var menu = cc._decorator.menu; +var Component = cc.Component; +var Enum = cc.Enum; +var Size = cc.Size; +var Vec2 = cc.Vec2; +var Graphics = cc.Graphics; +var Node = cc.Node; +var macro = cc.macro; +var Color = cc.Color; +var lq_const_1 = require("../lq_base/data/lq_const"); +var lq_collide_config_1 = require("./lq_collide_config"); +var lq_collide_system_1 = require("./lq_collide_system"); +var lq_data_1 = require("../lq_base/data/lq_data"); +var lq_collide_base_1 = require("./lq_collide_base"); +var lq_game_util_1 = require("../lq_base/util/lq_game_util"); +var Map_1 = require("../Map"); +var LQCollide = /** @class */ (function (_super) { + __extends(LQCollide, _super); + function LQCollide() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._draw_collide = true; + _this.can_move = true; + _this._collide_shape = lq_const_1.LQCollideShape.Rect; + _this._collide_group_index = -1; + _this.collide_group_id = 0; + _this.collide_scle = 1; + _this._radius = 50; + _this._size = new Size(100, 100); + _this._polygon_points = [new Vec2(-45, -45), new Vec2(45, -45), new Vec2(60, 40), new Vec2(0, 70), new Vec2(-60, 40)]; + //collide碰撞位置偏移 + _this._offset = new Vec2(0, 0); + _this.data_string = ''; + //每个collide的id唯一 + _this.collide_id = 0; + //状态 + _this.collide_status = lq_const_1.LQCollideStatus.Idle; + //是否可碰撞 + _this.is_enable = true; + //是否开启碰撞前后的函数 + _this.is_open_func = true; + //碰撞类别 + _this.collide_category = 0; + //碰撞筛选 + _this.collide_mask = 0; + _this.collide_map = {}; + return _this; + } + LQCollide_1 = LQCollide; + Object.defineProperty(LQCollide.prototype, "draw_collide", { + get: function () { + return this._draw_collide; + }, + set: function (value) { + this._draw_collide = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "collide_shape", { + get: function () { + return this._collide_shape; + }, + set: function (value) { + this._collide_shape = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "collide_group_index", { + get: function () { + if (this._collide_group_index === -1) { + this._collide_group_index = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id).index; + } + return this._collide_group_index; + }, + set: function (value) { + if (this._collide_group_index === value) { + return; + } + this._collide_group_index = value; + this.collide_group_id = lq_collide_system_1.LQCollideSystem.get_group_by_index(value).id; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "radius", { + get: function () { + return this._radius; + }, + set: function (value) { + this._radius = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "size", { + // 物体速度 + // public velocity: Vec2 = new Vec2(0, 0); + get: function () { + return this._size; + }, + set: function (value) { + this._size = value; + if (this.world_rect) { + this.world_rect.width = value.width; + this.world_rect.height = value.height; + this.world_rect.half_width = value.width * 0.5; + this.world_rect.half_height = value.height * 0.5; + } + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "offset", { + get: function () { + return this._offset; + }, + set: function (value) { + this._offset = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(LQCollide.prototype, "polygon_points", { + get: function () { + return this._polygon_points; + }, + set: function (value) { + this._polygon_points = value; + this.draw_shape(); + }, + enumerable: false, + configurable: true + }); + //检测绘制组件是否添加 + LQCollide.prototype.checkDebugDrawValid = function () { + if (!this._debugDrawer || !this._debugDrawer.isValid) { + var node = this.node.getChildByName('Collide'); + if (!node) { + node = new Node('Collide'); + node.zIndex = macro.MAX_ZINDEX; + this.node.addChild(node); + // @ts-ignore + node._objFlags = 1096; + this._debugDrawer = node.addComponent(Graphics); + this._debugDrawer.lineWidth = 3; + this._debugDrawer.strokeColor = new Color(255, 0, 0); + this._debugDrawer.fillColor = new Color(255, 0, 0); + } + else { + this._debugDrawer = node.getComponent(Graphics); + } + } + }; + //绘制形状 + LQCollide.prototype.draw_shape = function () { + if (!this._draw_collide) { + if (this._debugDrawer) { + this._debugDrawer.clear(); + } + return; + } + this.checkDebugDrawValid(); + this._debugDrawer.clear(); + var o1 = { key: 'scaleX', value: this.node.scale }; + var o2 = { key: 'scaleY', value: this.node.scale }; + lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o1); + lq_game_util_1.LQGameUtil.recursion_node_property(this.node, o2); + if (o1.value === 0 || o2.value === 0) { + return; + } + this._debugDrawer.node.scaleX = 1 / o1.value; + this._debugDrawer.node.scaleY = 1 / o2.value; + switch (this._collide_shape) { + case lq_const_1.LQCollideShape.Circle: + this._debugDrawer.circle(+this._offset.x, +this._offset.y, this._radius); + this._debugDrawer.stroke(); + break; + case lq_const_1.LQCollideShape.Rect: + this._debugDrawer.moveTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); + this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); + this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, +this._size.height * 0.5 + this._offset.y); + this._debugDrawer.lineTo(this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); + this._debugDrawer.lineTo(-this._size.width * 0.5 + this._offset.x, -this._size.height * 0.5 + this._offset.y); + this._debugDrawer.stroke(); + break; + case lq_const_1.LQCollideShape.Polygon: + this._debugDrawer.moveTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); + for (var i = 1; i < this._polygon_points.length; i++) { + this._debugDrawer.lineTo(this._polygon_points[i].x + this._offset.x, this._polygon_points[i].y + this._offset.y); + } + this._debugDrawer.lineTo(this._polygon_points[0].x + this._offset.x, this._polygon_points[0].y + this._offset.y); + this._debugDrawer.stroke(); + break; + } + }; + //仅用于矩形 + LQCollide.prototype.update_size = function (width, height) { + this._size.width = width; + this.world_rect.width = width; + this.world_rect.half_width = width * 0.5; + this._size.height = height; + this.world_rect.height = height; + this.world_rect.half_height = height * 0.5; + this.draw_shape(); + }; + LQCollide.prototype.init_lq_collide = function () { + this.world_rect = new lq_data_1.LQRect(0, 0, this._size.width, this._size.height); + this.draw_shape(); + var info = lq_collide_system_1.LQCollideSystem.get_info_by_id(this.collide_group_id); + this.collide_mask = info.mask; + this.collide_category = info.category; + this.collide_id = LQCollide_1.id_maker++; + this.updateCollisionArea(); + }; + LQCollide.prototype.updateCollisionArea = function () { + if (this._size.width == 0 || this._size.height == 0 || Map_1.default._instance == undefined) { + return; + } + if (Map_1.default._instance.node.scale) { + var scaleX_1 = Map_1.default._instance.node.scale; + var scaleY_1 = Map_1.default._instance.node.scale; + if (scaleX_1 === 0 || scaleX_1 == undefined || scaleX_1 == null || scaleX_1 == 1) { + return; + } + switch (this._collide_shape) { + case lq_const_1.LQCollideShape.Circle: + // 圆形碰撞区域半径更新 + this._radius = this._radius * Math.max(scaleX_1, scaleY_1); + break; + case lq_const_1.LQCollideShape.Rect: + // 矩形碰撞区域尺寸更新 + // console.log(this.data_string); + if (this._size.width !== 10 && this.data_string != "-1") { + // if(this._size.width == 105 || this._size.height == 105){} + this._size.width = this._size.width * scaleX_1; + // console.log("放大倍数",scaleX); + } + if (this._size.height !== 10 && this.data_string != "-1") { + // if(this._size.width == 105 || this._size.height == 105){} + this._size.height = this._size.height * scaleY_1; + // console.log("放大倍数",scaleY); + } + // this._size.width = this._size.width * scaleX; + // this._size.height = this._size.height * scaleY; + if (this.world_rect) { + this.world_rect.width = this._size.width; + this.world_rect.height = this._size.height; + this.world_rect.half_width = this._size.width * 0.5; + this.world_rect.half_height = this._size.height * 0.5; + } + break; + case lq_const_1.LQCollideShape.Polygon: + // 多边形碰撞点坐标更新 + this._polygon_points = this._polygon_points.map(function (point) { + return new Vec2(point.x * scaleX_1, point.y * scaleY_1); + }); + break; + } + this.draw_shape(); + } + }; + LQCollide.prototype.enable_lq_collide = function () { + if (this.collide_status === lq_const_1.LQCollideStatus.Live) { + console.warn(this.node.name + '重复添加'); + return; + } + this.is_enable = true; + this.collide_status = lq_const_1.LQCollideStatus.Live; + lq_collide_system_1.LQCollideSystem.add_collide(this); + }; + LQCollide.prototype.disable_lq_collide = function () { + if (this.collide_status !== lq_const_1.LQCollideStatus.Live) { + return; + } + this.is_enable = false; + this.collide_status = lq_const_1.LQCollideStatus.Idle; + lq_collide_system_1.LQCollideSystem.remove_collide(this); + }; + LQCollide.prototype.update_lq_collide = function () { + }; + // @ts-ignore + // public on_collide(collide: LQCollide): void { + // if(collide.node.parent.uuid == this.node.parent.uuid){ + // return; + // } + // if (LQCollideConfig.switch_print_log) { + // if(this.node.parent.getComponent("Block")){ + // let block = this.node.parent.getComponent("Block"); + // if(block.isTouch){ + // block.checkCollision = true; + // // console.log("碰撞",this.node.name); + // if(this.node.name == "top" ){ + // console.log("碰到上边缘"); + // block.moveUp = false; + // if(block.touchPointY > (this.node.parent.y+this.node.height)){ + // block.moveY = 1; + // } + // } + // if(this.node.name === "down"){ + // block.moveDown = false; + // console.log("碰到下边缘"); + // if(block.touchPointY < (this.node.parent.y )){ + // block.moveY = -1; + // } + // } + // if(this.node.name === "left" ){ + // block.moveLeft = false; + // console.log("碰到左边缘"); + // if(block.touchPointX < (this.node.parent.x - this.node.parent.width)){ + // block.moveX = -1; + // } + // } + // if(this.node.name === "right"){ + // block.moveRight = false; + // console.log("碰到右边缘"); + // if(block.touchPointX > (this.node.parent.x)){ + // block.moveX = 1; + // } + // } + // } + // } + // } + // } + //@ts-ignore + LQCollide.prototype.on_enter = function (collide) { + if (this.disableCollider(collide)) { + return; + } + // if (LQCollideConfig.switch_print_log) { + // console.log(this.node.name + ' on_enter'); + // } + }; + //@ts-ignore + LQCollide.prototype.on_exit = function (collide) { + if (this.disableCollider(collide)) { + return; + } + if (lq_collide_config_1.LQCollideConfig.switch_print_log) { + if (this.node.parent.getComponent("Block")) { + var block = this.node.parent.getComponent("Block"); + // if(!block.isTouch){ + // return; + // } + block.checkCollision = false; + if (this.node.name == "top") { + block.moveUp = true; + } + if (this.node.name === "down") { + block.moveDown = true; + } + if (this.node.name === "left") { + block.moveLeft = true; + } + if (this.node.name === "right") { + block.moveRight = true; + } + } + } + }; + LQCollide.prototype.on_collide = function (collide) { + if (this.disableCollider(collide)) { + return; + } + if (lq_collide_config_1.LQCollideConfig.switch_print_log) { + if (this.node.parent.getComponent("Block")) { + var block = this.node.parent.getComponent("Block"); + var jg = false; + if (block.isTouch) { + block.checkCollision = true; + // console.log("碰撞",this.node.name); + if (this.node.name == "top") { + // console.log(collide.node.parent.name); + block.moveUp = false; + if (block.touchPointY > (this.node.parent.y + this.node.parent.height)) { + block.moveY = 1; + } + // console.log("碰到上边缘"); + } + if (this.node.name === "down") { + block.moveDown = false; + if (block.touchPointY < (this.node.parent.y)) { + block.moveY = -1; + } + // console.log("碰到下边缘"); + } + if (this.node.name === "left") { + block.moveLeft = false; + if (block.touchPointX < (this.node.parent.x - this.node.parent.width)) { + block.moveX = -1; + } + } + if (this.node.name === "right") { + block.moveRight = false; + if (block.touchPointX > (this.node.parent.x)) { + block.moveX = 1; + } + } + } + } + } + }; + LQCollide.prototype.disableCollider = function (collide) { + var jg = false; + if (collide.node && this.node) { + if (collide.node.parent && this.node.parent) { + if (collide.node.parent.uuid == this.node.parent.uuid) { + jg = true; + } + if (this.node.parent.getComponent("Block")) { + var block = this.node.parent.getComponent("Block"); + if (block.type == 1 || block.type == 10 || block.type == 9) { + if (collide.node.parent == block.block_Info.node) { + jg = true; + } + } + } + } + } + return jg; + }; + var LQCollide_1; + LQCollide.id_maker = 1; + __decorate([ + property({ displayName: '绘制形状' }) + ], LQCollide.prototype, "draw_collide", null); + __decorate([ + property + ], LQCollide.prototype, "_draw_collide", void 0); + __decorate([ + property({ tooltip: '能否移动' }) + ], LQCollide.prototype, "can_move", void 0); + __decorate([ + property({ + tooltip: '碰撞形状,None就是无敌,不参与碰撞', + type: Enum(lq_const_1.LQCollideShape), + displayName: '碰撞形状' + }) + ], LQCollide.prototype, "collide_shape", null); + __decorate([ + property() + ], LQCollide.prototype, "_collide_shape", void 0); + __decorate([ + property({ + type: Enum(lq_collide_config_1.LQCollideInfoList), tooltip: '碰撞类别', + displayName: '碰撞类别' + }) + ], LQCollide.prototype, "collide_group_index", null); + __decorate([ + property({ serializable: false }) + ], LQCollide.prototype, "_collide_group_index", void 0); + __decorate([ + property({ visible: false }) + ], LQCollide.prototype, "collide_group_id", void 0); + __decorate([ + property({ visible: false }) + ], LQCollide.prototype, "collide_scle", void 0); + __decorate([ + property({ + tooltip: 'collide半径', + visible: function () { + // @ts-ignore + return this._collide_shape === lq_const_1.LQCollideShape.Circle; + }, + displayName: '半径' + }) + ], LQCollide.prototype, "radius", null); + __decorate([ + property() + ], LQCollide.prototype, "_radius", void 0); + __decorate([ + property({ + tooltip: 'collide长宽', + visible: function () { + // @ts-ignore + return this._collide_shape === lq_const_1.LQCollideShape.Rect; + }, + displayName: '长宽' + }) + ], LQCollide.prototype, "size", null); + __decorate([ + property() + ], LQCollide.prototype, "_size", void 0); + __decorate([ + property({ displayName: '位置偏移' }) + ], LQCollide.prototype, "offset", null); + __decorate([ + property({ + type: Vec2, + visible: function () { + // @ts-ignore + return this._collide_shape === lq_const_1.LQCollideShape.Polygon; + }, + displayName: '多边形碰撞点' + }) + ], LQCollide.prototype, "polygon_points", null); + __decorate([ + property() + ], LQCollide.prototype, "_polygon_points", void 0); + __decorate([ + property() + ], LQCollide.prototype, "_offset", void 0); + __decorate([ + property({ displayName: '自定义字符串' }) + ], LQCollide.prototype, "data_string", void 0); + LQCollide = LQCollide_1 = __decorate([ + ccclass, + requireComponent(lq_collide_base_1.LQCollideBase), + menu("lq/collide") + ], LQCollide); + return LQCollide; +}(Component)); +exports.LQCollide = LQCollide; cc._RF.pop(); } @@ -14291,2172 +11995,7 @@ cc._RF.pop(); (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/module/Crypto/crypto-js.min.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'e64e1qXyT9CV6s0gDQdj/ed', 'crypto-js.min'); -// Script/module/Crypto/crypto-js.min.js - -"use strict"; - -!function (t, r) { - "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r(); -}(void 0, function () { - var t = t || function (t, r) { - var e = Object.create || function () { - function t() {} - return function (r) { - var e; - return t.prototype = r, e = new t(), t.prototype = null, e; - }; - }(), - i = {}, - n = i.lib = {}, - o = n.Base = function () { - return { - extend: function extend(t) { - var r = e(this); - return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { - r.$super.init.apply(this, arguments); - }), r.init.prototype = r, r.$super = this, r; - }, - create: function create() { - var t = this.extend(); - return t.init.apply(t, arguments), t; - }, - init: function init() {}, - mixIn: function mixIn(t) { - for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); - t.hasOwnProperty("toString") && (this.toString = t.toString); - }, - clone: function clone() { - return this.init.prototype.extend(this); - } - }; - }(), - s = n.WordArray = o.extend({ - init: function init(t, e) { - t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length; - }, - toString: function toString(t) { - return (t || c).stringify(this); - }, - concat: function concat(t) { - var r = this.words, - e = t.words, - i = this.sigBytes, - n = t.sigBytes; - if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { - var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; - r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8; - } else for (var o = 0; o < n; o += 4) r[i + o >>> 2] = e[o >>> 2]; - return this.sigBytes += n, this; - }, - clamp: function clamp() { - var r = this.words, - e = this.sigBytes; - r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4); - }, - clone: function clone() { - var t = o.clone.call(this); - return t.words = this.words.slice(0), t; - }, - random: function random(r) { - for (var e, i = [], n = function n(r) { - var r = r, - e = 987654321, - i = 4294967295; - return function () { - e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; - var n = (e << 16) + r & i; - return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1); - }; - }, o = 0; o < r; o += 4) { - var a = n(4294967296 * (e || t.random())); - e = 987654071 * a(), i.push(4294967296 * a() | 0); - } - return new s.init(i, r); - } - }), - a = i.enc = {}, - c = a.Hex = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { - var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; - i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i += 2) e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; - return new s.init(e, r / 2); - } - }, - h = a.Latin1 = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { - var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; - i.push(String.fromCharCode(o)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; - return new s.init(e, r); - } - }, - l = a.Utf8 = { - stringify: function stringify(t) { - try { - return decodeURIComponent(escape(h.stringify(t))); - } catch (t) { - throw new Error("Malformed UTF-8 data"); - } - }, - parse: function parse(t) { - return h.parse(unescape(encodeURIComponent(t))); - } - }, - f = n.BufferedBlockAlgorithm = o.extend({ - reset: function reset() { - this._data = new s.init(), this._nDataBytes = 0; - }, - _append: function _append(t) { - "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes; - }, - _process: function _process(r) { - var e = this._data, - i = e.words, - n = e.sigBytes, - o = this.blockSize, - a = 4 * o, - c = n / a; - c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); - var h = c * o, - l = t.min(4 * h, n); - if (h) { - for (var f = 0; f < h; f += o) this._doProcessBlock(i, f); - var u = i.splice(0, h); - e.sigBytes -= l; - } - return new s.init(u, l); - }, - clone: function clone() { - var t = o.clone.call(this); - return t._data = this._data.clone(), t; - }, - _minBufferSize: 0 - }), - u = (n.Hasher = f.extend({ - cfg: o.extend(), - init: function init(t) { - this.cfg = this.cfg.extend(t), this.reset(); - }, - reset: function reset() { - f.reset.call(this), this._doReset(); - }, - update: function update(t) { - return this._append(t), this._process(), this; - }, - finalize: function finalize(t) { - t && this._append(t); - var r = this._doFinalize(); - return r; - }, - blockSize: 16, - _createHelper: function _createHelper(t) { - return function (r, e) { - return new t.init(e).finalize(r); - }; - }, - _createHmacHelper: function _createHmacHelper(t) { - return function (r, e) { - return new u.HMAC.init(t, e).finalize(r); - }; - } - }), i.algo = {}); - return i; - }(Math); - return function () { - function r(t, r, e) { - for (var i = [], o = 0, s = 0; s < r; s++) if (s % 4) { - var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, - c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; - i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++; - } - return n.create(i, o); - } - var e = t, - i = e.lib, - n = i.WordArray, - o = e.enc; - o.Base64 = { - stringify: function stringify(t) { - var r = t.words, - e = t.sigBytes, - i = this._map; - t.clamp(); - for (var n = [], o = 0; o < e; o += 3) for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++) n.push(i.charAt(h >>> 6 * (3 - l) & 63)); - var f = i.charAt(64); - if (f) for (; n.length % 4;) n.push(f); - return n.join(""); - }, - parse: function parse(t) { - var e = t.length, - i = this._map, - n = this._reverseMap; - if (!n) { - n = this._reverseMap = []; - for (var o = 0; o < i.length; o++) n[i.charCodeAt(o)] = o; - } - var s = i.charAt(64); - if (s) { - var a = t.indexOf(s); - a !== -1 && (e = a); - } - return r(t, e, n); - }, - _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" - }; - }(), function (r) { - function e(t, r, e, i, n, o, s) { - var a = t + (r & e | ~r & i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function i(t, r, e, i, n, o, s) { - var a = t + (r & i | e & ~i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function n(t, r, e, i, n, o, s) { - var a = t + (r ^ e ^ i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function o(t, r, e, i, n, o, s) { - var a = t + (e ^ (r | ~i)) + n + s; - return (a << o | a >>> 32 - o) + r; - } - var s = t, - a = s.lib, - c = a.WordArray, - h = a.Hasher, - l = s.algo, - f = []; - !function () { - for (var t = 0; t < 64; t++) f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0; - }(); - var u = l.MD5 = h.extend({ - _doReset: function _doReset() { - this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var s = 0; s < 16; s++) { - var a = r + s, - c = t[a]; - t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8); - } - var h = this._hash.words, - l = t[r + 0], - u = t[r + 1], - d = t[r + 2], - v = t[r + 3], - p = t[r + 4], - _ = t[r + 5], - y = t[r + 6], - g = t[r + 7], - B = t[r + 8], - w = t[r + 9], - k = t[r + 10], - S = t[r + 11], - m = t[r + 12], - x = t[r + 13], - b = t[r + 14], - H = t[r + 15], - z = h[0], - A = h[1], - C = h[2], - D = h[3]; - z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = 8 * this._nDataBytes, - n = 8 * t.sigBytes; - e[n >>> 5] |= 128 << 24 - n % 32; - var o = r.floor(i / 4294967296), - s = i; - e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); - for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { - var l = c[h]; - c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); - } - return a; - }, - clone: function clone() { - var t = h.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u); - }(Math), function () { - var r = t, - e = r.lib, - i = e.WordArray, - n = e.Hasher, - o = r.algo, - s = [], - a = o.SHA1 = n.extend({ - _doReset: function _doReset() { - this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { - if (h < 16) s[h] = 0 | t[r + h];else { - var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; - s[h] = l << 1 | l >>> 31; - } - var f = (i << 5 | i >>> 27) + c + s[h]; - f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f; - } - e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash; - }, - clone: function clone() { - var t = n.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a); - }(), function (r) { - var e = t, - i = e.lib, - n = i.WordArray, - o = i.Hasher, - s = e.algo, - a = [], - c = []; - !function () { - function t(t) { - for (var e = r.sqrt(t), i = 2; i <= e; i++) if (!(t % i)) return !1; - return !0; - } - function e(t) { - return 4294967296 * (t - (0 | t)) | 0; - } - for (var i = 2, n = 0; n < 64;) t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++; - }(); - var h = [], - l = s.SHA256 = o.extend({ - _doReset: function _doReset() { - this._hash = new n.init(a.slice(0)); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { - if (d < 16) h[d] = 0 | t[r + d];else { - var v = h[d - 15], - p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, - _ = h[d - 2], - y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; - h[d] = p + h[d - 7] + y + h[d - 16]; - } - var g = a & l ^ ~a & f, - B = i & n ^ i & o ^ n & o, - w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), - k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), - S = u + k + g + c[d] + h[d], - m = w + B; - u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0; - } - e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = 8 * this._nDataBytes, - n = 8 * t.sigBytes; - return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash; - }, - clone: function clone() { - var t = o.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l); - }(Math), function () { - function r(t) { - return t << 8 & 4278255360 | t >>> 8 & 16711935; - } - var e = t, - i = e.lib, - n = i.WordArray, - o = e.enc; - o.Utf16 = o.Utf16BE = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { - var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; - i.push(String.fromCharCode(o)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; - return n.create(e, 2 * r); - } - }; - o.Utf16LE = { - stringify: function stringify(t) { - for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { - var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); - n.push(String.fromCharCode(s)); - } - return n.join(""); - }, - parse: function parse(t) { - for (var e = t.length, i = [], o = 0; o < e; o++) i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); - return n.create(i, 2 * e); - } - }; - }(), function () { - if ("function" == typeof ArrayBuffer) { - var r = t, - e = r.lib, - i = e.WordArray, - n = i.init, - o = i.init = function (t) { - if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { - for (var r = t.byteLength, e = [], i = 0; i < r; i++) e[i >>> 2] |= t[i] << 24 - i % 4 * 8; - n.call(this, e, r); - } else n.apply(this, arguments); - }; - o.prototype = i; - } - }(), function (r) { - function e(t, r, e) { - return t ^ r ^ e; - } - function i(t, r, e) { - return t & r | ~t & e; - } - function n(t, r, e) { - return (t | ~r) ^ e; - } - function o(t, r, e) { - return t & e | r & ~e; - } - function s(t, r, e) { - return t ^ (r | ~e); - } - function a(t, r) { - return t << r | t >>> 32 - r; - } - var c = t, - h = c.lib, - l = h.WordArray, - f = h.Hasher, - u = c.algo, - d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), - v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), - p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), - _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), - y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), - g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), - B = u.RIPEMD160 = f.extend({ - _doReset: function _doReset() { - this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var c = 0; c < 16; c++) { - var h = r + c, - l = t[h]; - t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); - } - var f, - u, - B, - w, - k, - S, - m, - x, - b, - H, - z = this._hash.words, - A = y.words, - C = g.words, - D = d.words, - R = v.words, - E = p.words, - M = _.words; - S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; - for (var F, c = 0; c < 80; c += 1) F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; - F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); - for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { - var a = o[s]; - o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8); - } - return n; - }, - clone: function clone() { - var t = f.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B); - }(Math), function () { - var r = t, - e = r.lib, - i = e.Base, - n = r.enc, - o = n.Utf8, - s = r.algo; - s.HMAC = i.extend({ - init: function init(t, r) { - t = this._hasher = new t.init(), "string" == typeof r && (r = o.parse(r)); - var e = t.blockSize, - i = 4 * e; - r.sigBytes > i && (r = t.finalize(r)), r.clamp(); - for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++) a[h] ^= 1549556828, c[h] ^= 909522486; - n.sigBytes = s.sigBytes = i, this.reset(); - }, - reset: function reset() { - var t = this._hasher; - t.reset(), t.update(this._iKey); - }, - update: function update(t) { - return this._hasher.update(t), this; - }, - finalize: function finalize(t) { - var r = this._hasher, - e = r.finalize(t); - r.reset(); - var i = r.finalize(this._oKey.clone().concat(e)); - return i; - } - }); - }(), function () { - var r = t, - e = r.lib, - i = e.Base, - n = e.WordArray, - o = r.algo, - s = o.SHA1, - a = o.HMAC, - c = o.PBKDF2 = i.extend({ - cfg: i.extend({ - keySize: 4, - hasher: s, - iterations: 1 - }), - init: function init(t) { - this.cfg = this.cfg.extend(t); - }, - compute: function compute(t, r) { - for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { - var u = i.update(r).finalize(s); - i.reset(); - for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { - p = i.finalize(p), i.reset(); - for (var y = p.words, g = 0; g < v; g++) d[g] ^= y[g]; - } - o.concat(u), h[0]++; - } - return o.sigBytes = 4 * l, o; - } - }); - r.PBKDF2 = function (t, r, e) { - return c.create(e).compute(t, r); - }; - }(), function () { - var r = t, - e = r.lib, - i = e.Base, - n = e.WordArray, - o = r.algo, - s = o.MD5, - a = o.EvpKDF = i.extend({ - cfg: i.extend({ - keySize: 4, - hasher: s, - iterations: 1 - }), - init: function init(t) { - this.cfg = this.cfg.extend(t); - }, - compute: function compute(t, r) { - for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { - h && i.update(h); - var h = i.update(t).finalize(r); - i.reset(); - for (var l = 1; l < c; l++) h = i.finalize(h), i.reset(); - o.concat(h); - } - return o.sigBytes = 4 * a, o; - } - }); - r.EvpKDF = function (t, r, e) { - return a.create(e).compute(t, r); - }; - }(), function () { - var r = t, - e = r.lib, - i = e.WordArray, - n = r.algo, - o = n.SHA256, - s = n.SHA224 = o.extend({ - _doReset: function _doReset() { - this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); - }, - _doFinalize: function _doFinalize() { - var t = o._doFinalize.call(this); - return t.sigBytes -= 4, t; - } - }); - r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s); - }(), function (r) { - var e = t, - i = e.lib, - n = i.Base, - o = i.WordArray, - s = e.x64 = {}; - s.Word = n.extend({ - init: function init(t, r) { - this.high = t, this.low = r; - } - }), s.WordArray = n.extend({ - init: function init(t, e) { - t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length; - }, - toX32: function toX32() { - for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { - var n = t[i]; - e.push(n.high), e.push(n.low); - } - return o.create(e, this.sigBytes); - }, - clone: function clone() { - for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++) r[i] = r[i].clone(); - return t; - } - }); - }(), function (r) { - var e = t, - i = e.lib, - n = i.WordArray, - o = i.Hasher, - s = e.x64, - a = s.Word, - c = e.algo, - h = [], - l = [], - f = []; - !function () { - for (var t = 1, r = 0, e = 0; e < 24; e++) { - h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; - var i = r % 5, - n = (2 * t + 3 * r) % 5; - t = i, r = n; - } - for (var t = 0; t < 5; t++) for (var r = 0; r < 5; r++) l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; - for (var o = 1, s = 0; s < 24; s++) { - for (var c = 0, u = 0, d = 0; d < 7; d++) { - if (1 & o) { - var v = (1 << d) - 1; - v < 32 ? u ^= 1 << v : c ^= 1 << v - 32; - } - 128 & o ? o = o << 1 ^ 113 : o <<= 1; - } - f[s] = a.create(c, u); - } - }(); - var u = []; - !function () { - for (var t = 0; t < 25; t++) u[t] = a.create(); - }(); - var d = c.SHA3 = o.extend({ - cfg: o.cfg.extend({ - outputLength: 512 - }), - _doReset: function _doReset() { - for (var t = this._state = [], r = 0; r < 25; r++) t[r] = new a.init(); - this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { - var o = t[r + 2 * n], - s = t[r + 2 * n + 1]; - o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); - var a = e[n]; - a.high ^= s, a.low ^= o; - } - for (var c = 0; c < 24; c++) { - for (var d = 0; d < 5; d++) { - for (var v = 0, p = 0, _ = 0; _ < 5; _++) { - var a = e[d + 5 * _]; - v ^= a.high, p ^= a.low; - } - var y = u[d]; - y.high = v, y.low = p; - } - for (var d = 0; d < 5; d++) for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { - var a = e[d + 5 * _]; - a.high ^= v, a.low ^= p; - } - for (var S = 1; S < 25; S++) { - var a = e[S], - m = a.high, - x = a.low, - b = h[S]; - if (b < 32) var v = m << b | x >>> 32 - b, - p = x << b | m >>> 32 - b;else var v = x << b - 32 | m >>> 64 - b, - p = m << b - 32 | x >>> 64 - b; - var H = u[l[S]]; - H.high = v, H.low = p; - } - var z = u[0], - A = e[0]; - z.high = A.high, z.low = A.low; - for (var d = 0; d < 5; d++) for (var _ = 0; _ < 5; _++) { - var S = d + 5 * _, - a = e[S], - C = u[S], - D = u[(d + 1) % 5 + 5 * _], - R = u[(d + 2) % 5 + 5 * _]; - a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low; - } - var a = e[0], - E = f[c]; - a.high ^= E.high, a.low ^= E.low; - } - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = (8 * this._nDataBytes, 8 * t.sigBytes), - o = 32 * this.blockSize; - e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); - for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { - var f = s[l], - u = f.high, - d = f.low; - u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u); - } - return new n.init(h, a); - }, - clone: function clone() { - for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++) r[e] = r[e].clone(); - return t; - } - }); - e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d); - }(Math), function () { - function r() { - return s.create.apply(s, arguments); - } - var e = t, - i = e.lib, - n = i.Hasher, - o = e.x64, - s = o.Word, - a = o.WordArray, - c = e.algo, - h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], - l = []; - !function () { - for (var t = 0; t < 80; t++) l[t] = r(); - }(); - var f = c.SHA512 = n.extend({ - _doReset: function _doReset() { - this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { - var Z = l[T]; - if (T < 16) var q = Z.high = 0 | t[r + 2 * T], - G = Z.low = 0 | t[r + 2 * T + 1];else { - var J = l[T - 15], - $ = J.high, - Q = J.low, - V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, - Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), - tt = l[T - 2], - rt = tt.high, - et = tt.low, - it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, - nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), - ot = l[T - 7], - st = ot.high, - at = ot.low, - ct = l[T - 16], - ht = ct.high, - lt = ct.low, - G = Y + at, - q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), - G = G + nt, - q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), - G = G + lt, - q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); - Z.high = q, Z.low = G; - } - var ft = O & I ^ ~O & X, - ut = U & K ^ ~U & L, - dt = C & R ^ C & M ^ R & M, - vt = D & E ^ D & F ^ E & F, - pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), - _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), - yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), - gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), - Bt = h[T], - wt = Bt.high, - kt = Bt.low, - St = N + gt, - mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), - St = St + ut, - mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), - St = St + kt, - mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), - St = St + G, - mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), - xt = _t + vt, - bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); - j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0; - } - v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0); - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); - var n = this._hash.toX32(); - return n; - }, - clone: function clone() { - var t = n.clone.call(this); - return t._hash = this._hash.clone(), t; - }, - blockSize: 32 - }); - e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f); - }(), function () { - var r = t, - e = r.x64, - i = e.Word, - n = e.WordArray, - o = r.algo, - s = o.SHA512, - a = o.SHA384 = s.extend({ - _doReset: function _doReset() { - this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]); - }, - _doFinalize: function _doFinalize() { - var t = s._doFinalize.call(this); - return t.sigBytes -= 16, t; - } - }); - r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a); - }(), t.lib.Cipher || function (r) { - var e = t, - i = e.lib, - n = i.Base, - o = i.WordArray, - s = i.BufferedBlockAlgorithm, - a = e.enc, - c = (a.Utf8, a.Base64), - h = e.algo, - l = h.EvpKDF, - f = i.Cipher = s.extend({ - cfg: n.extend(), - createEncryptor: function createEncryptor(t, r) { - return this.create(this._ENC_XFORM_MODE, t, r); - }, - createDecryptor: function createDecryptor(t, r) { - return this.create(this._DEC_XFORM_MODE, t, r); - }, - init: function init(t, r, e) { - this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset(); - }, - reset: function reset() { - s.reset.call(this), this._doReset(); - }, - process: function process(t) { - return this._append(t), this._process(); - }, - finalize: function finalize(t) { - t && this._append(t); - var r = this._doFinalize(); - return r; - }, - keySize: 4, - ivSize: 4, - _ENC_XFORM_MODE: 1, - _DEC_XFORM_MODE: 2, - _createHelper: function () { - function t(t) { - return "string" == typeof t ? m : w; - } - return function (r) { - return { - encrypt: function encrypt(e, i, n) { - return t(i).encrypt(r, e, i, n); - }, - decrypt: function decrypt(e, i, n) { - return t(i).decrypt(r, e, i, n); - } - }; - }; - }() - }), - u = (i.StreamCipher = f.extend({ - _doFinalize: function _doFinalize() { - var t = this._process(!0); - return t; - }, - blockSize: 1 - }), e.mode = {}), - d = i.BlockCipherMode = n.extend({ - createEncryptor: function createEncryptor(t, r) { - return this.Encryptor.create(t, r); - }, - createDecryptor: function createDecryptor(t, r) { - return this.Decryptor.create(t, r); - }, - init: function init(t, r) { - this._cipher = t, this._iv = r; - } - }), - v = u.CBC = function () { - function t(t, e, i) { - var n = this._iv; - if (n) { - var o = n; - this._iv = r; - } else var o = this._prevBlock; - for (var s = 0; s < i; s++) t[e + s] ^= o[s]; - } - var e = d.extend(); - return e.Encryptor = e.extend({ - processBlock: function processBlock(r, e) { - var i = this._cipher, - n = i.blockSize; - t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n); - } - }), e.Decryptor = e.extend({ - processBlock: function processBlock(r, e) { - var i = this._cipher, - n = i.blockSize, - o = r.slice(e, e + n); - i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o; - } - }), e; - }(), - p = e.pad = {}, - _ = p.Pkcs7 = { - pad: function pad(t, r) { - for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4) s.push(n); - var c = o.create(s, i); - t.concat(c); - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, - y = (i.BlockCipher = f.extend({ - cfg: f.cfg.extend({ - mode: v, - padding: _ - }), - reset: function reset() { - f.reset.call(this); - var t = this.cfg, - r = t.iv, - e = t.mode; - if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor;else { - var i = e.createDecryptor; - this._minBufferSize = 1; - } - this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - this._mode.processBlock(t, r); - }, - _doFinalize: function _doFinalize() { - var t = this.cfg.padding; - if (this._xformMode == this._ENC_XFORM_MODE) { - t.pad(this._data, this.blockSize); - var r = this._process(!0); - } else { - var r = this._process(!0); - t.unpad(r); - } - return r; - }, - blockSize: 4 - }), i.CipherParams = n.extend({ - init: function init(t) { - this.mixIn(t); - }, - toString: function toString(t) { - return (t || this.formatter).stringify(this); - } - })), - g = e.format = {}, - B = g.OpenSSL = { - stringify: function stringify(t) { - var r = t.ciphertext, - e = t.salt; - if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r);else var i = r; - return i.toString(c); - }, - parse: function parse(t) { - var r = c.parse(t), - e = r.words; - if (1398893684 == e[0] && 1701076831 == e[1]) { - var i = o.create(e.slice(2, 4)); - e.splice(0, 4), r.sigBytes -= 16; - } - return y.create({ - ciphertext: r, - salt: i - }); - } - }, - w = i.SerializableCipher = n.extend({ - cfg: n.extend({ - format: B - }), - encrypt: function encrypt(t, r, e, i) { - i = this.cfg.extend(i); - var n = t.createEncryptor(e, i), - o = n.finalize(r), - s = n.cfg; - return y.create({ - ciphertext: o, - key: e, - iv: s.iv, - algorithm: t, - mode: s.mode, - padding: s.padding, - blockSize: t.blockSize, - formatter: i.format - }); - }, - decrypt: function decrypt(t, r, e, i) { - i = this.cfg.extend(i), r = this._parse(r, i.format); - var n = t.createDecryptor(e, i).finalize(r.ciphertext); - return n; - }, - _parse: function _parse(t, r) { - return "string" == typeof t ? r.parse(t, this) : t; - } - }), - k = e.kdf = {}, - S = k.OpenSSL = { - execute: function execute(t, r, e, i) { - i || (i = o.random(8)); - var n = l.create({ - keySize: r + e - }).compute(t, i), - s = o.create(n.words.slice(r), 4 * e); - return n.sigBytes = 4 * r, y.create({ - key: n, - iv: s, - salt: i - }); - } - }, - m = i.PasswordBasedCipher = w.extend({ - cfg: w.cfg.extend({ - kdf: S - }), - encrypt: function encrypt(t, r, e, i) { - i = this.cfg.extend(i); - var n = i.kdf.execute(e, t.keySize, t.ivSize); - i.iv = n.iv; - var o = w.encrypt.call(this, t, r, n.key, i); - return o.mixIn(n), o; - }, - decrypt: function decrypt(t, r, e, i) { - i = this.cfg.extend(i), r = this._parse(r, i.format); - var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); - i.iv = n.iv; - var o = w.decrypt.call(this, t, r, n.key, i); - return o; - } - }); - }(), t.mode.CFB = function () { - function r(t, r, e, i) { - var n = this._iv; - if (n) { - var o = n.slice(0); - this._iv = void 0; - } else var o = this._prevBlock; - i.encryptBlock(o, 0); - for (var s = 0; s < e; s++) t[r + s] ^= o[s]; - } - var e = t.lib.BlockCipherMode.extend(); - return e.Encryptor = e.extend({ - processBlock: function processBlock(t, e) { - var i = this._cipher, - n = i.blockSize; - r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n); - } - }), e.Decryptor = e.extend({ - processBlock: function processBlock(t, e) { - var i = this._cipher, - n = i.blockSize, - o = t.slice(e, e + n); - r.call(this, t, e, n, i), this._prevBlock = o; - } - }), e; - }(), t.mode.ECB = function () { - var r = t.lib.BlockCipherMode.extend(); - return r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - this._cipher.encryptBlock(t, r); - } - }), r.Decryptor = r.extend({ - processBlock: function processBlock(t, r) { - this._cipher.decryptBlock(t, r); - } - }), r; - }(), t.pad.AnsiX923 = { - pad: function pad(t, r) { - var e = t.sigBytes, - i = 4 * r, - n = i - e % i, - o = e + n - 1; - t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n; - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, t.pad.Iso10126 = { - pad: function pad(r, e) { - var i = 4 * e, - n = i - r.sigBytes % i; - r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)); - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, t.pad.Iso97971 = { - pad: function pad(r, e) { - r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e); - }, - unpad: function unpad(r) { - t.pad.ZeroPadding.unpad(r), r.sigBytes--; - } - }, t.mode.OFB = function () { - var r = t.lib.BlockCipherMode.extend(), - e = r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - var e = this._cipher, - i = e.blockSize, - n = this._iv, - o = this._keystream; - n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); - for (var s = 0; s < i; s++) t[r + s] ^= o[s]; - } - }); - return r.Decryptor = e, r; - }(), t.pad.NoPadding = { - pad: function pad() {}, - unpad: function unpad() {} - }, function (r) { - var e = t, - i = e.lib, - n = i.CipherParams, - o = e.enc, - s = o.Hex, - a = e.format; - a.Hex = { - stringify: function stringify(t) { - return t.ciphertext.toString(s); - }, - parse: function parse(t) { - var r = s.parse(t); - return n.create({ - ciphertext: r - }); - } - }; - }(), function () { - var r = t, - e = r.lib, - i = e.BlockCipher, - n = r.algo, - o = [], - s = [], - a = [], - c = [], - h = [], - l = [], - f = [], - u = [], - d = [], - v = []; - !function () { - for (var t = [], r = 0; r < 256; r++) r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; - for (var e = 0, i = 0, r = 0; r < 256; r++) { - var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; - n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; - var p = t[e], - _ = t[p], - y = t[_], - g = 257 * t[n] ^ 16843008 * n; - a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; - var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; - f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1; - } - }(); - var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], - _ = n.AES = i.extend({ - _doReset: function _doReset() { - if (!this._nRounds || this._keyPriorReset !== this._key) { - for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++) if (a < e) s[a] = r[a];else { - var c = s[a - 1]; - a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c; - } - for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { - var a = n - l; - if (l % 4) var c = s[a];else var c = s[a - 4]; - l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]]; - } - } - }, - encryptBlock: function encryptBlock(t, r) { - this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o); - }, - decryptBlock: function decryptBlock(t, r) { - var e = t[r + 1]; - t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); - var e = t[r + 1]; - t[r + 1] = t[r + 3], t[r + 3] = e; - }, - _doCryptBlock: function _doCryptBlock(t, r, e, i, n, o, s, a) { - for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { - var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], - _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], - y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], - g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; - h = p, l = _, f = y, u = g; - } - var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], - _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], - y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], - g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; - t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g; - }, - keySize: 8 - }); - r.AES = i._createHelper(_); - }(), function () { - function r(t, r) { - var e = (this._lBlock >>> t ^ this._rBlock) & r; - this._rBlock ^= e, this._lBlock ^= e << t; - } - function e(t, r) { - var e = (this._rBlock >>> t ^ this._lBlock) & r; - this._lBlock ^= e, this._rBlock ^= e << t; - } - var i = t, - n = i.lib, - o = n.WordArray, - s = n.BlockCipher, - a = i.algo, - c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], - h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], - l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], - f = [{ - 0: 8421888, - 268435456: 32768, - 536870912: 8421378, - 805306368: 2, - 1073741824: 512, - 1342177280: 8421890, - 1610612736: 8389122, - 1879048192: 8388608, - 2147483648: 514, - 2415919104: 8389120, - 2684354560: 33280, - 2952790016: 8421376, - 3221225472: 32770, - 3489660928: 8388610, - 3758096384: 0, - 4026531840: 33282, - 134217728: 0, - 402653184: 8421890, - 671088640: 33282, - 939524096: 32768, - 1207959552: 8421888, - 1476395008: 512, - 1744830464: 8421378, - 2013265920: 2, - 2281701376: 8389120, - 2550136832: 33280, - 2818572288: 8421376, - 3087007744: 8389122, - 3355443200: 8388610, - 3623878656: 32770, - 3892314112: 514, - 4160749568: 8388608, - 1: 32768, - 268435457: 2, - 536870913: 8421888, - 805306369: 8388608, - 1073741825: 8421378, - 1342177281: 33280, - 1610612737: 512, - 1879048193: 8389122, - 2147483649: 8421890, - 2415919105: 8421376, - 2684354561: 8388610, - 2952790017: 33282, - 3221225473: 514, - 3489660929: 8389120, - 3758096385: 32770, - 4026531841: 0, - 134217729: 8421890, - 402653185: 8421376, - 671088641: 8388608, - 939524097: 512, - 1207959553: 32768, - 1476395009: 8388610, - 1744830465: 2, - 2013265921: 33282, - 2281701377: 32770, - 2550136833: 8389122, - 2818572289: 514, - 3087007745: 8421888, - 3355443201: 8389120, - 3623878657: 0, - 3892314113: 33280, - 4160749569: 8421378 - }, { - 0: 1074282512, - 16777216: 16384, - 33554432: 524288, - 50331648: 1074266128, - 67108864: 1073741840, - 83886080: 1074282496, - 100663296: 1073758208, - 117440512: 16, - 134217728: 540672, - 150994944: 1073758224, - 167772160: 1073741824, - 184549376: 540688, - 201326592: 524304, - 218103808: 0, - 234881024: 16400, - 251658240: 1074266112, - 8388608: 1073758208, - 25165824: 540688, - 41943040: 16, - 58720256: 1073758224, - 75497472: 1074282512, - 92274688: 1073741824, - 109051904: 524288, - 125829120: 1074266128, - 142606336: 524304, - 159383552: 0, - 176160768: 16384, - 192937984: 1074266112, - 209715200: 1073741840, - 226492416: 540672, - 243269632: 1074282496, - 260046848: 16400, - 268435456: 0, - 285212672: 1074266128, - 301989888: 1073758224, - 318767104: 1074282496, - 335544320: 1074266112, - 352321536: 16, - 369098752: 540688, - 385875968: 16384, - 402653184: 16400, - 419430400: 524288, - 436207616: 524304, - 452984832: 1073741840, - 469762048: 540672, - 486539264: 1073758208, - 503316480: 1073741824, - 520093696: 1074282512, - 276824064: 540688, - 293601280: 524288, - 310378496: 1074266112, - 327155712: 16384, - 343932928: 1073758208, - 360710144: 1074282512, - 377487360: 16, - 394264576: 1073741824, - 411041792: 1074282496, - 427819008: 1073741840, - 444596224: 1073758224, - 461373440: 524304, - 478150656: 0, - 494927872: 16400, - 511705088: 1074266128, - 528482304: 540672 - }, { - 0: 260, - 1048576: 0, - 2097152: 67109120, - 3145728: 65796, - 4194304: 65540, - 5242880: 67108868, - 6291456: 67174660, - 7340032: 67174400, - 8388608: 67108864, - 9437184: 67174656, - 10485760: 65792, - 11534336: 67174404, - 12582912: 67109124, - 13631488: 65536, - 14680064: 4, - 15728640: 256, - 524288: 67174656, - 1572864: 67174404, - 2621440: 0, - 3670016: 67109120, - 4718592: 67108868, - 5767168: 65536, - 6815744: 65540, - 7864320: 260, - 8912896: 4, - 9961472: 256, - 11010048: 67174400, - 12058624: 65796, - 13107200: 65792, - 14155776: 67109124, - 15204352: 67174660, - 16252928: 67108864, - 16777216: 67174656, - 17825792: 65540, - 18874368: 65536, - 19922944: 67109120, - 20971520: 256, - 22020096: 67174660, - 23068672: 67108868, - 24117248: 0, - 25165824: 67109124, - 26214400: 67108864, - 27262976: 4, - 28311552: 65792, - 29360128: 67174400, - 30408704: 260, - 31457280: 65796, - 32505856: 67174404, - 17301504: 67108864, - 18350080: 260, - 19398656: 67174656, - 20447232: 0, - 21495808: 65540, - 22544384: 67109120, - 23592960: 256, - 24641536: 67174404, - 25690112: 65536, - 26738688: 67174660, - 27787264: 65796, - 28835840: 67108868, - 29884416: 67109124, - 30932992: 67174400, - 31981568: 4, - 33030144: 65792 - }, { - 0: 2151682048, - 65536: 2147487808, - 131072: 4198464, - 196608: 2151677952, - 262144: 0, - 327680: 4198400, - 393216: 2147483712, - 458752: 4194368, - 524288: 2147483648, - 589824: 4194304, - 655360: 64, - 720896: 2147487744, - 786432: 2151678016, - 851968: 4160, - 917504: 4096, - 983040: 2151682112, - 32768: 2147487808, - 98304: 64, - 163840: 2151678016, - 229376: 2147487744, - 294912: 4198400, - 360448: 2151682112, - 425984: 0, - 491520: 2151677952, - 557056: 4096, - 622592: 2151682048, - 688128: 4194304, - 753664: 4160, - 819200: 2147483648, - 884736: 4194368, - 950272: 4198464, - 1015808: 2147483712, - 1048576: 4194368, - 1114112: 4198400, - 1179648: 2147483712, - 1245184: 0, - 1310720: 4160, - 1376256: 2151678016, - 1441792: 2151682048, - 1507328: 2147487808, - 1572864: 2151682112, - 1638400: 2147483648, - 1703936: 2151677952, - 1769472: 4198464, - 1835008: 2147487744, - 1900544: 4194304, - 1966080: 64, - 2031616: 4096, - 1081344: 2151677952, - 1146880: 2151682112, - 1212416: 0, - 1277952: 4198400, - 1343488: 4194368, - 1409024: 2147483648, - 1474560: 2147487808, - 1540096: 64, - 1605632: 2147483712, - 1671168: 4096, - 1736704: 2147487744, - 1802240: 2151678016, - 1867776: 4160, - 1933312: 2151682048, - 1998848: 4194304, - 2064384: 4198464 - }, { - 0: 128, - 4096: 17039360, - 8192: 262144, - 12288: 536870912, - 16384: 537133184, - 20480: 16777344, - 24576: 553648256, - 28672: 262272, - 32768: 16777216, - 36864: 537133056, - 40960: 536871040, - 45056: 553910400, - 49152: 553910272, - 53248: 0, - 57344: 17039488, - 61440: 553648128, - 2048: 17039488, - 6144: 553648256, - 10240: 128, - 14336: 17039360, - 18432: 262144, - 22528: 537133184, - 26624: 553910272, - 30720: 536870912, - 34816: 537133056, - 38912: 0, - 43008: 553910400, - 47104: 16777344, - 51200: 536871040, - 55296: 553648128, - 59392: 16777216, - 63488: 262272, - 65536: 262144, - 69632: 128, - 73728: 536870912, - 77824: 553648256, - 81920: 16777344, - 86016: 553910272, - 90112: 537133184, - 94208: 16777216, - 98304: 553910400, - 102400: 553648128, - 106496: 17039360, - 110592: 537133056, - 114688: 262272, - 118784: 536871040, - 122880: 0, - 126976: 17039488, - 67584: 553648256, - 71680: 16777216, - 75776: 17039360, - 79872: 537133184, - 83968: 536870912, - 88064: 17039488, - 92160: 128, - 96256: 553910272, - 100352: 262272, - 104448: 553910400, - 108544: 0, - 112640: 553648128, - 116736: 16777344, - 120832: 262144, - 124928: 537133056, - 129024: 536871040 - }, { - 0: 268435464, - 256: 8192, - 512: 270532608, - 768: 270540808, - 1024: 268443648, - 1280: 2097152, - 1536: 2097160, - 1792: 268435456, - 2048: 0, - 2304: 268443656, - 2560: 2105344, - 2816: 8, - 3072: 270532616, - 3328: 2105352, - 3584: 8200, - 3840: 270540800, - 128: 270532608, - 384: 270540808, - 640: 8, - 896: 2097152, - 1152: 2105352, - 1408: 268435464, - 1664: 268443648, - 1920: 8200, - 2176: 2097160, - 2432: 8192, - 2688: 268443656, - 2944: 270532616, - 3200: 0, - 3456: 270540800, - 3712: 2105344, - 3968: 268435456, - 4096: 268443648, - 4352: 270532616, - 4608: 270540808, - 4864: 8200, - 5120: 2097152, - 5376: 268435456, - 5632: 268435464, - 5888: 2105344, - 6144: 2105352, - 6400: 0, - 6656: 8, - 6912: 270532608, - 7168: 8192, - 7424: 268443656, - 7680: 270540800, - 7936: 2097160, - 4224: 8, - 4480: 2105344, - 4736: 2097152, - 4992: 268435464, - 5248: 268443648, - 5504: 8200, - 5760: 270540808, - 6016: 270532608, - 6272: 270540800, - 6528: 270532616, - 6784: 8192, - 7040: 2105352, - 7296: 2097160, - 7552: 0, - 7808: 268435456, - 8064: 268443656 - }, { - 0: 1048576, - 16: 33555457, - 32: 1024, - 48: 1049601, - 64: 34604033, - 80: 0, - 96: 1, - 112: 34603009, - 128: 33555456, - 144: 1048577, - 160: 33554433, - 176: 34604032, - 192: 34603008, - 208: 1025, - 224: 1049600, - 240: 33554432, - 8: 34603009, - 24: 0, - 40: 33555457, - 56: 34604032, - 72: 1048576, - 88: 33554433, - 104: 33554432, - 120: 1025, - 136: 1049601, - 152: 33555456, - 168: 34603008, - 184: 1048577, - 200: 1024, - 216: 34604033, - 232: 1, - 248: 1049600, - 256: 33554432, - 272: 1048576, - 288: 33555457, - 304: 34603009, - 320: 1048577, - 336: 33555456, - 352: 34604032, - 368: 1049601, - 384: 1025, - 400: 34604033, - 416: 1049600, - 432: 1, - 448: 0, - 464: 34603008, - 480: 33554433, - 496: 1024, - 264: 1049600, - 280: 33555457, - 296: 34603009, - 312: 1, - 328: 33554432, - 344: 1048576, - 360: 1025, - 376: 34604032, - 392: 33554433, - 408: 34603008, - 424: 0, - 440: 34604033, - 456: 1049601, - 472: 1024, - 488: 33555456, - 504: 1048577 - }, { - 0: 134219808, - 1: 131072, - 2: 134217728, - 3: 32, - 4: 131104, - 5: 134350880, - 6: 134350848, - 7: 2048, - 8: 134348800, - 9: 134219776, - 10: 133120, - 11: 134348832, - 12: 2080, - 13: 0, - 14: 134217760, - 15: 133152, - 2147483648: 2048, - 2147483649: 134350880, - 2147483650: 134219808, - 2147483651: 134217728, - 2147483652: 134348800, - 2147483653: 133120, - 2147483654: 133152, - 2147483655: 32, - 2147483656: 134217760, - 2147483657: 2080, - 2147483658: 131104, - 2147483659: 134350848, - 2147483660: 0, - 2147483661: 134348832, - 2147483662: 134219776, - 2147483663: 131072, - 16: 133152, - 17: 134350848, - 18: 32, - 19: 2048, - 20: 134219776, - 21: 134217760, - 22: 134348832, - 23: 131072, - 24: 0, - 25: 131104, - 26: 134348800, - 27: 134219808, - 28: 134350880, - 29: 133120, - 30: 2080, - 31: 134217728, - 2147483664: 131072, - 2147483665: 2048, - 2147483666: 134348832, - 2147483667: 133152, - 2147483668: 32, - 2147483669: 134348800, - 2147483670: 134217728, - 2147483671: 134219808, - 2147483672: 134350880, - 2147483673: 134217760, - 2147483674: 134219776, - 2147483675: 0, - 2147483676: 133120, - 2147483677: 2080, - 2147483678: 131104, - 2147483679: 134350848 - }], - u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], - d = a.DES = s.extend({ - _doReset: function _doReset() { - for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { - var n = c[i] - 1; - e[i] = r[n >>> 5] >>> 31 - n % 32 & 1; - } - for (var o = this._subKeys = [], s = 0; s < 16; s++) { - for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++) a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; - a[0] = a[0] << 1 | a[0] >>> 31; - for (var i = 1; i < 7; i++) a[i] = a[i] >>> 4 * (i - 1) + 3; - a[7] = a[7] << 5 | a[7] >>> 27; - } - for (var u = this._invSubKeys = [], i = 0; i < 16; i++) u[i] = o[15 - i]; - }, - encryptBlock: function encryptBlock(t, r) { - this._doCryptBlock(t, r, this._subKeys); - }, - decryptBlock: function decryptBlock(t, r) { - this._doCryptBlock(t, r, this._invSubKeys); - }, - _doCryptBlock: function _doCryptBlock(t, i, n) { - this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); - for (var o = 0; o < 16; o++) { - for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++) h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; - this._lBlock = c, this._rBlock = a ^ h; - } - var d = this._lBlock; - this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock; - }, - keySize: 2, - ivSize: 2, - blockSize: 2 - }); - i.DES = s._createHelper(d); - var v = a.TripleDES = s.extend({ - _doReset: function _doReset() { - var t = this._key, - r = t.words; - this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))); - }, - encryptBlock: function encryptBlock(t, r) { - this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r); - }, - decryptBlock: function decryptBlock(t, r) { - this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r); - }, - keySize: 6, - ivSize: 2, - blockSize: 2 - }); - i.TripleDES = s._createHelper(v); - }(), function () { - function r() { - for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { - r = (r + 1) % 256, e = (e + t[r]) % 256; - var o = t[r]; - t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n; - } - return this._i = r, this._j = e, i; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = o.RC4 = n.extend({ - _doReset: function _doReset() { - for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) i[n] = n; - for (var n = 0, o = 0; n < 256; n++) { - var s = n % e, - a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; - o = (o + i[n] + a) % 256; - var c = i[n]; - i[n] = i[o], i[o] = c; - } - this._i = this._j = 0; - }, - _doProcessBlock: function _doProcessBlock(t, e) { - t[e] ^= r.call(this); - }, - keySize: 8, - ivSize: 0 - }); - e.RC4 = n._createHelper(s); - var a = o.RC4Drop = s.extend({ - cfg: s.cfg.extend({ - drop: 192 - }), - _doReset: function _doReset() { - s._doReset.call(this); - for (var t = this.cfg.drop; t > 0; t--) r.call(this); - } - }); - e.RC4Drop = n._createHelper(a); - }(), t.mode.CTRGladman = function () { - function r(t) { - if (255 === (t >> 24 & 255)) { - var r = t >> 16 & 255, - e = t >> 8 & 255, - i = 255 & t; - 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i; - } else t += 1 << 24; - return t; - } - function e(t) { - return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t; - } - var i = t.lib.BlockCipherMode.extend(), - n = i.Encryptor = i.extend({ - processBlock: function processBlock(t, r) { - var i = this._cipher, - n = i.blockSize, - o = this._iv, - s = this._counter; - o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); - var a = s.slice(0); - i.encryptBlock(a, 0); - for (var c = 0; c < n; c++) t[r + c] ^= a[c]; - } - }); - return i.Decryptor = n, i; - }(), function () { - function r() { - for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; - r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; - for (var e = 0; e < 8; e++) { - var i = t[e] + r[e], - n = 65535 & i, - o = i >>> 16, - s = ((n * n >>> 17) + n * o >>> 15) + o * o, - h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); - c[e] = s ^ h; - } - t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = [], - a = [], - c = [], - h = o.Rabbit = n.extend({ - _doReset: function _doReset() { - for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++) t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); - var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], - o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; - this._b = 0; - for (var i = 0; i < 4; i++) r.call(this); - for (var i = 0; i < 8; i++) o[i] ^= n[i + 4 & 7]; - if (e) { - var s = e.words, - a = s[0], - c = s[1], - h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), - l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), - f = h >>> 16 | 4294901760 & l, - u = l << 16 | 65535 & h; - o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; - for (var i = 0; i < 4; i++) r.call(this); - } - }, - _doProcessBlock: function _doProcessBlock(t, e) { - var i = this._X; - r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; - for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; - }, - blockSize: 4, - ivSize: 2 - }); - e.Rabbit = n._createHelper(h); - }(), t.mode.CTR = function () { - var r = t.lib.BlockCipherMode.extend(), - e = r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - var e = this._cipher, - i = e.blockSize, - n = this._iv, - o = this._counter; - n && (o = this._counter = n.slice(0), this._iv = void 0); - var s = o.slice(0); - e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; - for (var a = 0; a < i; a++) t[r + a] ^= s[a]; - } - }); - return r.Decryptor = e, r; - }(), function () { - function r() { - for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; - r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; - for (var e = 0; e < 8; e++) { - var i = t[e] + r[e], - n = 65535 & i, - o = i >>> 16, - s = ((n * n >>> 17) + n * o >>> 15) + o * o, - h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); - c[e] = s ^ h; - } - t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = [], - a = [], - c = [], - h = o.RabbitLegacy = n.extend({ - _doReset: function _doReset() { - var t = this._key.words, - e = this.cfg.iv, - i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], - n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; - this._b = 0; - for (var o = 0; o < 4; o++) r.call(this); - for (var o = 0; o < 8; o++) n[o] ^= i[o + 4 & 7]; - if (e) { - var s = e.words, - a = s[0], - c = s[1], - h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), - l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), - f = h >>> 16 | 4294901760 & l, - u = l << 16 | 65535 & h; - n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; - for (var o = 0; o < 4; o++) r.call(this); - } - }, - _doProcessBlock: function _doProcessBlock(t, e) { - var i = this._X; - r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; - for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; - }, - blockSize: 4, - ivSize: 2 - }); - e.RabbitLegacy = n._createHelper(h); - }(), t.pad.ZeroPadding = { - pad: function pad(t, r) { - var e = 4 * r; - t.clamp(), t.sigBytes += e - (t.sigBytes % e || e); - }, - unpad: function unpad(t) { - for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);) e--; - t.sigBytes = e + 1; - } - }, t; -}); - -cc._RF.pop(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcY3J5cHRvLWpzLm1pbi5qcyJdLCJuYW1lcyI6WyJ0IiwiciIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJDcnlwdG9KUyIsImUiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm90b3R5cGUiLCJpIiwibiIsImxpYiIsIm8iLCJCYXNlIiwiZXh0ZW5kIiwibWl4SW4iLCJoYXNPd25Qcm9wZXJ0eSIsImluaXQiLCIkc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsInRvU3RyaW5nIiwiY2xvbmUiLCJzIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsImxlbmd0aCIsImMiLCJzdHJpbmdpZnkiLCJjb25jYXQiLCJjbGFtcCIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJhIiwicHVzaCIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiaCIsIkxhdGluMSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJsIiwiVXRmOCIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkVycm9yIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJmIiwiQnVmZmVyZWRCbG9ja0FsZ29yaXRobSIsInJlc2V0IiwiX2RhdGEiLCJfbkRhdGFCeXRlcyIsIl9hcHBlbmQiLCJfcHJvY2VzcyIsImJsb2NrU2l6ZSIsIm1heCIsIl9taW5CdWZmZXJTaXplIiwibWluIiwiX2RvUHJvY2Vzc0Jsb2NrIiwidSIsInNwbGljZSIsIkhhc2hlciIsImNmZyIsIl9kb1Jlc2V0IiwidXBkYXRlIiwiZmluYWxpemUiLCJfZG9GaW5hbGl6ZSIsIl9jcmVhdGVIZWxwZXIiLCJfY3JlYXRlSG1hY0hlbHBlciIsIkhNQUMiLCJhbGdvIiwiTWF0aCIsIkJhc2U2NCIsIl9tYXAiLCJjaGFyQXQiLCJfcmV2ZXJzZU1hcCIsImluZGV4T2YiLCJhYnMiLCJzaW4iLCJNRDUiLCJfaGFzaCIsImQiLCJ2IiwicCIsIl8iLCJ5IiwiZyIsIkIiLCJ3IiwiayIsIlMiLCJtIiwieCIsImIiLCJIIiwieiIsIkEiLCJDIiwiRCIsImZsb29yIiwiSG1hY01ENSIsIlNIQTEiLCJIbWFjU0hBMSIsInNxcnQiLCJwb3ciLCJTSEEyNTYiLCJIbWFjU0hBMjU2IiwiVXRmMTYiLCJVdGYxNkJFIiwiVXRmMTZMRSIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJSSVBFTUQxNjAiLCJSIiwiRSIsIk0iLCJGIiwiSG1hY1JJUEVNRDE2MCIsIl9oYXNoZXIiLCJfb0tleSIsIl9pS2V5IiwiUEJLREYyIiwia2V5U2l6ZSIsImhhc2hlciIsIml0ZXJhdGlvbnMiLCJjb21wdXRlIiwiRXZwS0RGIiwiU0hBMjI0IiwiSG1hY1NIQTIyNCIsIng2NCIsIldvcmQiLCJoaWdoIiwibG93IiwidG9YMzIiLCJTSEEzIiwib3V0cHV0TGVuZ3RoIiwiX3N0YXRlIiwiSG1hY1NIQTMiLCJTSEE1MTIiLCJQIiwiVyIsIk8iLCJVIiwiSSIsIksiLCJYIiwiTCIsImoiLCJOIiwiVCIsIloiLCJxIiwiRyIsIkoiLCIkIiwiUSIsIlYiLCJZIiwidHQiLCJydCIsImV0IiwiaXQiLCJudCIsIm90Iiwic3QiLCJhdCIsImN0IiwiaHQiLCJsdCIsImZ0IiwidXQiLCJkdCIsInZ0IiwicHQiLCJfdCIsInl0IiwiZ3QiLCJCdCIsInd0Iiwia3QiLCJTdCIsIm10IiwieHQiLCJidCIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiQ2lwaGVyIiwiY3JlYXRlRW5jcnlwdG9yIiwiX0VOQ19YRk9STV9NT0RFIiwiY3JlYXRlRGVjcnlwdG9yIiwiX0RFQ19YRk9STV9NT0RFIiwiX3hmb3JtTW9kZSIsIl9rZXkiLCJwcm9jZXNzIiwiaXZTaXplIiwiZW5jcnlwdCIsImRlY3J5cHQiLCJTdHJlYW1DaXBoZXIiLCJtb2RlIiwiQmxvY2tDaXBoZXJNb2RlIiwiRW5jcnlwdG9yIiwiRGVjcnlwdG9yIiwiX2NpcGhlciIsIl9pdiIsIkNCQyIsIl9wcmV2QmxvY2siLCJwcm9jZXNzQmxvY2siLCJlbmNyeXB0QmxvY2siLCJkZWNyeXB0QmxvY2siLCJwYWQiLCJQa2NzNyIsInVucGFkIiwiQmxvY2tDaXBoZXIiLCJwYWRkaW5nIiwiaXYiLCJfbW9kZSIsIl9fY3JlYXRvciIsIkNpcGhlclBhcmFtcyIsImZvcm1hdHRlciIsImZvcm1hdCIsIk9wZW5TU0wiLCJjaXBoZXJ0ZXh0Iiwic2FsdCIsIlNlcmlhbGl6YWJsZUNpcGhlciIsImtleSIsImFsZ29yaXRobSIsIl9wYXJzZSIsImtkZiIsImV4ZWN1dGUiLCJQYXNzd29yZEJhc2VkQ2lwaGVyIiwiQ0ZCIiwiRUNCIiwiQW5zaVg5MjMiLCJJc28xMDEyNiIsIklzbzk3OTcxIiwiWmVyb1BhZGRpbmciLCJPRkIiLCJfa2V5c3RyZWFtIiwiTm9QYWRkaW5nIiwiQUVTIiwiX25Sb3VuZHMiLCJfa2V5UHJpb3JSZXNldCIsIl9rZXlTY2hlZHVsZSIsIl9pbnZLZXlTY2hlZHVsZSIsIl9kb0NyeXB0QmxvY2siLCJfbEJsb2NrIiwiX3JCbG9jayIsIkRFUyIsIl9zdWJLZXlzIiwiX2ludlN1YktleXMiLCJUcmlwbGVERVMiLCJfZGVzMSIsIl9kZXMyIiwiX2RlczMiLCJfUyIsIl9pIiwiX2oiLCJSQzQiLCJSQzREcm9wIiwiZHJvcCIsIkNUUkdsYWRtYW4iLCJfY291bnRlciIsIl9YIiwiX0MiLCJfYiIsIlJhYmJpdCIsIkNUUiIsIlJhYmJpdExlZ2FjeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQ0FBQyxVQUFTQSxDQUFDLEVBQUNDLENBQUMsRUFBQztFQUFDLFFBQVEsSUFBRSxP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Q2hCLENBQUMsQ0FBQ2pCLEdBQUc7TUFBQ3NDLENBQUMsR0FBQ0wsQ0FBQyxDQUFDcEIsU0FBUztNQUFDZ0MsQ0FBQyxHQUFDWixDQUFDLENBQUMwQixNQUFNO01BQUNGLENBQUMsR0FBQ3hDLENBQUMsQ0FBQ21ELElBQUk7TUFBQ1csQ0FBQyxHQUFDekMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUNvRixDQUFDLEdBQUMxQyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUM7TUFBQ3FGLENBQUMsR0FBQzNDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztNQUFDc0YsQ0FBQyxHQUFDNUMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUN1RixDQUFDLEdBQUM3QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLFVBQVUs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QUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQzZELE1BQU07TUFBQzFELENBQUMsR0FBQ1AsQ0FBQyxDQUFDZ0osR0FBRztNQUFDOUgsQ0FBQyxHQUFDWCxDQUFDLENBQUMwSSxJQUFJO01BQUNsSCxDQUFDLEdBQUN4QixDQUFDLENBQUNZLFNBQVM7TUFBQ0ksQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDMEUsSUFBSTtNQUFDbkMsQ0FBQyxHQUFDLENBQUM3QyxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxDQUFDO01BQUNrRCxDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSW5ELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDbUQsQ0FBQyxDQUFDbkQsQ0FBQyxDQUFDLEdBQUNDLENBQUMsRUFBRTtJQUFBLENBQUMsRUFBRTtJQUFDLElBQUl5RCxDQUFDLEdBQUM1QixDQUFDLENBQUNrSSxNQUFNLEdBQUNwSixDQUFDLENBQUNJLE1BQU0sQ0FBQztNQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtRQUFDLElBQUksQ0FBQ2lCLEtBQUssR0FBQyxJQUFJckQsQ0FBQyxDQUFDbkIsSUFBSSxDQUFDLENBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDa0QsZUFBZSxFQUFDLFNBQUFBLGdCQUFTckUsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7UUFBQyxLQUFJLElBQUlNLENBQUMsR0FBQyxJQUFJLENBQUNvRixLQUFLLENBQUNoRSxLQUFLLEVBQUNoQixDQUFDLEdBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0IsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDdUIsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDcUYsQ0FBQyxHQUFDakYsQ0FBQyxDQUFDOEksSUFBSSxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDK0ksR0FBRyxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDNkksSUFBSSxFQUFDMUQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDOEksR0FBRyxFQUFDMUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDMkksSUFBSSxFQUFDeEQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDNEksR0FBRyxFQUFDeEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDZ0ksSUFBSSxFQUFDdEQsQ0FBQyxHQUFDMUUsQ0FBQyxDQUFDaUksR0FBRyxFQUFDdEQsQ0FBQyxHQUFDOUQsQ0FBQyxDQUFDbUgsSUFBSSxFQUFDcEQsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDb0gsR0FBRyxFQUFDcEQsQ0FBQyxHQUFDeEUsQ0FBQyxDQUFDMkgsSUFBSSxFQUFDbEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDNEgsR0FBRyxFQUFDbEQsQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDK0YsSUFBSSxFQUFDaEQsQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDZ0csR0FBRyxFQUFDaEQsQ0FBQyxHQUFDcEMsQ0FBQyxDQUFDbUYsSUFBSSxFQUFDOUMsQ0FBQyxHQUFDckMsQ0FBQyxDQUFDb0YsR0FBRyxFQUFDOUMsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDaUIsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7VUFBQyxJQUFJQyxDQUFDLEdBQUN6SCxDQUFDLENBQUN3SCxDQUFDLENBQUM7VUFBQyxJQUFHQSxDQUFDLEdBQUMsRUFBRSxFQUFDLElBQUlFLENBQUMsR0FBQ0QsQ0FBQyxDQUFDbkIsSUFBSSxHQUFDLENBQUMsR0FBQ3pKLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsR0FBQzBLLENBQUMsQ0FBQztZQUFDRyxDQUFDLEdBQUNGLENBQUMsQ0FBQ2xCLEdBQUcsR0FBQyxDQUFDLEdBQUMxSixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLEdBQUMwSyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSTtZQUFDLElBQUlJLENBQUMsR0FBQzVILENBQUMsQ0FBQ3dILENBQUMsR0FBQyxFQUFFLENBQUM7Y0FBQ0ssQ0FBQyxHQUFDRCxDQUFDLENBQUN0QixJQUFJO2NBQUN3QixDQUFDLEdBQUNGLENBQUMsQ0FBQ3JCLEdBQUc7Y0FBQ3dCLENBQUMsR0FBQyxDQUFDRixDQUFDLEtBQUcsQ0FBQyxHQUFDQyxDQUFDLElBQUUsRUFBRSxLQUFHRCxDQUFDLEtBQUcsQ0FBQyxHQUFDQyxDQUFDLElBQUUsRUFBRSxDQUFDLEdBQUNELENBQUMsS0FBRyxDQUFDO2NBQUNHLENBQUMsR0FBQyxDQUFDRixDQUFDLEtBQUcsQ0FBQyxHQUFDRCxDQUFDLElBQUUsRUFBRSxLQUFHQyxDQUFDLEtBQUcsQ0FBQyxHQUFDRCxDQUFDLElBQUUsRUFBRSxDQUFDLElBQUVDLENBQUMsS0FBRyxDQUFDLEdBQUNELENBQUMsSUFBRSxFQUFFLENBQUM7Y0FBQ0ksRUFBRSxHQUFDakksQ0FBQyxDQUFDd0gsQ0FBQyxHQUFDLENBQUMsQ0FBQztjQUFDVSxFQUFFLEdBQUNELEVBQUUsQ0FBQzNCLElBQUk7Y0FBQzZCLEVBQUUsR0FBQ0YsRUFBRSxDQUFDMUIsR0FBRztjQUFDNkIsRUFBRSxHQUFDLENBQUNGLEVBQUUsS0FBRyxFQUFFLEdBQUNDLEVBQUUsSUFBRSxFQUFFLEtBQUdELEVBQUUsSUFBRSxDQUFDLEdBQUNDLEVBQUUsS0FBRyxFQUFFLENBQUMsR0FBQ0QsRUFBRSxLQUFHLENBQUM7Y0FBQ0csRUFBRSxHQUFDLENBQUNGLEVBQUUsS0FBRyxFQUFFLEdBQUNELEVBQUUsSUFBRSxFQUFFLEtBQUdDLEVBQUUsSUFBRSxDQUFDLEdBQUNELEVBQUUsS0FBRyxFQUFFLENBQUMsSUFBRUMsRUFBRSxLQUFHLENBQUMsR0FBQ0QsRUFBRSxJQUFFLEVBQUUsQ0FBQztjQUFDSSxFQUFFLEdBQUN0SSxDQUFDLENBQUN3SCxDQUFDLEdBQUMsQ0FBQyxDQUFDO2NBQUNlLEVBQUUsR0FBQ0QsRUFBRSxDQUFDaEMsSUFBSTtjQUFDa0MsRUFBRSxHQUFDRixFQUFFLENBQUMvQixHQUFHO2NBQUNrQyxFQUFFLEdBQUN6SSxDQUFDLENBQUN3SCxDQUFDLEdBQUMsRUFBRSxDQUFDO2NBQUNrQixFQUFFLEdBQUNELEVBQUUsQ0FBQ25DLElBQUk7Y0FBQ3FDLEVBQUUsR0FBQ0YsRUFBRSxDQUFDbEMsR0FBRztjQUFDb0IsQ0FBQyxHQUFDSyxDQUFDLEdBQUNRLEVBQUU7Y0FBQ2QsQ0FBQyxHQUFDSyxDQUFDLEdBQUNRLEVBQUUsSUFBRVosQ0FBQyxLQUFHLENBQUMsR0FBQ0ssQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDO2NBQUNMLENBQUMsR0FBQ0EsQ0FBQyxHQUFDVSxFQUFFO2NBQUNYLENBQUMsR0FBQ0EsQ0FBQyxHQUFDVSxFQUFFLElBQUVULENBQUMsS0FBRyxDQUFDLEdBQUNVLEVBQUUsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztjQUFDVixDQUFDLEdBQUNBLENBQUMsR0FBQ2dCLEVBQUU7Y0FBQ2pCLENBQUMsR0FBQ0EsQ0FBQyxHQUFDZ0IsRUFBRSxJQUFFZixDQUFDLEtBQUcsQ0FBQyxHQUFDZ0IsRUFBRSxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDO1lBQUNsQixDQUFDLENBQUNuQixJQUFJLEdBQUNvQixDQUFDLEVBQUNELENBQUMsQ0FBQ2xCLEdBQUcsR0FBQ29CLENBQUM7VUFBQTtVQUFDLElBQUlpQixFQUFFLEdBQUM1QixDQUFDLEdBQUNFLENBQUMsR0FBQyxDQUFDRixDQUFDLEdBQUNJLENBQUM7WUFBQ3lCLEVBQUUsR0FBQzVCLENBQUMsR0FBQ0UsQ0FBQyxHQUFDLENBQUNGLENBQUMsR0FBQ0ksQ0FBQztZQUFDeUIsRUFBRSxHQUFDckYsQ0FBQyxHQUFDMkIsQ0FBQyxHQUFDM0IsQ0FBQyxHQUFDNkIsQ0FBQyxHQUFDRixDQUFDLEdBQUNFLENBQUM7WUFBQ3lELEVBQUUsR0FBQ3JGLENBQUMsR0FBQzJCLENBQUMsR0FBQzNCLENBQUMsR0FBQzZCLENBQUMsR0FBQ0YsQ0FBQyxHQUFDRSxDQUFDO1lBQUN5RCxFQUFFLEdBQUMsQ0FBQ3ZGLENBQUMsS0FBRyxFQUFFLEdBQUNDLENBQUMsSUFBRSxDQUFDLEtBQUdELENBQUMsSUFBRSxFQUFFLEdBQUNDLENBQUMsS0FBRyxDQUFDLENBQUMsSUFBRUQsQ0FBQyxJQUFFLEVBQUUsR0FBQ0MsQ0FBQyxLQUFHLENBQUMsQ0FBQztZQUFDdUYsRUFBRSxHQUFDLENBQUN2RixDQUFDLEtBQUcsRUFBRSxHQUFDRCxDQUFDLElBQUUsQ0FBQyxLQUFHQyxDQUFDLElBQUUsRUFBRSxHQUFDRCxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUVDLENBQUMsSUFBRSxFQUFFLEdBQUNELENBQUMsS0FBRyxDQUFDLENBQUM7WUFBQ3lGLEVBQUUsR0FBQyxDQUFDbEMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0MsQ0FBQyxJQUFFLEVBQUUsS0FBR0QsQ0FBQyxLQUFHLEVBQUUsR0FBQ0MsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxJQUFFRCxDQUFDLElBQUUsRUFBRSxHQUFDQyxDQUFDLEtBQUcsQ0FBQyxDQUFDO1lBQUNrQyxFQUFFLEdBQUMsQ0FBQ2xDLENBQUMsS0FBRyxFQUFFLEdBQUNELENBQUMsSUFBRSxFQUFFLEtBQUdDLENBQUMsS0FBRyxFQUFFLEdBQUNELENBQUMsSUFBRSxFQUFFLENBQUMsSUFBRUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0QsQ0FBQyxLQUFHLENBQUMsQ0FBQztZQUFDb0MsRUFBRSxHQUFDekosQ0FBQyxDQUFDNkgsQ0FBQyxDQUFDO1lBQUM2QixFQUFFLEdBQUNELEVBQUUsQ0FBQzlDLElBQUk7WUFBQ2dELEVBQUUsR0FBQ0YsRUFBRSxDQUFDN0MsR0FBRztZQUFDZ0QsRUFBRSxHQUFDaEMsQ0FBQyxHQUFDNEIsRUFBRTtZQUFDSyxFQUFFLEdBQUNsQyxDQUFDLEdBQUM0QixFQUFFLElBQUVLLEVBQUUsS0FBRyxDQUFDLEdBQUNoQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7WUFBQ2dDLEVBQUUsR0FBQ0EsRUFBRSxHQUFDVixFQUFFO1lBQUNXLEVBQUUsR0FBQ0EsRUFBRSxHQUFDWixFQUFFLElBQUVXLEVBQUUsS0FBRyxDQUFDLEdBQUNWLEVBQUUsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztZQUFDVSxFQUFFLEdBQUNBLEVBQUUsR0FBQ0QsRUFBRTtZQUFDRSxFQUFFLEdBQUNBLEVBQUUsR0FBQ0gsRUFBRSxJQUFFRSxFQUFFLEtBQUcsQ0FBQyxHQUFDRCxFQUFFLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7WUFBQ0MsRUFBRSxHQUFDQSxFQUFFLEdBQUM1QixDQUFDO1lBQUM2QixFQUFFLEdBQUNBLEVBQUUsR0FBQzlCLENBQUMsSUFBRTZCLEVBQUUsS0FBRyxDQUFDLEdBQUM1QixDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7WUFBQzhCLEVBQUUsR0FBQ1IsRUFBRSxHQUFDRixFQUFFO1lBQUNXLEVBQUUsR0FBQ1YsRUFBRSxHQUFDRixFQUFFLElBQUVXLEVBQUUsS0FBRyxDQUFDLEdBQUNSLEVBQUUsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztVQUFDM0IsQ0FBQyxHQUFDRixDQUFDLEVBQUNHLENBQUMsR0FBQ0YsQ0FBQyxFQUFDRCxDQUFDLEdBQUNGLENBQUMsRUFBQ0csQ0FBQyxHQUFDRixDQUFDLEVBQUNELENBQUMsR0FBQ0YsQ0FBQyxFQUFDRyxDQUFDLEdBQUNGLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRixDQUFDLEdBQUN3QyxFQUFFLEdBQUMsQ0FBQyxFQUFDdkMsQ0FBQyxHQUFDRixDQUFDLEdBQUMwQyxFQUFFLElBQUV2QyxDQUFDLEtBQUcsQ0FBQyxHQUFDRixDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNELENBQUMsR0FBQ3hCLENBQUMsRUFBQ3lCLENBQUMsR0FBQ3hCLENBQUMsRUFBQ0QsQ0FBQyxHQUFDRixDQUFDLEVBQUNHLENBQUMsR0FBQ0YsQ0FBQyxFQUFDRCxDQUFDLEdBQUMzQixDQUFDLEVBQUM0QixDQUFDLEdBQUMzQixDQUFDLEVBQUNBLENBQUMsR0FBQzZGLEVBQUUsR0FBQ0UsRUFBRSxHQUFDLENBQUMsRUFBQ2hHLENBQUMsR0FBQytGLEVBQUUsR0FBQ0UsRUFBRSxJQUFFaEcsQ0FBQyxLQUFHLENBQUMsR0FBQzZGLEVBQUUsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUM7UUFBQTtRQUFDN0csQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDK0ksR0FBRyxHQUFDN0QsQ0FBQyxHQUFDZ0IsQ0FBQyxFQUFDbEcsQ0FBQyxDQUFDOEksSUFBSSxHQUFDN0QsQ0FBQyxHQUFDZ0IsQ0FBQyxJQUFFZixDQUFDLEtBQUcsQ0FBQyxHQUFDZ0IsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUNkLENBQUMsR0FBQ25GLENBQUMsQ0FBQzhJLEdBQUcsR0FBQzNELENBQUMsR0FBQ3lDLENBQUMsRUFBQzVILENBQUMsQ0FBQzZJLElBQUksR0FBQzNELENBQUMsR0FBQ3lDLENBQUMsSUFBRXhDLENBQUMsS0FBRyxDQUFDLEdBQUN5QyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQ3ZDLENBQUMsR0FBQ25GLENBQUMsQ0FBQzRJLEdBQUcsR0FBQ3pELENBQUMsR0FBQ3lDLENBQUMsRUFBQzVILENBQUMsQ0FBQzJJLElBQUksR0FBQ3pELENBQUMsR0FBQ3lDLENBQUMsSUFBRXhDLENBQUMsS0FBRyxDQUFDLEdBQUN5QyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQ3ZDLENBQUMsR0FBQzFFLENBQUMsQ0FBQ2lJLEdBQUcsR0FBQ3ZELENBQUMsR0FBQytELENBQUMsRUFBQ3pJLENBQUMsQ0FBQ2dJLElBQUksR0FBQ3ZELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9ELENBQUMsQ0FBQ29ILEdBQUcsR0FBQ3JELENBQUMsR0FBQytELENBQUMsRUFBQzlILENBQUMsQ0FBQ21ILElBQUksR0FBQ3JELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3pFLENBQUMsQ0FBQzRILEdBQUcsR0FBQ25ELENBQUMsR0FBQytELENBQUMsRUFBQ3hJLENBQUMsQ0FBQzJILElBQUksR0FBQ25ELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9DLENBQUMsQ0FBQ2dHLEdBQUcsR0FBQ2pELENBQUMsR0FBQytELENBQUMsRUFBQzlHLENBQUMsQ0FBQytGLElBQUksR0FBQ2pELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3JDLENBQUMsQ0FBQ29GLEdBQUcsR0FBQy9DLENBQUMsR0FBQytELENBQUMsRUFBQ3BHLENBQUMsQ0FBQ21GLElBQUksR0FBQy9DLENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcs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QUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztNQUFDZ0IsQ0FBQyxHQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7TUFBQ0ssQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDO01BQUNPLENBQUMsR0FBQyxDQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLENBQUMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLEVBQUU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEVBQUU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDO01BQU0sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxPQUFPLEVBQUMsQ0FBQztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxNQUFNLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxHQUFHO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDO01BQUssQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsT0FBTztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsRUFBRTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsSUFBSTtRQUFDLE1BQU0sRUFBQyxJQUFJO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLEtBQUssRUFBQyxFQUFFO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxJQUFJO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsTUFBTTtRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsU0FBUztRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxDQUFDLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxPQUFPO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxDQUFDO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLElBQUk7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLEVBQUU7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsSUFBSTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLElBQUk7UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxFQUFFO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsRUFBRTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsSUFBSTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsRUFBRTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDO01BQVMsQ0FBQyxDQUFDO01BQUNZLENBQUMsR0FBQyxDQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsRUFBQyxVQUFVLENBQUM7TUFBQ3NCLENBQUMsR0FBQ3RELENBQUMsQ0FBQ3dPLEdBQUcsR0FBQ3JQLENBQUMsQ0FBQ1QsTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsS0FBSSxJQUFJMUUsQ0FBQyxHQUFDLElBQUksQ0FBQ3VOLElBQUksRUFBQ3ROLENBQUMsR0FBQ0QsQ0FBQyxDQUFDMkIsS0FBSyxFQUFDcEIsQ0FBQyxHQUFDLEVBQUUsRUFBQ0ksQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7WUFBQyxJQUFJQyxDQUFDLEdBQUNrQixDQUFDLENBQUNuQixDQUFDLENBQUMsR0FBQyxDQUFDO1lBQUNKLENBQUMsQ0FBQ0ksQ0FBQyxDQUFDLEdBQUNWLENBQUMsQ0FBQ1csQ0FBQyxLQUFHLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLEVBQUUsR0FBQyxDQUFDO1VBQUE7VUFBQyxLQUFJLElBQUlFLENBQUMsR0FBQyxJQUFJLENBQUNpUSxRQUFRLEdBQUMsRUFBRSxFQUFDdFAsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7WUFBQyxLQUFJLElBQUlhLENBQUMsR0FBQ3hCLENBQUMsQ0FBQ1csQ0FBQyxDQUFDLEdBQUMsRUFBRSxFQUFDaUMsQ0FBQyxHQUFDUCxDQUFDLENBQUMxQixDQUFDLENBQUMsRUFBQ2QsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUMyQixDQUFDLENBQUMzQixDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFFSixDQUFDLENBQUMsQ0FBQ3VDLENBQUMsQ0FBQ25DLENBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQytDLENBQUMsSUFBRSxFQUFFLENBQUMsSUFBRSxFQUFFLEdBQUMvQyxDQUFDLEdBQUMsQ0FBQyxFQUFDMkIsQ0FBQyxDQUFDLENBQUMsSUFBRTNCLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUosQ0FBQyxDQUFDLEVBQUUsR0FBQyxDQUFDdUMsQ0FBQyxDQUFDbkMsQ0FBQyxHQUFDLEVBQUUsQ0FBQyxHQUFDLENBQUMsR0FBQytDLENBQUMsSUFBRSxFQUFFLENBQUMsSUFBRSxFQUFFLEdBQUMvQyxDQUFDLEdBQUMsQ0FBQztZQUFDMkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRTtZQUFDLEtBQUksSUFBSTNCLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDMkIsQ0FBQyxDQUFDM0IsQ0FBQyxDQUFDLEdBQUMyQixDQUFDLENBQUMzQixDQUFDLENBQUMsS0FBRyxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDO1lBQUMyQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFO1VBQUE7VUFBQyxLQUFJLElBQUlnQyxDQUFDLEdBQUMsSUFBSSxDQUFDME0sV0FBVyxHQUFDLEVBQUUsRUFBQ3JRLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDMkQsQ0FBQyxDQUFDM0QsQ0FBQyxDQUFDLEdBQUNHLENBQUMsQ0FBQyxFQUFFLEdBQUNILENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQzJOLFlBQVksRUFBQyxTQUFBQSxhQUFTdE8sQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUMwUSxhQUFhLENBQUMzUSxDQUFDLEVBQUNDLENBQUMsRUFBQyxJQUFJLENBQUM4USxRQUFRLENBQUM7UUFBQSxDQUFDO1FBQUN4QyxZQUFZLEVBQUMsU0FBQUEsYUFBU3ZPLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsSUFBSSxDQUFDMFEsYUFBYSxDQUFDM1EsQ0FBQyxFQUFDQyxDQUFDLEVBQUMsSUFBSSxDQUFDK1EsV0FBVyxDQUFDO1FBQUEsQ0FBQztRQUFDTCxhQUFhLEVBQUMsU0FBQUEsY0FBUzNRLENBQUMsRUFBQ1csQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUNnUSxPQUFPLEdBQUM1USxDQUFDLENBQUNXLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ2tRLE9BQU8sR0FBQzdRLENBQUMsQ0FBQ1csQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxTQUFTLENBQUMsRUFBQ2xDLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLEVBQUMsRUFBRSxFQUFDLEtBQUssQ0FBQyxFQUFDNUIsQ0FBQyxDQUFDNEIsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsU0FBUyxDQUFDLEVBQUM1QixDQUFDLENBQUM0QixJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxRQUFRLENBQUMsRUFBQ2xDLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLFVBQVUsQ0FBQztVQUFDLEtBQUksSUFBSXJCLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsS0FBSSxJQUFJVyxDQUFDLEdBQUNiLENBQUMsQ0FBQ0UsQ0FBQyxDQUFDLEVBQUN3QixDQUFDLEdBQUMsSUFBSSxDQUFDc08sT0FBTyxFQUFDOU8sQ0FBQyxHQUFDLElBQUksQ0FBQytPLE9BQU8sRUFBQy9OLENBQUMsR0FBQyxDQUFDLEVBQUNLLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDTCxDQUFDLElBQUVZLENBQUMsQ0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDckIsQ0FBQyxHQUFDTCxDQUFDLENBQUMwQixDQUFDLENBQUMsSUFBRW1CLENBQUMsQ0FBQ25CLENBQUMsQ0FBQyxNQUFJLENBQUMsQ0FBQztZQUFDLElBQUksQ0FBQ3lOLE9BQU8sR0FBQzlPLENBQUMsRUFBQyxJQUFJLENBQUMrTyxPQUFPLEdBQUN2TyxDQUFDLEdBQUNRLENBQUM7VUFBQTtVQUFDLElBQUk4QyxDQUFDLEdBQUMsSUFBSSxDQUFDZ0wsT0FBTztVQUFDLElBQUksQ0FBQ0EsT0FBTyxHQUFDLElBQUksQ0FBQ0MsT0FBTyxFQUFDLElBQUksQ0FBQ0EsT0FBTyxHQUFDakwsQ0FBQyxFQUFDM0YsQ0FBQyxDQUFDa0MsSUFBSSxDQUFDLElBQUksRUFBQyxDQUFDLEVBQUMsVUFBVSxDQUFDLEVBQUM1QixDQUFDLENBQUM0QixJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxRQUFRLENBQUMsRUFBQzVCLENBQUMsQ0FBQzRCLElBQUksQ0FBQyxJQUFJLEVBQUMsQ0FBQyxFQUFDLFNBQVMsQ0FBQyxFQUFDbEMsQ0FBQyxDQUFDa0MsSUFBSSxDQUFDLElBQUksRUFBQyxFQUFFLEVBQUMsS0FBSyxDQUFDLEVBQUNsQyxDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxFQUFDLENBQUMsRUFBQyxTQUFTLENBQUMsRUFBQ25DLENBQUMsQ0FBQ1csQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDaVEsT0FBTyxFQUFDNVEsQ0FBQyxDQUFDVyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDa1EsT0FBTztRQUFBLENBQUM7UUFBQzdILE9BQU8sRUFBQyxDQUFDO1FBQUN5RSxNQUFNLEVBQUMsQ0FBQztRQUFDeEosU0FBUyxFQUFDO01BQUMsQ0FBQyxDQUFDO0lBQUN0RCxDQUFDLENBQUNtUSxHQUFHLEdBQUNyUCxDQUFDLENBQUNxRCxhQUFhLENBQUNjLENBQUMsQ0FBQztJQUFDLElBQUlDLENBQUMsR0FBQ3ZELENBQUMsQ0FBQzJPLFNBQVMsR0FBQ3hQLENBQUMsQ0FBQ1QsTUFBTSxDQUFDO01BQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1FBQUMsSUFBSTFFLENBQUMsR0FBQyxJQUFJLENBQUN1TixJQUFJO1VBQUN0TixDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQUs7UUFBQyxJQUFJLENBQUN1UCxLQUFLLEdBQUN0TCxDQUFDLENBQUNzSCxlQUFlLENBQUNwTSxDQUFDLENBQUNMLE1BQU0sQ0FBQ1IsQ0FBQyxDQUFDbUMsS0FBSyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDK08sS0FBSyxHQUFDdkwsQ0FBQyxDQUFDc0gsZUFBZSxDQUFDcE0sQ0FBQyxDQUFDTCxNQUFNLENBQUNSLENBQUMsQ0FBQ21DLEtBQUssQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ2dQLEtBQUssR0FBQ3hMLENBQUMsQ0FBQ3NILGVBQWUsQ0FBQ3BNLENBQUMsQ0FBQ0wsTUFBTSxDQUFDUixDQUFDLENBQUNtQyxLQUFLLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFBQSxDQUFDO01BQUNrTSxZQUFZLEVBQUMsU0FBQUEsYUFBU3RPLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1FBQUMsSUFBSSxDQUFDaVIsS0FBSyxDQUFDNUMsWUFBWSxDQUFDdE8sQ0FBQyxFQUFDQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUNrUixLQUFLLENBQUM1QyxZQUFZLENBQUN2TyxDQUFDLEVBQUNDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ21SLEtBQUssQ0FBQzlDLFlBQVksQ0FBQ3RPLENBQUMsRUFBQ0MsQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDc08sWUFBWSxFQUFDLFNBQUFBLGFBQVN2TyxDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDLElBQUksQ0FBQ21SLEtBQUssQ0FBQzdDLFlBQVksQ0FBQ3ZPLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDa1IsS0FBSyxDQUFDN0MsWUFBWSxDQUFDdE8sQ0FBQyxFQUFDQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUNpUixLQUFLLENBQUMzQyxZQUFZLENBQUN2TyxDQUFDLEVBQUNDLENBQUMsQ0FBQztNQUFBLENBQUM7TUFBQytJLE9BQU8sRUFBQyxDQUFDO01BQUN5RSxNQUFNLEVBQUMsQ0FBQztNQUFDeEosU0FBUyxFQUFDO0lBQUMsQ0FBQyxDQUFDO0lBQUN0RCxDQUFDLENBQUNzUSxTQUFTLEdBQUN4UCxDQUFDLENBQUNxRCxhQUFhLENBQUNlLENBQUMsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxTQUFTNUYsQ0FBQ0EsQ0FBQSxFQUFFO01BQUMsS0FBSSxJQUFJRCxDQUFDLEdBQUMsSUFBSSxDQUFDcVIsRUFBRSxFQUFDcFIsQ0FBQyxHQUFDLElBQUksQ0FBQ3FSLEVBQUUsRUFBQy9RLENBQUMsR0FBQyxJQUFJLENBQUNnUixFQUFFLEVBQUM1USxDQUFDLEdBQUMsQ0FBQyxFQUFDQyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDWCxDQUFDLEdBQUMsQ0FBQ0EsQ0FBQyxHQUFDLENBQUMsSUFBRSxHQUFHLEVBQUNNLENBQUMsR0FBQyxDQUFDQSxDQUFDLEdBQUNQLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLElBQUUsR0FBRztRQUFDLElBQUlhLENBQUMsR0FBQ2QsQ0FBQyxDQUFDQyxDQUFDLENBQUM7UUFBQ0QsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBQ0QsQ0FBQyxDQUFDTyxDQUFDLENBQUMsRUFBQ1AsQ0FBQyxDQUFDTyxDQUFDLENBQUMsR0FBQ08sQ0FBQyxFQUFDSCxDQUFDLElBQUVYLENBQUMsQ0FBQyxDQUFDQSxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFDRCxDQUFDLENBQUNPLENBQUMsQ0FBQyxJQUFFLEdBQUcsQ0FBQyxJQUFFLEVBQUUsR0FBQyxDQUFDLEdBQUNLLENBQUM7TUFBQTtNQUFDLE9BQU8sSUFBSSxDQUFDMFEsRUFBRSxHQUFDclIsQ0FBQyxFQUFDLElBQUksQ0FBQ3NSLEVBQUUsR0FBQ2hSLENBQUMsRUFBQ0ksQ0FBQztJQUFBO0lBQUMsSUFBSUosQ0FBQyxHQUFDUCxDQUFDO01BQUNXLENBQUMsR0FBQ0osQ0FBQyxDQUFDTSxHQUFHO01BQUNELENBQUMsR0FBQ0QsQ0FBQyxDQUFDaU4sWUFBWTtNQUFDOU0sQ0FBQyxHQUFDUCxDQUFDLENBQUMwRSxJQUFJO01BQUN4RCxDQUFDLEdBQUNYLENBQUMsQ0FBQzBRLEdBQUcsR0FBQzVRLENBQUMsQ0FBQ0ksTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsS0FBSSxJQUFJMUUsQ0FBQyxHQUFDLElBQUksQ0FBQ3VOLElBQUksRUFBQ3ROLENBQUMsR0FBQ0QsQ0FBQyxDQUFDMkIsS0FBSyxFQUFDcEIsQ0FBQyxHQUFDUCxDQUFDLENBQUM0QixRQUFRLEVBQUNqQixDQUFDLEdBQUMsSUFBSSxDQUFDMFEsRUFBRSxHQUFDLEVBQUUsRUFBQ3pRLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxHQUFHLEVBQUNBLENBQUMsRUFBRSxFQUFDRCxDQUFDLENBQUNDLENBQUMsQ0FBQyxHQUFDQSxDQUFDO1VBQUMsS0FBSSxJQUFJQSxDQUFDLEdBQUMsQ0FBQyxFQUFDRSxDQUFDLEdBQUMsQ0FBQyxFQUFDRixDQUFDLEdBQUMsR0FBRyxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUlhLENBQUMsR0FBQ2IsQ0FBQyxHQUFDTCxDQUFDO2NBQUMrQixDQUFDLEdBQUNyQyxDQUFDLENBQUN3QixDQUFDLEtBQUcsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxHQUFHO1lBQUNYLENBQUMsR0FBQyxDQUFDQSxDQUFDLEdBQUNILENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUMwQixDQUFDLElBQUUsR0FBRztZQUFDLElBQUlSLENBQUMsR0FBQ25CLENBQUMsQ0FBQ0MsQ0FBQyxDQUFDO1lBQUNELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUNELENBQUMsQ0FBQ0csQ0FBQyxDQUFDLEVBQUNILENBQUMsQ0FBQ0csQ0FBQyxDQUFDLEdBQUNnQixDQUFDO1VBQUE7VUFBQyxJQUFJLENBQUN3UCxFQUFFLEdBQUMsSUFBSSxDQUFDQyxFQUFFLEdBQUMsQ0FBQztRQUFBLENBQUM7UUFBQ2xOLGVBQWUsRUFBQyxTQUFBQSxnQkFBU3JFLENBQUMsRUFBQ08sQ0FBQyxFQUFDO1VBQUNQLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLElBQUVOLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFBQSxDQUFDO1FBQUM2RyxPQUFPLEVBQUMsQ0FBQztRQUFDeUUsTUFBTSxFQUFDO01BQUMsQ0FBQyxDQUFDO0lBQUNsTixDQUFDLENBQUNpUixHQUFHLEdBQUM1USxDQUFDLENBQUNrRSxhQUFhLENBQUNyRCxDQUFDLENBQUM7SUFBQyxJQUFJYSxDQUFDLEdBQUN4QixDQUFDLENBQUMyUSxPQUFPLEdBQUNoUSxDQUFDLENBQUNULE1BQU0sQ0FBQztNQUFDeUQsR0FBRyxFQUFDaEQsQ0FBQyxDQUFDZ0QsR0FBRyxDQUFDekQsTUFBTSxDQUFDO1FBQUMwUSxJQUFJLEVBQUM7TUFBRyxDQUFDLENBQUM7TUFBQ2hOLFFBQVEsRUFBQyxTQUFBQSxTQUFBLEVBQVU7UUFBQ2pELENBQUMsQ0FBQ2lELFFBQVEsQ0FBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUM7UUFBQyxLQUFJLElBQUluQyxDQUFDLEdBQUMsSUFBSSxDQUFDeUUsR0FBRyxDQUFDaU4sSUFBSSxFQUFDMVIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNDLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLENBQUM7TUFBQTtJQUFDLENBQUMsQ0FBQztJQUFDNUIsQ0FBQyxDQUFDa1IsT0FBTyxHQUFDN1EsQ0FBQyxDQUFDa0UsYUFBYSxDQUFDeEMsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUN0QyxDQUFDLENBQUM2TixJQUFJLENBQUM4RCxVQUFVLEdBQUMsWUFBVTtJQUFDLFNBQVMxUixDQUFDQSxDQUFDRCxDQUFDLEVBQUM7TUFBQyxJQUFHLEdBQUcsTUFBSUEsQ0FBQyxJQUFFLEVBQUUsR0FBQyxHQUFHLENBQUMsRUFBQztRQUFDLElBQUlDLENBQUMsR0FBQ0QsQ0FBQyxJQUFFLEVBQUUsR0FBQyxHQUFHO1VBQUNPLENBQUMsR0FBQ1AsQ0FBQyxJQUFFLENBQUMsR0FBQyxHQUFHO1VBQUNXLENBQUMsR0FBQyxHQUFHLEdBQUNYLENBQUM7UUFBQyxHQUFHLEtBQUdDLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsRUFBQyxHQUFHLEtBQUdNLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsRUFBQyxHQUFHLEtBQUdJLENBQUMsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxFQUFFQSxDQUFDLElBQUUsRUFBRUosQ0FBQyxJQUFFLEVBQUVOLENBQUMsRUFBQ0QsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxJQUFFQyxDQUFDLElBQUUsRUFBRSxFQUFDRCxDQUFDLElBQUVPLENBQUMsSUFBRSxDQUFDLEVBQUNQLENBQUMsSUFBRVcsQ0FBQztNQUFBLENBQUMsTUFBS1gsQ0FBQyxJQUFFLENBQUMsSUFBRSxFQUFFO01BQUMsT0FBT0EsQ0FBQztJQUFBO0lBQUMsU0FBU08sQ0FBQ0EsQ0FBQ1AsQ0FBQyxFQUFDO01BQUMsT0FBTyxDQUFDLE1BQUlBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0MsQ0FBQyxDQUFDRCxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNDLENBQUMsQ0FBQ0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQztJQUFBO0lBQUMsSUFBSVcsQ0FBQyxHQUFDWCxDQUFDLENBQUNhLEdBQUcsQ0FBQ2lOLGVBQWUsQ0FBQzlNLE1BQU0sRUFBRTtNQUFDSixDQUFDLEdBQUNELENBQUMsQ0FBQ29OLFNBQVMsR0FBQ3BOLENBQUMsQ0FBQ0ssTUFBTSxDQUFDO1FBQUNxTixZQUFZLEVBQUMsU0FBQUEsYUFBU3JPLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsSUFBSVUsQ0FBQyxHQUFDLElBQUksQ0FBQ3NOLE9BQU87WUFBQ3JOLENBQUMsR0FBQ0QsQ0FBQyxDQUFDc0QsU0FBUztZQUFDbkQsQ0FBQyxHQUFDLElBQUksQ0FBQ29OLEdBQUc7WUFBQ3pNLENBQUMsR0FBQyxJQUFJLENBQUNtUSxRQUFRO1VBQUM5USxDQUFDLEtBQUdXLENBQUMsR0FBQyxJQUFJLENBQUNtUSxRQUFRLEdBQUM5USxDQUFDLENBQUNzQixLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDOEwsR0FBRyxHQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUMzTixDQUFDLENBQUNrQixDQUFDLENBQUM7VUFBQyxJQUFJYSxDQUFDLEdBQUNiLENBQUMsQ0FBQ1csS0FBSyxDQUFDLENBQUMsQ0FBQztVQUFDekIsQ0FBQyxDQUFDMk4sWUFBWSxDQUFDaE0sQ0FBQyxFQUFDLENBQUMsQ0FBQztVQUFDLEtBQUksSUFBSVIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDbEIsQ0FBQyxFQUFDa0IsQ0FBQyxFQUFFLEVBQUM5QixDQUFDLENBQUNDLENBQUMsR0FBQzZCLENBQUMsQ0FBQyxJQUFFUSxDQUFDLENBQUNSLENBQUMsQ0FBQztRQUFBO01BQUMsQ0FBQyxDQUFDO0lBQUMsT0FBT25CLENBQUMsQ0FBQ3FOLFNBQVMsR0FBQ3BOLENBQUMsRUFBQ0QsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxTQUFTVixDQUFDQSxDQUFBLEVBQUU7TUFBQyxLQUFJLElBQUlELENBQUMsR0FBQyxJQUFJLENBQUM2UixFQUFFLEVBQUM1UixDQUFDLEdBQUMsSUFBSSxDQUFDNlIsRUFBRSxFQUFDdlIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUMrQixDQUFDLENBQUMvQixDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7TUFBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxHQUFDLElBQUksQ0FBQzhSLEVBQUUsR0FBQyxDQUFDLEVBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDeVAsRUFBRSxHQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUM7TUFBQyxLQUFJLElBQUkvQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDLElBQUlJLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTyxDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7VUFBQ0ssQ0FBQyxHQUFDLEtBQUssR0FBQ0QsQ0FBQztVQUFDRyxDQUFDLEdBQUNILENBQUMsS0FBRyxFQUFFO1VBQUNjLENBQUMsR0FBQyxDQUFDLENBQUNiLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDRSxDQUFDLEtBQUcsRUFBRSxJQUFFQSxDQUFDLEdBQUNBLENBQUM7VUFBQ2dDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDbkMsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsS0FBSyxHQUFDQSxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLENBQUM7UUFBQ21CLENBQUMsQ0FBQ3ZCLENBQUMsQ0FBQyxHQUFDa0IsQ0FBQyxHQUFDcUIsQ0FBQztNQUFBO01BQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxD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QUFFLEdBQUMsQ0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxJQUFJLENBQUMrUixFQUFFLEdBQUMsQ0FBQztVQUFDLEtBQUksSUFBSXBSLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUMsS0FBSSxJQUFJeEIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNHLENBQUMsQ0FBQ0gsQ0FBQyxDQUFDLElBQUVDLENBQUMsQ0FBQ0QsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQyxJQUFHSixDQUFDLEVBQUM7WUFBQyxJQUFJa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDb0IsS0FBSztjQUFDVyxDQUFDLEdBQUNiLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQUNxQixDQUFDLEdBQUMsUUFBUSxJQUFFUixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUNhLENBQUMsR0FBQyxRQUFRLElBQUVyQixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUM0QixDQUFDLEdBQUNaLENBQUMsS0FBRyxFQUFFLEdBQUMsVUFBVSxHQUFDSyxDQUFDO2NBQUNtQixDQUFDLEdBQUNuQixDQUFDLElBQUUsRUFBRSxHQUFDLEtBQUssR0FBQ0wsQ0FBQztZQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQyxFQUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQztZQUFDLEtBQUksSUFBSTNELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUE7UUFBQyxDQUFDO1FBQUNrQyxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNPLENBQUMsRUFBQztVQUFDLElBQUlJLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFO1VBQUM1UixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxFQUFDYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsRUFBQ2MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEVBQUNjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRTtVQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLEdBQUMsUUFBUSxJQUFFYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ2EsQ0FBQyxDQUFDYixDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFDWixDQUFDLENBQUNPLENBQUMsR0FBQ0ssQ0FBQyxDQUFDLElBQUVhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUFDcUQsU0FBUyxFQUFDLENBQUM7UUFBQ3dKLE1BQU0sRUFBQztNQUFDLENBQUMsQ0FBQztJQUFDbE4sQ0FBQyxDQUFDeVIsTUFBTSxHQUFDcFIsQ0FBQyxDQUFDa0UsYUFBYSxDQUFDaEMsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUM5QyxDQUFDLENBQUM2TixJQUFJLENBQUNvRSxHQUFHLEdBQUMsWUFBVTtJQUFDLElBQUloUyxDQUFDLEdBQUNELENBQUMsQ0FBQ2EsR0FBRyxDQUFDaU4sZUFBZSxDQUFDOU0sTUFBTSxFQUFFO01BQUNULENBQUMsR0FBQ04sQ0FBQyxDQUFDOE4sU0FBUyxHQUFDOU4sQ0FBQyxDQUFDZSxNQUFNLENBQUM7UUFBQ3FOLFlBQVksRUFBQyxTQUFBQSxhQUFTck8sQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxJQUFJTSxDQUFDLEdBQUMsSUFBSSxDQUFDME4sT0FBTztZQUFDdE4sQ0FBQyxHQUFDSixDQUFDLENBQUMwRCxTQUFTO1lBQUNyRCxDQUFDLEdBQUMsSUFBSSxDQUFDc04sR0FBRztZQUFDcE4sQ0FBQyxHQUFDLElBQUksQ0FBQzhRLFFBQVE7VUFBQ2hSLENBQUMsS0FBR0UsQ0FBQyxHQUFDLElBQUksQ0FBQzhRLFFBQVEsR0FBQ2hSLENBQUMsQ0FBQ3dCLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUM4TCxHQUFHLEdBQUMsS0FBSyxDQUFDLENBQUM7VUFBQyxJQUFJek0sQ0FBQyxHQUFDWCxDQUFDLENBQUNzQixLQUFLLENBQUMsQ0FBQyxDQUFDO1VBQUM3QixDQUFDLENBQUMrTixZQUFZLENBQUM3TSxDQUFDLEVBQUMsQ0FBQyxDQUFDLEVBQUNYLENBQUMsQ0FBQ0gsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDRyxDQUFDLENBQUNILENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQztVQUFDLEtBQUksSUFBSTJCLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQzNCLENBQUMsRUFBQzJCLENBQUMsRUFBRSxFQUFDdEMsQ0FBQyxDQUFDQyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsSUFBRWIsQ0FBQyxDQUFDYSxDQUFDLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDLE9BQU9yQyxDQUFDLENBQUMrTixTQUFTLEdBQUN6TixDQUFDLEVBQUNOLENBQUM7RUFBQSxDQUFDLEVBQUUsRUFBQyxZQUFVO0lBQUMsU0FBU0EsQ0FBQ0EsQ0FBQSxFQUFFO01BQUMsS0FBSSxJQUFJRCxDQUFDLEdBQUMsSUFBSSxDQUFDNlIsRUFBRSxFQUFDNVIsQ0FBQyxHQUFDLElBQUksQ0FBQzZSLEVBQUUsRUFBQ3ZSLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDK0IsQ0FBQyxDQUFDL0IsQ0FBQyxDQUFDLEdBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDO01BQUNOLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsR0FBQyxJQUFJLENBQUM4UixFQUFFLEdBQUMsQ0FBQyxFQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsU0FBUyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsU0FBUyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ3lQLEVBQUUsR0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDO01BQUMsS0FBSSxJQUFJL0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7UUFBQyxJQUFJSSxDQUFDLEdBQUNYLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLEdBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDO1VBQUNLLENBQUMsR0FBQyxLQUFLLEdBQUNELENBQUM7VUFBQ0csQ0FBQyxHQUFDSCxDQUFDLEtBQUcsRUFBRTtVQUFDYyxDQUFDLEdBQUMsQ0FBQyxDQUFDYixDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLElBQUVBLENBQUMsR0FBQ0UsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDQSxDQUFDO1VBQUNnQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBQ25DLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsS0FBRyxDQUFDLEtBQUssR0FBQ0EsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxDQUFDO1FBQUNtQixDQUFDLENBQUN2QixDQUFDLENBQUMsR0FBQ2tCLENBQUMsR0FBQ3FCLENBQUM7TUFBQTtNQUFDOUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUM7SUFBQTtJQUFDLElBQUl2QixDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNpTixZQUFZO01BQUM5TSxDQUFDLEdBQUNQLENBQUMsQ0FBQzBFLElBQUk7TUFBQ3hELENBQUMsR0FBQyxFQUFFO01BQUNhLENBQUMsR0FBQyxFQUFFO01BQUNSLENBQUMsR0FBQyxFQUFFO01BQUNnQixDQUFDLEdBQUNoQyxDQUFDLENBQUNvUixZQUFZLEdBQUN0UixDQUFDLENBQUNJLE1BQU0sQ0FBQztRQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtVQUFDLElBQUkxRSxDQUFDLEdBQUMsSUFBSSxDQUFDdU4sSUFBSSxDQUFDNUwsS0FBSztZQUFDcEIsQ0FBQyxHQUFDLElBQUksQ0FBQ2tFLEdBQUcsQ0FBQ29LLEVBQUU7WUFBQ2xPLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFLEdBQUMsQ0FBQzdSLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQztZQUFDWSxDQUFDLEdBQUMsSUFBSSxDQUFDa1IsRUFBRSxHQUFDLENBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUMsSUFBSSxDQUFDK1IsRUFBRSxHQUFDLENBQUM7VUFBQyxLQUFJLElBQUlqUixDQUFD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QUUsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsR0FBRyxDQUFDLEdBQUVBLENBQUMsRUFBRTtNQUFDUCxDQUFDLENBQUM0QixRQUFRLEdBQUNyQixDQUFDLEdBQUMsQ0FBQztJQUFBO0VBQUMsQ0FBQyxFQUFDUCxDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBQ25oZiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKHQscil7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZXhwb3J0cz1yKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSxyKTp0LkNyeXB0b0pTPXIoKX0odGhpcyxmdW5jdGlvbigpe3ZhciB0PXR8fGZ1bmN0aW9uKHQscil7dmFyIGU9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihyKXt2YXIgZTtyZXR1cm4gdC5wcm90b3R5cGU9cixlPW5ldyB0LHQucHJvdG90eXBlPW51bGwsZX19KCksaT17fSxuPWkubGliPXt9LG89bi5CYXNlPWZ1bmN0aW9uKCl7cmV0dXJue2V4dGVuZDpmdW5jdGlvbih0KXt2YXIgcj1lKHRoaXMpO3JldHVybiB0JiZyLm1peEluKHQpLHIuaGFzT3duUHJvcGVydHkoXCJpbml0XCIpJiZ0aGlzLmluaXQhPT1yLmluaXR8fChyLmluaXQ9ZnVuY3Rpb24oKXtyLiRzdXBlci5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHIuaW5pdC5wcm90b3R5cGU9cixyLiRzdXBlcj10aGlzLHJ9LGNyZWF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZXh0ZW5kKCk7cmV0dXJuIHQuaW5pdC5hcHBseSh0LGFyZ3VtZW50cyksdH0saW5pdDpmdW5jdGlvbigpe30sbWl4SW46ZnVuY3Rpb24odCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKHRoaXNbcl09dFtyXSk7dC5oYXNPd25Qcm9wZXJ0eShcInRvU3RyaW5nXCIpJiYodGhpcy50b1N0cmluZz10LnRvU3RyaW5nKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0LnByb3RvdHlwZS5leHRlbmQodGhpcyl9fX0oKSxzPW4uV29yZEFycmF5PW8uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dD10aGlzLndvcmRzPXR8fFtdLGUhPXI/dGhpcy5zaWdCeXRlcz1lOnRoaXMuc2lnQnl0ZXM9NCp0Lmxlbmd0aH0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuKHR8fGMpLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKHQpe3ZhciByPXRoaXMud29yZHMsZT10LndvcmRzLGk9dGhpcy5zaWdCeXRlcyxuPXQuc2lnQnl0ZXM7aWYodGhpcy5jbGFtcCgpLGklNClmb3IodmFyIG89MDtvPG47bysrKXt2YXIgcz1lW28+Pj4yXT4+PjI0LW8lNCo4JjI1NTtyW2krbz4+PjJdfD1zPDwyNC0oaStvKSU0Kjh9ZWxzZSBmb3IodmFyIG89MDtvPG47bys9NClyW2krbz4+PjJdPWVbbz4+PjJdO3JldHVybiB0aGlzLnNpZ0J5dGVzKz1uLHRoaXN9LGNsYW1wOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy53b3JkcyxlPXRoaXMuc2lnQnl0ZXM7cltlPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLWUlNCo4LHIubGVuZ3RoPXQuY2VpbChlLzQpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLHR9LHJhbmRvbTpmdW5jdGlvbihyKXtmb3IodmFyIGUsaT1bXSxuPWZ1bmN0aW9uKHIpe3ZhciByPXIsZT05ODc2NTQzMjEsaT00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe2U9MzY5NjkqKDY1NTM1JmUpKyhlPj4xNikmaSxyPTE4ZTMqKDY1NTM1JnIpKyhyPj4xNikmaTt2YXIgbj0oZTw8MTYpK3ImaTtyZXR1cm4gbi89NDI5NDk2NzI5NixuKz0uNSxuKih0LnJhbmRvbSgpPi41PzE6LTEpfX0sbz0wO288cjtvKz00KXt2YXIgYT1uKDQyOTQ5NjcyOTYqKGV8fHQucmFuZG9tKCkpKTtlPTk4NzY1NDA3MSphKCksaS5wdXNoKDQyOTQ5NjcyOTYqYSgpfDApfXJldHVybiBuZXcgcy5pbml0KGkscil9fSksYT1pLmVuYz17fSxjPWEuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9W10sbj0wO248ZTtuKyspe3ZhciBvPXJbbj4+PjJdPj4+MjQtbiU0KjgmMjU1O2kucHVzaCgobz4+PjQpLnRvU3RyaW5nKDE2KSksaS5wdXNoKCgxNSZvKS50b1N0cmluZygxNikpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSs9MillW2k+Pj4zXXw9cGFyc2VJbnQodC5zdWJzdHIoaSwyKSwxNik8PDI0LWklOCo0O3JldHVybiBuZXcgcy5pbml0KGUsci8yKX19LGg9YS5MYXRpbjE9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rKyl7dmFyIG89cltuPj4+Ml0+Pj4yNC1uJTQqOCYyNTU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD0oMjU1JnQuY2hhckNvZGVBdChpKSk8PDI0LWklNCo4O3JldHVybiBuZXcgcy5pbml0KGUscil9fSxsPWEuVXRmOD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShoLnN0cmluZ2lmeSh0KSkpfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcihcIk1hbGZvcm1lZCBVVEYtOCBkYXRhXCIpfX0scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIGgucGFyc2UodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQpKSl9fSxmPW4uQnVmZmVyZWRCbG9ja0FsZ29yaXRobT1vLmV4dGVuZCh7cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9kYXRhPW5ldyBzLmluaXQsdGhpcy5fbkRhdGFCeXRlcz0wfSxfYXBwZW5kOmZ1bmN0aW9uKHQpe1wic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1sLnBhcnNlKHQpKSx0aGlzLl9kYXRhLmNvbmNhdCh0KSx0aGlzLl9uRGF0YUJ5dGVzKz10LnNpZ0J5dGVzfSxfcHJvY2VzczpmdW5jdGlvbihyKXt2YXIgZT10aGlzLl9kYXRhLGk9ZS53b3JkcyxuPWUuc2lnQnl0ZXMsbz10aGlzLmJsb2NrU2l6ZSxhPTQqbyxjPW4vYTtjPXI/dC5jZWlsKGMpOnQubWF4KCgwfGMpLXRoaXMuX21pbkJ1ZmZlclNpemUsMCk7dmFyIGg9YypvLGw9dC5taW4oNCpoLG4pO2lmKGgpe2Zvcih2YXIgZj0wO2Y8aDtmKz1vKXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKGksZik7dmFyIHU9aS5zcGxpY2UoMCxoKTtlLnNpZ0J5dGVzLT1sfXJldHVybiBuZXcgcy5pbml0KHUsbCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSx0fSxfbWluQnVmZmVyU2l6ZTowfSksdT0obi5IYXNoZXI9Zi5leHRlbmQoe2NmZzpvLmV4dGVuZCgpLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dCYmdGhpcy5fYXBwZW5kKHQpO3ZhciByPXRoaXMuX2RvRmluYWxpemUoKTtyZXR1cm4gcn0sYmxvY2tTaXplOjE2LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSl7cmV0dXJuIG5ldyB0LmluaXQoZSkuZmluYWxpemUocil9fSxfY3JlYXRlSG1hY0hlbHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbmV3IHUuSE1BQy5pbml0KHQsZSkuZmluYWxpemUocil9fX0pLGkuYWxnbz17fSk7cmV0dXJuIGl9KE1hdGgpO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyLGUpe2Zvcih2YXIgaT1bXSxvPTAscz0wO3M8cjtzKyspaWYocyU0KXt2YXIgYT1lW3QuY2hhckNvZGVBdChzLTEpXTw8cyU0KjIsYz1lW3QuY2hhckNvZGVBdChzKV0+Pj42LXMlNCoyO2lbbz4+PjJdfD0oYXxjKTw8MjQtbyU0KjgsbysrfXJldHVybiBuLmNyZWF0ZShpLG8pfXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5CYXNlNjQ9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPXRoaXMuX21hcDt0LmNsYW1wKCk7Zm9yKHZhciBuPVtdLG89MDtvPGU7bys9Mylmb3IodmFyIHM9cltvPj4+Ml0+Pj4yNC1vJTQqOCYyNTUsYT1yW28rMT4+PjJdPj4+MjQtKG8rMSklNCo4JjI1NSxjPXJbbysyPj4+Ml0+Pj4yNC0obysyKSU0KjgmMjU1LGg9czw8MTZ8YTw8OHxjLGw9MDtsPDQmJm8rLjc1Kmw8ZTtsKyspbi5wdXNoKGkuY2hhckF0KGg+Pj42KigzLWwpJjYzKSk7dmFyIGY9aS5jaGFyQXQoNjQpO2lmKGYpZm9yKDtuLmxlbmd0aCU0OyluLnB1c2goZik7cmV0dXJuIG4uam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsaT10aGlzLl9tYXAsbj10aGlzLl9yZXZlcnNlTWFwO2lmKCFuKXtuPXRoaXMuX3JldmVyc2VNYXA9W107Zm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspbltpLmNoYXJDb2RlQXQobyldPW99dmFyIHM9aS5jaGFyQXQoNjQpO2lmKHMpe3ZhciBhPXQuaW5kZXhPZihzKTthIT09LTEmJihlPWEpfXJldHVybiByKHQsZSxuKX0sX21hcDpcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCJ9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUsaSxuLG8scyl7dmFyIGE9dCsociZlfH5yJmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBpKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHImaXxlJn5pKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gbih0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyXmVeaSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIG8odCxyLGUsaSxuLG8scyl7dmFyIGE9dCsoZV4ocnx+aSkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn12YXIgcz10LGE9cy5saWIsYz1hLldvcmRBcnJheSxoPWEuSGFzaGVyLGw9cy5hbGdvLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw2NDt0KyspZlt0XT00Mjk0OTY3Mjk2KnIuYWJzKHIuc2luKHQrMSkpfDB9KCk7dmFyIHU9bC5NRDU9aC5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYy5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBzPTA7czwxNjtzKyspe3ZhciBhPXIrcyxjPXRbYV07dFthXT0xNjcxMTkzNSYoYzw8OHxjPj4+MjQpfDQyNzgyNTUzNjAmKGM8PDI0fGM+Pj44KX12YXIgaD10aGlzLl9oYXNoLndvcmRzLGw9dFtyKzBdLHU9dFtyKzFdLGQ9dFtyKzJdLHY9dFtyKzNdLHA9dFtyKzRdLF89dFtyKzVdLHk9dFtyKzZdLGc9dFtyKzddLEI9dFtyKzhdLHc9dFtyKzldLGs9dFtyKzEwXSxTPXRbcisxMV0sbT10W3IrMTJdLHg9dFtyKzEzXSxiPXRbcisxNF0sSD10W3IrMTVdLHo9aFswXSxBPWhbMV0sQz1oWzJdLEQ9aFszXTt6PWUoeixBLEMsRCxsLDcsZlswXSksRD1lKEQseixBLEMsdSwxMixmWzFdKSxDPWUoQyxELHosQSxkLDE3LGZbMl0pLEE9ZShBLEMsRCx6LHYsMjIsZlszXSksej1lKHosQSxDLEQscCw3LGZbNF0pLEQ9ZShELHosQSxDLF8sMTIsZls1XSksQz1lKEMsRCx6LEEseSwxNyxmWzZdKSxBPWUoQSxDLEQseixnLDIyLGZbN10pLHo9ZSh6LEEsQyxELEIsNyxmWzhdKSxEPWUoRCx6LEEsQyx3LDEyLGZbOV0pLEM9ZShDLEQseixBLGssMTcsZlsxMF0pLEE9ZShBLEMsRCx6LFMsMjIsZlsxMV0pLHo9ZSh6LEEsQyxELG0sNyxmWzEyXSksRD1lKEQseixBLEMseCwxMixmWzEzXSksQz1lKEMsRCx6LEEsYiwxNyxmWzE0XSksQT1lKEEsQyxELHosSCwyMixmWzE1XSksej1pKHosQSxDLEQsdSw1LGZbMTZdKSxEPWkoRCx6LEEsQyx5LDksZlsxN10pLEM9aShDLEQseixBLFMsMTQsZlsxOF0pLEE9aShBLEMsRCx6LGwsMjAsZlsxOV0pLHo9aSh6LEEsQyxELF8sNSxmWzIwXSksRD1pKEQseixBLEMsayw5LGZbMjFdKSxDPWkoQyxELHosQSxILDE0LGZbMjJdKSxBPWkoQSxDLEQseixwLDIwLGZbMjNdKSx6PWkoeixBLEMsRCx3LDUsZlsyNF0pLEQ9aShELHosQSxDLGIsOSxmWzI1XSksQz1pKEMsRCx6LEEsdiwxNCxmWzI2XSksQT1pKEEsQyxELHosQiwyMCxmWzI3XSksej1pKHosQSxDLEQseCw1LGZbMjhdKSxEPWkoRCx6LEEsQyxkLDksZlsyOV0pLEM9aShDLEQseixBLGcsMTQsZlszMF0pLEE9aShBLEMsRCx6LG0sMjAsZlszMV0pLHo9bih6LEEsQyxELF8sNCxmWzMyXSksRD1uKEQseixBLEMsQiwxMSxmWzMzXSksQz1uKEMsRCx6LEEsUywxNixmWzM0XSksQT1uKEEsQyxELHosYiwyMyxmWzM1XSksej1uKHosQSxDLEQsdSw0LGZbMzZdKSxEPW4oRCx6LEEsQyxwLDExLGZbMzddKSxDPW4oQyxELHosQSxnLDE2LGZbMzhdKSxBPW4oQSxDLEQseixrLDIzLGZbMzldKSx6PW4oeixBLEMsRCx4LDQsZls0MF0pLEQ9bihELHosQSxDLGwsMTEsZls0MV0pLEM9bihDLEQseixBLHYsMTYsZls0Ml0pLEE9bihBLEMsRCx6LHksMjMsZls0M10pLHo9bih6LEEsQyxELHcsNCxmWzQ0XSksRD1uKEQseixBLEMsbSwxMSxmWzQ1XSksQz1uKEMsRCx6LEEsSCwxNixmWzQ2XSksQT1uKEEsQyxELHosZCwyMyxmWzQ3XSksej1vKHosQSxDLEQsbCw2LGZbNDhdKSxEPW8oRCx6LEEsQyxnLDEwLGZbNDldKSxDPW8oQyxELHosQSxiLDE1LGZbNTBdKSxBPW8oQSxDLEQseixfLDIxLGZbNTFdKSx6PW8oeixBLEMsRCxtLDYsZls1Ml0pLEQ9byhELHosQSxDLHYsMTAsZls1M10pLEM9byhDLEQseixBLGssMTUsZls1NF0pLEE9byhBLEMsRCx6LHUsMjEsZls1NV0pLHo9byh6LEEsQyxELEIsNixmWzU2XSksRD1vKEQseixBLEMsSCwxMCxmWzU3XSksQz1vKEMsRCx6LEEseSwxNSxmWzU4XSksQT1vKEEsQyxELHoseCwyMSxmWzU5XSksej1vKHosQSxDLEQscCw2LGZbNjBdKSxEPW8oRCx6LEEsQyxTLDEwLGZbNjFdKSxDPW8oQyxELHosQSxkLDE1LGZbNjJdKSxBPW8oQSxDLEQseix3LDIxLGZbNjNdKSxoWzBdPWhbMF0renwwLGhbMV09aFsxXStBfDAsaFsyXT1oWzJdK0N8MCxoWzNdPWhbM10rRHwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9OCp0aGlzLl9uRGF0YUJ5dGVzLG49OCp0LnNpZ0J5dGVzO2Vbbj4+PjVdfD0xMjg8PDI0LW4lMzI7dmFyIG89ci5mbG9vcihpLzQyOTQ5NjcyOTYpLHM9aTtlWyhuKzY0Pj4+OTw8NCkrMTVdPTE2NzExOTM1JihvPDw4fG8+Pj4yNCl8NDI3ODI1NTM2MCYobzw8MjR8bz4+PjgpLGVbKG4rNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKHM8PDh8cz4+PjI0KXw0Mjc4MjU1MzYwJihzPDwyNHxzPj4+OCksdC5zaWdCeXRlcz00KihlLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBhPXRoaXMuX2hhc2gsYz1hLndvcmRzLGg9MDtoPDQ7aCsrKXt2YXIgbD1jW2hdO2NbaF09MTY3MTE5MzUmKGw8PDh8bD4+PjI0KXw0Mjc4MjU1MzYwJihsPDwyNHxsPj4+OCl9cmV0dXJuIGF9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9aC5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO3MuTUQ1PWguX2NyZWF0ZUhlbHBlcih1KSxzLkhtYWNNRDU9aC5fY3JlYXRlSG1hY0hlbHBlcih1KX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPWUuSGFzaGVyLG89ci5hbGdvLHM9W10sYT1vLlNIQTE9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxhPWVbM10sYz1lWzRdLGg9MDtoPDgwO2grKyl7aWYoaDwxNilzW2hdPTB8dFtyK2hdO2Vsc2V7dmFyIGw9c1toLTNdXnNbaC04XV5zW2gtMTRdXnNbaC0xNl07c1toXT1sPDwxfGw+Pj4zMX12YXIgZj0oaTw8NXxpPj4+MjcpK2Mrc1toXTtmKz1oPDIwPyhuJm98fm4mYSkrMTUxODUwMDI0OTpoPDQwPyhuXm9eYSkrMTg1OTc3NTM5MzpoPDYwPyhuJm98biZhfG8mYSktMTg5NDAwNzU4ODoobl5vXmEpLTg5OTQ5NzUxNCxjPWEsYT1vLG89bjw8MzB8bj4+PjIsbj1pLGk9Zn1lWzBdPWVbMF0raXwwLGVbMV09ZVsxXStufDAsZVsyXT1lWzJdK298MCxlWzNdPWVbM10rYXwwLGVbNF09ZVs0XStjfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxyPXQud29yZHMsZT04KnRoaXMuX25EYXRhQnl0ZXMsaT04KnQuc2lnQnl0ZXM7cmV0dXJuIHJbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSs2ND4+Pjk8PDQpKzE0XT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSs2ND4+Pjk8PDQpKzE1XT1lLHQuc2lnQnl0ZXM9NCpyLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCksdGhpcy5faGFzaH0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1uLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7ci5TSEExPW4uX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEExPW4uX2NyZWF0ZUhtYWNIZWxwZXIoYSl9KCksZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1pLkhhc2hlcixzPWUuYWxnbyxhPVtdLGM9W107IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGU9ci5zcXJ0KHQpLGk9MjtpPD1lO2krKylpZighKHQlaSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gNDI5NDk2NzI5NioodC0oMHx0KSl8MH1mb3IodmFyIGk9MixuPTA7bjw2NDspdChpKSYmKG48OCYmKGFbbl09ZShyLnBvdyhpLC41KSkpLGNbbl09ZShyLnBvdyhpLDEvMykpLG4rKyksaSsrfSgpO3ZhciBoPVtdLGw9cy5TSEEyNTY9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KGEuc2xpY2UoMCkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxzPWVbM10sYT1lWzRdLGw9ZVs1XSxmPWVbNl0sdT1lWzddLGQ9MDtkPDY0O2QrKyl7aWYoZDwxNiloW2RdPTB8dFtyK2RdO2Vsc2V7dmFyIHY9aFtkLTE1XSxwPSh2PDwyNXx2Pj4+NyleKHY8PDE0fHY+Pj4xOCledj4+PjMsXz1oW2QtMl0seT0oXzw8MTV8Xz4+PjE3KV4oXzw8MTN8Xz4+PjE5KV5fPj4+MTA7aFtkXT1wK2hbZC03XSt5K2hbZC0xNl19dmFyIGc9YSZsXn5hJmYsQj1pJm5eaSZvXm4mbyx3PShpPDwzMHxpPj4+MileKGk8PDE5fGk+Pj4xMyleKGk8PDEwfGk+Pj4yMiksaz0oYTw8MjZ8YT4+PjYpXihhPDwyMXxhPj4+MTEpXihhPDw3fGE+Pj4yNSksUz11K2srZytjW2RdK2hbZF0sbT13K0I7dT1mLGY9bCxsPWEsYT1zK1N8MCxzPW8sbz1uLG49aSxpPVMrbXwwfWVbMF09ZVswXStpfDAsZVsxXT1lWzFdK258MCxlWzJdPWVbMl0rb3wwLGVbM109ZVszXStzfDAsZVs0XT1lWzRdK2F8MCxlWzVdPWVbNV0rbHwwLGVbNl09ZVs2XStmfDAsZVs3XT1lWzddK3V8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLGU9dC53b3JkcyxpPTgqdGhpcy5fbkRhdGFCeXRlcyxuPTgqdC5zaWdCeXRlcztyZXR1cm4gZVtuPj4+NV18PTEyODw8MjQtbiUzMixlWyhuKzY0Pj4+OTw8NCkrMTRdPXIuZmxvb3IoaS80Mjk0OTY3Mjk2KSxlWyhuKzY0Pj4+OTw8NCkrMTVdPWksdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtlLlNIQTI1Nj1vLl9jcmVhdGVIZWxwZXIobCksZS5IbWFjU0hBMjU2PW8uX2NyZWF0ZUhtYWNIZWxwZXIobCl9KE1hdGgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdDw8OCY0Mjc4MjU1MzYwfHQ+Pj44JjE2NzExOTM1fXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5VdGYxNj1vLlV0ZjE2QkU9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rPTIpe3ZhciBvPXJbbj4+PjJdPj4+MTYtbiU0KjgmNjU1MzU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjFdfD10LmNoYXJDb2RlQXQoaSk8PDE2LWklMioxNjtyZXR1cm4gbi5jcmVhdGUoZSwyKnIpfX07by5VdGYxNkxFPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQud29yZHMsaT10LnNpZ0J5dGVzLG49W10sbz0wO288aTtvKz0yKXt2YXIgcz1yKGVbbz4+PjJdPj4+MTYtbyU0KjgmNjU1MzUpO24ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1yZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgsaT1bXSxvPTA7bzxlO28rKylpW28+Pj4xXXw9cih0LmNoYXJDb2RlQXQobyk8PDE2LW8lMioxNik7cmV0dXJuIG4uY3JlYXRlKGksMiplKX19fSgpLGZ1bmN0aW9uKCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49aS5pbml0LG89aS5pbml0PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKHQ9bmV3IFVpbnQ4QXJyYXkodCkpLCh0IGluc3RhbmNlb2YgSW50OEFycmF5fHxcInVuZGVmaW5lZFwiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkmJnQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8dCBpbnN0YW5jZW9mIEludDE2QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIEludDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkmJih0PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpKSx0IGluc3RhbmNlb2YgVWludDhBcnJheSl7Zm9yKHZhciByPXQuYnl0ZUxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD10W2ldPDwyNC1pJTQqODtuLmNhbGwodGhpcyxlLHIpfWVsc2Ugbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O28ucHJvdG90eXBlPWl9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUpe3JldHVybiB0XnJeZX1mdW5jdGlvbiBpKHQscixlKXtyZXR1cm4gdCZyfH50JmV9ZnVuY3Rpb24gbih0LHIsZSl7cmV0dXJuKHR8fnIpXmV9ZnVuY3Rpb24gbyh0LHIsZSl7cmV0dXJuIHQmZXxyJn5lfWZ1bmN0aW9uIHModCxyLGUpe3JldHVybiB0XihyfH5lKX1mdW5jdGlvbiBhKHQscil7cmV0dXJuIHQ8PHJ8dD4+PjMyLXJ9dmFyIGM9dCxoPWMubGliLGw9aC5Xb3JkQXJyYXksZj1oLkhhc2hlcix1PWMuYWxnbyxkPWwuY3JlYXRlKFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdKSx2PWwuY3JlYXRlKFs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdKSxwPWwuY3JlYXRlKFsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSksXz1sLmNyZWF0ZShbOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0pLHk9bC5jcmVhdGUoWzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0pLGc9bC5jcmVhdGUoWzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF0pLEI9dS5SSVBFTUQxNjA9Zi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1sLmNyZWF0ZShbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBjPTA7YzwxNjtjKyspe3ZhciBoPXIrYyxsPXRbaF07dFtoXT0xNjcxMTkzNSYobDw8OHxsPj4+MjQpfDQyNzgyNTUzNjAmKGw8PDI0fGw+Pj44KX12YXIgZix1LEIsdyxrLFMsbSx4LGIsSCx6PXRoaXMuX2hhc2gud29yZHMsQT15LndvcmRzLEM9Zy53b3JkcyxEPWQud29yZHMsUj12LndvcmRzLEU9cC53b3JkcyxNPV8ud29yZHM7Uz1mPXpbMF0sbT11PXpbMV0seD1CPXpbMl0sYj13PXpbM10sSD1rPXpbNF07Zm9yKHZhciBGLGM9MDtjPDgwO2MrPTEpRj1mK3RbcitEW2NdXXwwLEYrPWM8MTY/ZSh1LEIsdykrQVswXTpjPDMyP2kodSxCLHcpK0FbMV06Yzw0OD9uKHUsQix3KStBWzJdOmM8NjQ/byh1LEIsdykrQVszXTpzKHUsQix3KStBWzRdLEZ8PTAsRj1hKEYsRVtjXSksRj1GK2t8MCxmPWssaz13LHc9YShCLDEwKSxCPXUsdT1GLEY9Uyt0W3IrUltjXV18MCxGKz1jPDE2P3MobSx4LGIpK0NbMF06YzwzMj9vKG0seCxiKStDWzFdOmM8NDg/bihtLHgsYikrQ1syXTpjPDY0P2kobSx4LGIpK0NbM106ZShtLHgsYikrQ1s0XSxGfD0wLEY9YShGLE1bY10pLEY9RitIfDAsUz1ILEg9YixiPWEoeCwxMCkseD1tLG09RjtGPXpbMV0rQitifDAselsxXT16WzJdK3crSHwwLHpbMl09elszXStrK1N8MCx6WzNdPXpbNF0rZittfDAsels0XT16WzBdK3UreHwwLHpbMF09Rn0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKGU8PDh8ZT4+PjI0KXw0Mjc4MjU1MzYwJihlPDwyNHxlPj4+OCksdC5zaWdCeXRlcz00KihyLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBuPXRoaXMuX2hhc2gsbz1uLndvcmRzLHM9MDtzPDU7cysrKXt2YXIgYT1vW3NdO29bc109MTY3MTE5MzUmKGE8PDh8YT4+PjI0KXw0Mjc4MjU1MzYwJihhPDwyNHxhPj4+OCl9cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9Zi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO2MuUklQRU1EMTYwPWYuX2NyZWF0ZUhlbHBlcihCKSxjLkhtYWNSSVBFTUQxNjA9Zi5fY3JlYXRlSG1hY0hlbHBlcihCKX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1yLmVuYyxvPW4uVXRmOCxzPXIuYWxnbztzLkhNQUM9aS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxyKXt0PXRoaXMuX2hhc2hlcj1uZXcgdC5pbml0LFwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1vLnBhcnNlKHIpKTt2YXIgZT10LmJsb2NrU2l6ZSxpPTQqZTtyLnNpZ0J5dGVzPmkmJihyPXQuZmluYWxpemUocikpLHIuY2xhbXAoKTtmb3IodmFyIG49dGhpcy5fb0tleT1yLmNsb25lKCkscz10aGlzLl9pS2V5PXIuY2xvbmUoKSxhPW4ud29yZHMsYz1zLndvcmRzLGg9MDtoPGU7aCsrKWFbaF1ePTE1NDk1NTY4MjgsY1toXV49OTA5NTIyNDg2O24uc2lnQnl0ZXM9cy5zaWdCeXRlcz1pLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9oYXNoZXI7dC5yZXNldCgpLHQudXBkYXRlKHRoaXMuX2lLZXkpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2hhc2hlci51cGRhdGUodCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5faGFzaGVyLGU9ci5maW5hbGl6ZSh0KTtyLnJlc2V0KCk7dmFyIGk9ci5maW5hbGl6ZSh0aGlzLl9vS2V5LmNsb25lKCkuY29uY2F0KGUpKTtyZXR1cm4gaX19KX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5TSEExLGE9by5ITUFDLGM9by5QQktERjI9aS5leHRlbmQoe2NmZzppLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjpzLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpfSxjb21wdXRlOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuY2ZnLGk9YS5jcmVhdGUoZS5oYXNoZXIsdCksbz1uLmNyZWF0ZSgpLHM9bi5jcmVhdGUoWzFdKSxjPW8ud29yZHMsaD1zLndvcmRzLGw9ZS5rZXlTaXplLGY9ZS5pdGVyYXRpb25zO2MubGVuZ3RoPGw7KXt2YXIgdT1pLnVwZGF0ZShyKS5maW5hbGl6ZShzKTtpLnJlc2V0KCk7Zm9yKHZhciBkPXUud29yZHMsdj1kLmxlbmd0aCxwPXUsXz0xO188ZjtfKyspe3A9aS5maW5hbGl6ZShwKSxpLnJlc2V0KCk7Zm9yKHZhciB5PXAud29yZHMsZz0wO2c8djtnKyspZFtnXV49eVtnXX1vLmNvbmNhdCh1KSxoWzBdKyt9cmV0dXJuIG8uc2lnQnl0ZXM9NCpsLG99fSk7ci5QQktERjI9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBjLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLk1ENSxhPW8uRXZwS0RGPWkuZXh0ZW5kKHtjZmc6aS5leHRlbmQoe2tleVNpemU6NCxoYXNoZXI6cyxpdGVyYXRpb25zOjF9KSxpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZCh0KX0sY29tcHV0ZTpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLmNmZyxpPWUuaGFzaGVyLmNyZWF0ZSgpLG89bi5jcmVhdGUoKSxzPW8ud29yZHMsYT1lLmtleVNpemUsYz1lLml0ZXJhdGlvbnM7cy5sZW5ndGg8YTspe2gmJmkudXBkYXRlKGgpO3ZhciBoPWkudXBkYXRlKHQpLmZpbmFsaXplKHIpO2kucmVzZXQoKTtmb3IodmFyIGw9MTtsPGM7bCsrKWg9aS5maW5hbGl6ZShoKSxpLnJlc2V0KCk7by5jb25jYXQoaCl9cmV0dXJuIG8uc2lnQnl0ZXM9NCphLG99fSk7ci5FdnBLREY9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBhLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1yLmFsZ28sbz1uLlNIQTI1NixzPW4uU0hBMjI0PW8uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGkuaW5pdChbMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF0pfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PW8uX2RvRmluYWxpemUuY2FsbCh0aGlzKTtyZXR1cm4gdC5zaWdCeXRlcy09NCx0fX0pO3IuU0hBMjI0PW8uX2NyZWF0ZUhlbHBlcihzKSxyLkhtYWNTSEEyMjQ9by5fY3JlYXRlSG1hY0hlbHBlcihzKX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLkJhc2Usbz1pLldvcmRBcnJheSxzPWUueDY0PXt9O3MuV29yZD1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LHIpe3RoaXMuaGlnaD10LHRoaXMubG93PXJ9fSkscy5Xb3JkQXJyYXk9bi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMud29yZHM9dHx8W10sZSE9cj90aGlzLnNpZ0J5dGVzPWU6dGhpcy5zaWdCeXRlcz04KnQubGVuZ3RofSx0b1gzMjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLndvcmRzLHI9dC5sZW5ndGgsZT1bXSxpPTA7aTxyO2krKyl7dmFyIG49dFtpXTtlLnB1c2gobi5oaWdoKSxlLnB1c2gobi5sb3cpfXJldHVybiBvLmNyZWF0ZShlLHRoaXMuc2lnQnl0ZXMpfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1uLmNsb25lLmNhbGwodGhpcykscj10LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksZT1yLmxlbmd0aCxpPTA7aTxlO2krKylyW2ldPXJbaV0uY2xvbmUoKTtyZXR1cm4gdH19KX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWkuSGFzaGVyLHM9ZS54NjQsYT1zLldvcmQsYz1lLmFsZ28saD1bXSxsPVtdLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTEscj0wLGU9MDtlPDI0O2UrKyl7aFt0KzUqcl09KGUrMSkqKGUrMikvMiU2NDt2YXIgaT1yJTUsbj0oMip0KzMqciklNTt0PWkscj1ufWZvcih2YXIgdD0wO3Q8NTt0KyspZm9yKHZhciByPTA7cjw1O3IrKylsW3QrNSpyXT1yKygyKnQrMypyKSU1KjU7Zm9yKHZhciBvPTEscz0wO3M8MjQ7cysrKXtmb3IodmFyIGM9MCx1PTAsZD0wO2Q8NztkKyspe2lmKDEmbyl7dmFyIHY9KDE8PGQpLTE7djwzMj91Xj0xPDx2OmNePTE8PHYtMzJ9MTI4Jm8/bz1vPDwxXjExMzpvPDw9MX1mW3NdPWEuY3JlYXRlKGMsdSl9fSgpO3ZhciB1PVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8MjU7dCsrKXVbdF09YS5jcmVhdGUoKX0oKTt2YXIgZD1jLlNIQTM9by5leHRlbmQoe2NmZzpvLmNmZy5leHRlbmQoe291dHB1dExlbmd0aDo1MTJ9KSxfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9zdGF0ZT1bXSxyPTA7cjwyNTtyKyspdFtyXT1uZXcgYS5pbml0O3RoaXMuYmxvY2tTaXplPSgxNjAwLTIqdGhpcy5jZmcub3V0cHV0TGVuZ3RoKS8zMn0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX3N0YXRlLGk9dGhpcy5ibG9ja1NpemUvMixuPTA7bjxpO24rKyl7dmFyIG89dFtyKzIqbl0scz10W3IrMipuKzFdO289MTY3MTE5MzUmKG88PDh8bz4+PjI0KXw0Mjc4MjU1MzYwJihvPDwyNHxvPj4+OCkscz0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KTt2YXIgYT1lW25dO2EuaGlnaF49cyxhLmxvd149b31mb3IodmFyIGM9MDtjPDI0O2MrKyl7Zm9yKHZhciBkPTA7ZDw1O2QrKyl7Zm9yKHZhciB2PTAscD0wLF89MDtfPDU7XysrKXt2YXIgYT1lW2QrNSpfXTt2Xj1hLmhpZ2gscF49YS5sb3d9dmFyIHk9dVtkXTt5LmhpZ2g9dix5Lmxvdz1wfWZvcih2YXIgZD0wO2Q8NTtkKyspZm9yKHZhciBnPXVbKGQrNCklNV0sQj11WyhkKzEpJTVdLHc9Qi5oaWdoLGs9Qi5sb3csdj1nLmhpZ2heKHc8PDF8az4+PjMxKSxwPWcubG93XihrPDwxfHc+Pj4zMSksXz0wO188NTtfKyspe3ZhciBhPWVbZCs1Kl9dO2EuaGlnaF49dixhLmxvd149cH1mb3IodmFyIFM9MTtTPDI1O1MrKyl7dmFyIGE9ZVtTXSxtPWEuaGlnaCx4PWEubG93LGI9aFtTXTtpZihiPDMyKXZhciB2PW08PGJ8eD4+PjMyLWIscD14PDxifG0+Pj4zMi1iO2Vsc2UgdmFyIHY9eDw8Yi0zMnxtPj4+NjQtYixwPW08PGItMzJ8eD4+PjY0LWI7dmFyIEg9dVtsW1NdXTtILmhpZ2g9dixILmxvdz1wfXZhciB6PXVbMF0sQT1lWzBdO3ouaGlnaD1BLmhpZ2gsei5sb3c9QS5sb3c7Zm9yKHZhciBkPTA7ZDw1O2QrKylmb3IodmFyIF89MDtfPDU7XysrKXt2YXIgUz1kKzUqXyxhPWVbU10sQz11W1NdLEQ9dVsoZCsxKSU1KzUqX10sUj11WyhkKzIpJTUrNSpfXTthLmhpZ2g9Qy5oaWdoXn5ELmhpZ2gmUi5oaWdoLGEubG93PUMubG93Xn5ELmxvdyZSLmxvd312YXIgYT1lWzBdLEU9ZltjXTthLmhpZ2hePUUuaGlnaCxhLmxvd149RS5sb3d9fSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9KDgqdGhpcy5fbkRhdGFCeXRlcyw4KnQuc2lnQnl0ZXMpLG89MzIqdGhpcy5ibG9ja1NpemU7ZVtpPj4+NV18PTE8PDI0LWklMzIsZVsoci5jZWlsKChpKzEpL28pKm8+Pj41KS0xXXw9MTI4LHQuc2lnQnl0ZXM9NCplLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBzPXRoaXMuX3N0YXRlLGE9dGhpcy5jZmcub3V0cHV0TGVuZ3RoLzgsYz1hLzgsaD1bXSxsPTA7bDxjO2wrKyl7dmFyIGY9c1tsXSx1PWYuaGlnaCxkPWYubG93O3U9MTY3MTE5MzUmKHU8PDh8dT4+PjI0KXw0Mjc4MjU1MzYwJih1PDwyNHx1Pj4+OCksZD0xNjcxMTkzNSYoZDw8OHxkPj4+MjQpfDQyNzgyNTUzNjAmKGQ8PDI0fGQ+Pj44KSxoLnB1c2goZCksaC5wdXNoKHUpfXJldHVybiBuZXcgbi5pbml0KGgsYSl9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKSxyPXQuX3N0YXRlPXRoaXMuX3N0YXRlLnNsaWNlKDApLGU9MDtlPDI1O2UrKylyW2VdPXJbZV0uY2xvbmUoKTtyZXR1cm4gdH19KTtlLlNIQTM9by5fY3JlYXRlSGVscGVyKGQpLGUuSG1hY1NIQTM9by5fY3JlYXRlSG1hY0hlbHBlcihkKX0oTWF0aCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7cmV0dXJuIHMuY3JlYXRlLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgZT10LGk9ZS5saWIsbj1pLkhhc2hlcixvPWUueDY0LHM9by5Xb3JkLGE9by5Xb3JkQXJyYXksYz1lLmFsZ28saD1bcigxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLHIoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLHIoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxyKDM5MjEwMDk1NzMsMjE3MzI5NTU0OCkscig5NjE5ODcxNjMsNDA4MTYyODQ3MikscigxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLHIoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxyKDI4NzA3NjMyMjEsMzY2NDYwOTU2MCkscigzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLHIoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLHIoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLHIoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxyKDE5MjUwNzgzODgsNDA2ODE4MjM4MykscigyMTYyMDc4MjA2LDk5MTMzNjExMykscigyNjE0ODg4MTAzLDYzMzgwMzMxNykscigzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLHIoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxyKDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxyKDI2NDM0NzA3OCwyMzQxMjYyNzczKSxyKDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxyKDc3MDI1NTk4MywxNDk1OTkwOTAxKSxyKDEyNDkxNTAxMjIsMTg1NjQzMTIzNSkscigxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLHIoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxyKDI1NTQyMjA4ODIsMzk5OTcxOTMzOSkscigyODIxODM0MzQ5LDc2Njc4NDAxNikscigyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLHIoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxyKDMzMzY1NzE4OTEsMTAzNDQ1NzAyNikscigzNTg0NTI4NzExLDI0NjY5NDg5MDEpLHIoMTEzOTI2OTkzLDM3NTgzMjYzODMpLHIoMzM4MjQxODk1LDE2ODcxNzkzNikscig2NjYzMDcyMDUsMTE4ODE3OTk2NCkscig3NzM1Mjk5MTIsMTU0NjA0NTczNCkscigxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLHIoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxyKDE2OTUxODM3MDAsMjM0MzUyNzM5MCkscigxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLHIoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxyKDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxyKDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCkscigyODIwMzAyNDExLDMxNTg0NTQyNzMpLHIoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxyKDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxyKDM1MTYwNjU4MTcsMzYwNjAwODM0NCkscigzNjAwMzUyODA0LDE0MzI3MjU3NzYpLHIoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxyKDI3NTQyMzM0NCw4NTExNjk3MjApLHIoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLHIoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLHIoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLHIoODgzOTk3ODc3LDM3ODUwNTAyODApLHIoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLHIoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxyKDE1MzcwMDIwNjMsMjAwMzAzNDk5NSkscigxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLHIoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxyKDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCkscigyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLHIoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLHIoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLHIoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxyKDMyMDQwMzE0NzksMjk5OTM1MTU3MykscigzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLHIoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxyKDM1MTUyNjcyNzEsNTY2MjgwNzExKSxyKDM5NDAxODc2MDYsMzQ1NDA2OTUzNCkscig0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLHIoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLHIoMTc0MjkyNDIxLDI3MzEwNTUyNzApLHIoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLHIoNDYwMzkzMjY5LDMyMDYyMDMxNSkscig2ODU0NzE3MzMsNTg3NDk2ODM2KSxyKDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxyKDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxyKDExMjYwMDA1ODAsMjYxODI5NzY3NikscigxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLHIoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxyKDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxyKDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldLGw9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw4MDt0KyspbFt0XT1yKCl9KCk7dmFyIGY9Yy5TSEE1MTI9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYS5pbml0KFtuZXcgcy5pbml0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCksbmV3IHMuaW5pdCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpLG5ldyBzLmluaXQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKSxuZXcgcy5pbml0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSksbmV3IHMuaW5pdCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpLG5ldyBzLmluaXQoMjYwMDgyMjkyNCw3MjU1MTExOTkpLG5ldyBzLmluaXQoNTI4NzM0NjM1LDQyMTUzODk1NDcpLG5ldyBzLmluaXQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLHM9ZVszXSxhPWVbNF0sYz1lWzVdLGY9ZVs2XSx1PWVbN10sZD1pLmhpZ2gsdj1pLmxvdyxwPW4uaGlnaCxfPW4ubG93LHk9by5oaWdoLGc9by5sb3csQj1zLmhpZ2gsdz1zLmxvdyxrPWEuaGlnaCxTPWEubG93LG09Yy5oaWdoLHg9Yy5sb3csYj1mLmhpZ2gsSD1mLmxvdyx6PXUuaGlnaCxBPXUubG93LEM9ZCxEPXYsUj1wLEU9XyxNPXksRj1nLFA9QixXPXcsTz1rLFU9UyxJPW0sSz14LFg9YixMPUgsaj16LE49QSxUPTA7VDw4MDtUKyspe3ZhciBaPWxbVF07aWYoVDwxNil2YXIgcT1aLmhpZ2g9MHx0W3IrMipUXSxHPVoubG93PTB8dFtyKzIqVCsxXTtlbHNle3ZhciBKPWxbVC0xNV0sJD1KLmhpZ2gsUT1KLmxvdyxWPSgkPj4+MXxRPDwzMSleKCQ+Pj44fFE8PDI0KV4kPj4+NyxZPShRPj4+MXwkPDwzMSleKFE+Pj44fCQ8PDI0KV4oUT4+Pjd8JDw8MjUpLHR0PWxbVC0yXSxydD10dC5oaWdoLGV0PXR0LmxvdyxpdD0ocnQ+Pj4xOXxldDw8MTMpXihydDw8M3xldD4+PjI5KV5ydD4+PjYsbnQ9KGV0Pj4+MTl8cnQ8PDEzKV4oZXQ8PDN8cnQ+Pj4yOSleKGV0Pj4+NnxydDw8MjYpLG90PWxbVC03XSxzdD1vdC5oaWdoLGF0PW90LmxvdyxjdD1sW1QtMTZdLGh0PWN0LmhpZ2gsbHQ9Y3QubG93LEc9WSthdCxxPVYrc3QrKEc+Pj4wPFk+Pj4wPzE6MCksRz1HK250LHE9cStpdCsoRz4+PjA8bnQ+Pj4wPzE6MCksRz1HK2x0LHE9cStodCsoRz4+PjA8bHQ+Pj4wPzE6MCk7Wi5oaWdoPXEsWi5sb3c9R312YXIgZnQ9TyZJXn5PJlgsdXQ9VSZLXn5VJkwsZHQ9QyZSXkMmTV5SJk0sdnQ9RCZFXkQmRl5FJkYscHQ9KEM+Pj4yOHxEPDw0KV4oQzw8MzB8RD4+PjIpXihDPDwyNXxEPj4+NyksX3Q9KEQ+Pj4yOHxDPDw0KV4oRDw8MzB8Qz4+PjIpXihEPDwyNXxDPj4+NykseXQ9KE8+Pj4xNHxVPDwxOCleKE8+Pj4xOHxVPDwxNCleKE88PDIzfFU+Pj45KSxndD0oVT4+PjE0fE88PDE4KV4oVT4+PjE4fE88PDE0KV4oVTw8MjN8Tz4+PjkpLEJ0PWhbVF0sd3Q9QnQuaGlnaCxrdD1CdC5sb3csU3Q9TitndCxtdD1qK3l0KyhTdD4+PjA8Tj4+PjA/MTowKSxTdD1TdCt1dCxtdD1tdCtmdCsoU3Q+Pj4wPHV0Pj4+MD8xOjApLFN0PVN0K2t0LG10PW10K3d0KyhTdD4+PjA8a3Q+Pj4wPzE6MCksU3Q9U3QrRyxtdD1tdCtxKyhTdD4+PjA8Rz4+PjA/MTowKSx4dD1fdCt2dCxidD1wdCtkdCsoeHQ+Pj4wPF90Pj4+MD8xOjApO2o9WCxOPUwsWD1JLEw9SyxJPU8sSz1VLFU9VytTdHwwLE89UCttdCsoVT4+PjA8Vz4+PjA/MTowKXwwLFA9TSxXPUYsTT1SLEY9RSxSPUMsRT1ELEQ9U3QreHR8MCxDPW10K2J0KyhEPj4+MDxTdD4+PjA/MTowKXwwfXY9aS5sb3c9ditELGkuaGlnaD1kK0MrKHY+Pj4wPEQ+Pj4wPzE6MCksXz1uLmxvdz1fK0Usbi5oaWdoPXArUisoXz4+PjA8RT4+PjA/MTowKSxnPW8ubG93PWcrRixvLmhpZ2g9eStNKyhnPj4+MDxGPj4+MD8xOjApLHc9cy5sb3c9dytXLHMuaGlnaD1CK1ArKHc+Pj4wPFc+Pj4wPzE6MCksUz1hLmxvdz1TK1UsYS5oaWdoPWsrTysoUz4+PjA8VT4+PjA/MTowKSx4PWMubG93PXgrSyxjLmhpZ2g9bStJKyh4Pj4+MDxLPj4+MD8xOjApLEg9Zi5sb3c9SCtMLGYuaGlnaD1iK1grKEg+Pj4wPEw+Pj4wPzE6MCksQT11Lmxvdz1BK04sdS5oaWdoPXoraisoQT4+PjA8Tj4+PjA/MTowKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrMTI4Pj4+MTA8PDUpKzMwXT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSsxMjg+Pj4xMDw8NSkrMzFdPWUsdC5zaWdCeXRlcz00KnIubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKTt2YXIgbj10aGlzLl9oYXNoLnRvWDMyKCk7cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9bi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fSxibG9ja1NpemU6MzJ9KTtlLlNIQTUxMj1uLl9jcmVhdGVIZWxwZXIoZiksZS5IbWFjU0hBNTEyPW4uX2NyZWF0ZUhtYWNIZWxwZXIoZil9KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci54NjQsaT1lLldvcmQsbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uU0hBNTEyLGE9by5TSEEzODQ9cy5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KFtuZXcgaS5pbml0KDM0MTgwNzAzNjUsMzIzODM3MTAzMiksbmV3IGkuaW5pdCgxNjU0MjcwMjUwLDkxNDE1MDY2MyksbmV3IGkuaW5pdCgyNDM4NTI5MzcwLDgxMjcwMjk5OSksbmV3IGkuaW5pdCgzNTU0NjIzNjAsNDE0NDkxMjY5NyksbmV3IGkuaW5pdCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpLG5ldyBpLmluaXQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KSxuZXcgaS5pbml0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSksbmV3IGkuaW5pdCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpXSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9cy5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO3JldHVybiB0LnNpZ0J5dGVzLT0xNix0fX0pO3IuU0hBMzg0PXMuX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEEzODQ9cy5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSx0LmxpYi5DaXBoZXJ8fGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQmFzZSxvPWkuV29yZEFycmF5LHM9aS5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtLGE9ZS5lbmMsYz0oYS5VdGY4LGEuQmFzZTY0KSxoPWUuYWxnbyxsPWguRXZwS0RGLGY9aS5DaXBoZXI9cy5leHRlbmQoe2NmZzpuLmV4dGVuZCgpLGNyZWF0ZUVuY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9FTkNfWEZPUk1fTU9ERSx0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5fREVDX1hGT1JNX01PREUsdCxyKX0saW5pdDpmdW5jdGlvbih0LHIsZSl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKGUpLHRoaXMuX3hmb3JtTW9kZT10LHRoaXMuX2tleT1yLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtzLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSxwcm9jZXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBlbmQodCksdGhpcy5fcHJvY2VzcygpfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLl9hcHBlbmQodCk7dmFyIHI9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiByfSxrZXlTaXplOjQsaXZTaXplOjQsX0VOQ19YRk9STV9NT0RFOjEsX0RFQ19YRk9STV9NT0RFOjIsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/bTp3fXJldHVybiBmdW5jdGlvbihyKXtyZXR1cm57ZW5jcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZW5jcnlwdChyLGUsaSxuKX0sZGVjcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZGVjcnlwdChyLGUsaSxuKX19fX0oKX0pLHU9KGkuU3RyZWFtQ2lwaGVyPWYuZXh0ZW5kKHtfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Byb2Nlc3MoITApO3JldHVybiB0fSxibG9ja1NpemU6MX0pLGUubW9kZT17fSksZD1pLkJsb2NrQ2lwaGVyTW9kZT1uLmV4dGVuZCh7Y3JlYXRlRW5jcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuRW5jcnlwdG9yLmNyZWF0ZSh0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5EZWNyeXB0b3IuY3JlYXRlKHQscil9LGluaXQ6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXI9dCx0aGlzLl9pdj1yfX0pLHY9dS5DQkM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxpKXt2YXIgbj10aGlzLl9pdjtpZihuKXt2YXIgbz1uO3RoaXMuX2l2PXJ9ZWxzZSB2YXIgbz10aGlzLl9wcmV2QmxvY2s7Zm9yKHZhciBzPTA7czxpO3MrKyl0W2Urc11ePW9bc119dmFyIGU9ZC5leHRlbmQoKTtyZXR1cm4gZS5FbmNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihyLGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplO3QuY2FsbCh0aGlzLHIsZSxuKSxpLmVuY3J5cHRCbG9jayhyLGUpLHRoaXMuX3ByZXZCbG9jaz1yLnNsaWNlKGUsZStuKX19KSxlLkRlY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHIsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemUsbz1yLnNsaWNlKGUsZStuKTtpLmRlY3J5cHRCbG9jayhyLGUpLHQuY2FsbCh0aGlzLHIsZSxuKSx0aGlzLl9wcmV2QmxvY2s9b319KSxlfSgpLHA9ZS5wYWQ9e30sXz1wLlBrY3M3PXtwYWQ6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9NCpyLGk9ZS10LnNpZ0J5dGVzJWUsbj1pPDwyNHxpPDwxNnxpPDw4fGkscz1bXSxhPTA7YTxpO2ErPTQpcy5wdXNoKG4pO3ZhciBjPW8uY3JlYXRlKHMsaSk7dC5jb25jYXQoYyl9LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx5PShpLkJsb2NrQ2lwaGVyPWYuZXh0ZW5kKHtjZmc6Zi5jZmcuZXh0ZW5kKHttb2RlOnYscGFkZGluZzpffSkscmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyk7dmFyIHQ9dGhpcy5jZmcscj10Lml2LGU9dC5tb2RlO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpdmFyIGk9ZS5jcmVhdGVFbmNyeXB0b3I7ZWxzZXt2YXIgaT1lLmNyZWF0ZURlY3J5cHRvcjt0aGlzLl9taW5CdWZmZXJTaXplPTF9dGhpcy5fbW9kZSYmdGhpcy5fbW9kZS5fX2NyZWF0b3I9PWk/dGhpcy5fbW9kZS5pbml0KHRoaXMsciYmci53b3Jkcyk6KHRoaXMuX21vZGU9aS5jYWxsKGUsdGhpcyxyJiZyLndvcmRzKSx0aGlzLl9tb2RlLl9fY3JlYXRvcj1pKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fbW9kZS5wcm9jZXNzQmxvY2sodCxyKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNmZy5wYWRkaW5nO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpe3QucGFkKHRoaXMuX2RhdGEsdGhpcy5ibG9ja1NpemUpO3ZhciByPXRoaXMuX3Byb2Nlc3MoITApfWVsc2V7dmFyIHI9dGhpcy5fcHJvY2VzcyghMCk7dC51bnBhZChyKX1yZXR1cm4gcn0sYmxvY2tTaXplOjR9KSxpLkNpcGhlclBhcmFtcz1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLm1peEluKHQpfSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4odHx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19KSksZz1lLmZvcm1hdD17fSxCPWcuT3BlblNTTD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciByPXQuY2lwaGVydGV4dCxlPXQuc2FsdDtpZihlKXZhciBpPW8uY3JlYXRlKFsxMzk4ODkzNjg0LDE3MDEwNzY4MzFdKS5jb25jYXQoZSkuY29uY2F0KHIpO2Vsc2UgdmFyIGk9cjtyZXR1cm4gaS50b1N0cmluZyhjKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9Yy5wYXJzZSh0KSxlPXIud29yZHM7aWYoMTM5ODg5MzY4ND09ZVswXSYmMTcwMTA3NjgzMT09ZVsxXSl7dmFyIGk9by5jcmVhdGUoZS5zbGljZSgyLDQpKTtlLnNwbGljZSgwLDQpLHIuc2lnQnl0ZXMtPTE2fXJldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDpyLHNhbHQ6aX0pfX0sdz1pLlNlcmlhbGl6YWJsZUNpcGhlcj1uLmV4dGVuZCh7Y2ZnOm4uZXh0ZW5kKHtmb3JtYXQ6Qn0pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49dC5jcmVhdGVFbmNyeXB0b3IoZSxpKSxvPW4uZmluYWxpemUocikscz1uLmNmZztyZXR1cm4geS5jcmVhdGUoe2NpcGhlcnRleHQ6byxrZXk6ZSxpdjpzLml2LGFsZ29yaXRobTp0LG1vZGU6cy5tb2RlLHBhZGRpbmc6cy5wYWRkaW5nLGJsb2NrU2l6ZTp0LmJsb2NrU2l6ZSxmb3JtYXR0ZXI6aS5mb3JtYXR9KX0sZGVjcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKSxyPXRoaXMuX3BhcnNlKHIsaS5mb3JtYXQpO3ZhciBuPXQuY3JlYXRlRGVjcnlwdG9yKGUsaSkuZmluYWxpemUoci5jaXBoZXJ0ZXh0KTtyZXR1cm4gbn0sX3BhcnNlOmZ1bmN0aW9uKHQscil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/ci5wYXJzZSh0LHRoaXMpOnR9fSksaz1lLmtkZj17fSxTPWsuT3BlblNTTD17ZXhlY3V0ZTpmdW5jdGlvbih0LHIsZSxpKXtpfHwoaT1vLnJhbmRvbSg4KSk7dmFyIG49bC5jcmVhdGUoe2tleVNpemU6citlfSkuY29tcHV0ZSh0LGkpLHM9by5jcmVhdGUobi53b3Jkcy5zbGljZShyKSw0KmUpO3JldHVybiBuLnNpZ0J5dGVzPTQqcix5LmNyZWF0ZSh7a2V5Om4saXY6cyxzYWx0Oml9KX19LG09aS5QYXNzd29yZEJhc2VkQ2lwaGVyPXcuZXh0ZW5kKHtjZmc6dy5jZmcuZXh0ZW5kKHtrZGY6U30pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49aS5rZGYuZXhlY3V0ZShlLHQua2V5U2l6ZSx0Lml2U2l6ZSk7aS5pdj1uLml2O3ZhciBvPXcuZW5jcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvLm1peEluKG4pLG99LGRlY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSkscj10aGlzLl9wYXJzZShyLGkuZm9ybWF0KTt2YXIgbj1pLmtkZi5leGVjdXRlKGUsdC5rZXlTaXplLHQuaXZTaXplLHIuc2FsdCk7aS5pdj1uLml2O3ZhciBvPXcuZGVjcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvfX0pfSgpLHQubW9kZS5DRkI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscixlLGkpe3ZhciBuPXRoaXMuX2l2O2lmKG4pe3ZhciBvPW4uc2xpY2UoMCk7dGhpcy5faXY9dm9pZCAwfWVsc2UgdmFyIG89dGhpcy5fcHJldkJsb2NrO2kuZW5jcnlwdEJsb2NrKG8sMCk7Zm9yKHZhciBzPTA7czxlO3MrKyl0W3Irc11ePW9bc119dmFyIGU9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO3JldHVybiBlLkVuY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemU7ci5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fcHJldkJsb2NrPXQuc2xpY2UoZSxlK24pfX0pLGUuRGVjcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZSxvPXQuc2xpY2UoZSxlK24pO3IuY2FsbCh0aGlzLHQsZSxuLGkpLHRoaXMuX3ByZXZCbG9jaz1vfX0pLGV9KCksdC5tb2RlLkVDQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtyZXR1cm4gci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodCxyKX19KSxyLkRlY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyLmRlY3J5cHRCbG9jayh0LHIpfX0pLHJ9KCksdC5wYWQuQW5zaVg5MjM9e3BhZDpmdW5jdGlvbih0LHIpe3ZhciBlPXQuc2lnQnl0ZXMsaT00KnIsbj1pLWUlaSxvPWUrbi0xO3QuY2xhbXAoKSx0LndvcmRzW28+Pj4yXXw9bjw8MjQtbyU0KjgsdC5zaWdCeXRlcys9bn0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHQucGFkLklzbzEwMTI2PXtwYWQ6ZnVuY3Rpb24ocixlKXt2YXIgaT00KmUsbj1pLXIuc2lnQnl0ZXMlaTtyLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKG4tMSkpLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFtuPDwyNF0sMSkpfSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0sdC5wYWQuSXNvOTc5NzE9e3BhZDpmdW5jdGlvbihyLGUpe3IuY29uY2F0KHQubGliLldvcmRBcnJheS5jcmVhdGUoWzIxNDc0ODM2NDhdLDEpKSx0LnBhZC5aZXJvUGFkZGluZy5wYWQocixlKX0sdW5wYWQ6ZnVuY3Rpb24ocil7dC5wYWQuWmVyb1BhZGRpbmcudW5wYWQociksci5zaWdCeXRlcy0tfX0sdC5tb2RlLk9GQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKSxlPXIuRW5jcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9jaXBoZXIsaT1lLmJsb2NrU2l6ZSxuPXRoaXMuX2l2LG89dGhpcy5fa2V5c3RyZWFtO24mJihvPXRoaXMuX2tleXN0cmVhbT1uLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCksZS5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIHM9MDtzPGk7cysrKXRbcitzXV49b1tzXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLHQucGFkLk5vUGFkZGluZz17cGFkOmZ1bmN0aW9uKCl7fSx1bnBhZDpmdW5jdGlvbigpe319LGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQ2lwaGVyUGFyYW1zLG89ZS5lbmMscz1vLkhleCxhPWUuZm9ybWF0O2EuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2lwaGVydGV4dC50b1N0cmluZyhzKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9cy5wYXJzZSh0KTtyZXR1cm4gbi5jcmVhdGUoe2NpcGhlcnRleHQ6cn0pfX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJsb2NrQ2lwaGVyLG49ci5hbGdvLG89W10scz1bXSxhPVtdLGM9W10saD1bXSxsPVtdLGY9W10sdT1bXSxkPVtdLHY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLHI9MDtyPDI1NjtyKyspcjwxMjg/dFtyXT1yPDwxOnRbcl09cjw8MV4yODM7Zm9yKHZhciBlPTAsaT0wLHI9MDtyPDI1NjtyKyspe3ZhciBuPWleaTw8MV5pPDwyXmk8PDNeaTw8NDtuPW4+Pj44XjI1NSZuXjk5LG9bZV09bixzW25dPWU7dmFyIHA9dFtlXSxfPXRbcF0seT10W19dLGc9MjU3KnRbbl1eMTY4NDMwMDgqbjthW2VdPWc8PDI0fGc+Pj44LGNbZV09Zzw8MTZ8Zz4+PjE2LGhbZV09Zzw8OHxnPj4+MjQsbFtlXT1nO3ZhciBnPTE2ODQzMDA5KnleNjU1MzcqX14yNTcqcF4xNjg0MzAwOCplO2Zbbl09Zzw8MjR8Zz4+PjgsdVtuXT1nPDwxNnxnPj4+MTYsZFtuXT1nPDw4fGc+Pj4yNCx2W25dPWcsZT8oZT1wXnRbdFt0W3lecF1dXSxpXj10W3RbaV1dKTplPWk9MX19KCk7dmFyIHA9WzAsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTRdLF89bi5BRVM9aS5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX25Sb3VuZHN8fHRoaXMuX2tleVByaW9yUmVzZXQhPT10aGlzLl9rZXkpe2Zvcih2YXIgdD10aGlzLl9rZXlQcmlvclJlc2V0PXRoaXMuX2tleSxyPXQud29yZHMsZT10LnNpZ0J5dGVzLzQsaT10aGlzLl9uUm91bmRzPWUrNixuPTQqKGkrMSkscz10aGlzLl9rZXlTY2hlZHVsZT1bXSxhPTA7YTxuO2ErKylpZihhPGUpc1thXT1yW2FdO2Vsc2V7dmFyIGM9c1thLTFdO2ElZT9lPjYmJmElZT09NCYmKGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10pOihjPWM8PDh8Yz4+PjI0LGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10sY149cFthL2V8MF08PDI0KSxzW2FdPXNbYS1lXV5jfWZvcih2YXIgaD10aGlzLl9pbnZLZXlTY2hlZHVsZT1bXSxsPTA7bDxuO2wrKyl7dmFyIGE9bi1sO2lmKGwlNCl2YXIgYz1zW2FdO2Vsc2UgdmFyIGM9c1thLTRdO2w8NHx8YTw9ND9oW2xdPWM6aFtsXT1mW29bYz4+PjI0XV1edVtvW2M+Pj4xNiYyNTVdXV5kW29bYz4+PjgmMjU1XV1edltvWzI1NSZjXV19fX0sZW5jcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9rZXlTY2hlZHVsZSxhLGMsaCxsLG8pfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10W3IrMV07dFtyKzFdPXRbciszXSx0W3IrM109ZSx0aGlzLl9kb0NyeXB0QmxvY2sodCxyLHRoaXMuX2ludktleVNjaGVkdWxlLGYsdSxkLHYscyk7dmFyIGU9dFtyKzFdO3RbcisxXT10W3IrM10sdFtyKzNdPWV9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxyLGUsaSxuLG8scyxhKXtmb3IodmFyIGM9dGhpcy5fblJvdW5kcyxoPXRbcl1eZVswXSxsPXRbcisxXV5lWzFdLGY9dFtyKzJdXmVbMl0sdT10W3IrM11eZVszXSxkPTQsdj0xO3Y8Yzt2Kyspe3ZhciBwPWlbaD4+PjI0XV5uW2w+Pj4xNiYyNTVdXm9bZj4+PjgmMjU1XV5zWzI1NSZ1XV5lW2QrK10sXz1pW2w+Pj4yNF1ebltmPj4+MTYmMjU1XV5vW3U+Pj44JjI1NV1ec1syNTUmaF1eZVtkKytdLHk9aVtmPj4+MjRdXm5bdT4+PjE2JjI1NV1eb1toPj4+OCYyNTVdXnNbMjU1JmxdXmVbZCsrXSxnPWlbdT4+PjI0XV5uW2g+Pj4xNiYyNTVdXm9bbD4+PjgmMjU1XV5zWzI1NSZmXV5lW2QrK107aD1wLGw9XyxmPXksdT1nfXZhciBwPShhW2g+Pj4yNF08PDI0fGFbbD4+PjE2JjI1NV08PDE2fGFbZj4+PjgmMjU1XTw8OHxhWzI1NSZ1XSleZVtkKytdLF89KGFbbD4+PjI0XTw8MjR8YVtmPj4+MTYmMjU1XTw8MTZ8YVt1Pj4+OCYyNTVdPDw4fGFbMjU1JmhdKV5lW2QrK10seT0oYVtmPj4+MjRdPDwyNHxhW3U+Pj4xNiYyNTVdPDwxNnxhW2g+Pj44JjI1NV08PDh8YVsyNTUmbF0pXmVbZCsrXSxnPShhW3U+Pj4yNF08PDI0fGFbaD4+PjE2JjI1NV08PDE2fGFbbD4+PjgmMjU1XTw8OHxhWzI1NSZmXSleZVtkKytdO3Rbcl09cCx0W3IrMV09Xyx0W3IrMl09eSx0W3IrM109Z30sa2V5U2l6ZTo4fSk7ci5BRVM9aS5fY3JlYXRlSGVscGVyKF8pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIpe3ZhciBlPSh0aGlzLl9sQmxvY2s+Pj50XnRoaXMuX3JCbG9jaykmcjt0aGlzLl9yQmxvY2tePWUsdGhpcy5fbEJsb2NrXj1lPDx0fWZ1bmN0aW9uIGUodCxyKXt2YXIgZT0odGhpcy5fckJsb2NrPj4+dF50aGlzLl9sQmxvY2spJnI7dGhpcy5fbEJsb2NrXj1lLHRoaXMuX3JCbG9ja149ZTw8dDtcclxufXZhciBpPXQsbj1pLmxpYixvPW4uV29yZEFycmF5LHM9bi5CbG9ja0NpcGhlcixhPWkuYWxnbyxjPVs1Nyw0OSw0MSwzMywyNSwxNyw5LDEsNTgsNTAsNDIsMzQsMjYsMTgsMTAsMiw1OSw1MSw0MywzNSwyNywxOSwxMSwzLDYwLDUyLDQ0LDM2LDYzLDU1LDQ3LDM5LDMxLDIzLDE1LDcsNjIsNTQsNDYsMzgsMzAsMjIsMTQsNiw2MSw1Myw0NSwzNywyOSwyMSwxMyw1LDI4LDIwLDEyLDRdLGg9WzE0LDE3LDExLDI0LDEsNSwzLDI4LDE1LDYsMjEsMTAsMjMsMTksMTIsNCwyNiw4LDE2LDcsMjcsMjAsMTMsMiw0MSw1MiwzMSwzNyw0Nyw1NSwzMCw0MCw1MSw0NSwzMyw0OCw0NCw0OSwzOSw1NiwzNCw1Myw0Niw0Miw1MCwzNiwyOSwzMl0sbD1bMSwyLDQsNiw4LDEwLDEyLDE0LDE1LDE3LDE5LDIxLDIzLDI1LDI3LDI4XSxmPVt7MDo4NDIxODg4LDI2ODQzNTQ1NjozMjc2OCw1MzY4NzA5MTI6ODQyMTM3OCw4MDUzMDYzNjg6MiwxMDczNzQxODI0OjUxMiwxMzQyMTc3MjgwOjg0MjE4OTAsMTYxMDYxMjczNjo4Mzg5MTIyLDE4NzkwNDgxOTI6ODM4ODYwOCwyMTQ3NDgzNjQ4OjUxNCwyNDE1OTE5MTA0OjgzODkxMjAsMjY4NDM1NDU2MDozMzI4MCwyOTUyNzkwMDE2Ojg0MjEzNzYsMzIyMTIyNTQ3MjozMjc3MCwzNDg5NjYwOTI4OjgzODg2MTAsMzc1ODA5NjM4NDowLDQwMjY1MzE4NDA6MzMyODIsMTM0MjE3NzI4OjAsNDAyNjUzMTg0Ojg0MjE4OTAsNjcxMDg4NjQwOjMzMjgyLDkzOTUyNDA5NjozMjc2OCwxMjA3OTU5NTUyOjg0MjE4ODgsMTQ3NjM5NTAwODo1MTIsMTc0NDgzMDQ2NDo4NDIxMzc4LDIwMTMyNjU5MjA6MiwyMjgxNzAxMzc2OjgzODkxMjAsMjU1MDEzNjgzMjozMzI4MCwyODE4NTcyMjg4Ojg0MjEzNzYsMzA4NzAwNzc0NDo4Mzg5MTIyLDMzNTU0NDMyMDA6ODM4ODYxMCwzNjIzODc4NjU2OjMyNzcwLDM4OTIzMTQxMTI6NTE0LDQxNjA3NDk1Njg6ODM4ODYwOCwxOjMyNzY4LDI2ODQzNTQ1NzoyLDUzNjg3MDkxMzo4NDIxODg4LDgwNTMwNjM2OTo4Mzg4NjA4LDEwNzM3NDE4MjU6ODQyMTM3OCwxMzQyMTc3MjgxOjMzMjgwLDE2MTA2MTI3Mzc6NTEyLDE4NzkwNDgxOTM6ODM4OTEyMiwyMTQ3NDgzNjQ5Ojg0MjE4OTAsMjQxNTkxOTEwNTo4NDIxMzc2LDI2ODQzNTQ1NjE6ODM4ODYxMCwyOTUyNzkwMDE3OjMzMjgyLDMyMjEyMjU0NzM6NTE0LDM0ODk2NjA5Mjk6ODM4OTEyMCwzNzU4MDk2Mzg1OjMyNzcwLDQwMjY1MzE4NDE6MCwxMzQyMTc3Mjk6ODQyMTg5MCw0MDI2NTMxODU6ODQyMTM3Niw2NzEwODg2NDE6ODM4ODYwOCw5Mzk1MjQwOTc6NTEyLDEyMDc5NTk1NTM6MzI3NjgsMTQ3NjM5NTAwOTo4Mzg4NjEwLDE3NDQ4MzA0NjU6MiwyMDEzMjY1OTIxOjMzMjgyLDIyODE3MDEzNzc6MzI3NzAsMjU1MDEzNjgzMzo4Mzg5MTIyLDI4MTg1NzIyODk6NTE0LDMwODcwMDc3NDU6ODQyMTg4OCwzMzU1NDQzMjAxOjgzODkxMjAsMzYyMzg3ODY1NzowLDM4OTIzMTQxMTM6MzMyODAsNDE2MDc0OTU2OTo4NDIxMzc4fSx7MDoxMDc0MjgyNTEyLDE2Nzc3MjE2OjE2Mzg0LDMzNTU0NDMyOjUyNDI4OCw1MDMzMTY0ODoxMDc0MjY2MTI4LDY3MTA4ODY0OjEwNzM3NDE4NDAsODM4ODYwODA6MTA3NDI4MjQ5NiwxMDA2NjMyOTY6MTA3Mzc1ODIwOCwxMTc0NDA1MTI6MTYsMTM0MjE3NzI4OjU0MDY3MiwxNTA5OTQ5NDQ6MTA3Mzc1ODIyNCwxNjc3NzIxNjA6MTA3Mzc0MTgyNCwxODQ1NDkzNzY6NTQwNjg4LDIwMTMyNjU5Mjo1MjQzMDQsMjE4MTAzODA4OjAsMjM0ODgxMDI0OjE2NDAwLDI1MTY1ODI0MDoxMDc0MjY2MTEyLDgzODg2MDg6MTA3Mzc1ODIwOCwyNTE2NTgyNDo1NDA2ODgsNDE5NDMwNDA6MTYsNTg3MjAyNTY6MTA3Mzc1ODIyNCw3NTQ5NzQ3MjoxMDc0MjgyNTEyLDkyMjc0Njg4OjEwNzM3NDE4MjQsMTA5MDUxOTA0OjUyNDI4OCwxMjU4MjkxMjA6MTA3NDI2NjEyOCwxNDI2MDYzMzY6NTI0MzA0LDE1OTM4MzU1MjowLDE3NjE2MDc2ODoxNjM4NCwxOTI5Mzc5ODQ6MTA3NDI2NjExMiwyMDk3MTUyMDA6MTA3Mzc0MTg0MCwyMjY0OTI0MTY6NTQwNjcyLDI0MzI2OTYzMjoxMDc0MjgyNDk2LDI2MDA0Njg0ODoxNjQwMCwyNjg0MzU0NTY6MCwyODUyMTI2NzI6MTA3NDI2NjEyOCwzMDE5ODk4ODg6MTA3Mzc1ODIyNCwzMTg3NjcxMDQ6MTA3NDI4MjQ5NiwzMzU1NDQzMjA6MTA3NDI2NjExMiwzNTIzMjE1MzY6MTYsMzY5MDk4NzUyOjU0MDY4OCwzODU4NzU5Njg6MTYzODQsNDAyNjUzMTg0OjE2NDAwLDQxOTQzMDQwMDo1MjQyODgsNDM2MjA3NjE2OjUyNDMwNCw0NTI5ODQ4MzI6MTA3Mzc0MTg0MCw0Njk3NjIwNDg6NTQwNjcyLDQ4NjUzOTI2NDoxMDczNzU4MjA4LDUwMzMxNjQ4MDoxMDczNzQxODI0LDUyMDA5MzY5NjoxMDc0MjgyNTEyLDI3NjgyNDA2NDo1NDA2ODgsMjkzNjAxMjgwOjUyNDI4OCwzMTAzNzg0OTY6MTA3NDI2NjExMiwzMjcxNTU3MTI6MTYzODQsMzQzOTMyOTI4OjEwNzM3NTgyMDgsMzYwNzEwMTQ0OjEwNzQyODI1MTIsMzc3NDg3MzYwOjE2LDM5NDI2NDU3NjoxMDczNzQxODI0LDQxMTA0MTc5MjoxMDc0MjgyNDk2LDQyNzgxOTAwODoxMDczNzQxODQwLDQ0NDU5NjIyNDoxMDczNzU4MjI0LDQ2MTM3MzQ0MDo1MjQzMDQsNDc4MTUwNjU2OjAsNDk0OTI3ODcyOjE2NDAwLDUxMTcwNTA4ODoxMDc0MjY2MTI4LDUyODQ4MjMwNDo1NDA2NzJ9LHswOjI2MCwxMDQ4NTc2OjAsMjA5NzE1Mjo2NzEwOTEyMCwzMTQ1NzI4OjY1Nzk2LDQxOTQzMDQ6NjU1NDAsNTI0Mjg4MDo2NzEwODg2OCw2MjkxNDU2OjY3MTc0NjYwLDczNDAwMzI6NjcxNzQ0MDAsODM4ODYwODo2NzEwODg2NCw5NDM3MTg0OjY3MTc0NjU2LDEwNDg1NzYwOjY1NzkyLDExNTM0MzM2OjY3MTc0NDA0LDEyNTgyOTEyOjY3MTA5MTI0LDEzNjMxNDg4OjY1NTM2LDE0NjgwMDY0OjQsMTU3Mjg2NDA6MjU2LDUyNDI4ODo2NzE3NDY1NiwxNTcyODY0OjY3MTc0NDA0LDI2MjE0NDA6MCwzNjcwMDE2OjY3MTA5MTIwLDQ3MTg1OTI6NjcxMDg4NjgsNTc2NzE2ODo2NTUzNiw2ODE1NzQ0OjY1NTQwLDc4NjQzMjA6MjYwLDg5MTI4OTY6NCw5OTYxNDcyOjI1NiwxMTAxMDA0ODo2NzE3NDQwMCwxMjA1ODYyNDo2NTc5NiwxMzEwNzIwMDo2NTc5MiwxNDE1NTc3Njo2NzEwOTEyNCwxNTIwNDM1Mjo2NzE3NDY2MCwxNjI1MjkyODo2NzEwODg2NCwxNjc3NzIxNjo2NzE3NDY1NiwxNzgyNTc5Mjo2NTU0MCwxODg3NDM2ODo2NTUzNiwxOTkyMjk0NDo2NzEwOTEyMCwyMDk3MTUyMDoyNTYsMjIwMjAwOTY6NjcxNzQ2NjAsMjMwNjg2NzI6NjcxMDg4NjgsMjQxMTcyNDg6MCwyNTE2NTgyNDo2NzEwOTEyNCwyNjIxNDQwMDo2NzEwODg2NCwyNzI2Mjk3Njo0LDI4MzExNTUyOjY1NzkyLDI5MzYwMTI4OjY3MTc0NDAwLDMwNDA4NzA0OjI2MCwzMTQ1NzI4MDo2NTc5NiwzMjUwNTg1Njo2NzE3NDQwNCwxNzMwMTUwNDo2NzEwODg2NCwxODM1MDA4MDoyNjAsMTkzOTg2NTY6NjcxNzQ2NTYsMjA0NDcyMzI6MCwyMTQ5NTgwODo2NTU0MCwyMjU0NDM4NDo2NzEwOTEyMCwyMzU5Mjk2MDoyNTYsMjQ2NDE1MzY6NjcxNzQ0MDQsMjU2OTAxMTI6NjU1MzYsMjY3Mzg2ODg6NjcxNzQ2NjAsMjc3ODcyNjQ6NjU3OTYsMjg4MzU4NDA6NjcxMDg4NjgsMjk4ODQ0MTY6NjcxMDkxMjQsMzA5MzI5OTI6NjcxNzQ0MDAsMzE5ODE1Njg6NCwzMzAzMDE0NDo2NTc5Mn0sezA6MjE1MTY4MjA0OCw2NTUzNjoyMTQ3NDg3ODA4LDEzMTA3Mjo0MTk4NDY0LDE5NjYwODoyMTUxNjc3OTUyLDI2MjE0NDowLDMyNzY4MDo0MTk4NDAwLDM5MzIxNjoyMTQ3NDgzNzEyLDQ1ODc1Mjo0MTk0MzY4LDUyNDI4ODoyMTQ3NDgzNjQ4LDU4OTgyNDo0MTk0MzA0LDY1NTM2MDo2NCw3MjA4OTY6MjE0NzQ4Nzc0NCw3ODY0MzI6MjE1MTY3ODAxNiw4NTE5Njg6NDE2MCw5MTc1MDQ6NDA5Niw5ODMwNDA6MjE1MTY4MjExMiwzMjc2ODoyMTQ3NDg3ODA4LDk4MzA0OjY0LDE2Mzg0MDoyMTUxNjc4MDE2LDIyOTM3NjoyMTQ3NDg3NzQ0LDI5NDkxMjo0MTk4NDAwLDM2MDQ0ODoyMTUxNjgyMTEyLDQyNTk4NDowLDQ5MTUyMDoyMTUxNjc3OTUyLDU1NzA1Njo0MDk2LDYyMjU5MjoyMTUxNjgyMDQ4LDY4ODEyODo0MTk0MzA0LDc1MzY2NDo0MTYwLDgxOTIwMDoyMTQ3NDgzNjQ4LDg4NDczNjo0MTk0MzY4LDk1MDI3Mjo0MTk4NDY0LDEwMTU4MDg6MjE0NzQ4MzcxMiwxMDQ4NTc2OjQxOTQzNjgsMTExNDExMjo0MTk4NDAwLDExNzk2NDg6MjE0NzQ4MzcxMiwxMjQ1MTg0OjAsMTMxMDcyMDo0MTYwLDEzNzYyNTY6MjE1MTY3ODAxNiwxNDQxNzkyOjIxNTE2ODIwNDgsMTUwNzMyODoyMTQ3NDg3ODA4LDE1NzI4NjQ6MjE1MTY4MjExMiwxNjM4NDAwOjIxNDc0ODM2NDgsMTcwMzkzNjoyMTUxNjc3OTUyLDE3Njk0NzI6NDE5ODQ2NCwxODM1MDA4OjIxNDc0ODc3NDQsMTkwMDU0NDo0MTk0MzA0LDE5NjYwODA6NjQsMjAzMTYxNjo0MDk2LDEwODEzNDQ6MjE1MTY3Nzk1MiwxMTQ2ODgwOjIxNTE2ODIxMTIsMTIxMjQxNjowLDEyNzc5NTI6NDE5ODQwMCwxMzQzNDg4OjQxOTQzNjgsMTQwOTAyNDoyMTQ3NDgzNjQ4LDE0NzQ1NjA6MjE0NzQ4NzgwOCwxNTQwMDk2OjY0LDE2MDU2MzI6MjE0NzQ4MzcxMiwxNjcxMTY4OjQwOTYsMTczNjcwNDoyMTQ3NDg3NzQ0LDE4MDIyNDA6MjE1MTY3ODAxNiwxODY3Nzc2OjQxNjAsMTkzMzMxMjoyMTUxNjgyMDQ4LDE5OTg4NDg6NDE5NDMwNCwyMDY0Mzg0OjQxOTg0NjR9LHswOjEyOCw0MDk2OjE3MDM5MzYwLDgxOTI6MjYyMTQ0LDEyMjg4OjUzNjg3MDkxMiwxNjM4NDo1MzcxMzMxODQsMjA0ODA6MTY3NzczNDQsMjQ1NzY6NTUzNjQ4MjU2LDI4NjcyOjI2MjI3MiwzMjc2ODoxNjc3NzIxNiwzNjg2NDo1MzcxMzMwNTYsNDA5NjA6NTM2ODcxMDQwLDQ1MDU2OjU1MzkxMDQwMCw0OTE1Mjo1NTM5MTAyNzIsNTMyNDg6MCw1NzM0NDoxNzAzOTQ4OCw2MTQ0MDo1NTM2NDgxMjgsMjA0ODoxNzAzOTQ4OCw2MTQ0OjU1MzY0ODI1NiwxMDI0MDoxMjgsMTQzMzY6MTcwMzkzNjAsMTg0MzI6MjYyMTQ0LDIyNTI4OjUzNzEzMzE4NCwyNjYyNDo1NTM5MTAyNzIsMzA3MjA6NTM2ODcwOTEyLDM0ODE2OjUzNzEzMzA1NiwzODkxMjowLDQzMDA4OjU1MzkxMDQwMCw0NzEwNDoxNjc3NzM0NCw1MTIwMDo1MzY4NzEwNDAsNTUyOTY6NTUzNjQ4MTI4LDU5MzkyOjE2Nzc3MjE2LDYzNDg4OjI2MjI3Miw2NTUzNjoyNjIxNDQsNjk2MzI6MTI4LDczNzI4OjUzNjg3MDkxMiw3NzgyNDo1NTM2NDgyNTYsODE5MjA6MTY3NzczNDQsODYwMTY6NTUzOTEwMjcyLDkwMTEyOjUzNzEzMzE4NCw5NDIwODoxNjc3NzIxNiw5ODMwNDo1NTM5MTA0MDAsMTAyNDAwOjU1MzY0ODEyOCwxMDY0OTY6MTcwMzkzNjAsMTEwNTkyOjUzNzEzMzA1NiwxMTQ2ODg6MjYyMjcyLDExODc4NDo1MzY4NzEwNDAsMTIyODgwOjAsMTI2OTc2OjE3MDM5NDg4LDY3NTg0OjU1MzY0ODI1Niw3MTY4MDoxNjc3NzIxNiw3NTc3NjoxNzAzOTM2MCw3OTg3Mjo1MzcxMzMxODQsODM5Njg6NTM2ODcwOTEyLDg4MDY0OjE3MDM5NDg4LDkyMTYwOjEyOCw5NjI1Njo1NTM5MTAyNzIsMTAwMzUyOjI2MjI3MiwxMDQ0NDg6NTUzOTEwNDAwLDEwODU0NDowLDExMjY0MDo1NTM2NDgxMjgsMTE2NzM2OjE2Nzc3MzQ0LDEyMDgzMjoyNjIxNDQsMTI0OTI4OjUzNzEzMzA1NiwxMjkwMjQ6NTM2ODcxMDQwfSx7MDoyNjg0MzU0NjQsMjU2OjgxOTIsNTEyOjI3MDUzMjYwOCw3Njg6MjcwNTQwODA4LDEwMjQ6MjY4NDQzNjQ4LDEyODA6MjA5NzE1MiwxNTM2OjIwOTcxNjAsMTc5MjoyNjg0MzU0NTYsMjA0ODowLDIzMDQ6MjY4NDQzNjU2LDI1NjA6MjEwNTM0NCwyODE2OjgsMzA3MjoyNzA1MzI2MTYsMzMyODoyMTA1MzUyLDM1ODQ6ODIwMCwzODQwOjI3MDU0MDgwMCwxMjg6MjcwNTMyNjA4LDM4NDoyNzA1NDA4MDgsNjQwOjgsODk2OjIwOTcxNTIsMTE1MjoyMTA1MzUyLDE0MDg6MjY4NDM1NDY0LDE2NjQ6MjY4NDQzNjQ4LDE5MjA6ODIwMCwyMTc2OjIwOTcxNjAsMjQzMjo4MTkyLDI2ODg6MjY4NDQzNjU2LDI5NDQ6MjcwNTMyNjE2LDMyMDA6MCwzNDU2OjI3MDU0MDgwMCwzNzEyOjIxMDUzNDQsMzk2ODoyNjg0MzU0NTYsNDA5NjoyNjg0NDM2NDgsNDM1MjoyNzA1MzI2MTYsNDYwODoyNzA1NDA4MDgsNDg2NDo4MjAwLDUxMjA6MjA5NzE1Miw1Mzc2OjI2ODQzNTQ1Niw1NjMyOjI2ODQzNTQ2NCw1ODg4OjIxMDUzNDQsNjE0NDoyMTA1MzUyLDY0MDA6MCw2NjU2OjgsNjkxMjoyNzA1MzI2MDgsNzE2ODo4MTkyLDc0MjQ6MjY4NDQzNjU2LDc2ODA6MjcwNTQwODAwLDc5MzY6MjA5NzE2MCw0MjI0OjgsNDQ4MDoyMTA1MzQ0LDQ3MzY6MjA5NzE1Miw0OTkyOjI2ODQzNTQ2NCw1MjQ4OjI2ODQ0MzY0OCw1NTA0OjgyMDAsNTc2MDoyNzA1NDA4MDgsNjAxNjoyNzA1MzI2MDgsNjI3MjoyNzA1NDA4MDAsNjUyODoyNzA1MzI2MTYsNjc4NDo4MTkyLDcwNDA6MjEwNTM1Miw3Mjk2OjIwOTcxNjAsNzU1MjowLDc4MDg6MjY4NDM1NDU2LDgwNjQ6MjY4NDQzNjU2fSx7MDoxMDQ4NTc2LDE2OjMzNTU1NDU3LDMyOjEwMjQsNDg6MTA0OTYwMSw2NDozNDYwNDAzMyw4MDowLDk2OjEsMTEyOjM0NjAzMDA5LDEyODozMzU1NTQ1NiwxNDQ6MTA0ODU3NywxNjA6MzM1NTQ0MzMsMTc2OjM0NjA0MDMyLDE5MjozNDYwMzAwOCwyMDg6MTAyNSwyMjQ6MTA0OTYwMCwyNDA6MzM1NTQ0MzIsODozNDYwMzAwOSwyNDowLDQwOjMzNTU1NDU3LDU2OjM0NjA0MDMyLDcyOjEwNDg1NzYsODg6MzM1NTQ0MzMsMTA0OjMzNTU0NDMyLDEyMDoxMDI1LDEzNjoxMDQ5NjAxLDE1MjozMzU1NTQ1NiwxNjg6MzQ2MDMwMDgsMTg0OjEwNDg1NzcsMjAwOjEwMjQsMjE2OjM0NjA0MDMzLDIzMjoxLDI0ODoxMDQ5NjAwLDI1NjozMzU1NDQzMiwyNzI6MTA0ODU3NiwyODg6MzM1NTU0NTcsMzA0OjM0NjAzMDA5LDMyMDoxMDQ4NTc3LDMzNjozMzU1NTQ1NiwzNTI6MzQ2MDQwMzIsMzY4OjEwNDk2MDEsMzg0OjEwMjUsNDAwOjM0NjA0MDMzLDQxNjoxMDQ5NjAwLDQzMjoxLDQ0ODowLDQ2NDozNDYwMzAwOCw0ODA6MzM1NTQ0MzMsNDk2OjEwMjQsMjY0OjEwNDk2MDAsMjgwOjMzNTU1NDU3LDI5NjozNDYwMzAwOSwzMTI6MSwzMjg6MzM1NTQ0MzIsMzQ0OjEwNDg1NzYsMzYwOjEwMjUsMzc2OjM0NjA0MDMyLDM5MjozMzU1NDQzMyw0MDg6MzQ2MDMwMDgsNDI0OjAsNDQwOjM0NjA0MDMzLDQ1NjoxMDQ5NjAxLDQ3MjoxMDI0LDQ4ODozMzU1NTQ1Niw1MDQ6MTA0ODU3N30sezA6MTM0MjE5ODA4LDE6MTMxMDcyLDI6MTM0MjE3NzI4LDM6MzIsNDoxMzExMDQsNToxMzQzNTA4ODAsNjoxMzQzNTA4NDgsNzoyMDQ4LDg6MTM0MzQ4ODAwLDk6MTM0MjE5Nzc2LDEwOjEzMzEyMCwxMToxMzQzNDg4MzIsMTI6MjA4MCwxMzowLDE0OjEzNDIxNzc2MCwxNToxMzMxNTIsMjE0NzQ4MzY0ODoyMDQ4LDIxNDc0ODM2NDk6MTM0MzUwODgwLDIxNDc0ODM2NTA6MTM0MjE5ODA4LDIxNDc0ODM2NTE6MTM0MjE3NzI4LDIxNDc0ODM2NTI6MTM0MzQ4ODAwLDIxNDc0ODM2NTM6MTMzMTIwLDIxNDc0ODM2NTQ6MTMzMTUyLDIxNDc0ODM2NTU6MzIsMjE0NzQ4MzY1NjoxMzQyMTc3NjAsMjE0NzQ4MzY1NzoyMDgwLDIxNDc0ODM2NTg6MTMxMTA0LDIxNDc0ODM2NTk6MTM0MzUwODQ4LDIxNDc0ODM2NjA6MCwyMTQ3NDgzNjYxOjEzNDM0ODgzMiwyMTQ3NDgzNjYyOjEzNDIxOTc3NiwyMTQ3NDgzNjYzOjEzMTA3MiwxNjoxMzMxNTIsMTc6MTM0MzUwODQ4LDE4OjMyLDE5OjIwNDgsMjA6MTM0MjE5Nzc2LDIxOjEzNDIxNzc2MCwyMjoxMzQzNDg4MzIsMjM6MTMxMDcyLDI0OjAsMjU6MTMxMTA0LDI2OjEzNDM0ODgwMCwyNzoxMzQyMTk4MDgsMjg6MTM0MzUwODgwLDI5OjEzMzEyMCwzMDoyMDgwLDMxOjEzNDIxNzcyOCwyMTQ3NDgzNjY0OjEzMTA3MiwyMTQ3NDgzNjY1OjIwNDgsMjE0NzQ4MzY2NjoxMzQzNDg4MzIsMjE0NzQ4MzY2NzoxMzMxNTIsMjE0NzQ4MzY2ODozMiwyMTQ3NDgzNjY5OjEzNDM0ODgwMCwyMTQ3NDgzNjcwOjEzNDIxNzcyOCwyMTQ3NDgzNjcxOjEzNDIxOTgwOCwyMTQ3NDgzNjcyOjEzNDM1MDg4MCwyMTQ3NDgzNjczOjEzNDIxNzc2MCwyMTQ3NDgzNjc0OjEzNDIxOTc3NiwyMTQ3NDgzNjc1OjAsMjE0NzQ4MzY3NjoxMzMxMjAsMjE0NzQ4MzY3NzoyMDgwLDIxNDc0ODM2Nzg6MTMxMTA0LDIxNDc0ODM2Nzk6MTM0MzUwODQ4fV0sdT1bNDE2MDc0OTU2OSw1Mjg0ODIzMDQsMzMwMzAxNDQsMjA2NDM4NCwxMjkwMjQsODA2NCw1MDQsMjE0NzQ4MzY3OV0sZD1hLkRFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPVtdLGk9MDtpPDU2O2krKyl7dmFyIG49Y1tpXS0xO2VbaV09cltuPj4+NV0+Pj4zMS1uJTMyJjF9Zm9yKHZhciBvPXRoaXMuX3N1YktleXM9W10scz0wO3M8MTY7cysrKXtmb3IodmFyIGE9b1tzXT1bXSxmPWxbc10saT0wO2k8MjQ7aSsrKWFbaS82fDBdfD1lWyhoW2ldLTErZiklMjhdPDwzMS1pJTYsYVs0KyhpLzZ8MCldfD1lWzI4KyhoW2krMjRdLTErZiklMjhdPDwzMS1pJTY7YVswXT1hWzBdPDwxfGFbMF0+Pj4zMTtmb3IodmFyIGk9MTtpPDc7aSsrKWFbaV09YVtpXT4+PjQqKGktMSkrMzthWzddPWFbN108PDV8YVs3XT4+PjI3fWZvcih2YXIgdT10aGlzLl9pbnZTdWJLZXlzPVtdLGk9MDtpPDE2O2krKyl1W2ldPW9bMTUtaV19LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5fc3ViS2V5cyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52U3ViS2V5cyl9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxpLG4pe3RoaXMuX2xCbG9jaz10W2ldLHRoaXMuX3JCbG9jaz10W2krMV0sci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxlLmNhbGwodGhpcywyLDg1ODk5MzQ1OSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksci5jYWxsKHRoaXMsMSwxNDMxNjU1NzY1KTtmb3IodmFyIG89MDtvPDE2O28rKyl7Zm9yKHZhciBzPW5bb10sYT10aGlzLl9sQmxvY2ssYz10aGlzLl9yQmxvY2ssaD0wLGw9MDtsPDg7bCsrKWh8PWZbbF1bKChjXnNbbF0pJnVbbF0pPj4+MF07dGhpcy5fbEJsb2NrPWMsdGhpcy5fckJsb2NrPWFeaH12YXIgZD10aGlzLl9sQmxvY2s7dGhpcy5fbEJsb2NrPXRoaXMuX3JCbG9jayx0aGlzLl9yQmxvY2s9ZCxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpLGUuY2FsbCh0aGlzLDgsMTY3MTE5MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxyLmNhbGwodGhpcywxNiw2NTUzNSksci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHRbaV09dGhpcy5fbEJsb2NrLHRbaSsxXT10aGlzLl9yQmxvY2t9LGtleVNpemU6MixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuREVTPXMuX2NyZWF0ZUhlbHBlcihkKTt2YXIgdj1hLlRyaXBsZURFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9rZXkscj10LndvcmRzO3RoaXMuX2RlczE9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSgwLDIpKSksdGhpcy5fZGVzMj1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDIsNCkpKSx0aGlzLl9kZXMzPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoNCw2KSkpfSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMxLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZGVjcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMy5lbmNyeXB0QmxvY2sodCxyKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZGVzMy5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMyLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczEuZGVjcnlwdEJsb2NrKHQscil9LGtleVNpemU6NixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuVHJpcGxlREVTPXMuX2NyZWF0ZUhlbHBlcih2KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fUyxyPXRoaXMuX2ksZT10aGlzLl9qLGk9MCxuPTA7bjw0O24rKyl7cj0ocisxKSUyNTYsZT0oZSt0W3JdKSUyNTY7dmFyIG89dFtyXTt0W3JdPXRbZV0sdFtlXT1vLGl8PXRbKHRbcl0rdFtlXSklMjU2XTw8MjQtOCpufXJldHVybiB0aGlzLl9pPXIsdGhpcy5faj1lLGl9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1vLlJDND1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT10aGlzLl9TPVtdLG49MDtuPDI1NjtuKyspaVtuXT1uO2Zvcih2YXIgbj0wLG89MDtuPDI1NjtuKyspe3ZhciBzPW4lZSxhPXJbcz4+PjJdPj4+MjQtcyU0KjgmMjU1O289KG8raVtuXSthKSUyNTY7dmFyIGM9aVtuXTtpW25dPWlbb10saVtvXT1jfXRoaXMuX2k9dGhpcy5faj0wfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt0W2VdXj1yLmNhbGwodGhpcyl9LGtleVNpemU6OCxpdlNpemU6MH0pO2UuUkM0PW4uX2NyZWF0ZUhlbHBlcihzKTt2YXIgYT1vLlJDNERyb3A9cy5leHRlbmQoe2NmZzpzLmNmZy5leHRlbmQoe2Ryb3A6MTkyfSksX2RvUmVzZXQ6ZnVuY3Rpb24oKXtzLl9kb1Jlc2V0LmNhbGwodGhpcyk7Zm9yKHZhciB0PXRoaXMuY2ZnLmRyb3A7dD4wO3QtLSlyLmNhbGwodGhpcyl9fSk7ZS5SQzREcm9wPW4uX2NyZWF0ZUhlbHBlcihhKX0oKSx0Lm1vZGUuQ1RSR2xhZG1hbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7aWYoMjU1PT09KHQ+PjI0JjI1NSkpe3ZhciByPXQ+PjE2JjI1NSxlPXQ+PjgmMjU1LGk9MjU1JnQ7MjU1PT09cj8ocj0wLDI1NT09PWU/KGU9MCwyNTU9PT1pP2k9MDorK2kpOisrZSk6KytyLHQ9MCx0Kz1yPDwxNix0Kz1lPDw4LHQrPWl9ZWxzZSB0Kz0xPDwyNDtyZXR1cm4gdH1mdW5jdGlvbiBlKHQpe3JldHVybiAwPT09KHRbMF09cih0WzBdKSkmJih0WzFdPXIodFsxXSkpLHR9dmFyIGk9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLG49aS5FbmNyeXB0b3I9aS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dGhpcy5faXYscz10aGlzLl9jb3VudGVyO28mJihzPXRoaXMuX2NvdW50ZXI9by5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApLGUocyk7dmFyIGE9cy5zbGljZSgwKTtpLmVuY3J5cHRCbG9jayhhLDApO2Zvcih2YXIgYz0wO2M8bjtjKyspdFtyK2NdXj1hW2NdfX0pO3JldHVybiBpLkRlY3J5cHRvcj1uLGl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+Pj4wPGFbMF0+Pj4wPzE6MCl8MCxyWzJdPXJbMl0rODg2MjYzMDkyKyhyWzFdPj4+MDxhWzFdPj4+MD8xOjApfDAsclszXT1yWzNdKzEyOTUzMDc1OTcrKHJbMl0+Pj4wPGFbMl0+Pj4wPzE6MCl8MCxyWzRdPXJbNF0rMzU0NTA1MjM3MSsoclszXT4+PjA8YVszXT4+PjA/MTowKXwwLHJbNV09cls1XSs4ODYyNjMwOTIrKHJbNF0+Pj4wPGFbNF0+Pj4wPzE6MCl8MCxyWzZdPXJbNl0rMTI5NTMwNzU5Nysocls1XT4+PjA8YVs1XT4+PjA/MTowKXwwLHJbN109cls3XSszNTQ1MDUyMzcxKyhyWzZdPj4+MDxhWzZdPj4+MD8xOjApfDAsdGhpcy5fYj1yWzddPj4+MDxhWzddPj4+MD8xOjA7Zm9yKHZhciBlPTA7ZTw4O2UrKyl7dmFyIGk9dFtlXStyW2VdLG49NjU1MzUmaSxvPWk+Pj4xNixzPSgobipuPj4+MTcpK24qbz4+PjE1KStvKm8saD0oKDQyOTQ5MDE3NjAmaSkqaXwwKSsoKDY1NTM1JmkpKml8MCk7Y1tlXT1zXmh9dFswXT1jWzBdKyhjWzddPDwxNnxjWzddPj4+MTYpKyhjWzZdPDwxNnxjWzZdPj4+MTYpfDAsdFsxXT1jWzFdKyhjWzBdPDw4fGNbMF0+Pj4yNCkrY1s3XXwwLHRbMl09Y1syXSsoY1sxXTw8MTZ8Y1sxXT4+PjE2KSsoY1swXTw8MTZ8Y1swXT4+PjE2KXwwLHRbM109Y1szXSsoY1syXTw8OHxjWzJdPj4+MjQpK2NbMV18MCx0WzRdPWNbNF0rKGNbM108PDE2fGNbM10+Pj4xNikrKGNbMl08PDE2fGNbMl0+Pj4xNil8MCx0WzVdPWNbNV0rKGNbNF08PDh8Y1s0XT4+PjI0KStjWzNdfDAsdFs2XT1jWzZdKyhjWzVdPDwxNnxjWzVdPj4+MTYpKyhjWzRdPDwxNnxjWzRdPj4+MTYpfDAsdFs3XT1jWzddKyhjWzZdPDw4fGNbNl0+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXQ9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9MDtpPDQ7aSsrKXRbaV09MTY3MTE5MzUmKHRbaV08PDh8dFtpXT4+PjI0KXw0Mjc4MjU1MzYwJih0W2ldPDwyNHx0W2ldPj4+OCk7dmFyIG49dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG89dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyk7Zm9yKHZhciBpPTA7aTw4O2krKylvW2ldXj1uW2krNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7b1swXV49aCxvWzFdXj1mLG9bMl1ePWwsb1szXV49dSxvWzRdXj1oLG9bNV1ePWYsb1s2XV49bCxvWzddXj11O2Zvcih2YXIgaT0wO2k8NDtpKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0Lm1vZGUuQ1RSPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9jb3VudGVyO24mJihvPXRoaXMuX2NvdW50ZXI9bi5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApO3ZhciBzPW8uc2xpY2UoMCk7ZS5lbmNyeXB0QmxvY2socywwKSxvW2ktMV09b1tpLTFdKzF8MDtmb3IodmFyIGE9MDthPGk7YSsrKXRbcithXV49c1thXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9YLHI9dGhpcy5fQyxlPTA7ZTw4O2UrKylhW2VdPXJbZV07clswXT1yWzBdKzEyOTUzMDc1OTcrdGhpcy5fYnwwLHJbMV09clsxXSszNTQ1MDUyMzcxKyhyWzBdPj4+MDxhWzBdPj4+MD8xOjApfDAsclsyXT1yWzJdKzg4NjI2MzA5MisoclsxXT4+PjA8YVsxXT4+PjA/MTowKXwwLHJbM109clszXSsxMjk1MzA3NTk3KyhyWzJdPj4+MDxhWzJdPj4+MD8xOjApfDAscls0XT1yWzRdKzM1NDUwNTIzNzErKHJbM10+Pj4wPGFbM10+Pj4wPzE6MCl8MCxyWzVdPXJbNV0rODg2MjYzMDkyKyhyWzRdPj4+MDxhWzRdPj4+MD8xOjApfDAscls2XT1yWzZdKzEyOTUzMDc1OTcrKHJbNV0+Pj4wPGFbNV0+Pj4wPzE6MCl8MCxyWzddPXJbN10rMzU0NTA1MjM3MSsocls2XT4+PjA8YVs2XT4+PjA/MTowKXwwLHRoaXMuX2I9cls3XT4+PjA8YVs3XT4+PjA/MTowO2Zvcih2YXIgZT0wO2U8ODtlKyspe3ZhciBpPXRbZV0rcltlXSxuPTY1NTM1Jmksbz1pPj4+MTYscz0oKG4qbj4+PjE3KStuKm8+Pj4xNSkrbypvLGg9KCg0Mjk0OTAxNzYwJmkpKml8MCkrKCg2NTUzNSZpKSppfDApO2NbZV09c15ofXRbMF09Y1swXSsoY1s3XTw8MTZ8Y1s3XT4+PjE2KSsoY1s2XTw8MTZ8Y1s2XT4+PjE2KXwwLHRbMV09Y1sxXSsoY1swXTw8OHxjWzBdPj4+MjQpK2NbN118MCx0WzJdPWNbMl0rKGNbMV08PDE2fGNbMV0+Pj4xNikrKGNbMF08PDE2fGNbMF0+Pj4xNil8MCx0WzNdPWNbM10rKGNbMl08PDh8Y1syXT4+PjI0KStjWzFdfDAsdFs0XT1jWzRdKyhjWzNdPDwxNnxjWzNdPj4+MTYpKyhjWzJdPDwxNnxjWzJdPj4+MTYpfDAsdFs1XT1jWzVdKyhjWzRdPDw4fGNbNF0+Pj4yNCkrY1szXXwwLHRbNl09Y1s2XSsoY1s1XTw8MTZ8Y1s1XT4+PjE2KSsoY1s0XTw8MTZ8Y1s0XT4+PjE2KXwwLHRbN109Y1s3XSsoY1s2XTw8OHxjWzZdPj4+MjQpK2NbNV18MH12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPVtdLGE9W10sYz1bXSxoPW8uUmFiYml0TGVnYWN5PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG49dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyk7Zm9yKHZhciBvPTA7bzw4O28rKyluW29dXj1pW28rNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7blswXV49aCxuWzFdXj1mLG5bMl1ePWwsblszXV49dSxuWzRdXj1oLG5bNV1ePWYsbls2XV49bCxuWzddXj11O2Zvcih2YXIgbz0wO288NDtvKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0TGVnYWN5PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0LnBhZC5aZXJvUGFkZGluZz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9NCpyO3QuY2xhbXAoKSx0LnNpZ0J5dGVzKz1lLSh0LnNpZ0J5dGVzJWV8fGUpfSx1bnBhZDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMtMTshKHJbZT4+PjJdPj4+MjQtZSU0KjgmMjU1KTspZS0tO3Quc2lnQnl0ZXM9ZSsxfX0sdH0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcnlwdG8tanMubWluLmpzLm1hcCJdfQ== - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcY3J5cHRvLWpzLm1pbi5qcyJdLCJuYW1lcyI6WyJ0IiwiciIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJDcnlwdG9KUyIsImUiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm90b3R5cGUiLCJpIiwibiIsImxpYiIsIm8iLCJCYXNlIiwiZXh0ZW5kIiwibWl4SW4iLCJoYXNPd25Qcm9wZXJ0eSIsImluaXQiLCIkc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsInRvU3RyaW5nIiwiY2xvbmUiLCJzIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsImxlbmd0aCIsImMiLCJzdHJpbmdpZnkiLCJjb25jYXQiLCJjbGFtcCIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJhIiwicHVzaCIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiaCIsIkxhdGluMSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJsIiwiVXRmOCIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkVycm9yIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJmIiwiQnVmZmVyZWRCbG9ja0FsZ29yaXRobSIsInJlc2V0IiwiX2RhdGEiLCJfbkRhdGFCeXRlcyIsIl9hcHBlbmQiLCJfcHJvY2VzcyIsImJsb2NrU2l6ZSIsIm1heCIsIl9taW5CdWZmZXJTaXplIiwibWluIiwiX2RvUHJvY2Vzc0Jsb2NrIiwidSIsInNwbGljZSIsIkhhc2hlciIsImNmZyIsIl9kb1Jlc2V0IiwidXBkYXRlIiwiZmluYWxpemUiLCJfZG9GaW5hbGl6ZSIsIl9jcmVhdGVIZWxwZXIiLCJfY3JlYXRlSG1hY0hlbHBlciIsIkhNQUMiLCJhbGdvIiwiTWF0aCIsIkJhc2U2NCIsIl9tYXAiLCJjaGFyQXQiLCJfcmV2ZXJzZU1hcCIsImluZGV4T2YiLCJhYnMiLCJzaW4iLCJNRDUiLCJfaGFzaCIsImQiLCJ2IiwicCIsIl8iLCJ5IiwiZyIsIkIiLCJ3IiwiayIsIlMiLCJtIiwieCIsImIiLCJIIiwieiIsIkEiLCJDIiwiRCIsImZsb29yIiwiSG1hY01ENSIsIlNIQTEiLCJIbWFjU0hBMSIsInNxcnQiLCJwb3ciLCJTSEEyNTYiLCJIbWFjU0hBMjU2IiwiVXRmMTYiLCJVdGYxNkJFIiwiVXRmMTZMRSIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJSSVBFTUQxNjAiLCJSIiwiRSIsIk0iLCJGIiwiSG1hY1JJUEVNRDE2MCIsIl9oYXNoZXIiLCJfb0tleSIsIl9pS2V5IiwiUEJLREYyIiwia2V5U2l6ZSIsImhhc2hlciIsIml0ZXJhdGlvbnMiLCJjb21wdXRlIiwiRXZwS0RGIiwiU0hBMjI0IiwiSG1hY1NIQTIyNCIsIng2NCIsIldvcmQiLCJoaWdoIiwibG93IiwidG9YMzIiLCJTSEEzIiwib3V0cHV0TGVuZ3RoIiwiX3N0YXRlIiwiSG1hY1NIQTMiLCJTSEE1MTIiLCJQIiwiVyIsIk8iLCJVIiwiSSIsIksiLCJYIiwiTCIsImoiLCJOIiwiVCIsIloiLCJxIiwiRyIsIkoiLCIkIiwiUSIsIlYiLCJZIiwidHQiLCJydCIsImV0IiwiaXQiLCJudCIsIm90Iiwic3QiLCJhdCIsImN0IiwiaHQiLCJsdCIsImZ0IiwidXQiLCJkdCIsInZ0IiwicHQiLCJfdCIsInl0IiwiZ3QiLCJCdCIsInd0Iiwia3QiLCJTdCIsIm10IiwieHQiLCJidCIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiQ2lwaGVyIiwiY3JlYXRlRW5jcnlwdG9yIiwiX0VOQ19YRk9STV9NT0RFIiwiY3JlYXRlRGVjcnlwdG9yIiwiX0RFQ19YRk9STV9NT0RFIiwiX3hmb3JtTW9kZSIsIl9rZXkiLCJwcm9jZXNzIiwiaXZTaXplIiwiZW5jcnlwdCIsImRlY3J5cHQiLCJTdHJlYW1DaXBoZXIiLCJtb2RlIiwiQmxvY2tDaXBoZXJNb2RlIiwiRW5jcnlwdG9yIiwiRGVjcnlwdG9yIiwiX2NpcGhlciIsIl9pdiIsIkNCQyIsIl9wcmV2QmxvY2siLCJwcm9jZXNzQmxvY2siLCJlbmNyeXB0QmxvY2siLCJkZWNyeXB0QmxvY2siLCJwYWQiLCJQa2NzNyIsInVucGFkIiwiQmxvY2tDaXBoZXIiLCJwYWRkaW5nIiwiaXYiLCJfbW9kZSIsIl9fY3JlYXRvciIsIkNpcGhlclBhcmFtcyIsImZvcm1hdHRlciIsImZvcm1hdCIsIk9wZW5TU0wiLCJjaXBoZXJ0ZXh0Iiwic2FsdCIsIlNlcmlhbGl6YWJsZUNpcGhlciIsImtleSIsImFsZ29yaXRobSIsIl9wYXJzZSIsImtkZiIsImV4ZWN1dGUiLCJQYXNzd29yZEJhc2VkQ2lwaGVyIiwiQ0ZCIiwiRUNCIiwiQW5zaVg5MjMiLCJJc28xMDEyNiIsIklzbzk3OTcxIiwiWmVyb1BhZGRpbmciLCJPRkIiLCJfa2V5c3RyZWFtIiwiTm9QYWRkaW5nIiwiQUVTIiwiX25Sb3VuZHMiLCJfa2V5UHJpb3JSZXNldCIsIl9rZXlTY2hlZHVsZSIsIl9pbnZLZXlTY2hlZHVsZSIsIl9kb0NyeXB0QmxvY2siLCJfbEJsb2NrIiwiX3JCbG9jayIsIkRFUyIsIl9zdWJLZXlzIiwiX2ludlN1YktleXMiLCJUcmlwbGVERVMiLCJfZGVzMSIsIl9kZXMyIiwiX2RlczMiLCJfUyIsIl9pIiwiX2oiLCJSQzQiLCJSQzREcm9wIiwiZHJvcCIsIkNUUkdsYWRtYW4iLCJfY291bnRlciIsIl9YIiwiX0MiLCJfYiIsIlJhYmJpdCIsIkNUUiIsIlJhYmJpdExlZ2FjeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxDQUFDLFVBQVNBLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO0VBQUMs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OEMsQ0FBQyxHQUFDaEIsQ0FBQyxDQUFDakIsR0FBRztNQUFDc0MsQ0FBQyxHQUFDTCxDQUFDLENBQUNwQixTQUFTO01BQUNnQyxDQUFDLEdBQUNaLENBQUMsQ0FBQzBCLE1BQU07TUFBQ0YsQ0FBQyxHQUFDeEMsQ0FBQyxDQUFDbUQsSUFBSTtNQUFDVyxDQUFDLEdBQUN6QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7TUFBQ29GLENBQUMsR0FBQzFDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQztNQUFDcUYsQ0FBQyxHQUFDM0MsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO01BQUNzRixDQUFDLEdBQUM1QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7TUFBQ3VGLENBQUMsR0FBQzdDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsQ0FBQztNQUFDd0YsQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLENBQUMsQ0FBQyxDQUFDO01BQUN5RixDQUFDLEdBQUM1QixDQUFDLENBQUNnRSxTQUFTLEdBQUM1RSxDQUFDLENBQUMxQyxNQUFNLENBQUM7UUFBQzBELFFBQVEsRUFBQyxTQUFBQSxTQUFBLEVBQVU7VUFBQyxJQUFJLENBQUNpQixLQUFLLEdBQUN4QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUM0RCxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNDLENBQUMsRUFBQztVQUFDLEtBQUksSUFBSTZCLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsSUFBSWdCLENBQUMsR0FBQzdDLENBQUMsR0FBQzZCLENBQUM7Y0FBQ3FCLENBQUMsR0FBQ25ELENBQUMsQ0FBQzhDLENBQUMsQ0FBQztZQUFDOUMsQ0FBQyxDQUFDOEMsQ0FBQyxDQUFDLEdBQUMsUUFBUSxJQUFFSyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO1VBQUE7VUFBQyxJQUFJTyxDQUFDO1lBQUNZLENBQUM7WUFBQzRCLENBQUM7WUFBQ0MsQ0FBQztZQUFDQyxDQUFDO1lBQUNDLENBQUM7WUFBQ0MsQ0FBQztZQUFDQyxDQUFDO1lBQUNDLENBQUM7WUFBQ0MsQ0FBQztZQUFDQyxDQUFDLEdBQUMsSUFBSSxDQUFDZixLQUFLLENBQUNoRSxLQUFLO1lBQUNnRixDQUFDLEdBQUNYLENBQUMsQ0FBQ3JFLEtBQUs7WUFBQ2lGLENBQUMsR0FBQ1gsQ0FBQyxDQUFDdEUsS0FBSztZQUFDa0YsQ0FBQyxHQUFDakIsQ0FBQyxDQUFDakUsS0FBSztZQUFDNEcsQ0FBQyxHQUFDMUMsQ0FBQyxDQUFDbEUsS0FBSztZQUFDNkcsQ0FBQyxHQUFDMUMsQ0FBQyxDQUFDbkUsS0FBSztZQUFDOEcsQ0FBQyxHQUFDMUMsQ0FBQyxDQUFDcEUsS0FBSztVQUFDMEUsQ0FBQyxHQUFDM0MsQ0FBQyxHQUFDZ0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDSixDQUFDLEdBQUNoQyxDQUFDLEdBQUNvQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNILENBQUMsR0FBQ0wsQ0FBQyxHQUFDUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNGLENBQUMsR0FBQ0wsQ0FBQyxHQUFDTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNELENBQUMsR0FBQ0wsQ0FBQyxHQUFDTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUMsS0FBSSxJQUFJZ0MsQ0FBQyxFQUFDNUcsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxJQUFFLENBQUMsRUFBQzRHLENBQUMsR0FBQ2hGLENBQUMsR0FBQzFELENBQUMsQ0FBQ0MsQ0FBQyxHQUFDNEcsQ0FBQyxDQUFDL0UsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM0RyxDQUFDLElBQUU1RyxDQUFDLEdBQUMsRUFBRSxHQUFDdkIsQ0FBQyxDQUFDK0QsQ0FBQyxFQUFDNEIsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ1EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDN0UsQ0FBQyxHQUFDLEVBQUUsR0FBQ25CLENBQUMsQ0FBQzJELENBQUMsRUFBQzRCLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzdFLENBQUMsR0FBQyxFQUFFLEdBQUNsQixDQUFDLENBQUMwRCxDQUFDLEVBQUM0QixDQUFDLEVBQUNDLENBQUMsQ0FBQyxHQUFDUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM3RSxDQUFDLEdBQUMsRUFBRSxHQUFDaEIsQ0FBQyxDQUFDd0QsQ0FBQyxFQUFDNEIsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ1EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDNkMsQ0FBQyxFQUFDNEIsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ1EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0IsQ0FBQyxJQUFFLENBQUMsRUFBQ0EsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBQyxFQUFDRixDQUFDLENBQUMxRyxDQUFDLENBQUMsQ0FBQyxFQUFDNEcsQ0FBQyxHQUFDQSxDQUFDLEdBQUN0QyxDQUFDLEdBQUMsQ0FBQyxFQUFDMUMsQ0FBQyxHQUFDMEMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNELENBQUMsRUFBQ0EsQ0FBQyxHQUFDN0QsQ0FBQyxDQUFDNEQsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDQSxDQUFDLEdBQUM1QixDQUFDLEVBQUNBLENBQUMsR0FBQ29FLENBQUMsRUFBQ0EsQ0FBQyxHQUFDckMsQ0FBQyxHQUFDckcsQ0FBQyxDQUFDQyxDQUFDLEdBQUNzSSxDQUFDLENBQUN6RyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzRHLENBQUMsSUFBRTVHLENBQUMsR0FBQyxFQUFFLEdBQUNMLENBQUMsQ0FBQzZFLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOUUsQ0FBQyxHQUFDLEVBQUUsR0FBQ2hCLENBQUMsQ0FBQ3dGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOUUsQ0FBQyxHQUFDLEVBQUUsR0FBQ2xCLENBQUMsQ0FBQzBGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOUUsQ0FBQyxHQUFDLEVBQUUs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QUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLENBQUM7TUFBQ2tELENBQUMsR0FBQyxFQUFFO0lBQUMsQ0FBQyxZQUFVO01BQUMsS0FBSSxJQUFJbkQsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNtRCxDQUFDLENBQUNuRCxDQUFDLENBQUMsR0FBQ0MsQ0FBQyxFQUFFO0lBQUEsQ0FBQyxFQUFFO0lBQUMsSUFBSXlELENBQUMsR0FBQzVCLENBQUMsQ0FBQ2tJLE1BQU0sR0FBQ3BKLENBQUMsQ0FBQ0ksTUFBTSxDQUFDO01BQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1FBQUMsSUFBSSxDQUFDaUIsS0FBSyxHQUFDLElBQUlyRCxDQUFDLENBQUNuQixJQUFJLENBQUMsQ0FBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7TUFBQSxDQUFDO01BQUNrRCxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDLEtBQUksSUFBSU0sQ0FBQyxHQUFDLElBQUksQ0FBQ29GLEtBQUssQ0FBQ2hFLEtBQUssRUFBQ2hCLENBQUMsR0FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDSyxDQUFDLEdBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ08sQ0FBQyxHQUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNrQixDQUFDLEdBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMrQixDQUFDLEdBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUN1QixDQUFDLEdBQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNtRCxDQUFDLEdBQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMrRCxDQUFDLEdBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNxRixDQUFDLEdBQUNqRixDQUFDLENBQUM4SSxJQUFJLEVBQUM1RCxDQUFDLEdBQUNsRixDQUFDLENBQUMrSSxHQUFHLEVBQUM1RCxDQUFDLEdBQUNsRixDQUFDLENBQUM2SSxJQUFJLEVBQUMxRCxDQUFDLEdBQUNuRixDQUFDLENBQUM4SSxHQUFHLEVBQUMxRCxDQUFDLEdBQUNsRixDQUFDLENBQUMySSxJQUFJLEVBQUN4RCxDQUFDLEdBQUNuRixDQUFDLENBQUM0SSxHQUFHLEVBQUN4RCxDQUFDLEdBQUN6RSxDQUFDLENBQUNnSSxJQUFJLEVBQUN0RCxDQUFDLEdBQUMxRSxDQUFDLENBQUNpSSxHQUFHLEVBQUN0RCxDQUFDLEdBQUM5RCxDQUFDLENBQUNtSCxJQUFJLEVBQUNwRCxDQUFDLEdBQUMvRCxDQUFDLENBQUNvSCxHQUFHLEVBQUNwRCxDQUFDLEdBQUN4RSxDQUFDLENBQUMySCxJQUFJLEVBQUNsRCxDQUFDLEdBQUN6RSxDQUFDLENBQUM0SCxHQUFHLEVBQUNsRCxDQUFDLEdBQUM5QyxDQUFDLENBQUMrRixJQUFJLEVBQUNoRCxDQUFDLEdBQUMvQyxDQUFDLENBQUNnRyxHQUFHLEVBQUNoRCxDQUFDLEdBQUNwQyxDQUFDLENBQUNtRixJQUFJLEVBQUM5QyxDQUFDLEdBQUNyQyxDQUFDLENBQUNvRixHQUFHLEVBQUM5QyxDQUFDLEdBQUNoQixDQUFDLEVBQUNpQixDQUFDLEdBQUNoQixDQUFDLEVBQUMwQyxDQUFDLEdBQUN6QyxDQUFDLEVBQUMwQyxDQUFDLEdBQUN6QyxDQUFDLEVBQUMwQyxDQUFDLEdBQUN6QyxDQUFDLEVBQUMwQyxDQUFDLEdBQUN6QyxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztVQUFDLElBQUlDLENBQUMsR0FBQ3pILENBQUMsQ0FBQ3dILENBQUMsQ0FBQztVQUFDLElBQUdBLENBQUMsR0FBQyxF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QUFHLENBQUMsR0FBQ3lDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDdkMsQ0FBQyxHQUFDMUUsQ0FBQyxDQUFDaUksR0FBRyxHQUFDdkQsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDekksQ0FBQyxDQUFDZ0ksSUFBSSxHQUFDdkQsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytELENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDN0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDb0gsR0FBRyxHQUFDckQsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDOUgsQ0FBQyxDQUFDbUgsSUFBSSxHQUFDckQsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytELENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDN0QsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDNEgsR0FBRyxHQUFDbkQsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDeEksQ0FBQyxDQUFDMkgsSUFBSSxHQUFDbkQsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytELENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDN0QsQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDZ0csR0FBRyxHQUFDakQsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDOUcsQ0FBQyxDQUFDK0YsSUFBSSxHQUFDakQsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytELENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDN0QsQ0FBQyxHQUFDckMsQ0FBQyxDQUFDb0YsR0FBRyxHQUFDL0MsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDcEcsQ0FBQyxDQUFDbUYsSUFBSSxHQUFDL0MsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytE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RUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDO01BQUNnQixDQUFDLEdBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQztNQUFDSyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7TUFBQ08sQ0FBQyxHQUFDLENBQUM7UUFBQyxDQUFDLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsQ0FBQyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUM7TUFBTyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLE1BQU07UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxFQUFFO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLE1BQU07UUFBQyxRQUFRLEVBQUMsRUFBRTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxFQUFFO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUM7TUFBTSxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsR0FBRztRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxLQUFLO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLE1BQU0sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsQ0FBQztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxLQUFLO1FBQUMsT0FBTyxFQUFDLEdBQUc7UUFBQyxPQUFPLEVBQUMsQ0FBQztRQUFDLE9BQU8sRUFBQyxHQUFHO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsQ0FBQztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsQ0FBQztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxHQUFHO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsQ0FBQztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUM7TUFBSyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsVUFBVTtRQUFDLEtBQUssRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxDQUFDO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsT0FBTztRQUFDLE1BQU0sRUFBQyxFQUFFO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxJQUFJO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLEtBQUssRUFBQyxVQUFVO1FBQUMsS0FBSyxFQUFDLEVBQUU7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxDQUFDO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsSUFBSTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsSUFBSTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsSUFBSTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxFQUFFO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxFQUFFO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsSUFBSTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsSUFBSTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUM7TUFBTyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsR0FBRztRQUFDLElBQUksRUFBQyxRQUFRO1FBQUMsSUFBSSxFQUFDLE1BQU07UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxDQUFDO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxRQUFRO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsR0FBRztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLE1BQU07UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxDQUFDO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLE1BQU07UUFBQyxLQUFLLEVBQUMsR0FBRztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsUUFBUTtRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLE1BQU07UUFBQyxNQUFNLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxDQUFDO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsR0FBRztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLE1BQU07UUFBQyxNQUFNLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxDQUFDO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsUUFBUTtRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUM7TUFBUyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsU0FBUztRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUM7TUFBUyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsT0FBTztRQUFDLEVBQUUsRUFBQyxRQUFRO1FBQUMsRUFBRSxFQUFDLElBQUk7UUFBQyxFQUFFLEVBQUMsT0FBTztRQUFDLEVBQUUsRUFBQyxRQUFRO1FBQUMsRUFBRSxFQUFDLENBQUM7UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLENBQUMsRUFBQyxRQUFRO1FBQUMsRUFBRSxFQUFDLENBQUM7UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxRQUFRO1FBQUMsRUFBRSxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLElBQUk7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxDQUFDO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLElBQUk7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxDQUFDO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUM7TUFBTyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsU0FBUztRQUFDLENBQUMsRUFBQyxNQUFNO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsRUFBRTtRQUFDLENBQUMsRUFBQyxNQUFNO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsU0FBUztRQUFDLENBQUMsRUFBQyxJQUFJO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsSUFBSTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxJQUFJO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDLEVBQUU7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxJQUFJO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxFQUFFO1FBQUMsRUFBRSxFQUFDLElBQUk7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxJQUFJO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxFQUFFO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxJQUFJO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUM7TUFBUyxDQUFDLENBQUM7TUFBQ1ksQ0FBQyxHQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUFDLFVBQVUsQ0FBQztNQUFDc0IsQ0FBQyxHQUFDdEQsQ0FBQyxDQUFDd08sR0FBRyxHQUFD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QUFVLEdBQUMsSUFBSSxDQUFDOFIsRUFBRSxHQUFDLENBQUMsRUFBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFNBQVMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFNBQVMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQyxJQUFJLENBQUN5UCxFQUFFLEdBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQztNQUFDLEtBQUksSUFBSS9CLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1FBQUMsSUFBSUksQ0FBQyxHQUFDWCxDQUFDLENBQUNPLENBQUMsQ0FBQyxHQUFDTixDQUFDLENBQUNNLENBQUMsQ0FBQztVQUFDSyxDQUFDLEdBQUMsS0FBSyxHQUFDRCxDQUFDO1VBQUNHLENBQUMsR0FBQ0gsQ0FBQyxLQUFHLEVBQUU7VUFBQ2MsQ0FBQyxHQUFDLENBQUMsQ0FBQ2IsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxJQUFFQSxDQUFDLEdBQUNFLENBQUMsS0FBRyxFQUFFLElBQUVBLENBQUMsR0FBQ0EsQ0FBQztVQUFDZ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUNuQyxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLEtBQUcsQ0FBQyxLQUFLLEdBQUNBLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsQ0FBQztRQUFDbUIsQ0FBQyxDQUFDdkIsQ0FBQyxDQUFDLEdBQUNrQixDQUFDLEdBQUNxQixDQUFDO01BQUE7TUFBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxH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QUksQ0FBQ2dSLEVBQUUsR0FBQyxDQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQyxVQUFVLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxLQUFLLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQyxVQUFVLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxLQUFLLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQyxVQUFVLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxLQUFLLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQyxVQUFVLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxLQUFLLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDLElBQUksQ0FBQytSLEVBQUUsR0FBQyxDQUFDO1VBQUMsS0FBSSxJQUFJcFIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNWLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLENBQUM7VUFBQyxLQUFJLElBQUl4QixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQ0csQ0FBQyxDQUFDSCxDQUFDLENBQUMsSUFBRUMsQ0FBQyxDQUFDRCxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztVQUFDLElBQUdKLENBQUMs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LENBQUMsR0FBQyxDQUFDO1VBQUMsS0FBSSxJQUFJMkIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDM0IsQ0FBQyxFQUFDMkIsQ0FBQyxFQUFFLEVBQUN0QyxDQUFDLENBQUNDLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxJQUFFYixDQUFDLENBQUNhLENBQUMsQ0FBQztRQUFBO01BQUMsQ0FBQyxDQUFDO0lBQUMsT0FBT3JDLENBQUMsQ0FBQytOLFNBQVMsR0FBQ3pOLENBQUMsRUFBQ04sQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxTQUFTQSxDQUFDQSxDQUFBLEVBQUU7TUFBQyxLQUFJLElBQUlELENBQUMsR0FBQyxJQUFJLENBQUM2UixFQUFFLEVBQUM1UixDQUFDLEdBQUMsSUFBSSxDQUFDNlIsRUFBRSxFQUFDdlIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUMrQixDQUFDLENBQUMvQixDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7TUFBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxHQUFDLElBQUksQ0FBQzhSLEVBQUUsR0FBQyxDQUFDLEVBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDeVAsRUFBRSxHQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUM7TUFBQyxLQUFJLElBQUkvQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDLElBQUlJLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTyxDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7VUFBQ0ssQ0FBQyxHQUFDLEtBQUssR0FBQ0QsQ0FBQztVQUFDRyxDQUFDLEdBQUNILENBQUMsS0FBRyxFQUFFO1VBQUNjLENBQUMsR0FBQyxDQUFDLENBQUNiLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDRSxDQUFDLEtBQUcsRUFBRSxJQUFFQSxDQUFDLEdBQUNBLENBQUM7VUFBQ2dDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDbkMsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsS0FBSyxHQUFDQSxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLENBQUM7UUFBQ21CLENBQUMsQ0FBQ3ZCLENBQUMsQ0FBQyxHQUFDa0IsQ0FBQyxHQUFDcUIsQ0FBQztNQUFBO01BQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQztJQUFBO0lBQUMsSUFBSXZCLENBQUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQ2lOLFlBQVk7TUFBQzlNLENBQUMsR0FBQ1AsQ0FBQyxDQUFDMEUsSUFBSTtNQUFDeEQsQ0FBQyxHQUFDLEVBQUU7TUFBQ2EsQ0FBQyxHQUFDLEVBQUU7TUFBQ1IsQ0FBQyxHQUFDLEVBQUU7TUFBQ2dCLENBQUMsR0FBQ2hDLENBQUMsQ0FBQ29SLFlBQVksR0FBQ3RSLENBQUMsQ0FBQ0ksTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsSUFBSTFFLENBQUMsR0FBQyxJQUFJLENBQUN1TixJQUFJLENBQUM1TCxLQUFLO1lBQUNwQixDQUFDLEdBQUMsSUFBSSxDQUFDa0UsR0FBRyxDQUFDb0ssRUFBRTtZQUFDbE8sQ0FBQyxHQUFDLElBQUksQ0FBQ2tSLEVBQUUsR0FBQyxDQUFDN1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDO1lBQUNZLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFLEdBQUMsQ0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxJQUFJLENBQUMrUixFQUFFLEdBQUMsQ0FBQztVQUFDLEtBQUks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QUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxHQUFHLENBQUMsR0FBRUEsQ0FBQyxFQUFFO01BQUNQLENBQUMsQ0FBQzRCLFFBQVEsR0FBQ3JCLENBQUMsR0FBQyxDQUFDO0lBQUE7RUFBQyxDQUFDLEVBQUNQLENBQUM7QUFBQSxDQUFDLENBQUM7QUFDbmhmIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24odCxyKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1leHBvcnRzPXIoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHIpOnQuQ3J5cHRvSlM9cigpfSh0aGlzLGZ1bmN0aW9uKCl7dmFyIHQ9dHx8ZnVuY3Rpb24odCxyKXt2YXIgZT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBlO3JldHVybiB0LnByb3RvdHlwZT1yLGU9bmV3IHQsdC5wcm90b3R5cGU9bnVsbCxlfX0oKSxpPXt9LG49aS5saWI9e30sbz1uLkJhc2U9ZnVuY3Rpb24oKXtyZXR1cm57ZXh0ZW5kOmZ1bmN0aW9uKHQpe3ZhciByPWUodGhpcyk7cmV0dXJuIHQmJnIubWl4SW4odCksci5oYXNPd25Qcm9wZXJ0eShcImluaXRcIikmJnRoaXMuaW5pdCE9PXIuaW5pdHx8KHIuaW5pdD1mdW5jdGlvbigpe3IuJHN1cGVyLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksci5pbml0LnByb3RvdHlwZT1yLHIuJHN1cGVyPXRoaXMscn0sY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5leHRlbmQoKTtyZXR1cm4gdC5pbml0LmFwcGx5KHQsYXJndW1lbnRzKSx0fSxpbml0OmZ1bmN0aW9uKCl7fSxtaXhJbjpmdW5jdGlvbih0KXtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYodGhpc1tyXT10W3JdKTt0Lmhhc093blByb3BlcnR5KFwidG9TdHJpbmdcIikmJih0aGlzLnRvU3RyaW5nPXQudG9TdHJpbmcpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19fSgpLHM9bi5Xb3JkQXJyYXk9by5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMud29yZHM9dHx8W10sZSE9cj90aGlzLnNpZ0J5dGVzPWU6dGhpcy5zaWdCeXRlcz00KnQubGVuZ3RofSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4odHx8Yykuc3RyaW5naWZ5KHRoaXMpfSxjb25jYXQ6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy53b3JkcyxlPXQud29yZHMsaT10aGlzLnNpZ0J5dGVzLG49dC5zaWdCeXRlcztpZih0aGlzLmNsYW1wKCksaSU0KWZvcih2YXIgbz0wO288bjtvKyspe3ZhciBzPWVbbz4+PjJdPj4+MjQtbyU0KjgmMjU1O3JbaStvPj4+Ml18PXM8PDI0LShpK28pJTQqOH1lbHNlIGZvcih2YXIgbz0wO288bjtvKz00KXJbaStvPj4+Ml09ZVtvPj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPW4sdGhpc30sY2xhbXA6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLndvcmRzLGU9dGhpcy5zaWdCeXRlcztyW2U+Pj4yXSY9NDI5NDk2NzI5NTw8MzItZSU0Kjgsci5sZW5ndGg9dC5jZWlsKGUvNCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksdH0scmFuZG9tOmZ1bmN0aW9uKHIpe2Zvcih2YXIgZSxpPVtdLG49ZnVuY3Rpb24ocil7dmFyIHI9cixlPTk4NzY1NDMyMSxpPTQyOTQ5NjcyOTU7cmV0dXJuIGZ1bmN0aW9uKCl7ZT0zNjk2OSooNjU1MzUmZSkrKGU+PjE2KSZpLHI9MThlMyooNjU1MzUmcikrKHI+PjE2KSZpO3ZhciBuPShlPDwxNikrciZpO3JldHVybiBuLz00Mjk0OTY3Mjk2LG4rPS41LG4qKHQucmFuZG9tKCk+LjU/MTotMSl9fSxvPTA7bzxyO28rPTQpe3ZhciBhPW4oNDI5NDk2NzI5NiooZXx8dC5yYW5kb20oKSkpO2U9OTg3NjU0MDcxKmEoKSxpLnB1c2goNDI5NDk2NzI5NiphKCl8MCl9cmV0dXJuIG5ldyBzLmluaXQoaSxyKX19KSxhPWkuZW5jPXt9LGM9YS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rKyl7dmFyIG89cltuPj4+Ml0+Pj4yNC1uJTQqOCYyNTU7aS5wdXNoKChvPj4+NCkudG9TdHJpbmcoMTYpKSxpLnB1c2goKDE1Jm8pLnRvU3RyaW5nKDE2KSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKz0yKWVbaT4+PjNdfD1wYXJzZUludCh0LnN1YnN0cihpLDIpLDE2KTw8MjQtaSU4KjQ7cmV0dXJuIG5ldyBzLmluaXQoZSxyLzIpfX0saD1hLkxhdGluMT17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPVtdLG49MDtuPGU7bisrKXt2YXIgbz1yW24+Pj4yXT4+PjI0LW4lNCo4JjI1NTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShvKSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+Ml18PSgyNTUmdC5jaGFyQ29kZUF0KGkpKTw8MjQtaSU0Kjg7cmV0dXJuIG5ldyBzLmluaXQoZSxyKX19LGw9YS5VdGY4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGguc3RyaW5naWZ5KHQpKSl9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiTWFsZm9ybWVkIFVURi04IGRhdGFcIil9fSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gaC5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpKX19LGY9bi5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtPW8uZXh0ZW5kKHtyZXNldDpmdW5jdGlvbigpe3RoaXMuX2RhdGE9bmV3IHMuaW5pdCx0aGlzLl9uRGF0YUJ5dGVzPTB9LF9hcHBlbmQ6ZnVuY3Rpb24odCl7XCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PWwucGFyc2UodCkpLHRoaXMuX2RhdGEuY29uY2F0KHQpLHRoaXMuX25EYXRhQnl0ZXMrPXQuc2lnQnl0ZXN9LF9wcm9jZXNzOmZ1bmN0aW9uKHIpe3ZhciBlPXRoaXMuX2RhdGEsaT1lLndvcmRzLG49ZS5zaWdCeXRlcyxvPXRoaXMuYmxvY2tTaXplLGE9NCpvLGM9bi9hO2M9cj90LmNlaWwoYyk6dC5tYXgoKDB8YyktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKTt2YXIgaD1jKm8sbD10Lm1pbig0Kmgsbik7aWYoaCl7Zm9yKHZhciBmPTA7ZjxoO2YrPW8pdGhpcy5fZG9Qcm9jZXNzQmxvY2soaSxmKTt2YXIgdT1pLnNwbGljZSgwLGgpO2Uuc2lnQnl0ZXMtPWx9cmV0dXJuIG5ldyBzLmluaXQodSxsKX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1vLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2RhdGE9dGhpcy5fZGF0YS5jbG9uZSgpLHR9LF9taW5CdWZmZXJTaXplOjB9KSx1PShuLkhhc2hlcj1mLmV4dGVuZCh7Y2ZnOm8uZXh0ZW5kKCksaW5pdDpmdW5jdGlvbih0KXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQodCksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe2YucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXBwZW5kKHQpLHRoaXMuX3Byb2Nlc3MoKSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLl9hcHBlbmQodCk7dmFyIHI9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiByfSxibG9ja1NpemU6MTYsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbmV3IHQuaW5pdChlKS5maW5hbGl6ZShyKX19LF9jcmVhdGVIbWFjSGVscGVyOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyLGUpe3JldHVybiBuZXcgdS5ITUFDLmluaXQodCxlKS5maW5hbGl6ZShyKX19fSksaS5hbGdvPXt9KTtyZXR1cm4gaX0oTWF0aCk7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIsZSl7Zm9yKHZhciBpPVtdLG89MCxzPTA7czxyO3MrKylpZihzJTQpe3ZhciBhPWVbdC5jaGFyQ29kZUF0KHMtMSldPDxzJTQqMixjPWVbdC5jaGFyQ29kZUF0KHMpXT4+PjYtcyU0KjI7aVtvPj4+Ml18PShhfGMpPDwyNC1vJTQqOCxvKyt9cmV0dXJuIG4uY3JlYXRlKGksbyl9dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1lLmVuYztvLkJhc2U2ND17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9dGhpcy5fbWFwO3QuY2xhbXAoKTtmb3IodmFyIG49W10sbz0wO288ZTtvKz0zKWZvcih2YXIgcz1yW28+Pj4yXT4+PjI0LW8lNCo4JjI1NSxhPXJbbysxPj4+Ml0+Pj4yNC0obysxKSU0KjgmMjU1LGM9cltvKzI+Pj4yXT4+PjI0LShvKzIpJTQqOCYyNTUsaD1zPDwxNnxhPDw4fGMsbD0wO2w8NCYmbysuNzUqbDxlO2wrKyluLnB1c2goaS5jaGFyQXQoaD4+PjYqKDMtbCkmNjMpKTt2YXIgZj1pLmNoYXJBdCg2NCk7aWYoZilmb3IoO24ubGVuZ3RoJTQ7KW4ucHVzaChmKTtyZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxpPXRoaXMuX21hcCxuPXRoaXMuX3JldmVyc2VNYXA7aWYoIW4pe249dGhpcy5fcmV2ZXJzZU1hcD1bXTtmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyluW2kuY2hhckNvZGVBdChvKV09b312YXIgcz1pLmNoYXJBdCg2NCk7aWYocyl7dmFyIGE9dC5pbmRleE9mKHMpO2EhPT0tMSYmKGU9YSl9cmV0dXJuIHIodCxlLG4pfSxfbWFwOlwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cIn19KCksZnVuY3Rpb24ocil7ZnVuY3Rpb24gZSh0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyJmV8fnImaSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIGkodCxyLGUsaSxuLG8scyl7dmFyIGE9dCsociZpfGUmfmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBuKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHJeZV5pKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gbyh0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhlXihyfH5pKSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfXZhciBzPXQsYT1zLmxpYixjPWEuV29yZEFycmF5LGg9YS5IYXNoZXIsbD1zLmFsZ28sZj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDY0O3QrKylmW3RdPTQyOTQ5NjcyOTYqci5hYnMoci5zaW4odCsxKSl8MH0oKTt2YXIgdT1sLk1ENT1oLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBjLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIHM9MDtzPDE2O3MrKyl7dmFyIGE9citzLGM9dFthXTt0W2FdPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpfXZhciBoPXRoaXMuX2hhc2gud29yZHMsbD10W3IrMF0sdT10W3IrMV0sZD10W3IrMl0sdj10W3IrM10scD10W3IrNF0sXz10W3IrNV0seT10W3IrNl0sZz10W3IrN10sQj10W3IrOF0sdz10W3IrOV0saz10W3IrMTBdLFM9dFtyKzExXSxtPXRbcisxMl0seD10W3IrMTNdLGI9dFtyKzE0XSxIPXRbcisxNV0sej1oWzBdLEE9aFsxXSxDPWhbMl0sRD1oWzNdO3o9ZSh6LEEsQyxELGwsNyxmWzBdKSxEPWUoRCx6LEEsQyx1LDEyLGZbMV0pLEM9ZShDLEQseixBLGQsMTcsZlsyXSksQT1lKEEsQyxELHosdiwyMixmWzNdKSx6PWUoeixBLEMsRCxwLDcsZls0XSksRD1lKEQseixBLEMsXywxMixmWzVdKSxDPWUoQyxELHosQSx5LDE3LGZbNl0pLEE9ZShBLEMsRCx6LGcsMjIsZls3XSksej1lKHosQSxDLEQsQiw3LGZbOF0pLEQ9ZShELHosQSxDLHcsMTIsZls5XSksQz1lKEMsRCx6LEEsaywxNyxmWzEwXSksQT1lKEEsQyxELHosUywyMixmWzExXSksej1lKHosQSxDLEQsbSw3LGZbMTJdKSxEPWUoRCx6LEEsQyx4LDEyLGZbMTNdKSxDPWUoQyxELHosQSxiLDE3LGZbMTRdKSxBPWUoQSxDLEQseixILDIyLGZbMTVdKSx6PWkoeixBLEMsRCx1LDUsZlsxNl0pLEQ9aShELHosQSxDLHksOSxmWzE3XSksQz1pKEMsRCx6LEEsUywxNCxmWzE4XSksQT1pKEEsQyxELHosbCwyMCxmWzE5XSksej1pKHosQSxDLEQsXyw1LGZbMjBdKSxEPWkoRCx6LEEsQyxrLDksZlsyMV0pLEM9aShDLEQseixBLEgsMTQsZlsyMl0pLEE9aShBLEMsRCx6LHAsMjAsZlsyM10pLHo9aSh6LEEsQyxELHcsNSxmWzI0XSksRD1pKEQseixBLEMsYiw5LGZbMjVdKSxDPWkoQyxELHosQSx2LDE0LGZbMjZdKSxBPWkoQSxDLEQseixCLDIwLGZbMjddKSx6PWkoeixBLEMsRCx4LDUsZlsyOF0pLEQ9aShELHosQSxDLGQsOSxmWzI5XSksQz1pKEMsRCx6LEEsZywxNCxmWzMwXSksQT1pKEEsQyxELHosbSwyMCxmWzMxXSksej1uKHosQSxDLEQsXyw0LGZbMzJdKSxEPW4oRCx6LEEsQyxCLDExLGZbMzNdKSxDPW4oQyxELHosQSxTLDE2LGZbMzRdKSxBPW4oQSxDLEQseixiLDIzLGZbMzVdKSx6PW4oeixBLEMsRCx1LDQsZlszNl0pLEQ9bihELHosQSxDLHAsMTEsZlszN10pLEM9bihDLEQseixBLGcsMTYsZlszOF0pLEE9bihBLEMsRCx6LGssMjMsZlszOV0pLHo9bih6LEEsQyxELHgsNCxmWzQwXSksRD1uKEQseixBLEMsbCwxMSxmWzQxXSksQz1uKEMsRCx6LEEsdiwxNixmWzQyXSksQT1uKEEsQyxELHoseSwyMyxmWzQzXSksej1uKHosQSxDLEQsdyw0LGZbNDRdKSxEPW4oRCx6LEEsQyxtLDExLGZbNDVdKSxDPW4oQyxELHosQSxILDE2LGZbNDZdKSxBPW4oQSxDLEQseixkLDIzLGZbNDddKSx6PW8oeixBLEMsRCxsLDYsZls0OF0pLEQ9byhELHosQSxDLGcsMTAsZls0OV0pLEM9byhDLEQseixBLGIsMTUsZls1MF0pLEE9byhBLEMsRCx6LF8sMjEsZls1MV0pLHo9byh6LEEsQyxELG0sNixmWzUyXSksRD1vKEQseixBLEMsdiwxMCxmWzUzXSksQz1vKEMsRCx6LEEsaywxNSxmWzU0XSksQT1vKEEsQyxELHosdSwyMSxmWzU1XSksej1vKHosQSxDLEQsQiw2LGZbNTZdKSxEPW8oRCx6LEEsQyxILDEwLGZbNTddKSxDPW8oQyxELHosQSx5LDE1LGZbNThdKSxBPW8oQSxDLEQseix4LDIxLGZbNTldKSx6PW8oeixBLEMsRCxwLDYsZls2MF0pLEQ9byhELHosQSxDLFMsMTAsZls2MV0pLEM9byhDLEQseixBLGQsMTUsZls2Ml0pLEE9byhBLEMsRCx6LHcsMjEsZls2M10pLGhbMF09aFswXSt6fDAsaFsxXT1oWzFdK0F8MCxoWzJdPWhbMl0rQ3wwLGhbM109aFszXStEfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsaT04KnRoaXMuX25EYXRhQnl0ZXMsbj04KnQuc2lnQnl0ZXM7ZVtuPj4+NV18PTEyODw8MjQtbiUzMjt2YXIgbz1yLmZsb29yKGkvNDI5NDk2NzI5Nikscz1pO2VbKG4rNjQ+Pj45PDw0KSsxNV09MTY3MTE5MzUmKG88PDh8bz4+PjI0KXw0Mjc4MjU1MzYwJihvPDwyNHxvPj4+OCksZVsobis2ND4+Pjk8PDQpKzE0XT0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KSx0LnNpZ0J5dGVzPTQqKGUubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIGE9dGhpcy5faGFzaCxjPWEud29yZHMsaD0wO2g8NDtoKyspe3ZhciBsPWNbaF07Y1toXT0xNjcxMTkzNSYobDw8OHxsPj4+MjQpfDQyNzgyNTUzNjAmKGw8PDI0fGw+Pj44KX1yZXR1cm4gYX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1oLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7cy5NRDU9aC5fY3JlYXRlSGVscGVyKHUpLHMuSG1hY01ENT1oLl9jcmVhdGVIbWFjSGVscGVyKHUpfShNYXRoKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49ZS5IYXNoZXIsbz1yLmFsZ28scz1bXSxhPW8uU0hBMT1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBpLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLGE9ZVszXSxjPWVbNF0saD0wO2g8ODA7aCsrKXtpZihoPDE2KXNbaF09MHx0W3IraF07ZWxzZXt2YXIgbD1zW2gtM11ec1toLThdXnNbaC0xNF1ec1toLTE2XTtzW2hdPWw8PDF8bD4+PjMxfXZhciBmPShpPDw1fGk+Pj4yNykrYytzW2hdO2YrPWg8MjA/KG4mb3x+biZhKSsxNTE4NTAwMjQ5Omg8NDA/KG5eb15hKSsxODU5Nzc1MzkzOmg8NjA/KG4mb3xuJmF8byZhKS0xODk0MDA3NTg4OihuXm9eYSktODk5NDk3NTE0LGM9YSxhPW8sbz1uPDwzMHxuPj4+MixuPWksaT1mfWVbMF09ZVswXStpfDAsZVsxXT1lWzFdK258MCxlWzJdPWVbMl0rb3wwLGVbM109ZVszXSthfDAsZVs0XT1lWzRdK2N8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyZXR1cm4gcltpPj4+NV18PTEyODw8MjQtaSUzMixyWyhpKzY0Pj4+OTw8NCkrMTRdPU1hdGguZmxvb3IoZS80Mjk0OTY3Mjk2KSxyWyhpKzY0Pj4+OTw8NCkrMTVdPWUsdC5zaWdCeXRlcz00KnIubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW4uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtyLlNIQTE9bi5fY3JlYXRlSGVscGVyKGEpLHIuSG1hY1NIQTE9bi5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWkuSGFzaGVyLHM9ZS5hbGdvLGE9W10sYz1bXTshZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2Zvcih2YXIgZT1yLnNxcnQodCksaT0yO2k8PWU7aSsrKWlmKCEodCVpKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBlKHQpe3JldHVybiA0Mjk0OTY3Mjk2Kih0LSgwfHQpKXwwfWZvcih2YXIgaT0yLG49MDtuPDY0Oyl0KGkpJiYobjw4JiYoYVtuXT1lKHIucG93KGksLjUpKSksY1tuXT1lKHIucG93KGksMS8zKSksbisrKSxpKyt9KCk7dmFyIGg9W10sbD1zLlNIQTI1Nj1vLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBuLmluaXQoYS5zbGljZSgwKSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLHM9ZVszXSxhPWVbNF0sbD1lWzVdLGY9ZVs2XSx1PWVbN10sZD0wO2Q8NjQ7ZCsrKXtpZihkPDE2KWhbZF09MHx0W3IrZF07ZWxzZXt2YXIgdj1oW2QtMTVdLHA9KHY8PDI1fHY+Pj43KV4odjw8MTR8dj4+PjE4KV52Pj4+MyxfPWhbZC0yXSx5PShfPDwxNXxfPj4+MTcpXihfPDwxM3xfPj4+MTkpXl8+Pj4xMDtoW2RdPXAraFtkLTddK3kraFtkLTE2XX12YXIgZz1hJmxefmEmZixCPWkmbl5pJm9ebiZvLHc9KGk8PDMwfGk+Pj4yKV4oaTw8MTl8aT4+PjEzKV4oaTw8MTB8aT4+PjIyKSxrPShhPDwyNnxhPj4+NileKGE8PDIxfGE+Pj4xMSleKGE8PDd8YT4+PjI1KSxTPXUraytnK2NbZF0raFtkXSxtPXcrQjt1PWYsZj1sLGw9YSxhPXMrU3wwLHM9byxvPW4sbj1pLGk9UyttfDB9ZVswXT1lWzBdK2l8MCxlWzFdPWVbMV0rbnwwLGVbMl09ZVsyXStvfDAsZVszXT1lWzNdK3N8MCxlWzRdPWVbNF0rYXwwLGVbNV09ZVs1XStsfDAsZVs2XT1lWzZdK2Z8MCxlWzddPWVbN10rdXwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9OCp0aGlzLl9uRGF0YUJ5dGVzLG49OCp0LnNpZ0J5dGVzO3JldHVybiBlW24+Pj41XXw9MTI4PDwyNC1uJTMyLGVbKG4rNjQ+Pj45PDw0KSsxNF09ci5mbG9vcihpLzQyOTQ5NjcyOTYpLGVbKG4rNjQ+Pj45PDw0KSsxNV09aSx0LnNpZ0J5dGVzPTQqZS5sZW5ndGgsdGhpcy5fcHJvY2VzcygpLHRoaXMuX2hhc2h9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO2UuU0hBMjU2PW8uX2NyZWF0ZUhlbHBlcihsKSxlLkhtYWNTSEEyNTY9by5fY3JlYXRlSG1hY0hlbHBlcihsKX0oTWF0aCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQpe3JldHVybiB0PDw4JjQyNzgyNTUzNjB8dD4+PjgmMTY3MTE5MzV9dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1lLmVuYztvLlV0ZjE2PW8uVXRmMTZCRT17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPVtdLG49MDtuPGU7bis9Mil7dmFyIG89cltuPj4+Ml0+Pj4xNi1uJTQqOCY2NTUzNTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShvKSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+MV18PXQuY2hhckNvZGVBdChpKTw8MTYtaSUyKjE2O3JldHVybiBuLmNyZWF0ZShlLDIqcil9fTtvLlV0ZjE2TEU9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC53b3JkcyxpPXQuc2lnQnl0ZXMsbj1bXSxvPTA7bzxpO28rPTIpe3ZhciBzPXIoZVtvPj4+Ml0+Pj4xNi1vJTQqOCY2NTUzNSk7bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocykpfXJldHVybiBuLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxpPVtdLG89MDtvPGU7bysrKWlbbz4+PjFdfD1yKHQuY2hhckNvZGVBdChvKTw8MTYtbyUyKjE2KTtyZXR1cm4gbi5jcmVhdGUoaSwyKmUpfX19KCksZnVuY3Rpb24oKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBBcnJheUJ1ZmZlcil7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1pLmluaXQsbz1pLmluaXQ9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYodD1uZXcgVWludDhBcnJheSh0KSksKHQgaW5zdGFuY2VvZiBJbnQ4QXJyYXl8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OENsYW1wZWRBcnJheSYmdCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx0IGluc3RhbmNlb2YgSW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHx0IGluc3RhbmNlb2YgSW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSYmKHQ9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtmb3IodmFyIHI9dC5ieXRlTGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+Ml18PXRbaV08PDI0LWklNCo4O24uY2FsbCh0aGlzLGUscil9ZWxzZSBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07by5wcm90b3R5cGU9aX19KCksZnVuY3Rpb24ocil7ZnVuY3Rpb24gZSh0LHIsZSl7cmV0dXJuIHRecl5lfWZ1bmN0aW9uIGkodCxyLGUpe3JldHVybiB0JnJ8fnQmZX1mdW5jdGlvbiBuKHQscixlKXtyZXR1cm4odHx+cileZX1mdW5jdGlvbiBvKHQscixlKXtyZXR1cm4gdCZlfHImfmV9ZnVuY3Rpb24gcyh0LHIsZSl7cmV0dXJuIHReKHJ8fmUpfWZ1bmN0aW9uIGEodCxyKXtyZXR1cm4gdDw8cnx0Pj4+MzItcn12YXIgYz10LGg9Yy5saWIsbD1oLldvcmRBcnJheSxmPWguSGFzaGVyLHU9Yy5hbGdvLGQ9bC5jcmVhdGUoWzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10pLHY9bC5jcmVhdGUoWzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0pLHA9bC5jcmVhdGUoWzExLDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdKSxfPWwuY3JlYXRlKFs4LDksOSwxMSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXSkseT1sLmNyZWF0ZShbMCwxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwyODQwODUzODM4XSksZz1sLmNyZWF0ZShbMTM1MjgyOTkyNiwxNTQ4NjAzNjg0LDE4MzYwNzI2OTEsMjA1Mzk5NDIxNywwXSksQj11LlJJUEVNRDE2MD1mLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPWwuY3JlYXRlKFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGM9MDtjPDE2O2MrKyl7dmFyIGg9citjLGw9dFtoXTt0W2hdPTE2NzExOTM1JihsPDw4fGw+Pj4yNCl8NDI3ODI1NTM2MCYobDw8MjR8bD4+PjgpfXZhciBmLHUsQix3LGssUyxtLHgsYixILHo9dGhpcy5faGFzaC53b3JkcyxBPXkud29yZHMsQz1nLndvcmRzLEQ9ZC53b3JkcyxSPXYud29yZHMsRT1wLndvcmRzLE09Xy53b3JkcztTPWY9elswXSxtPXU9elsxXSx4PUI9elsyXSxiPXc9elszXSxIPWs9els0XTtmb3IodmFyIEYsYz0wO2M8ODA7Yys9MSlGPWYrdFtyK0RbY11dfDAsRis9YzwxNj9lKHUsQix3KStBWzBdOmM8MzI/aSh1LEIsdykrQVsxXTpjPDQ4P24odSxCLHcpK0FbMl06Yzw2ND9vKHUsQix3KStBWzNdOnModSxCLHcpK0FbNF0sRnw9MCxGPWEoRixFW2NdKSxGPUYra3wwLGY9ayxrPXcsdz1hKEIsMTApLEI9dSx1PUYsRj1TK3RbcitSW2NdXXwwLEYrPWM8MTY/cyhtLHgsYikrQ1swXTpjPDMyP28obSx4LGIpK0NbMV06Yzw0OD9uKG0seCxiKStDWzJdOmM8NjQ/aShtLHgsYikrQ1szXTplKG0seCxiKStDWzRdLEZ8PTAsRj1hKEYsTVtjXSksRj1GK0h8MCxTPUgsSD1iLGI9YSh4LDEwKSx4PW0sbT1GO0Y9elsxXStCK2J8MCx6WzFdPXpbMl0rdytIfDAselsyXT16WzNdK2srU3wwLHpbM109els0XStmK218MCx6WzRdPXpbMF0rdSt4fDAselswXT1GfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj10LndvcmRzLGU9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCp0LnNpZ0J5dGVzO3JbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSs2ND4+Pjk8PDQpKzE0XT0xNjcxMTkzNSYoZTw8OHxlPj4+MjQpfDQyNzgyNTUzNjAmKGU8PDI0fGU+Pj44KSx0LnNpZ0J5dGVzPTQqKHIubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIG49dGhpcy5faGFzaCxvPW4ud29yZHMscz0wO3M8NTtzKyspe3ZhciBhPW9bc107b1tzXT0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KX1yZXR1cm4gbn0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1mLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7Yy5SSVBFTUQxNjA9Zi5fY3JlYXRlSGVscGVyKEIpLGMuSG1hY1JJUEVNRDE2MD1mLl9jcmVhdGVIbWFjSGVscGVyKEIpfShNYXRoKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPXIuZW5jLG89bi5VdGY4LHM9ci5hbGdvO3MuSE1BQz1pLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LHIpe3Q9dGhpcy5faGFzaGVyPW5ldyB0LmluaXQsXCJzdHJpbmdcIj09dHlwZW9mIHImJihyPW8ucGFyc2UocikpO3ZhciBlPXQuYmxvY2tTaXplLGk9NCplO3Iuc2lnQnl0ZXM+aSYmKHI9dC5maW5hbGl6ZShyKSksci5jbGFtcCgpO2Zvcih2YXIgbj10aGlzLl9vS2V5PXIuY2xvbmUoKSxzPXRoaXMuX2lLZXk9ci5jbG9uZSgpLGE9bi53b3JkcyxjPXMud29yZHMsaD0wO2g8ZTtoKyspYVtoXV49MTU0OTU1NjgyOCxjW2hdXj05MDk1MjI0ODY7bi5zaWdCeXRlcz1zLnNpZ0J5dGVzPWksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2hhc2hlcjt0LnJlc2V0KCksdC51cGRhdGUodGhpcy5faUtleSl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGFzaGVyLnVwZGF0ZSh0KSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt2YXIgcj10aGlzLl9oYXNoZXIsZT1yLmZpbmFsaXplKHQpO3IucmVzZXQoKTt2YXIgaT1yLmZpbmFsaXplKHRoaXMuX29LZXkuY2xvbmUoKS5jb25jYXQoZSkpO3JldHVybiBpfX0pfSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLlNIQTEsYT1vLkhNQUMsYz1vLlBCS0RGMj1pLmV4dGVuZCh7Y2ZnOmkuZXh0ZW5kKHtrZXlTaXplOjQsaGFzaGVyOnMsaXRlcmF0aW9uczoxfSksaW5pdDpmdW5jdGlvbih0KXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQodCl9LGNvbXB1dGU6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5jZmcsaT1hLmNyZWF0ZShlLmhhc2hlcix0KSxvPW4uY3JlYXRlKCkscz1uLmNyZWF0ZShbMV0pLGM9by53b3JkcyxoPXMud29yZHMsbD1lLmtleVNpemUsZj1lLml0ZXJhdGlvbnM7Yy5sZW5ndGg8bDspe3ZhciB1PWkudXBkYXRlKHIpLmZpbmFsaXplKHMpO2kucmVzZXQoKTtmb3IodmFyIGQ9dS53b3Jkcyx2PWQubGVuZ3RoLHA9dSxfPTE7XzxmO18rKyl7cD1pLmZpbmFsaXplKHApLGkucmVzZXQoKTtmb3IodmFyIHk9cC53b3JkcyxnPTA7Zzx2O2crKylkW2ddXj15W2ddfW8uY29uY2F0KHUpLGhbMF0rK31yZXR1cm4gby5zaWdCeXRlcz00Kmwsb319KTtyLlBCS0RGMj1mdW5jdGlvbih0LHIsZSl7cmV0dXJuIGMuY3JlYXRlKGUpLmNvbXB1dGUodCxyKX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uTUQ1LGE9by5FdnBLREY9aS5leHRlbmQoe2NmZzppLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjpzLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpfSxjb21wdXRlOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuY2ZnLGk9ZS5oYXNoZXIuY3JlYXRlKCksbz1uLmNyZWF0ZSgpLHM9by53b3JkcyxhPWUua2V5U2l6ZSxjPWUuaXRlcmF0aW9ucztzLmxlbmd0aDxhOyl7aCYmaS51cGRhdGUoaCk7dmFyIGg9aS51cGRhdGUodCkuZmluYWxpemUocik7aS5yZXNldCgpO2Zvcih2YXIgbD0xO2w8YztsKyspaD1pLmZpbmFsaXplKGgpLGkucmVzZXQoKTtvLmNvbmNhdChoKX1yZXR1cm4gby5zaWdCeXRlcz00KmEsb319KTtyLkV2cEtERj1mdW5jdGlvbih0LHIsZSl7cmV0dXJuIGEuY3JlYXRlKGUpLmNvbXB1dGUodCxyKX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPXIuYWxnbyxvPW4uU0hBMjU2LHM9bi5TSEEyMjQ9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFszMjM4MzcxMDMyLDkxNDE1MDY2Myw4MTI3MDI5OTksNDE0NDkxMjY5Nyw0MjkwNzc1ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1NDI4XSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9by5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO3JldHVybiB0LnNpZ0J5dGVzLT00LHR9fSk7ci5TSEEyMjQ9by5fY3JlYXRlSGVscGVyKHMpLHIuSG1hY1NIQTIyND1vLl9jcmVhdGVIbWFjSGVscGVyKHMpfSgpLGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQmFzZSxvPWkuV29yZEFycmF5LHM9ZS54NjQ9e307cy5Xb3JkPW4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQscil7dGhpcy5oaWdoPXQsdGhpcy5sb3c9cn19KSxzLldvcmRBcnJheT1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3Q9dGhpcy53b3Jkcz10fHxbXSxlIT1yP3RoaXMuc2lnQnl0ZXM9ZTp0aGlzLnNpZ0J5dGVzPTgqdC5sZW5ndGh9LHRvWDMyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMud29yZHMscj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKXt2YXIgbj10W2ldO2UucHVzaChuLmhpZ2gpLGUucHVzaChuLmxvdyl9cmV0dXJuIG8uY3JlYXRlKGUsdGhpcy5zaWdCeXRlcyl9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW4uY2xvbmUuY2FsbCh0aGlzKSxyPXQud29yZHM9dGhpcy53b3Jkcy5zbGljZSgwKSxlPXIubGVuZ3RoLGk9MDtpPGU7aSsrKXJbaV09cltpXS5jbG9uZSgpO3JldHVybiB0fX0pfSgpLGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89aS5IYXNoZXIscz1lLng2NCxhPXMuV29yZCxjPWUuYWxnbyxoPVtdLGw9W10sZj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MSxyPTAsZT0wO2U8MjQ7ZSsrKXtoW3QrNSpyXT0oZSsxKSooZSsyKS8yJTY0O3ZhciBpPXIlNSxuPSgyKnQrMypyKSU1O3Q9aSxyPW59Zm9yKHZhciB0PTA7dDw1O3QrKylmb3IodmFyIHI9MDtyPDU7cisrKWxbdCs1KnJdPXIrKDIqdCszKnIpJTUqNTtmb3IodmFyIG89MSxzPTA7czwyNDtzKyspe2Zvcih2YXIgYz0wLHU9MCxkPTA7ZDw3O2QrKyl7aWYoMSZvKXt2YXIgdj0oMTw8ZCktMTt2PDMyP3VePTE8PHY6Y149MTw8di0zMn0xMjgmbz9vPW88PDFeMTEzOm88PD0xfWZbc109YS5jcmVhdGUoYyx1KX19KCk7dmFyIHU9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDwyNTt0KyspdVt0XT1hLmNyZWF0ZSgpfSgpO3ZhciBkPWMuU0hBMz1vLmV4dGVuZCh7Y2ZnOm8uY2ZnLmV4dGVuZCh7b3V0cHV0TGVuZ3RoOjUxMn0pLF9kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3N0YXRlPVtdLHI9MDtyPDI1O3IrKyl0W3JdPW5ldyBhLmluaXQ7dGhpcy5ibG9ja1NpemU9KDE2MDAtMip0aGlzLmNmZy5vdXRwdXRMZW5ndGgpLzMyfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5fc3RhdGUsaT10aGlzLmJsb2NrU2l6ZS8yLG49MDtuPGk7bisrKXt2YXIgbz10W3IrMipuXSxzPXRbcisyKm4rMV07bz0xNjcxMTkzNSYobzw8OHxvPj4+MjQpfDQyNzgyNTUzNjAmKG88PDI0fG8+Pj44KSxzPTE2NzExOTM1JihzPDw4fHM+Pj4yNCl8NDI3ODI1NTM2MCYoczw8MjR8cz4+PjgpO3ZhciBhPWVbbl07YS5oaWdoXj1zLGEubG93Xj1vfWZvcih2YXIgYz0wO2M8MjQ7YysrKXtmb3IodmFyIGQ9MDtkPDU7ZCsrKXtmb3IodmFyIHY9MCxwPTAsXz0wO188NTtfKyspe3ZhciBhPWVbZCs1Kl9dO3ZePWEuaGlnaCxwXj1hLmxvd312YXIgeT11W2RdO3kuaGlnaD12LHkubG93PXB9Zm9yKHZhciBkPTA7ZDw1O2QrKylmb3IodmFyIGc9dVsoZCs0KSU1XSxCPXVbKGQrMSklNV0sdz1CLmhpZ2gsaz1CLmxvdyx2PWcuaGlnaF4odzw8MXxrPj4+MzEpLHA9Zy5sb3deKGs8PDF8dz4+PjMxKSxfPTA7Xzw1O18rKyl7dmFyIGE9ZVtkKzUqX107YS5oaWdoXj12LGEubG93Xj1wfWZvcih2YXIgUz0xO1M8MjU7UysrKXt2YXIgYT1lW1NdLG09YS5oaWdoLHg9YS5sb3csYj1oW1NdO2lmKGI8MzIpdmFyIHY9bTw8Ynx4Pj4+MzItYixwPXg8PGJ8bT4+PjMyLWI7ZWxzZSB2YXIgdj14PDxiLTMyfG0+Pj42NC1iLHA9bTw8Yi0zMnx4Pj4+NjQtYjt2YXIgSD11W2xbU11dO0guaGlnaD12LEgubG93PXB9dmFyIHo9dVswXSxBPWVbMF07ei5oaWdoPUEuaGlnaCx6Lmxvdz1BLmxvdztmb3IodmFyIGQ9MDtkPDU7ZCsrKWZvcih2YXIgXz0wO188NTtfKyspe3ZhciBTPWQrNSpfLGE9ZVtTXSxDPXVbU10sRD11WyhkKzEpJTUrNSpfXSxSPXVbKGQrMiklNSs1Kl9dO2EuaGlnaD1DLmhpZ2hefkQuaGlnaCZSLmhpZ2gsYS5sb3c9Qy5sb3defkQubG93JlIubG93fXZhciBhPWVbMF0sRT1mW2NdO2EuaGlnaF49RS5oaWdoLGEubG93Xj1FLmxvd319LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsaT0oOCp0aGlzLl9uRGF0YUJ5dGVzLDgqdC5zaWdCeXRlcyksbz0zMip0aGlzLmJsb2NrU2l6ZTtlW2k+Pj41XXw9MTw8MjQtaSUzMixlWyhyLmNlaWwoKGkrMSkvbykqbz4+PjUpLTFdfD0xMjgsdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIHM9dGhpcy5fc3RhdGUsYT10aGlzLmNmZy5vdXRwdXRMZW5ndGgvOCxjPWEvOCxoPVtdLGw9MDtsPGM7bCsrKXt2YXIgZj1zW2xdLHU9Zi5oaWdoLGQ9Zi5sb3c7dT0xNjcxMTkzNSYodTw8OHx1Pj4+MjQpfDQyNzgyNTUzNjAmKHU8PDI0fHU+Pj44KSxkPTE2NzExOTM1JihkPDw4fGQ+Pj4yNCl8NDI3ODI1NTM2MCYoZDw8MjR8ZD4+PjgpLGgucHVzaChkKSxoLnB1c2godSl9cmV0dXJuIG5ldyBuLmluaXQoaCxhKX0sY2xvbmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpLHI9dC5fc3RhdGU9dGhpcy5fc3RhdGUuc2xpY2UoMCksZT0wO2U8MjU7ZSsrKXJbZV09cltlXS5jbG9uZSgpO3JldHVybiB0fX0pO2UuU0hBMz1vLl9jcmVhdGVIZWxwZXIoZCksZS5IbWFjU0hBMz1vLl9jcmVhdGVIbWFjSGVscGVyKGQpfShNYXRoKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gcy5jcmVhdGUuYXBwbHkocyxhcmd1bWVudHMpfXZhciBlPXQsaT1lLmxpYixuPWkuSGFzaGVyLG89ZS54NjQscz1vLldvcmQsYT1vLldvcmRBcnJheSxjPWUuYWxnbyxoPVtyKDExMTYzNTI0MDgsMzYwOTc2NzQ1OCkscigxODk5NDQ3NDQxLDYwMjg5MTcyNSkscigzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLHIoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxyKDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxyKDE1MDg5NzA5OTMsMzA1MzgzNDI2NSkscigyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLHIoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxyKDM2MjQzODEwODAsMjczNDg4MzM5NCkscigzMTA1OTg0MDEsMTE2NDk5NjU0Mikscig2MDcyMjUyNzgsMTMyMzYxMDc2NCkscigxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLHIoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxyKDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxyKDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxyKDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCkscigzODM1MzkwNDAxLDI2NjY2MTM0NTgpLHIoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLHIoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLHIoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLHIoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLHIoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxyKDE1NTUwODE2OTIsMzE3NTIxODEzMikscigxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLHIoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxyKDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxyKDI5NTI5OTY4MDgsMjU2NjU5NDg3OSkscigzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLHIoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxyKDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSkscigxMTM5MjY5OTMsMzc1ODMyNjM4MykscigzMzgyNDE4OTUsMTY4NzE3OTM2KSxyKDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxyKDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxyKDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSkscigxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLHIoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxyKDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCkscigyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLHIoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLHIoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxyKDI4MjAzMDI0MTEsMzE1ODQ1NDI3MykscigzMjU5NzMwODAwLDM1MDU5NTI2NTcpLHIoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLHIoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxyKDM2MDAzNTI4MDQsMTQzMjcyNTc3Nikscig0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLHIoMjc1NDIzMzQ0LDg1MTE2OTcyMCkscig0MzAyMjc3MzQsMzEwMDgyMzc1Mikscig1MDY5NDg2MTYsMTM2MzI1ODE5NSkscig2NTkwNjA1NTYsMzc1MDY4NTU5Mykscig4ODM5OTc4NzcsMzc4NTA1MDI4MCkscig5NTgxMzk1NzEsMzMxODMwNzQyNykscigxMzIyODIyMjE4LDM4MTI3MjM0MDMpLHIoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxyKDE3NDc4NzM3NzksMzYwMjAzNjg5OSkscigxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLHIoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxyKDIyMjc3MzA0NTIsMjcxNjkwNDMwNikscigyMzYxODUyNDI0LDQ0Mjc3NjA0NCkscigyNDI4NDM2NDc0LDU5MzY5ODM0NCkscigyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLHIoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxyKDMzMjkzMjUyOTgsMzgxNTkyMDQyNykscigzMzkxNTY5NjE0LDM5MjgzODM5MDApLHIoMzUxNTI2NzI3MSw1NjYyODA3MTEpLHIoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxyKDQxMTg2MzAyNzEsNDAwMDIzOTk5MikscigxMTY0MTg0NzQsMTkxNDEzODU1NCkscigxNzQyOTI0MjEsMjczMTA1NTI3MCkscigyODkzODAzNTYsMzIwMzk5MzAwNikscig0NjAzOTMyNjksMzIwNjIwMzE1KSxyKDY4NTQ3MTczMyw1ODc0OTY4MzYpLHIoODUyMTQyOTcxLDEwODY3OTI4NTEpLHIoMTAxNzAzNjI5OCwzNjU1NDMxMDApLHIoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxyKDEyODgwMzM0NzAsMzQwOTg1NTE1OCkscigxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLHIoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLHIoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV0sbD1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDgwO3QrKylsW3RdPXIoKX0oKTt2YXIgZj1jLlNIQTUxMj1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBhLmluaXQoW25ldyBzLmluaXQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKSxuZXcgcy5pbml0KDMxNDQxMzQyNzcsMjIyNzg3MzU5NSksbmV3IHMuaW5pdCgxMDEzOTA0MjQyLDQyNzExNzU3MjMpLG5ldyBzLmluaXQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KSxuZXcgcy5pbml0KDEzNTk4OTMxMTksMjkxNzU2NTEzNyksbmV3IHMuaW5pdCgyNjAwODIyOTI0LDcyNTUxMTE5OSksbmV3IHMuaW5pdCg1Mjg3MzQ2MzUsNDIxNTM4OTU0NyksbmV3IHMuaW5pdCgxNTQxNDU5MjI1LDMyNzAzMzIwOSldKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX2hhc2gud29yZHMsaT1lWzBdLG49ZVsxXSxvPWVbMl0scz1lWzNdLGE9ZVs0XSxjPWVbNV0sZj1lWzZdLHU9ZVs3XSxkPWkuaGlnaCx2PWkubG93LHA9bi5oaWdoLF89bi5sb3cseT1vLmhpZ2gsZz1vLmxvdyxCPXMuaGlnaCx3PXMubG93LGs9YS5oaWdoLFM9YS5sb3csbT1jLmhpZ2gseD1jLmxvdyxiPWYuaGlnaCxIPWYubG93LHo9dS5oaWdoLEE9dS5sb3csQz1kLEQ9dixSPXAsRT1fLE09eSxGPWcsUD1CLFc9dyxPPWssVT1TLEk9bSxLPXgsWD1iLEw9SCxqPXosTj1BLFQ9MDtUPDgwO1QrKyl7dmFyIFo9bFtUXTtpZihUPDE2KXZhciBxPVouaGlnaD0wfHRbcisyKlRdLEc9Wi5sb3c9MHx0W3IrMipUKzFdO2Vsc2V7dmFyIEo9bFtULTE1XSwkPUouaGlnaCxRPUoubG93LFY9KCQ+Pj4xfFE8PDMxKV4oJD4+Pjh8UTw8MjQpXiQ+Pj43LFk9KFE+Pj4xfCQ8PDMxKV4oUT4+Pjh8JDw8MjQpXihRPj4+N3wkPDwyNSksdHQ9bFtULTJdLHJ0PXR0LmhpZ2gsZXQ9dHQubG93LGl0PShydD4+PjE5fGV0PDwxMyleKHJ0PDwzfGV0Pj4+MjkpXnJ0Pj4+NixudD0oZXQ+Pj4xOXxydDw8MTMpXihldDw8M3xydD4+PjI5KV4oZXQ+Pj42fHJ0PDwyNiksb3Q9bFtULTddLHN0PW90LmhpZ2gsYXQ9b3QubG93LGN0PWxbVC0xNl0saHQ9Y3QuaGlnaCxsdD1jdC5sb3csRz1ZK2F0LHE9VitzdCsoRz4+PjA8WT4+PjA/MTowKSxHPUcrbnQscT1xK2l0KyhHPj4+MDxudD4+PjA/MTowKSxHPUcrbHQscT1xK2h0KyhHPj4+MDxsdD4+PjA/MTowKTtaLmhpZ2g9cSxaLmxvdz1HfXZhciBmdD1PJklefk8mWCx1dD1VJkteflUmTCxkdD1DJlJeQyZNXlImTSx2dD1EJkVeRCZGXkUmRixwdD0oQz4+PjI4fEQ8PDQpXihDPDwzMHxEPj4+MileKEM8PDI1fEQ+Pj43KSxfdD0oRD4+PjI4fEM8PDQpXihEPDwzMHxDPj4+MileKEQ8PDI1fEM+Pj43KSx5dD0oTz4+PjE0fFU8PDE4KV4oTz4+PjE4fFU8PDE0KV4oTzw8MjN8VT4+PjkpLGd0PShVPj4+MTR8Tzw8MTgpXihVPj4+MTh8Tzw8MTQpXihVPDwyM3xPPj4+OSksQnQ9aFtUXSx3dD1CdC5oaWdoLGt0PUJ0LmxvdyxTdD1OK2d0LG10PWoreXQrKFN0Pj4+MDxOPj4+MD8xOjApLFN0PVN0K3V0LG10PW10K2Z0KyhTdD4+PjA8dXQ+Pj4wPzE6MCksU3Q9U3Qra3QsbXQ9bXQrd3QrKFN0Pj4+MDxrdD4+PjA/MTowKSxTdD1TdCtHLG10PW10K3ErKFN0Pj4+MDxHPj4+MD8xOjApLHh0PV90K3Z0LGJ0PXB0K2R0Kyh4dD4+PjA8X3Q+Pj4wPzE6MCk7aj1YLE49TCxYPUksTD1LLEk9TyxLPVUsVT1XK1N0fDAsTz1QK210KyhVPj4+MDxXPj4+MD8xOjApfDAsUD1NLFc9RixNPVIsRj1FLFI9QyxFPUQsRD1TdCt4dHwwLEM9bXQrYnQrKEQ+Pj4wPFN0Pj4+MD8xOjApfDB9dj1pLmxvdz12K0QsaS5oaWdoPWQrQysodj4+PjA8RD4+PjA/MTowKSxfPW4ubG93PV8rRSxuLmhpZ2g9cCtSKyhfPj4+MDxFPj4+MD8xOjApLGc9by5sb3c9ZytGLG8uaGlnaD15K00rKGc+Pj4wPEY+Pj4wPzE6MCksdz1zLmxvdz13K1cscy5oaWdoPUIrUCsodz4+PjA8Vz4+PjA/MTowKSxTPWEubG93PVMrVSxhLmhpZ2g9aytPKyhTPj4+MDxVPj4+MD8xOjApLHg9Yy5sb3c9eCtLLGMuaGlnaD1tK0krKHg+Pj4wPEs+Pj4wPzE6MCksSD1mLmxvdz1IK0wsZi5oaWdoPWIrWCsoSD4+PjA8TD4+PjA/MTowKSxBPXUubG93PUErTix1LmhpZ2g9eitqKyhBPj4+MDxOPj4+MD8xOjApfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj10LndvcmRzLGU9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCp0LnNpZ0J5dGVzO3JbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSsxMjg+Pj4xMDw8NSkrMzBdPU1hdGguZmxvb3IoZS80Mjk0OTY3Mjk2KSxyWyhpKzEyOD4+PjEwPDw1KSszMV09ZSx0LnNpZ0J5dGVzPTQqci5sZW5ndGgsdGhpcy5fcHJvY2VzcygpO3ZhciBuPXRoaXMuX2hhc2gudG9YMzIoKTtyZXR1cm4gbn0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1uLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9LGJsb2NrU2l6ZTozMn0pO2UuU0hBNTEyPW4uX2NyZWF0ZUhlbHBlcihmKSxlLkhtYWNTSEE1MTI9bi5fY3JlYXRlSG1hY0hlbHBlcihmKX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLng2NCxpPWUuV29yZCxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5TSEE1MTIsYT1vLlNIQTM4ND1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBuLmluaXQoW25ldyBpLmluaXQoMzQxODA3MDM2NSwzMjM4MzcxMDMyKSxuZXcgaS5pbml0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKSxuZXcgaS5pbml0KDI0Mzg1MjkzNzAsODEyNzAyOTk5KSxuZXcgaS5pbml0KDM1NTQ2MjM2MCw0MTQ0OTEyNjk3KSxuZXcgaS5pbml0KDE3MzE0MDU0MTUsNDI5MDc3NTg1NyksbmV3IGkuaW5pdCgyMzk0MTgwMjMxLDE3NTA2MDMwMjUpLG5ldyBpLmluaXQoMzY3NTAwODUyNSwxNjk0MDc2ODM5KSxuZXcgaS5pbml0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCldKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD1zLl9kb0ZpbmFsaXplLmNhbGwodGhpcyk7cmV0dXJuIHQuc2lnQnl0ZXMtPTE2LHR9fSk7ci5TSEEzODQ9cy5fY3JlYXRlSGVscGVyKGEpLHIuSG1hY1NIQTM4ND1zLl9jcmVhdGVIbWFjSGVscGVyKGEpfSgpLHQubGliLkNpcGhlcnx8ZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5CYXNlLG89aS5Xb3JkQXJyYXkscz1pLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0sYT1lLmVuYyxjPShhLlV0ZjgsYS5CYXNlNjQpLGg9ZS5hbGdvLGw9aC5FdnBLREYsZj1pLkNpcGhlcj1zLmV4dGVuZCh7Y2ZnOm4uZXh0ZW5kKCksY3JlYXRlRW5jcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0VOQ19YRk9STV9NT0RFLHQscil9LGNyZWF0ZURlY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9ERUNfWEZPUk1fTU9ERSx0LHIpfSxpbml0OmZ1bmN0aW9uKHQscixlKXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQoZSksdGhpcy5feGZvcm1Nb2RlPXQsdGhpcy5fa2V5PXIsdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe3MucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHByb2Nlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCl9LGZpbmFsaXplOmZ1bmN0aW9uKHQpe3QmJnRoaXMuX2FwcGVuZCh0KTt2YXIgcj10aGlzLl9kb0ZpbmFsaXplKCk7cmV0dXJuIHJ9LGtleVNpemU6NCxpdlNpemU6NCxfRU5DX1hGT1JNX01PREU6MSxfREVDX1hGT1JNX01PREU6MixfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9tOnd9cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybntlbmNyeXB0OmZ1bmN0aW9uKGUsaSxuKXtyZXR1cm4gdChpKS5lbmNyeXB0KHIsZSxpLG4pfSxkZWNyeXB0OmZ1bmN0aW9uKGUsaSxuKXtyZXR1cm4gdChpKS5kZWNyeXB0KHIsZSxpLG4pfX19fSgpfSksdT0oaS5TdHJlYW1DaXBoZXI9Zi5leHRlbmQoe19kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcHJvY2VzcyghMCk7cmV0dXJuIHR9LGJsb2NrU2l6ZToxfSksZS5tb2RlPXt9KSxkPWkuQmxvY2tDaXBoZXJNb2RlPW4uZXh0ZW5kKHtjcmVhdGVFbmNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKHQscil9LGNyZWF0ZURlY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLkRlY3J5cHRvci5jcmVhdGUodCxyKX0saW5pdDpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlcj10LHRoaXMuX2l2PXJ9fSksdj11LkNCQz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLGkpe3ZhciBuPXRoaXMuX2l2O2lmKG4pe3ZhciBvPW47dGhpcy5faXY9cn1lbHNlIHZhciBvPXRoaXMuX3ByZXZCbG9jaztmb3IodmFyIHM9MDtzPGk7cysrKXRbZStzXV49b1tzXX12YXIgZT1kLmV4dGVuZCgpO3JldHVybiBlLkVuY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHIsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemU7dC5jYWxsKHRoaXMscixlLG4pLGkuZW5jcnlwdEJsb2NrKHIsZSksdGhpcy5fcHJldkJsb2NrPXIuc2xpY2UoZSxlK24pfX0pLGUuRGVjcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24ocixlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZSxvPXIuc2xpY2UoZSxlK24pO2kuZGVjcnlwdEJsb2NrKHIsZSksdC5jYWxsKHRoaXMscixlLG4pLHRoaXMuX3ByZXZCbG9jaz1vfX0pLGV9KCkscD1lLnBhZD17fSxfPXAuUGtjczc9e3BhZDpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT00KnIsaT1lLXQuc2lnQnl0ZXMlZSxuPWk8PDI0fGk8PDE2fGk8PDh8aSxzPVtdLGE9MDthPGk7YSs9NClzLnB1c2gobik7dmFyIGM9by5jcmVhdGUocyxpKTt0LmNvbmNhdChjKX0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHk9KGkuQmxvY2tDaXBoZXI9Zi5leHRlbmQoe2NmZzpmLmNmZy5leHRlbmQoe21vZGU6dixwYWRkaW5nOl99KSxyZXNldDpmdW5jdGlvbigpe2YucmVzZXQuY2FsbCh0aGlzKTt2YXIgdD10aGlzLmNmZyxyPXQuaXYsZT10Lm1vZGU7aWYodGhpcy5feGZvcm1Nb2RlPT10aGlzLl9FTkNfWEZPUk1fTU9ERSl2YXIgaT1lLmNyZWF0ZUVuY3J5cHRvcjtlbHNle3ZhciBpPWUuY3JlYXRlRGVjcnlwdG9yO3RoaXMuX21pbkJ1ZmZlclNpemU9MX10aGlzLl9tb2RlJiZ0aGlzLl9tb2RlLl9fY3JlYXRvcj09aT90aGlzLl9tb2RlLmluaXQodGhpcyxyJiZyLndvcmRzKToodGhpcy5fbW9kZT1pLmNhbGwoZSx0aGlzLHImJnIud29yZHMpLHRoaXMuX21vZGUuX19jcmVhdG9yPWkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9tb2RlLnByb2Nlc3NCbG9jayh0LHIpfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2ZnLnBhZGRpbmc7aWYodGhpcy5feGZvcm1Nb2RlPT10aGlzLl9FTkNfWEZPUk1fTU9ERSl7dC5wYWQodGhpcy5fZGF0YSx0aGlzLmJsb2NrU2l6ZSk7dmFyIHI9dGhpcy5fcHJvY2VzcyghMCl9ZWxzZXt2YXIgcj10aGlzLl9wcm9jZXNzKCEwKTt0LnVucGFkKHIpfXJldHVybiByfSxibG9ja1NpemU6NH0pLGkuQ2lwaGVyUGFyYW1zPW4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMubWl4SW4odCl9LHRvU3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVybih0fHx0aGlzLmZvcm1hdHRlcikuc3RyaW5naWZ5KHRoaXMpfX0pKSxnPWUuZm9ybWF0PXt9LEI9Zy5PcGVuU1NMPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIHI9dC5jaXBoZXJ0ZXh0LGU9dC5zYWx0O2lmKGUpdmFyIGk9by5jcmVhdGUoWzEzOTg4OTM2ODQsMTcwMTA3NjgzMV0pLmNvbmNhdChlKS5jb25jYXQocik7ZWxzZSB2YXIgaT1yO3JldHVybiBpLnRvU3RyaW5nKGMpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgcj1jLnBhcnNlKHQpLGU9ci53b3JkcztpZigxMzk4ODkzNjg0PT1lWzBdJiYxNzAxMDc2ODMxPT1lWzFdKXt2YXIgaT1vLmNyZWF0ZShlLnNsaWNlKDIsNCkpO2Uuc3BsaWNlKDAsNCksci5zaWdCeXRlcy09MTZ9cmV0dXJuIHkuY3JlYXRlKHtjaXBoZXJ0ZXh0OnIsc2FsdDppfSl9fSx3PWkuU2VyaWFsaXphYmxlQ2lwaGVyPW4uZXh0ZW5kKHtjZmc6bi5leHRlbmQoe2Zvcm1hdDpCfSksZW5jcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKTt2YXIgbj10LmNyZWF0ZUVuY3J5cHRvcihlLGkpLG89bi5maW5hbGl6ZShyKSxzPW4uY2ZnO3JldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDpvLGtleTplLGl2OnMuaXYsYWxnb3JpdGhtOnQsbW9kZTpzLm1vZGUscGFkZGluZzpzLnBhZGRpbmcsYmxvY2tTaXplOnQuYmxvY2tTaXplLGZvcm1hdHRlcjppLmZvcm1hdH0pfSxkZWNyeXB0OmZ1bmN0aW9uKHQscixlLGkpe2k9dGhpcy5jZmcuZXh0ZW5kKGkpLHI9dGhpcy5fcGFyc2UocixpLmZvcm1hdCk7dmFyIG49dC5jcmVhdGVEZWNyeXB0b3IoZSxpKS5maW5hbGl6ZShyLmNpcGhlcnRleHQpO3JldHVybiBufSxfcGFyc2U6ZnVuY3Rpb24odCxyKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9yLnBhcnNlKHQsdGhpcyk6dH19KSxrPWUua2RmPXt9LFM9ay5PcGVuU1NMPXtleGVjdXRlOmZ1bmN0aW9uKHQscixlLGkpe2l8fChpPW8ucmFuZG9tKDgpKTt2YXIgbj1sLmNyZWF0ZSh7a2V5U2l6ZTpyK2V9KS5jb21wdXRlKHQsaSkscz1vLmNyZWF0ZShuLndvcmRzLnNsaWNlKHIpLDQqZSk7cmV0dXJuIG4uc2lnQnl0ZXM9NCpyLHkuY3JlYXRlKHtrZXk6bixpdjpzLHNhbHQ6aX0pfX0sbT1pLlBhc3N3b3JkQmFzZWRDaXBoZXI9dy5leHRlbmQoe2NmZzp3LmNmZy5leHRlbmQoe2tkZjpTfSksZW5jcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKTt2YXIgbj1pLmtkZi5leGVjdXRlKGUsdC5rZXlTaXplLHQuaXZTaXplKTtpLml2PW4uaXY7dmFyIG89dy5lbmNyeXB0LmNhbGwodGhpcyx0LHIsbi5rZXksaSk7cmV0dXJuIG8ubWl4SW4obiksb30sZGVjcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKSxyPXRoaXMuX3BhcnNlKHIsaS5mb3JtYXQpO3ZhciBuPWkua2RmLmV4ZWN1dGUoZSx0LmtleVNpemUsdC5pdlNpemUsci5zYWx0KTtpLml2PW4uaXY7dmFyIG89dy5kZWNyeXB0LmNhbGwodGhpcyx0LHIsbi5rZXksaSk7cmV0dXJuIG99fSl9KCksdC5tb2RlLkNGQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyLGUsaSl7dmFyIG49dGhpcy5faXY7aWYobil7dmFyIG89bi5zbGljZSgwKTt0aGlzLl9pdj12b2lkIDB9ZWxzZSB2YXIgbz10aGlzLl9wcmV2QmxvY2s7aS5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIHM9MDtzPGU7cysrKXRbcitzXV49b1tzXX12YXIgZT10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7cmV0dXJuIGUuRW5jcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZTtyLmNhbGwodGhpcyx0LGUsbixpKSx0aGlzLl9wcmV2QmxvY2s9dC5zbGljZShlLGUrbil9fSksZS5EZWNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dC5zbGljZShlLGUrbik7ci5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fcHJldkJsb2NrPW99fSksZX0oKSx0Lm1vZGUuRUNCPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO3JldHVybiByLkVuY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0LHIpfX0pLHIuRGVjcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHQscil9fSkscn0oKSx0LnBhZC5BbnNpWDkyMz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9dC5zaWdCeXRlcyxpPTQqcixuPWktZSVpLG89ZStuLTE7dC5jbGFtcCgpLHQud29yZHNbbz4+PjJdfD1uPDwyNC1vJTQqOCx0LnNpZ0J5dGVzKz1ufSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0sdC5wYWQuSXNvMTAxMjY9e3BhZDpmdW5jdGlvbihyLGUpe3ZhciBpPTQqZSxuPWktci5zaWdCeXRlcyVpO3IuY29uY2F0KHQubGliLldvcmRBcnJheS5yYW5kb20obi0xKSkuY29uY2F0KHQubGliLldvcmRBcnJheS5jcmVhdGUoW248PDI0XSwxKSl9LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx0LnBhZC5Jc285Nzk3MT17cGFkOmZ1bmN0aW9uKHIsZSl7ci5jb25jYXQodC5saWIuV29yZEFycmF5LmNyZWF0ZShbMjE0NzQ4MzY0OF0sMSkpLHQucGFkLlplcm9QYWRkaW5nLnBhZChyLGUpfSx1bnBhZDpmdW5jdGlvbihyKXt0LnBhZC5aZXJvUGFkZGluZy51bnBhZChyKSxyLnNpZ0J5dGVzLS19fSx0Lm1vZGUuT0ZCPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9rZXlzdHJlYW07biYmKG89dGhpcy5fa2V5c3RyZWFtPW4uc2xpY2UoMCksdGhpcy5faXY9dm9pZCAwKSxlLmVuY3J5cHRCbG9jayhvLDApO2Zvcih2YXIgcz0wO3M8aTtzKyspdFtyK3NdXj1vW3NdfX0pO3JldHVybiByLkRlY3J5cHRvcj1lLHJ9KCksdC5wYWQuTm9QYWRkaW5nPXtwYWQ6ZnVuY3Rpb24oKXt9LHVucGFkOmZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5DaXBoZXJQYXJhbXMsbz1lLmVuYyxzPW8uSGV4LGE9ZS5mb3JtYXQ7YS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jaXBoZXJ0ZXh0LnRvU3RyaW5nKHMpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgcj1zLnBhcnNlKHQpO3JldHVybiBuLmNyZWF0ZSh7Y2lwaGVydGV4dDpyfSl9fX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmxvY2tDaXBoZXIsbj1yLmFsZ28sbz1bXSxzPVtdLGE9W10sYz1bXSxoPVtdLGw9W10sZj1bXSx1PVtdLGQ9W10sdj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10scj0wO3I8MjU2O3IrKylyPDEyOD90W3JdPXI8PDE6dFtyXT1yPDwxXjI4Mztmb3IodmFyIGU9MCxpPTAscj0wO3I8MjU2O3IrKyl7dmFyIG49aV5pPDwxXmk8PDJeaTw8M15pPDw0O249bj4+PjheMjU1Jm5eOTksb1tlXT1uLHNbbl09ZTt2YXIgcD10W2VdLF89dFtwXSx5PXRbX10sZz0yNTcqdFtuXV4xNjg0MzAwOCpuO2FbZV09Zzw8MjR8Zz4+PjgsY1tlXT1nPDwxNnxnPj4+MTYsaFtlXT1nPDw4fGc+Pj4yNCxsW2VdPWc7dmFyIGc9MTY4NDMwMDkqeV42NTUzNypfXjI1NypwXjE2ODQzMDA4KmU7ZltuXT1nPDwyNHxnPj4+OCx1W25dPWc8PDE2fGc+Pj4xNixkW25dPWc8PDh8Zz4+PjI0LHZbbl09ZyxlPyhlPXBedFt0W3RbeV5wXV1dLGlePXRbdFtpXV0pOmU9aT0xfX0oKTt2YXIgcD1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF0sXz1uLkFFUz1pLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7Zm9yKHZhciB0PXRoaXMuX2tleVByaW9yUmVzZXQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMvNCxpPXRoaXMuX25Sb3VuZHM9ZSs2LG49NCooaSsxKSxzPXRoaXMuX2tleVNjaGVkdWxlPVtdLGE9MDthPG47YSsrKWlmKGE8ZSlzW2FdPXJbYV07ZWxzZXt2YXIgYz1zW2EtMV07YSVlP2U+NiYmYSVlPT00JiYoYz1vW2M+Pj4yNF08PDI0fG9bYz4+PjE2JjI1NV08PDE2fG9bYz4+PjgmMjU1XTw8OHxvWzI1NSZjXSk6KGM9Yzw8OHxjPj4+MjQsYz1vW2M+Pj4yNF08PDI0fG9bYz4+PjE2JjI1NV08PDE2fG9bYz4+PjgmMjU1XTw8OHxvWzI1NSZjXSxjXj1wW2EvZXwwXTw8MjQpLHNbYV09c1thLWVdXmN9Zm9yKHZhciBoPXRoaXMuX2ludktleVNjaGVkdWxlPVtdLGw9MDtsPG47bCsrKXt2YXIgYT1uLWw7aWYobCU0KXZhciBjPXNbYV07ZWxzZSB2YXIgYz1zW2EtNF07bDw0fHxhPD00P2hbbF09YzpoW2xdPWZbb1tjPj4+MjRdXV51W29bYz4+PjE2JjI1NV1dXmRbb1tjPj4+OCYyNTVdXV52W29bMjU1JmNdXX19fSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kb0NyeXB0QmxvY2sodCxyLHRoaXMuX2tleVNjaGVkdWxlLGEsYyxoLGwsbyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRbcisxXTt0W3IrMV09dFtyKzNdLHRbciszXT1lLHRoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52S2V5U2NoZWR1bGUsZix1LGQsdixzKTt2YXIgZT10W3IrMV07dFtyKzFdPXRbciszXSx0W3IrM109ZX0sX2RvQ3J5cHRCbG9jazpmdW5jdGlvbih0LHIsZSxpLG4sbyxzLGEpe2Zvcih2YXIgYz10aGlzLl9uUm91bmRzLGg9dFtyXV5lWzBdLGw9dFtyKzFdXmVbMV0sZj10W3IrMl1eZVsyXSx1PXRbciszXV5lWzNdLGQ9NCx2PTE7djxjO3YrKyl7dmFyIHA9aVtoPj4+MjRdXm5bbD4+PjE2JjI1NV1eb1tmPj4+OCYyNTVdXnNbMjU1JnVdXmVbZCsrXSxfPWlbbD4+PjI0XV5uW2Y+Pj4xNiYyNTVdXm9bdT4+PjgmMjU1XV5zWzI1NSZoXV5lW2QrK10seT1pW2Y+Pj4yNF1eblt1Pj4+MTYmMjU1XV5vW2g+Pj44JjI1NV1ec1syNTUmbF1eZVtkKytdLGc9aVt1Pj4+MjRdXm5baD4+PjE2JjI1NV1eb1tsPj4+OCYyNTVdXnNbMjU1JmZdXmVbZCsrXTtoPXAsbD1fLGY9eSx1PWd9dmFyIHA9KGFbaD4+PjI0XTw8MjR8YVtsPj4+MTYmMjU1XTw8MTZ8YVtmPj4+OCYyNTVdPDw4fGFbMjU1JnVdKV5lW2QrK10sXz0oYVtsPj4+MjRdPDwyNHxhW2Y+Pj4xNiYyNTVdPDwxNnxhW3U+Pj44JjI1NV08PDh8YVsyNTUmaF0pXmVbZCsrXSx5PShhW2Y+Pj4yNF08PDI0fGFbdT4+PjE2JjI1NV08PDE2fGFbaD4+PjgmMjU1XTw8OHxhWzI1NSZsXSleZVtkKytdLGc9KGFbdT4+PjI0XTw8MjR8YVtoPj4+MTYmMjU1XTw8MTZ8YVtsPj4+OCYyNTVdPDw4fGFbMjU1JmZdKV5lW2QrK107dFtyXT1wLHRbcisxXT1fLHRbcisyXT15LHRbciszXT1nfSxrZXlTaXplOjh9KTtyLkFFUz1pLl9jcmVhdGVIZWxwZXIoXyl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscil7dmFyIGU9KHRoaXMuX2xCbG9jaz4+PnRedGhpcy5fckJsb2NrKSZyO3RoaXMuX3JCbG9ja149ZSx0aGlzLl9sQmxvY2tePWU8PHR9ZnVuY3Rpb24gZSh0LHIpe3ZhciBlPSh0aGlzLl9yQmxvY2s+Pj50XnRoaXMuX2xCbG9jaykmcjt0aGlzLl9sQmxvY2tePWUsdGhpcy5fckJsb2NrXj1lPDx0O1xyXG59dmFyIGk9dCxuPWkubGliLG89bi5Xb3JkQXJyYXkscz1uLkJsb2NrQ2lwaGVyLGE9aS5hbGdvLGM9WzU3LDQ5LDQxLDMzLDI1LDE3LDksMSw1OCw1MCw0MiwzNCwyNiwxOCwxMCwyLDU5LDUxLDQzLDM1LDI3LDE5LDExLDMsNjAsNTIsNDQsMzYsNjMsNTUsNDcsMzksMzEsMjMsMTUsNyw2Miw1NCw0NiwzOCwzMCwyMiwxNCw2LDYxLDUzLDQ1LDM3LDI5LDIxLDEzLDUsMjgsMjAsMTIsNF0saD1bMTQsMTcsMTEsMjQsMSw1LDMsMjgsMTUsNiwyMSwxMCwyMywxOSwxMiw0LDI2LDgsMTYsNywyNywyMCwxMywyLDQxLDUyLDMxLDM3LDQ3LDU1LDMwLDQwLDUxLDQ1LDMzLDQ4LDQ0LDQ5LDM5LDU2LDM0LDUzLDQ2LDQyLDUwLDM2LDI5LDMyXSxsPVsxLDIsNCw2LDgsMTAsMTIsMTQsMTUsMTcsMTksMjEsMjMsMjUsMjcsMjhdLGY9W3swOjg0MjE4ODgsMjY4NDM1NDU2OjMyNzY4LDUzNjg3MDkxMjo4NDIxMzc4LDgwNTMwNjM2ODoyLDEwNzM3NDE4MjQ6NTEyLDEzNDIxNzcyODA6ODQyMTg5MCwxNjEwNjEyNzM2OjgzODkxMjIsMTg3OTA0ODE5Mjo4Mzg4NjA4LDIxNDc0ODM2NDg6NTE0LDI0MTU5MTkxMDQ6ODM4OTEyMCwyNjg0MzU0NTYwOjMzMjgwLDI5NTI3OTAwMTY6ODQyMTM3NiwzMjIxMjI1NDcyOjMyNzcwLDM0ODk2NjA5Mjg6ODM4ODYxMCwzNzU4MDk2Mzg0OjAsNDAyNjUzMTg0MDozMzI4MiwxMzQyMTc3Mjg6MCw0MDI2NTMxODQ6ODQyMTg5MCw2NzEwODg2NDA6MzMyODIsOTM5NTI0MDk2OjMyNzY4LDEyMDc5NTk1NTI6ODQyMTg4OCwxNDc2Mzk1MDA4OjUxMiwxNzQ0ODMwNDY0Ojg0MjEzNzgsMjAxMzI2NTkyMDoyLDIyODE3MDEzNzY6ODM4OTEyMCwyNTUwMTM2ODMyOjMzMjgwLDI4MTg1NzIyODg6ODQyMTM3NiwzMDg3MDA3NzQ0OjgzODkxMjIsMzM1NTQ0MzIwMDo4Mzg4NjEwLDM2MjM4Nzg2NTY6MzI3NzAsMzg5MjMxNDExMjo1MTQsNDE2MDc0OTU2ODo4Mzg4NjA4LDE6MzI3NjgsMjY4NDM1NDU3OjIsNTM2ODcwOTEzOjg0MjE4ODgsODA1MzA2MzY5OjgzODg2MDgsMTA3Mzc0MTgyNTo4NDIxMzc4LDEzNDIxNzcyODE6MzMyODAsMTYxMDYxMjczNzo1MTIsMTg3OTA0ODE5Mzo4Mzg5MTIyLDIxNDc0ODM2NDk6ODQyMTg5MCwyNDE1OTE5MTA1Ojg0MjEzNzYsMjY4NDM1NDU2MTo4Mzg4NjEwLDI5NTI3OTAwMTc6MzMyODIsMzIyMTIyNTQ3Mzo1MTQsMzQ4OTY2MDkyOTo4Mzg5MTIwLDM3NTgwOTYzODU6MzI3NzAsNDAyNjUzMTg0MTowLDEzNDIxNzcyOTo4NDIxODkwLDQwMjY1MzE4NTo4NDIxMzc2LDY3MTA4ODY0MTo4Mzg4NjA4LDkzOTUyNDA5Nzo1MTIsMTIwNzk1OTU1MzozMjc2OCwxNDc2Mzk1MDA5OjgzODg2MTAsMTc0NDgzMDQ2NToyLDIwMTMyNjU5MjE6MzMyODIsMjI4MTcwMTM3NzozMjc3MCwyNTUwMTM2ODMzOjgzODkxMjIsMjgxODU3MjI4OTo1MTQsMzA4NzAwNzc0NTo4NDIxODg4LDMzNTU0NDMyMDE6ODM4OTEyMCwzNjIzODc4NjU3OjAsMzg5MjMxNDExMzozMzI4MCw0MTYwNzQ5NTY5Ojg0MjEzNzh9LHswOjEwNzQyODI1MTIsMTY3NzcyMTY6MTYzODQsMzM1NTQ0MzI6NTI0Mjg4LDUwMzMxNjQ4OjEwNzQyNjYxMjgsNjcxMDg4NjQ6MTA3Mzc0MTg0MCw4Mzg4NjA4MDoxMDc0MjgyNDk2LDEwMDY2MzI5NjoxMDczNzU4MjA4LDExNzQ0MDUxMjoxNiwxMzQyMTc3Mjg6NTQwNjcyLDE1MDk5NDk0NDoxMDczNzU4MjI0LDE2Nzc3MjE2MDoxMDczNzQxODI0LDE4NDU0OTM3Njo1NDA2ODgsMjAxMzI2NTkyOjUyNDMwNCwyMTgxMDM4MDg6MCwyMzQ4ODEwMjQ6MTY0MDAsMjUxNjU4MjQwOjEwNzQyNjYxMTIsODM4ODYwODoxMDczNzU4MjA4LDI1MTY1ODI0OjU0MDY4OCw0MTk0MzA0MDoxNiw1ODcyMDI1NjoxMDczNzU4MjI0LDc1NDk3NDcyOjEwNzQyODI1MTIsOTIyNzQ2ODg6MTA3Mzc0MTgyNCwxMDkwNTE5MDQ6NTI0Mjg4LDEyNTgyOTEyMDoxMDc0MjY2MTI4LDE0MjYwNjMzNjo1MjQzMDQsMTU5MzgzNTUyOjAsMTc2MTYwNzY4OjE2Mzg0LDE5MjkzNzk4NDoxMDc0MjY2MTEyLDIwOTcxNTIwMDoxMDczNzQxODQwLDIyNjQ5MjQxNjo1NDA2NzIsMjQzMjY5NjMyOjEwNzQyODI0OTYsMjYwMDQ2ODQ4OjE2NDAwLDI2ODQzNTQ1NjowLDI4NTIxMjY3MjoxMDc0MjY2MTI4LDMwMTk4OTg4ODoxMDczNzU4MjI0LDMxODc2NzEwNDoxMDc0MjgyNDk2LDMzNTU0NDMyMDoxMDc0MjY2MTEyLDM1MjMyMTUzNjoxNiwzNjkwOTg3NTI6NTQwNjg4LDM4NTg3NTk2ODoxNjM4NCw0MDI2NTMxODQ6MTY0MDAsNDE5NDMwNDAwOjUyNDI4OCw0MzYyMDc2MTY6NTI0MzA0LDQ1Mjk4NDgzMjoxMDczNzQxODQwLDQ2OTc2MjA0ODo1NDA2NzIsNDg2NTM5MjY0OjEwNzM3NTgyMDgsNTAzMzE2NDgwOjEwNzM3NDE4MjQsNTIwMDkzNjk2OjEwNzQyODI1MTIsMjc2ODI0MDY0OjU0MDY4OCwyOTM2MDEyODA6NTI0Mjg4LDMxMDM3ODQ5NjoxMDc0MjY2MTEyLDMyNzE1NTcxMjoxNjM4NCwzNDM5MzI5Mjg6MTA3Mzc1ODIwOCwzNjA3MTAxNDQ6MTA3NDI4MjUxMiwzNzc0ODczNjA6MTYsMzk0MjY0NTc2OjEwNzM3NDE4MjQsNDExMDQxNzkyOjEwNzQyODI0OTYsNDI3ODE5MDA4OjEwNzM3NDE4NDAsNDQ0NTk2MjI0OjEwNzM3NTgyMjQsNDYxMzczNDQwOjUyNDMwNCw0NzgxNTA2NTY6MCw0OTQ5Mjc4NzI6MTY0MDAsNTExNzA1MDg4OjEwNzQyNjYxMjgsNTI4NDgyMzA0OjU0MDY3Mn0sezA6MjYwLDEwNDg1NzY6MCwyMDk3MTUyOjY3MTA5MTIwLDMxNDU3Mjg6NjU3OTYsNDE5NDMwNDo2NTU0MCw1MjQyODgwOjY3MTA4ODY4LDYyOTE0NTY6NjcxNzQ2NjAsNzM0MDAzMjo2NzE3NDQwMCw4Mzg4NjA4OjY3MTA4ODY0LDk0MzcxODQ6NjcxNzQ2NTYsMTA0ODU3NjA6NjU3OTIsMTE1MzQzMzY6NjcxNzQ0MDQsMTI1ODI5MTI6NjcxMDkxMjQsMTM2MzE0ODg6NjU1MzYsMTQ2ODAwNjQ6NCwxNTcyODY0MDoyNTYsNTI0Mjg4OjY3MTc0NjU2LDE1NzI4NjQ6NjcxNzQ0MDQsMjYyMTQ0MDowLDM2NzAwMTY6NjcxMDkxMjAsNDcxODU5Mjo2NzEwODg2OCw1NzY3MTY4OjY1NTM2LDY4MTU3NDQ6NjU1NDAsNzg2NDMyMDoyNjAsODkxMjg5Njo0LDk5NjE0NzI6MjU2LDExMDEwMDQ4OjY3MTc0NDAwLDEyMDU4NjI0OjY1Nzk2LDEzMTA3MjAwOjY1NzkyLDE0MTU1Nzc2OjY3MTA5MTI0LDE1MjA0MzUyOjY3MTc0NjYwLDE2MjUyOTI4OjY3MTA4ODY0LDE2Nzc3MjE2OjY3MTc0NjU2LDE3ODI1NzkyOjY1NTQwLDE4ODc0MzY4OjY1NTM2LDE5OTIyOTQ0OjY3MTA5MTIwLDIwOTcxNTIwOjI1NiwyMjAyMDA5Njo2NzE3NDY2MCwyMzA2ODY3Mjo2NzEwODg2OCwyNDExNzI0ODowLDI1MTY1ODI0OjY3MTA5MTI0LDI2MjE0NDAwOjY3MTA4ODY0LDI3MjYyOTc2OjQsMjgzMTE1NTI6NjU3OTIsMjkzNjAxMjg6NjcxNzQ0MDAsMzA0MDg3MDQ6MjYwLDMxNDU3MjgwOjY1Nzk2LDMyNTA1ODU2OjY3MTc0NDA0LDE3MzAxNTA0OjY3MTA4ODY0LDE4MzUwMDgwOjI2MCwxOTM5ODY1Njo2NzE3NDY1NiwyMDQ0NzIzMjowLDIxNDk1ODA4OjY1NTQwLDIyNTQ0Mzg0OjY3MTA5MTIwLDIzNTkyOTYwOjI1NiwyNDY0MTUzNjo2NzE3NDQwNCwyNTY5MDExMjo2NTUzNiwyNjczODY4ODo2NzE3NDY2MCwyNzc4NzI2NDo2NTc5NiwyODgzNTg0MDo2NzEwODg2OCwyOTg4NDQxNjo2NzEwOTEyNCwzMDkzMjk5Mjo2NzE3NDQwMCwzMTk4MTU2ODo0LDMzMDMwMTQ0OjY1NzkyfSx7MDoyMTUxNjgyMDQ4LDY1NTM2OjIxNDc0ODc4MDgsMTMxMDcyOjQxOTg0NjQsMTk2NjA4OjIxNTE2Nzc5NTIsMjYyMTQ0OjAsMzI3NjgwOjQxOTg0MDAsMzkzMjE2OjIxNDc0ODM3MTIsNDU4NzUyOjQxOTQzNjgsNTI0Mjg4OjIxNDc0ODM2NDgsNTg5ODI0OjQxOTQzMDQsNjU1MzYwOjY0LDcyMDg5NjoyMTQ3NDg3NzQ0LDc4NjQzMjoyMTUxNjc4MDE2LDg1MTk2ODo0MTYwLDkxNzUwNDo0MDk2LDk4MzA0MDoyMTUxNjgyMTEyLDMyNzY4OjIxNDc0ODc4MDgsOTgzMDQ6NjQsMTYzODQwOjIxNTE2NzgwMTYsMjI5Mzc2OjIxNDc0ODc3NDQsMjk0OTEyOjQxOTg0MDAsMzYwNDQ4OjIxNTE2ODIxMTIsNDI1OTg0OjAsNDkxNTIwOjIxNTE2Nzc5NTIsNTU3MDU2OjQwOTYsNjIyNTkyOjIxNTE2ODIwNDgsNjg4MTI4OjQxOTQzMDQsNzUzNjY0OjQxNjAsODE5MjAwOjIxNDc0ODM2NDgsODg0NzM2OjQxOTQzNjgsOTUwMjcyOjQxOTg0NjQsMTAxNTgwODoyMTQ3NDgzNzEyLDEwNDg1NzY6NDE5NDM2OCwxMTE0MTEyOjQxOTg0MDAsMTE3OTY0ODoyMTQ3NDgzNzEyLDEyNDUxODQ6MCwxMzEwNzIwOjQxNjAsMTM3NjI1NjoyMTUxNjc4MDE2LDE0NDE3OTI6MjE1MTY4MjA0OCwxNTA3MzI4OjIxNDc0ODc4MDgsMTU3Mjg2NDoyMTUxNjgyMTEyLDE2Mzg0MDA6MjE0NzQ4MzY0OCwxNzAzOTM2OjIxNTE2Nzc5NTIsMTc2OTQ3Mjo0MTk4NDY0LDE4MzUwMDg6MjE0NzQ4Nzc0NCwxOTAwNTQ0OjQxOTQzMDQsMTk2NjA4MDo2NCwyMDMxNjE2OjQwOTYsMTA4MTM0NDoyMTUxNjc3OTUyLDExNDY4ODA6MjE1MTY4MjExMiwxMjEyNDE2OjAsMTI3Nzk1Mjo0MTk4NDAwLDEzNDM0ODg6NDE5NDM2OCwxNDA5MDI0OjIxNDc0ODM2NDgsMTQ3NDU2MDoyMTQ3NDg3ODA4LDE1NDAwOTY6NjQsMTYwNTYzMjoyMTQ3NDgzNzEyLDE2NzExNjg6NDA5NiwxNzM2NzA0OjIxNDc0ODc3NDQsMTgwMjI0MDoyMTUxNjc4MDE2LDE4Njc3NzY6NDE2MCwxOTMzMzEyOjIxNTE2ODIwNDgsMTk5ODg0ODo0MTk0MzA0LDIwNjQzODQ6NDE5ODQ2NH0sezA6MTI4LDQwOTY6MTcwMzkzNjAsODE5MjoyNjIxNDQsMTIyODg6NTM2ODcwOTEyLDE2Mzg0OjUzNzEzMzE4NCwyMDQ4MDoxNjc3NzM0NCwyNDU3Njo1NTM2NDgyNTYsMjg2NzI6MjYyMjcyLDMyNzY4OjE2Nzc3MjE2LDM2ODY0OjUzNzEzMzA1Niw0MDk2MDo1MzY4NzEwNDAsNDUwNTY6NTUzOTEwNDAwLDQ5MTUyOjU1MzkxMDI3Miw1MzI0ODowLDU3MzQ0OjE3MDM5NDg4LDYxNDQwOjU1MzY0ODEyOCwyMDQ4OjE3MDM5NDg4LDYxNDQ6NTUzNjQ4MjU2LDEwMjQwOjEyOCwxNDMzNjoxNzAzOTM2MCwxODQzMjoyNjIxNDQsMjI1Mjg6NTM3MTMzMTg0LDI2NjI0OjU1MzkxMDI3MiwzMDcyMDo1MzY4NzA5MTIsMzQ4MTY6NTM3MTMzMDU2LDM4OTEyOjAsNDMwMDg6NTUzOTEwNDAwLDQ3MTA0OjE2Nzc3MzQ0LDUxMjAwOjUzNjg3MTA0MCw1NTI5Njo1NTM2NDgxMjgsNTkzOTI6MTY3NzcyMTYsNjM0ODg6MjYyMjcyLDY1NTM2OjI2MjE0NCw2OTYzMjoxMjgsNzM3Mjg6NTM2ODcwOTEyLDc3ODI0OjU1MzY0ODI1Niw4MTkyMDoxNjc3NzM0NCw4NjAxNjo1NTM5MTAyNzIsOTAxMTI6NTM3MTMzMTg0LDk0MjA4OjE2Nzc3MjE2LDk4MzA0OjU1MzkxMDQwMCwxMDI0MDA6NTUzNjQ4MTI4LDEwNjQ5NjoxNzAzOTM2MCwxMTA1OTI6NTM3MTMzMDU2LDExNDY4ODoyNjIyNzIsMTE4Nzg0OjUzNjg3MTA0MCwxMjI4ODA6MCwxMjY5NzY6MTcwMzk0ODgsNjc1ODQ6NTUzNjQ4MjU2LDcxNjgwOjE2Nzc3MjE2LDc1Nzc2OjE3MDM5MzYwLDc5ODcyOjUzNzEzMzE4NCw4Mzk2ODo1MzY4NzA5MTIsODgwNjQ6MTcwMzk0ODgsOTIxNjA6MTI4LDk2MjU2OjU1MzkxMDI3MiwxMDAzNTI6MjYyMjcyLDEwNDQ0ODo1NTM5MTA0MDAsMTA4NTQ0OjAsMTEyNjQwOjU1MzY0ODEyOCwxMTY3MzY6MTY3NzczNDQsMTIwODMyOjI2MjE0NCwxMjQ5Mjg6NTM3MTMzMDU2LDEyOTAyNDo1MzY4NzEwNDB9LHswOjI2ODQzNTQ2NCwyNTY6ODE5Miw1MTI6MjcwNTMyNjA4LDc2ODoyNzA1NDA4MDgsMTAyNDoyNjg0NDM2NDgsMTI4MDoyMDk3MTUyLDE1MzY6MjA5NzE2MCwxNzkyOjI2ODQzNTQ1NiwyMDQ4OjAsMjMwNDoyNjg0NDM2NTYsMjU2MDoyMTA1MzQ0LDI4MTY6OCwzMDcyOjI3MDUzMjYxNiwzMzI4OjIxMDUzNTIsMzU4NDo4MjAwLDM4NDA6MjcwNTQwODAwLDEyODoyNzA1MzI2MDgsMzg0OjI3MDU0MDgwOCw2NDA6OCw4OTY6MjA5NzE1MiwxMTUyOjIxMDUzNTIsMTQwODoyNjg0MzU0NjQsMTY2NDoyNjg0NDM2NDgsMTkyMDo4MjAwLDIxNzY6MjA5NzE2MCwyNDMyOjgxOTIsMjY4ODoyNjg0NDM2NTYsMjk0NDoyNzA1MzI2MTYsMzIwMDowLDM0NTY6MjcwNTQwODAwLDM3MTI6MjEwNTM0NCwzOTY4OjI2ODQzNTQ1Niw0MDk2OjI2ODQ0MzY0OCw0MzUyOjI3MDUzMjYxNiw0NjA4OjI3MDU0MDgwOCw0ODY0OjgyMDAsNTEyMDoyMDk3MTUyLDUzNzY6MjY4NDM1NDU2LDU2MzI6MjY4NDM1NDY0LDU4ODg6MjEwNTM0NCw2MTQ0OjIxMDUzNTIsNjQwMDowLDY2NTY6OCw2OTEyOjI3MDUzMjYwOCw3MTY4OjgxOTIsNzQyNDoyNjg0NDM2NTYsNzY4MDoyNzA1NDA4MDAsNzkzNjoyMDk3MTYwLDQyMjQ6OCw0NDgwOjIxMDUzNDQsNDczNjoyMDk3MTUyLDQ5OTI6MjY4NDM1NDY0LDUyNDg6MjY4NDQzNjQ4LDU1MDQ6ODIwMCw1NzYwOjI3MDU0MDgwOCw2MDE2OjI3MDUzMjYwOCw2MjcyOjI3MDU0MDgwMCw2NTI4OjI3MDUzMjYxNiw2Nzg0OjgxOTIsNzA0MDoyMTA1MzUyLDcyOTY6MjA5NzE2MCw3NTUyOjAsNzgwODoyNjg0MzU0NTYsODA2NDoyNjg0NDM2NTZ9LHswOjEwNDg1NzYsMTY6MzM1NTU0NTcsMzI6MTAyNCw0ODoxMDQ5NjAxLDY0OjM0NjA0MDMzLDgwOjAsOTY6MSwxMTI6MzQ2MDMwMDksMTI4OjMzNTU1NDU2LDE0NDoxMDQ4NTc3LDE2MDozMzU1NDQzMywxNzY6MzQ2MDQwMzIsMTkyOjM0NjAzMDA4LDIwODoxMDI1LDIyNDoxMDQ5NjAwLDI0MDozMzU1NDQzMiw4OjM0NjAzMDA5LDI0OjAsNDA6MzM1NTU0NTcsNTY6MzQ2MDQwMzIsNzI6MTA0ODU3Niw4ODozMzU1NDQzMywxMDQ6MzM1NTQ0MzIsMTIwOjEwMjUsMTM2OjEwNDk2MDEsMTUyOjMzNTU1NDU2LDE2ODozNDYwMzAwOCwxODQ6MTA0ODU3NywyMDA6MTAyNCwyMTY6MzQ2MDQwMzMsMjMyOjEsMjQ4OjEwNDk2MDAsMjU2OjMzNTU0NDMyLDI3MjoxMDQ4NTc2LDI4ODozMzU1NTQ1NywzMDQ6MzQ2MDMwMDksMzIwOjEwNDg1NzcsMzM2OjMzNTU1NDU2LDM1MjozNDYwNDAzMiwzNjg6MTA0OTYwMSwzODQ6MTAyNSw0MDA6MzQ2MDQwMzMsNDE2OjEwNDk2MDAsNDMyOjEsNDQ4OjAsNDY0OjM0NjAzMDA4LDQ4MDozMzU1NDQzMyw0OTY6MTAyNCwyNjQ6MTA0OTYwMCwyODA6MzM1NTU0NTcsMjk2OjM0NjAzMDA5LDMxMjoxLDMyODozMzU1NDQzMiwzNDQ6MTA0ODU3NiwzNjA6MTAyNSwzNzY6MzQ2MDQwMzIsMzkyOjMzNTU0NDMzLDQwODozNDYwMzAwOCw0MjQ6MCw0NDA6MzQ2MDQwMzMsNDU2OjEwNDk2MDEsNDcyOjEwMjQsNDg4OjMzNTU1NDU2LDUwNDoxMDQ4NTc3fSx7MDoxMzQyMTk4MDgsMToxMzEwNzIsMjoxMzQyMTc3MjgsMzozMiw0OjEzMTEwNCw1OjEzNDM1MDg4MCw2OjEzNDM1MDg0OCw3OjIwNDgsODoxMzQzNDg4MDAsOToxMzQyMTk3NzYsMTA6MTMzMTIwLDExOjEzNDM0ODgzMiwxMjoyMDgwLDEzOjAsMTQ6MTM0MjE3NzYwLDE1OjEzMzE1MiwyMTQ3NDgzNjQ4OjIwNDgsMjE0NzQ4MzY0OToxMzQzNTA4ODAsMjE0NzQ4MzY1MDoxMzQyMTk4MDgsMjE0NzQ4MzY1MToxMzQyMTc3MjgsMjE0NzQ4MzY1MjoxMzQzNDg4MDAsMjE0NzQ4MzY1MzoxMzMxMjAsMjE0NzQ4MzY1NDoxMzMxNTIsMjE0NzQ4MzY1NTozMiwyMTQ3NDgzNjU2OjEzNDIxNzc2MCwyMTQ3NDgzNjU3OjIwODAsMjE0NzQ4MzY1ODoxMzExMDQsMjE0NzQ4MzY1OToxMzQzNTA4NDgsMjE0NzQ4MzY2MDowLDIxNDc0ODM2NjE6MTM0MzQ4ODMyLDIxNDc0ODM2NjI6MTM0MjE5Nzc2LDIxNDc0ODM2NjM6MTMxMDcyLDE2OjEzMzE1MiwxNzoxMzQzNTA4NDgsMTg6MzIsMTk6MjA0OCwyMDoxMzQyMTk3NzYsMjE6MTM0MjE3NzYwLDIyOjEzNDM0ODgzMiwyMzoxMzEwNzIsMjQ6MCwyNToxMzExMDQsMjY6MTM0MzQ4ODAwLDI3OjEzNDIxOTgwOCwyODoxMzQzNTA4ODAsMjk6MTMzMTIwLDMwOjIwODAsMzE6MTM0MjE3NzI4LDIxNDc0ODM2NjQ6MTMxMDcyLDIxNDc0ODM2NjU6MjA0OCwyMTQ3NDgzNjY2OjEzNDM0ODgzMiwyMTQ3NDgzNjY3OjEzMzE1MiwyMTQ3NDgzNjY4OjMyLDIxNDc0ODM2Njk6MTM0MzQ4ODAwLDIxNDc0ODM2NzA6MTM0MjE3NzI4LDIxNDc0ODM2NzE6MTM0MjE5ODA4LDIxNDc0ODM2NzI6MTM0MzUwODgwLDIxNDc0ODM2NzM6MTM0MjE3NzYwLDIxNDc0ODM2NzQ6MTM0MjE5Nzc2LDIxNDc0ODM2NzU6MCwyMTQ3NDgzNjc2OjEzMzEyMCwyMTQ3NDgzNjc3OjIwODAsMjE0NzQ4MzY3ODoxMzExMDQsMjE0NzQ4MzY3OToxMzQzNTA4NDh9XSx1PVs0MTYwNzQ5NTY5LDUyODQ4MjMwNCwzMzAzMDE0NCwyMDY0Mzg0LDEyOTAyNCw4MDY0LDUwNCwyMTQ3NDgzNjc5XSxkPWEuREVTPXMuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9rZXkscj10LndvcmRzLGU9W10saT0wO2k8NTY7aSsrKXt2YXIgbj1jW2ldLTE7ZVtpXT1yW24+Pj41XT4+PjMxLW4lMzImMX1mb3IodmFyIG89dGhpcy5fc3ViS2V5cz1bXSxzPTA7czwxNjtzKyspe2Zvcih2YXIgYT1vW3NdPVtdLGY9bFtzXSxpPTA7aTwyNDtpKyspYVtpLzZ8MF18PWVbKGhbaV0tMStmKSUyOF08PDMxLWklNixhWzQrKGkvNnwwKV18PWVbMjgrKGhbaSsyNF0tMStmKSUyOF08PDMxLWklNjthWzBdPWFbMF08PDF8YVswXT4+PjMxO2Zvcih2YXIgaT0xO2k8NztpKyspYVtpXT1hW2ldPj4+NCooaS0xKSszO2FbN109YVs3XTw8NXxhWzddPj4+Mjd9Zm9yKHZhciB1PXRoaXMuX2ludlN1YktleXM9W10saT0wO2k8MTY7aSsrKXVbaV09b1sxNS1pXX0sZW5jcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9zdWJLZXlzKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9pbnZTdWJLZXlzKX0sX2RvQ3J5cHRCbG9jazpmdW5jdGlvbih0LGksbil7dGhpcy5fbEJsb2NrPXRbaV0sdGhpcy5fckJsb2NrPXRbaSsxXSxyLmNhbGwodGhpcyw0LDI1MjY0NTEzNSksci5jYWxsKHRoaXMsMTYsNjU1MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxlLmNhbGwodGhpcyw4LDE2NzExOTM1KSxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpO2Zvcih2YXIgbz0wO288MTY7bysrKXtmb3IodmFyIHM9bltvXSxhPXRoaXMuX2xCbG9jayxjPXRoaXMuX3JCbG9jayxoPTAsbD0wO2w8ODtsKyspaHw9ZltsXVsoKGNec1tsXSkmdVtsXSk+Pj4wXTt0aGlzLl9sQmxvY2s9Yyx0aGlzLl9yQmxvY2s9YV5ofXZhciBkPXRoaXMuX2xCbG9jazt0aGlzLl9sQmxvY2s9dGhpcy5fckJsb2NrLHRoaXMuX3JCbG9jaz1kLHIuY2FsbCh0aGlzLDEsMTQzMTY1NTc2NSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksZS5jYWxsKHRoaXMsMiw4NTg5OTM0NTkpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxyLmNhbGwodGhpcyw0LDI1MjY0NTEzNSksdFtpXT10aGlzLl9sQmxvY2ssdFtpKzFdPXRoaXMuX3JCbG9ja30sa2V5U2l6ZToyLGl2U2l6ZToyLGJsb2NrU2l6ZToyfSk7aS5ERVM9cy5fY3JlYXRlSGVscGVyKGQpO3ZhciB2PWEuVHJpcGxlREVTPXMuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleSxyPXQud29yZHM7dGhpcy5fZGVzMT1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDAsMikpKSx0aGlzLl9kZXMyPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoMiw0KSkpLHRoaXMuX2RlczM9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSg0LDYpKSl9LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RlczEuZW5jcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMi5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMzLmVuY3J5cHRCbG9jayh0LHIpfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMzLmRlY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZW5jcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMS5kZWNyeXB0QmxvY2sodCxyKX0sa2V5U2l6ZTo2LGl2U2l6ZToyLGJsb2NrU2l6ZToyfSk7aS5UcmlwbGVERVM9cy5fY3JlYXRlSGVscGVyKHYpfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9TLHI9dGhpcy5faSxlPXRoaXMuX2osaT0wLG49MDtuPDQ7bisrKXtyPShyKzEpJTI1NixlPShlK3Rbcl0pJTI1Njt2YXIgbz10W3JdO3Rbcl09dFtlXSx0W2VdPW8saXw9dFsodFtyXSt0W2VdKSUyNTZdPDwyNC04Km59cmV0dXJuIHRoaXMuX2k9cix0aGlzLl9qPWUsaX12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPW8uUkM0PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9rZXkscj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPXRoaXMuX1M9W10sbj0wO248MjU2O24rKylpW25dPW47Zm9yKHZhciBuPTAsbz0wO248MjU2O24rKyl7dmFyIHM9biVlLGE9cltzPj4+Ml0+Pj4yNC1zJTQqOCYyNTU7bz0obytpW25dK2EpJTI1Njt2YXIgYz1pW25dO2lbbl09aVtvXSxpW29dPWN9dGhpcy5faT10aGlzLl9qPTB9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LGUpe3RbZV1ePXIuY2FsbCh0aGlzKX0sa2V5U2l6ZTo4LGl2U2l6ZTowfSk7ZS5SQzQ9bi5fY3JlYXRlSGVscGVyKHMpO3ZhciBhPW8uUkM0RHJvcD1zLmV4dGVuZCh7Y2ZnOnMuY2ZnLmV4dGVuZCh7ZHJvcDoxOTJ9KSxfZG9SZXNldDpmdW5jdGlvbigpe3MuX2RvUmVzZXQuY2FsbCh0aGlzKTtmb3IodmFyIHQ9dGhpcy5jZmcuZHJvcDt0PjA7dC0tKXIuY2FsbCh0aGlzKX19KTtlLlJDNERyb3A9bi5fY3JlYXRlSGVscGVyKGEpfSgpLHQubW9kZS5DVFJHbGFkbWFuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0KXtpZigyNTU9PT0odD4+MjQmMjU1KSl7dmFyIHI9dD4+MTYmMjU1LGU9dD4+OCYyNTUsaT0yNTUmdDsyNTU9PT1yPyhyPTAsMjU1PT09ZT8oZT0wLDI1NT09PWk/aT0wOisraSk6KytlKTorK3IsdD0wLHQrPXI8PDE2LHQrPWU8PDgsdCs9aX1lbHNlIHQrPTE8PDI0O3JldHVybiB0fWZ1bmN0aW9uIGUodCl7cmV0dXJuIDA9PT0odFswXT1yKHRbMF0pKSYmKHRbMV09cih0WzFdKSksdH12YXIgaT10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCksbj1pLkVuY3J5cHRvcj1pLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemUsbz10aGlzLl9pdixzPXRoaXMuX2NvdW50ZXI7byYmKHM9dGhpcy5fY291bnRlcj1vLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCksZShzKTt2YXIgYT1zLnNsaWNlKDApO2kuZW5jcnlwdEJsb2NrKGEsMCk7Zm9yKHZhciBjPTA7YzxuO2MrKyl0W3IrY11ePWFbY119fSk7cmV0dXJuIGkuRGVjcnlwdG9yPW4saX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fWCxyPXRoaXMuX0MsZT0wO2U8ODtlKyspYVtlXT1yW2VdO3JbMF09clswXSsxMjk1MzA3NTk3K3RoaXMuX2J8MCxyWzFdPXJbMV0rMzU0NTA1MjM3MSsoclswXT4+PjA8YVswXT4+PjA/MTowKXwwLHJbMl09clsyXSs4ODYyNjMwOTIrKHJbMV0+Pj4wPGFbMV0+Pj4wPzE6MCl8MCxyWzNdPXJbM10rMTI5NTMwNzU5NysoclsyXT4+PjA8YVsyXT4+PjA/MTowKXwwLHJbNF09cls0XSszNTQ1MDUyMzcxKyhyWzNdPj4+MDxhWzNdPj4+MD8xOjApfDAscls1XT1yWzVdKzg4NjI2MzA5Misocls0XT4+PjA8YVs0XT4+PjA/MTowKXwwLHJbNl09cls2XSsxMjk1MzA3NTk3KyhyWzVdPj4+MDxhWzVdPj4+MD8xOjApfDAscls3XT1yWzddKzM1NDUwNTIzNzErKHJbNl0+Pj4wPGFbNl0+Pj4wPzE6MCl8MCx0aGlzLl9iPXJbN10+Pj4wPGFbN10+Pj4wPzE6MDtmb3IodmFyIGU9MDtlPDg7ZSsrKXt2YXIgaT10W2VdK3JbZV0sbj02NTUzNSZpLG89aT4+PjE2LHM9KChuKm4+Pj4xNykrbipvPj4+MTUpK28qbyxoPSgoNDI5NDkwMTc2MCZpKSppfDApKygoNjU1MzUmaSkqaXwwKTtjW2VdPXNeaH10WzBdPWNbMF0rKGNbN108PDE2fGNbN10+Pj4xNikrKGNbNl08PDE2fGNbNl0+Pj4xNil8MCx0WzFdPWNbMV0rKGNbMF08PDh8Y1swXT4+PjI0KStjWzddfDAsdFsyXT1jWzJdKyhjWzFdPDwxNnxjWzFdPj4+MTYpKyhjWzBdPDwxNnxjWzBdPj4+MTYpfDAsdFszXT1jWzNdKyhjWzJdPDw4fGNbMl0+Pj4yNCkrY1sxXXwwLHRbNF09Y1s0XSsoY1szXTw8MTZ8Y1szXT4+PjE2KSsoY1syXTw8MTZ8Y1syXT4+PjE2KXwwLHRbNV09Y1s1XSsoY1s0XTw8OHxjWzRdPj4+MjQpK2NbM118MCx0WzZdPWNbNl0rKGNbNV08PDE2fGNbNV0+Pj4xNikrKGNbNF08PDE2fGNbNF0+Pj4xNil8MCx0WzddPWNbN10rKGNbNl08PDh8Y1s2XT4+PjI0KStjWzVdfDB9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1bXSxhPVtdLGM9W10saD1vLlJhYmJpdD1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LndvcmRzLGU9dGhpcy5jZmcuaXYsaT0wO2k8NDtpKyspdFtpXT0xNjcxMTkzNSYodFtpXTw8OHx0W2ldPj4+MjQpfDQyNzgyNTUzNjAmKHRbaV08PDI0fHRbaV0+Pj44KTt2YXIgbj10aGlzLl9YPVt0WzBdLHRbM108PDE2fHRbMl0+Pj4xNix0WzFdLHRbMF08PDE2fHRbM10+Pj4xNix0WzJdLHRbMV08PDE2fHRbMF0+Pj4xNix0WzNdLHRbMl08PDE2fHRbMV0+Pj4xNl0sbz10aGlzLl9DPVt0WzJdPDwxNnx0WzJdPj4+MTYsNDI5NDkwMTc2MCZ0WzBdfDY1NTM1JnRbMV0sdFszXTw8MTZ8dFszXT4+PjE2LDQyOTQ5MDE3NjAmdFsxXXw2NTUzNSZ0WzJdLHRbMF08PDE2fHRbMF0+Pj4xNiw0Mjk0OTAxNzYwJnRbMl18NjU1MzUmdFszXSx0WzFdPDwxNnx0WzFdPj4+MTYsNDI5NDkwMTc2MCZ0WzNdfDY1NTM1JnRbMF1dO3RoaXMuX2I9MDtmb3IodmFyIGk9MDtpPDQ7aSsrKXIuY2FsbCh0aGlzKTtmb3IodmFyIGk9MDtpPDg7aSsrKW9baV1ePW5baSs0JjddO2lmKGUpe3ZhciBzPWUud29yZHMsYT1zWzBdLGM9c1sxXSxoPTE2NzExOTM1JihhPDw4fGE+Pj4yNCl8NDI3ODI1NTM2MCYoYTw8MjR8YT4+PjgpLGw9MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCksZj1oPj4+MTZ8NDI5NDkwMTc2MCZsLHU9bDw8MTZ8NjU1MzUmaDtvWzBdXj1oLG9bMV1ePWYsb1syXV49bCxvWzNdXj11LG9bNF1ePWgsb1s1XV49ZixvWzZdXj1sLG9bN11ePXU7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyl9fSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9YO3IuY2FsbCh0aGlzKSxzWzBdPWlbMF1eaVs1XT4+PjE2XmlbM108PDE2LHNbMV09aVsyXV5pWzddPj4+MTZeaVs1XTw8MTYsc1syXT1pWzRdXmlbMV0+Pj4xNl5pWzddPDwxNixzWzNdPWlbNl1eaVszXT4+PjE2XmlbMV08PDE2O2Zvcih2YXIgbj0wO248NDtuKyspc1tuXT0xNjcxMTkzNSYoc1tuXTw8OHxzW25dPj4+MjQpfDQyNzgyNTUzNjAmKHNbbl08PDI0fHNbbl0+Pj44KSx0W2Urbl1ePXNbbl19LGJsb2NrU2l6ZTo0LGl2U2l6ZToyfSk7ZS5SYWJiaXQ9bi5fY3JlYXRlSGVscGVyKGgpfSgpLHQubW9kZS5DVFI9ZnVuY3Rpb24oKXt2YXIgcj10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCksZT1yLkVuY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fY2lwaGVyLGk9ZS5ibG9ja1NpemUsbj10aGlzLl9pdixvPXRoaXMuX2NvdW50ZXI7biYmKG89dGhpcy5fY291bnRlcj1uLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCk7dmFyIHM9by5zbGljZSgwKTtlLmVuY3J5cHRCbG9jayhzLDApLG9baS0xXT1vW2ktMV0rMXwwO2Zvcih2YXIgYT0wO2E8aTthKyspdFtyK2FdXj1zW2FdfX0pO3JldHVybiByLkRlY3J5cHRvcj1lLHJ9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+Pj4wPGFbMF0+Pj4wPzE6MCl8MCxyWzJdPXJbMl0rODg2MjYzMDkyKyhyWzFdPj4+MDxhWzFdPj4+MD8xOjApfDAsclszXT1yWzNdKzEyOTUzMDc1OTcrKHJbMl0+Pj4wPGFbMl0+Pj4wPzE6MCl8MCxyWzRdPXJbNF0rMzU0NTA1MjM3MSsoclszXT4+PjA8YVszXT4+PjA/MTowKXwwLHJbNV09cls1XSs4ODYyNjMwOTIrKHJbNF0+Pj4wPGFbNF0+Pj4wPzE6MCl8MCxyWzZdPXJbNl0rMTI5NTMwNzU5Nysocls1XT4+PjA8YVs1XT4+PjA/MTowKXwwLHJbN109cls3XSszNTQ1MDUyMzcxKyhyWzZdPj4+MDxhWzZdPj4+MD8xOjApfDAsdGhpcy5fYj1yWzddPj4+MDxhWzddPj4+MD8xOjA7Zm9yKHZhciBlPTA7ZTw4O2UrKyl7dmFyIGk9dFtlXStyW2VdLG49NjU1MzUmaSxvPWk+Pj4xNixzPSgobipuPj4+MTcpK24qbz4+PjE1KStvKm8saD0oKDQyOTQ5MDE3NjAmaSkqaXwwKSsoKDY1NTM1JmkpKml8MCk7Y1tlXT1zXmh9dFswXT1jWzBdKyhjWzddPDwxNnxjWzddPj4+MTYpKyhjWzZdPDwxNnxjWzZdPj4+MTYpfDAsdFsxXT1jWzFdKyhjWzBdPDw4fGNbMF0+Pj4yNCkrY1s3XXwwLHRbMl09Y1syXSsoY1sxXTw8MTZ8Y1sxXT4+PjE2KSsoY1swXTw8MTZ8Y1swXT4+PjE2KXwwLHRbM109Y1szXSsoY1syXTw8OHxjWzJdPj4+MjQpK2NbMV18MCx0WzRdPWNbNF0rKGNbM108PDE2fGNbM10+Pj4xNikrKGNbMl08PDE2fGNbMl0+Pj4xNil8MCx0WzVdPWNbNV0rKGNbNF08PDh8Y1s0XT4+PjI0KStjWzNdfDAsdFs2XT1jWzZdKyhjWzVdPDwxNnxjWzVdPj4+MTYpKyhjWzRdPDwxNnxjWzRdPj4+MTYpfDAsdFs3XT1jWzddKyhjWzZdPDw4fGNbNl0+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXRMZWdhY3k9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fa2V5LndvcmRzLGU9dGhpcy5jZmcuaXYsaT10aGlzLl9YPVt0WzBdLHRbM108PDE2fHRbMl0+Pj4xNix0WzFdLHRbMF08PDE2fHRbM10+Pj4xNix0WzJdLHRbMV08PDE2fHRbMF0+Pj4xNix0WzNdLHRbMl08PDE2fHRbMV0+Pj4xNl0sbj10aGlzLl9DPVt0WzJdPDwxNnx0WzJdPj4+MTYsNDI5NDkwMTc2MCZ0WzBdfDY1NTM1JnRbMV0sdFszXTw8MTZ8dFszXT4+PjE2LDQyOTQ5MDE3NjAmdFsxXXw2NTUzNSZ0WzJdLHRbMF08PDE2fHRbMF0+Pj4xNiw0Mjk0OTAxNzYwJnRbMl18NjU1MzUmdFszXSx0WzFdPDwxNnx0WzFdPj4+MTYsNDI5NDkwMTc2MCZ0WzNdfDY1NTM1JnRbMF1dO3RoaXMuX2I9MDtmb3IodmFyIG89MDtvPDQ7bysrKXIuY2FsbCh0aGlzKTtmb3IodmFyIG89MDtvPDg7bysrKW5bb11ePWlbbys0JjddO2lmKGUpe3ZhciBzPWUud29yZHMsYT1zWzBdLGM9c1sxXSxoPTE2NzExOTM1JihhPDw4fGE+Pj4yNCl8NDI3ODI1NTM2MCYoYTw8MjR8YT4+PjgpLGw9MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCksZj1oPj4+MTZ8NDI5NDkwMTc2MCZsLHU9bDw8MTZ8NjU1MzUmaDtuWzBdXj1oLG5bMV1ePWYsblsyXV49bCxuWzNdXj11LG5bNF1ePWgsbls1XV49ZixuWzZdXj1sLG5bN11ePXU7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyl9fSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9YO3IuY2FsbCh0aGlzKSxzWzBdPWlbMF1eaVs1XT4+PjE2XmlbM108PDE2LHNbMV09aVsyXV5pWzddPj4+MTZeaVs1XTw8MTYsc1syXT1pWzRdXmlbMV0+Pj4xNl5pWzddPDwxNixzWzNdPWlbNl1eaVszXT4+PjE2XmlbMV08PDE2O2Zvcih2YXIgbj0wO248NDtuKyspc1tuXT0xNjcxMTkzNSYoc1tuXTw8OHxzW25dPj4+MjQpfDQyNzgyNTUzNjAmKHNbbl08PDI0fHNbbl0+Pj44KSx0W2Urbl1ePXNbbl19LGJsb2NrU2l6ZTo0LGl2U2l6ZToyfSk7ZS5SYWJiaXRMZWdhY3k9bi5fY3JlYXRlSGVscGVyKGgpfSgpLHQucGFkLlplcm9QYWRkaW5nPXtwYWQ6ZnVuY3Rpb24odCxyKXt2YXIgZT00KnI7dC5jbGFtcCgpLHQuc2lnQnl0ZXMrPWUtKHQuc2lnQnl0ZXMlZXx8ZSl9LHVucGFkOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcy0xOyEocltlPj4+Ml0+Pj4yNC1lJTQqOCYyNTUpOyllLS07dC5zaWdCeXRlcz1lKzF9fSx0fSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyeXB0by1qcy5taW4uanMubWFwIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoSprite.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '4fa6cO05aBKGoM+5EX9zhkC', 'TmoSprite'); -// Script/TmoSprite.js - -"use strict"; - -exports.__esModule = true; -exports["default"] = void 0; -var _TmoAssembler = require("./TmoAssembler"); -var _default = cc.Class({ - "extends": cc.Sprite, - /** - * 设置TextureIndex - */ - setTextureIdx: function setTextureIdx(idx) { - this._textureIdx = idx; - this.setVertsDirty(); - }, - _getDefaultMaterial: function _getDefaultMaterial() { - // 从TiledMap取得默认的材质 - return this._getTiledMap().getObjectMaterial(); - }, - _updateMaterial: function _updateMaterial() { - // make sure material is belong to self. - var material = this.getMaterial(0); - if (material) { - if (material.getDefine('USE_TEXTURE') !== undefined) { - material.define('USE_TEXTURE', true); - } - // 手动设置哈希值,避免无法合批 - material.updateHash(999999); - - // 增加WITH_COLOR宏定义 - var noColor = this.isNoColor(); - material.define('WITH_COLOR', !noColor); - } - cc.BlendFunc.prototype._updateMaterial.call(this); - }, - _resetAssembler: function _resetAssembler() { - // 修改默认Assembler - var assembler = this._assembler = new _TmoAssembler.TmoAssembler(); - assembler.init(this); - this._updateColor(); - this.setVertsDirty(); - }, - _getTiledMap: function _getTiledMap() { - return this.node._tiledMap; - }, - isNoColor: function isNoColor() { - return this._getTiledMap().isNoColor(); - } -}); -exports["default"] = _default; -module.exports = exports["default"]; - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vU3ByaXRlLmpzIl0sIm5hbWVzIjpbIl9UbW9Bc3NlbWJsZXIiLCJyZXF1aXJlIiwiX2RlZmF1bHQiLCJjYyIsIkNsYXNzIiwiU3ByaXRlIiwic2V0VGV4dHVyZUlkeCIsImlkeCIsIl90ZXh0dXJlSWR4Iiwic2V0VmVydHNEaXJ0eSIsIl9nZXREZWZhdWx0TWF0ZXJpYWwiLCJfZ2V0VGlsZWRNYXAiLCJnZXRPYmplY3RNYXRlcmlhbCIsIl91cGRhdGVNYXRlcmlhbCIsIm1hdGVyaWFsIiwiZ2V0TWF0ZXJpYWwiLCJnZXREZWZpbmUiLCJ1bmRlZmluZWQiLCJkZWZpbmUiLCJ1cGRhdGVIYXNoIiwibm9Db2xvciIsImlzTm9Db2xvciIsIkJsZW5kRnVuYyIsInByb3RvdHlwZSIsImNhbGwiLCJfcmVzZXRBc3NlbWJsZXIiLCJhc3NlbWJsZXIiLCJfYXNzZW1ibGVyIiwiVG1vQXNzZW1ibGVyIiwiaW5pdCIsIl91cGRhdGVDb2xvciIsIm5vZGUiLCJfdGlsZWRNYXAiLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsYUFBQSxHQUFBQyxPQUFBO0FBQThDLElBQUFDLFFBQUEsR0FFL0JDLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ3BCLFdBQVNELEVBQUUsQ0FBQ0UsTUFBTTtFQUVsQjtBQUNKO0FBQ0E7RUFDSUMsYUFBYSxXQUFBQSxjQUFDQyxHQUFHLEVBQUU7SUFDZixJQUFJLENBQUNDLFdBQVcsR0FBR0QsR0FBRztJQUN0QixJQUFJLENBQUNFLGFBQWEsRUFBRTtFQUN4QixDQUFDO0VBRURDLG1CQUFtQixXQUFBQSxvQkFBQSxFQUFHO0lBQ2xCO0lBQ0EsT0FBTyxJQUFJLENBQUNDLFlBQVksRUFBRSxDQUFDQyxpQkFBaUIsRUFBRTtFQUNsRCxDQUFDO0VBRURDLGVBQWUsV0FBQUEsZ0JBQUEsRUFBRztJQUNkO0lBQ0EsSUFBSUMsUUFBUSxHQUFHLElBQUksQ0FBQ0MsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNsQyxJQUFJRCxRQUFRLEVBQUU7TUFDVixJQUFJQSxRQUFRLENBQUNFLFNBQVMsQ0FBQyxhQUFhLENBQUMsS0FBS0MsU0FBUyxFQUFFO1FBQ2pESCxRQUFRLENBQUNJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsSUFBSSxDQUFDO01BQ3hDO01BQ0E7TUFDQUosUUFBUSxDQUFDSyxVQUFVLENBQUMsTUFBTSxDQUFDOztNQUUzQjtNQUNBLElBQUlDLE9BQU8sR0FBRyxJQUFJLENBQUNDLFNBQVMsRUFBRTtNQUM5QlAsUUFBUSxDQUFDSSxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUNFLE9BQU8sQ0FBQztJQUMzQztJQUVBakIsRUFBRSxDQUFDbUIsU0FBUyxDQUFDQyxTQUFTLENBQUNWLGVBQWUsQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQztFQUNyRCxDQUFDO0VBRURDLGVBQWUsV0FBQUEsZ0JBQUEsRUFBRztJQUNkO0lBQ0EsSUFBSUMsU0FBUyxHQUFHLElBQUksQ0FBQ0MsVUFBVSxHQUFHLElBQUlDLDBCQUFZLEVBQUU7SUFDcERGLFNBQVMsQ0FBQ0csSUFBSSxDQUFDLElBQUksQ0FBQztJQUVwQixJQUFJLENBQUNDLFlBQVksRUFBRTtJQUNuQixJQUFJLENBQUNyQixhQUFhLEVBQUU7RUFDeEIsQ0FBQztFQUVERSxZQUFZLFdBQUFBLGFBQUEsRUFBRztJQUNYLE9BQU8sSUFBSSxDQUFDb0IsSUFBSSxDQUFDQyxTQUFTO0VBQzlCLENBQUM7RUFFRFgsU0FBUyxXQUFBQSxVQUFBLEVBQUc7SUFDUixPQUFPLElBQUksQ0FBQ1YsWUFBWSxFQUFFLENBQUNVLFNBQVMsRUFBRTtFQUMxQztBQUNKLENBQUMsQ0FBQztBQUFBWSxPQUFBLGNBQUEvQixRQUFBO0FBQUFnQyxNQUFBLENBQUFELE9BQUEsR0FBQUEsT0FBQSIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG1vQXNzZW1ibGVyIH0gZnJvbSBcIi4vVG1vQXNzZW1ibGVyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjYy5DbGFzcyh7XHJcbiAgICBleHRlbmRzOiBjYy5TcHJpdGUsXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDorr7nva5UZXh0dXJlSW5kZXhcclxuICAgICAqL1xyXG4gICAgc2V0VGV4dHVyZUlkeChpZHgpIHtcclxuICAgICAgICB0aGlzLl90ZXh0dXJlSWR4ID0gaWR4XHJcbiAgICAgICAgdGhpcy5zZXRWZXJ0c0RpcnR5KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9nZXREZWZhdWx0TWF0ZXJpYWwoKSB7XHJcbiAgICAgICAgLy8g5LuOVGlsZWRNYXDlj5blvpfpu5jorqTnmoTmnZDotKhcclxuICAgICAgICByZXR1cm4gdGhpcy5fZ2V0VGlsZWRNYXAoKS5nZXRPYmplY3RNYXRlcmlhbCgpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfdXBkYXRlTWF0ZXJpYWwoKSB7XHJcbiAgICAgICAgLy8gbWFrZSBzdXJlIG1hdGVyaWFsIGlzIGJlbG9uZyB0byBzZWxmLlxyXG4gICAgICAgIGxldCBtYXRlcmlhbCA9IHRoaXMuZ2V0TWF0ZXJpYWwoMCk7XHJcbiAgICAgICAgaWYgKG1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXRlcmlhbC5nZXREZWZpbmUoJ1VTRV9URVhUVVJFJykgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgbWF0ZXJpYWwuZGVmaW5lKCdVU0VfVEVYVFVSRScsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOaJi+WKqOiuvue9ruWTiOW4jOWAvO+8jOmBv+WFjeaXoOazleWQiOaJuVxyXG4gICAgICAgICAgICBtYXRlcmlhbC51cGRhdGVIYXNoKDk5OTk5OSk7XHJcblxyXG4gICAgICAgICAgICAvLyDlop7liqBXSVRIX0NPTE9S5a6P5a6a5LmJXHJcbiAgICAgICAgICAgIGxldCBub0NvbG9yID0gdGhpcy5pc05vQ29sb3IoKTtcclxuICAgICAgICAgICAgbWF0ZXJpYWwuZGVmaW5lKCdXSVRIX0NPTE9SJywgIW5vQ29sb3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY2MuQmxlbmRGdW5jLnByb3RvdHlwZS5fdXBkYXRlTWF0ZXJpYWwuY2FsbCh0aGlzKTtcclxuICAgIH0sXHJcblxyXG4gICAgX3Jlc2V0QXNzZW1ibGVyKCkge1xyXG4gICAgICAgIC8vIOS/ruaUuem7mOiupEFzc2VtYmxlclxyXG4gICAgICAgIGxldCBhc3NlbWJsZXIgPSB0aGlzLl9hc3NlbWJsZXIgPSBuZXcgVG1vQXNzZW1ibGVyKCk7XHJcbiAgICAgICAgYXNzZW1ibGVyLmluaXQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZUNvbG9yKCk7XHJcbiAgICAgICAgdGhpcy5zZXRWZXJ0c0RpcnR5KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIF9nZXRUaWxlZE1hcCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ub2RlLl90aWxlZE1hcDtcclxuICAgIH0sXHJcblxyXG4gICAgaXNOb0NvbG9yKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9nZXRUaWxlZE1hcCgpLmlzTm9Db2xvcigpO1xyXG4gICAgfVxyXG59KTtcclxuIl19 -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/shop/script/shop.js'; + var __filename = 'preview-scripts/assets/Script/prop/Adhesive.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -16464,92 +12003,80 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '48bfeZuYFZE2qmgxbW2IigB', 'shop'); -// shop/script/shop.ts +cc._RF.push(module, '5fc5bz1aV5PKIBJQh99jpm2', 'Adhesive'); +// Script/prop/Adhesive.ts -"use strict"; -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -var NewClass = /** @class */ (function (_super) { - __extends(NewClass, _super); - function NewClass() { - var _this = _super !== null && _super.apply(this, arguments) || this; - //商店界面 - _this.shop = null; - //商品列表 - _this.itemList = null; - return _this; - // update (dt) {} - } - // onLoad () {} - NewClass.prototype.start = function () { - this.openShop(); - }; - //打开商店界面 - NewClass.prototype.openShop = function () { - // 商品数据数组 - var products = [ - { product_id: "gold_pack_1", name: "金币包1", price: 600, title: "3x2六档金币" }, - { product_id: "gold_pack_2", name: "金币包2", price: 3600, title: "" }, - { product_id: "gold_pack_3", name: "金币包3", price: 6800, title: "" }, - { product_id: "gold_pack_4", name: "金币包4", price: 12800, title: "" }, - { product_id: "gold_pack_5", name: "金币包5", price: 32800, title: "" }, - { product_id: "gold_pack_6", name: "金币包6", price: 64800, title: "" }, - { product_id: "unlimited_health_bundle_1", name: "无限体力组合包1", price: 1800, title: "3个横版礼包" }, - { product_id: "unlimited_health_bundle_2", name: "无限体力组合包2", price: 6600, title: "" } - ]; - for (var i = 1; i <= 8 && i < this.itemList.children.length; i++) { - var spriteComp = this.itemList.children[i].children[0].getComponent(cc.Sprite); - var price = this.itemList.children[i].children[1].getComponent(cc.Label); - var title = this.itemList.children[i].children[2].getComponent(cc.Label); - var product = products[i - 1]; - if (spriteComp && product) { - // TODO: 根据 product_id 或 name 设置 spriteComp.spriteFrame - } - if (price && product) { - price.string = (product.price / 100).toString() + "元"; - } - if (title && product) { - title.string = product.name; - } - } - }; - //关闭商店界面 - NewClass.prototype.closeShop = function () { - //销毁预制体 - this.shop.destroy(); - }; - __decorate([ - property(cc.Node) - ], NewClass.prototype, "shop", void 0); - __decorate([ - property(cc.Node) - ], NewClass.prototype, "itemList", void 0); - NewClass = __decorate([ - ccclass - ], NewClass); - return NewClass; -}(cc.Component)); -exports.default = NewClass; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Adhesive = /** @class */ (function (_super) { + __extends(Adhesive, _super); + function Adhesive() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.time = 60; + _this.pos = { x: 0, y: 0 }; + return _this; + } + Adhesive.prototype.onLoad = function () { + this.pos.x = this.pos.y = 0; + this.target = null; + }; + Adhesive.prototype.start = function () { + }; + Adhesive.prototype.init = function (node) { + this.pos.x = node.x - this.node.x; + this.pos.y = node.y - this.node.y; + this.target = node; + }; + Adhesive.prototype.remove = function () { + var _this = this; + this.target = null; + for (var j = 0; j < this.node.children.length; j++) { + if (this.node.children[j].active == true) { + this.node.children[j].getComponent(sp.Skeleton).setAnimation(0, "animation", false); + } + } + setTimeout(function () { + _this.node.active = false; + }, 2000); + }; + Adhesive.prototype.update = function (dt) { + if (this.target != null) { + this.node.x = this.target.x - this.pos.x; + this.node.y = this.target.y - this.pos.y; + } + }; + Adhesive = __decorate([ + ccclass + ], Adhesive); + return Adhesive; +}(cc.Component)); +exports.default = Adhesive; cc._RF.pop(); } @@ -16562,13 +12089,13 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxzaG9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBa0RDO1FBakRHLE1BQU07UUFFTixVQUFJLEdBQVksSUFBSSxDQUFDO1FBQ3JCLE1BQU07UUFFTixjQUFRLEdBQVksSUFBSSxDQUFDOztRQTJDekIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQ0csZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVE7SUFDUiwyQkFBUSxHQUFSO1FBQ0ksU0FBUztRQUNULElBQU0sUUFBUSxHQUFHO1lBQ2IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3pFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNuRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbkUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3BFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNwRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDcEUsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDM0YsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7U0FDeEYsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRTtnQkFDdkIsdURBQXVEO2FBQzFEO1lBQ0QsSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDekQ7WUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzthQUMvQjtTQUNKO0lBQ0wsQ0FBQztJQUdELFFBQVE7SUFDUiw0QkFBUyxHQUFUO1FBQ0ksT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQTVDRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBR3JCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7OENBQ087SUFOUixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBa0Q1QjtJQUFELGVBQUM7Q0FsREQsQUFrREMsQ0FsRHFDLEVBQUUsQ0FBQyxTQUFTLEdBa0RqRDtrQkFsRG9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlzdCBmcm9tIFwiLi4vLi4vU2NyaXB0L21vZHVsZS9SYW5rTGlzdC9MaXN0XCI7XHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgLy/llYblupfnlYzpnaJcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2hvcDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICAvL+WVhuWTgeWIl+ihqFxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBpdGVtTGlzdDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCgpIHtcclxuICAgICAgICB0aGlzLm9wZW5TaG9wKCk7XHJcbiAgICB9XHJcbiAgICAvL+aJk+W8gOWVhuW6l+eVjOmdolxyXG4gICAgb3BlblNob3AoKSB7XHJcbiAgICAgICAgLy8g5ZWG5ZOB5pWw5o2u5pWw57uEXHJcbiAgICAgICAgY29uc3QgcHJvZHVjdHMgPSBbXHJcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfMVwiLCBuYW1lOiBcIumHkeW4geWMhTFcIiwgcHJpY2U6IDYwMCwgdGl0bGU6IFwiM3gy5YWt5qGj6YeR5biBXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja18yXCIsIG5hbWU6IFwi6YeR5biB5YyFMlwiLCBwcmljZTogMzYwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja18zXCIsIG5hbWU6IFwi6YeR5biB5YyFM1wiLCBwcmljZTogNjgwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja180XCIsIG5hbWU6IFwi6YeR5biB5YyFNFwiLCBwcmljZTogMTI4MDAsIHRpdGxlOiBcIlwiIH0sXHJcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfNVwiLCBuYW1lOiBcIumHkeW4geWMhTVcIiwgcHJpY2U6IDMyODAwLCB0aXRsZTogXCJcIiB9LFxyXG4gICAgICAgICAgICB7IHByb2R1Y3RfaWQ6IFwiZ29sZF9wYWNrXzZcIiwgbmFtZTogXCLph5HluIHljIU2XCIsIHByaWNlOiA2NDgwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzFcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUxXCIsIHByaWNlOiAxODAwLCB0aXRsZTogXCIz5Liq5qiq54mI56S85YyFXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzJcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUyXCIsIHByaWNlOiA2NjAwLCB0aXRsZTogXCJcIiB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA4ICYmIGkgPCB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcml0ZUNvbXAgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzBdLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmljZSA9IHRoaXMuaXRlbUxpc3QuY2hpbGRyZW5baV0uY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChjYy5MYWJlbCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb2R1Y3QgPSBwcm9kdWN0c1tpIC0gMV07XHJcbiAgICAgICAgICAgIGlmIChzcHJpdGVDb21wICYmIHByb2R1Y3QpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IOagueaNriBwcm9kdWN0X2lkIOaIliBuYW1lIOiuvue9riBzcHJpdGVDb21wLnNwcml0ZUZyYW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHByaWNlICYmIHByb2R1Y3QpIHtcclxuICAgICAgICAgICAgICAgIHByaWNlLnN0cmluZyA9IChwcm9kdWN0LnByaWNlIC8gMTAwKS50b1N0cmluZygpICsgXCLlhYNcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGl0bGUgJiYgcHJvZHVjdCkge1xyXG4gICAgICAgICAgICAgICAgdGl0bGUuc3RyaW5nID0gcHJvZHVjdC5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL+WFs+mXreWVhuW6l+eVjOmdolxyXG4gICAgY2xvc2VTaG9wKCkge1xyXG4gICAgICAgIC8v6ZSA5q+B6aKE5Yi25L2TXHJcbiAgICAgICAgdGhpcy5zaG9wLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxwcm9wXFxBZGhlc2l2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUk1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUsxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQXVDQztRQXJDRyxVQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLFNBQUcsR0FBUSxFQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBQyxDQUFDOztJQW9DNUIsQ0FBQztJQWpDRyx5QkFBTSxHQUFOO1FBQ0ksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx3QkFBSyxHQUFMO0lBQ0EsQ0FBQztJQUVELHVCQUFJLEdBQUosVUFBSyxJQUFJO1FBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCx5QkFBTSxHQUFOO1FBQUEsaUJBVUM7UUFURyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNuQixLQUFJLElBQUksQ0FBQyxHQUFFLENBQUMsRUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFDO1lBQzNDLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLElBQUksRUFBQztnQkFDcEMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFDLFdBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQzthQUNyRjtTQUNKO1FBQ0QsVUFBVSxDQUFDO1lBQ1AsS0FBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQzdCLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7SUFHRCx5QkFBTSxHQUFOLFVBQVEsRUFBRTtRQUNOLElBQUcsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLEVBQUM7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBdENnQixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBdUM1QjtJQUFELGVBQUM7Q0F2Q0QsQUF1Q0MsQ0F2Q3FDLEVBQUUsQ0FBQyxTQUFTLEdBdUNqRDtrQkF2Q29CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4uL01hcFwiO1xyXG5cclxuY29uc3Qge2NjY2xhc3MsIHByb3BlcnR5fSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG5cclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFkaGVzaXZlIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IGFueTtcclxuICAgIHRpbWU6IG51bWJlciA9IDYwO1xyXG4gICAgcG9zOiBhbnkgPSB7eDogMCwgeTogMH07XHJcbiAgICB0YXJnZXQ6IGFueTtcclxuXHJcbiAgICBvbkxvYWQgKCkgeyBcclxuICAgICAgICB0aGlzLnBvcy54ID0gdGhpcy5wb3MueSA9IDA7XHJcbiAgICAgICAgdGhpcy50YXJnZXQgPSBudWxsO1xyXG4gICAgfSBcclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdChub2RlKXtcclxuICAgICAgICB0aGlzLnBvcy54ID0gbm9kZS54IC0gdGhpcy5ub2RlLng7XHJcbiAgICAgICAgdGhpcy5wb3MueSA9IG5vZGUueSAtIHRoaXMubm9kZS55O1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbm9kZTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmUoKXtcclxuICAgICAgICB0aGlzLnRhcmdldCA9IG51bGw7XHJcbiAgICAgICAgZm9yKGxldCBqID0wOyBqPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGorKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltqXS5hY3RpdmUgPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5bal0uZ2V0Q29tcG9uZW50KHNwLlNrZWxldG9uKS5zZXRBbmltYXRpb24oMCxcImFuaW1hdGlvblwiLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0sIDIwMDApO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICB1cGRhdGUgKGR0KSB7XHJcbiAgICAgICAgaWYodGhpcy50YXJnZXQgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS54ID0gdGhpcy50YXJnZXQueCAtIHRoaXMucG9zLng7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS55ID0gdGhpcy50YXJnZXQueSAtIHRoaXMucG9zLnk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ== //------QC-SOURCE-SPLIT------ (function() { var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_pool_util.js'; + var __filename = 'preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js'; var __require = nodeEnv ? function (request) { return cc.require(request); } : function (request) { @@ -16576,130 +12103,28 @@ cc._RF.pop(); }; function __define (exports, require, module) { if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '984882e2dpD17LvCQnTDykE', 'lq_pool_util'); -// Script/lq_base/util/lq_pool_util.ts +cc._RF.push(module, '7a231Rz0d9LBYYgY3bDYlLB', 'use_v2.1-2.2.1_cc.Toggle_event'); +// migration/use_v2.1-2.2.1_cc.Toggle_event.js -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQPoolUtil = void 0; -var Animation = cc.Animation; -var ParticleSystem = cc.ParticleSystem; -var instantiate = cc.instantiate; -var LQPoolUtil = /** @class */ (function () { - function LQPoolUtil() { - } - LQPoolUtil.reset_ani = function (node) { - var ani = node.getComponent(Animation); - if (ani) { - var clip = ani.currentClip ? ani.currentClip : ani.defaultClip; - if (!clip) { - return; - } - if (ani.playOnLoad && clip && clip.wrapMode === cc.WrapMode.Normal) { - ani.play(clip.name); - } - } - else { - var ani_1 = node.getComponent(sp.Skeleton); - if (ani_1 && !ani_1.loop) { - ani_1.setAnimation(0, ani_1.animation, false); - } - } - for (var i = 0; i < node.childrenCount; i++) { - var child = node.children[i]; - this.reset_ani(child); - } - }; - LQPoolUtil.recursion_stop_particle = function (node, obj) { - var p = node.getComponent(ParticleSystem); - if (p) { - p.stopSystem(); - obj.has = true; - p.node.opacity = 0; - } - for (var i = 0; i < node.childrenCount; i++) { - var child = node.children[i]; - this.recursion_stop_particle(child, obj); - } - }; - LQPoolUtil.recursion_reset_particle = function (node) { - if (!node.isValid) { - return; - } - var p = node.getComponent(ParticleSystem); - if (p) { - p.resetSystem(); - p.node.opacity = 255; - } - for (var i = 0; i < node.childrenCount; i++) { - var child = node.children[i]; - this.recursion_reset_particle(child); - } - }; - LQPoolUtil.get_node_from_pool = function (node_parent, prefab) { - var arr = this.any_pool[prefab.uuid]; - if (!arr) { - this.any_pool[prefab.uuid] = []; - arr = []; - } - var node = arr.pop(); - if (!node || !node.isValid) { - node = instantiate(prefab); - //@ts-ignore - node.recovery_uuid = prefab.uuid; - //@ts-ignore - node.is_from_pool = false; - node_parent.addChild(node); - } - else { - node.active = true; - //@ts-ignore - node.is_from_pool = true; - this.reset_ani(node); - } - return node; - }; - LQPoolUtil.check_pool_push = function (arr, node) { - for (var i = 0; i < arr.length; i++) { - if (arr[i] === node) { - //@ts-ignore - console.warn("\u6C60\u5B50\u4E0D\u80FD\u91CD\u590D\u6DFB\u52A0\u8282\u70B9", node.name, node.recovery_uuid); - return; - } - } - node.active = false; - arr.push(node); - }; - LQPoolUtil.push_node_to_pool = function (node) { - var _this = this; - //@ts-ignore - if (!node.recovery_uuid || !this.any_pool[node.recovery_uuid]) { - if (node.isValid) { - node.destroy(); - } - return; - } - var obj = { has: false }; - this.recursion_stop_particle(node, obj); - if (obj.has) { - var old_opacity_1 = node.opacity; - node.opacity = 0; - setTimeout(function () { - _this.recursion_reset_particle(node); - node.opacity = old_opacity_1; - //@ts-ignore - _this.check_pool_push(_this.any_pool[node.recovery_uuid], node); - }, 500); - } - else { - //@ts-ignore - this.check_pool_push(this.any_pool[node.recovery_uuid], node); - } - }; - LQPoolUtil.any_pool = {}; - return LQPoolUtil; -}()); -exports.LQPoolUtil = LQPoolUtil; +"use strict"; + +/* + * This script is automatically generated by Cocos Creator and is only used for projects compatible with the v2.1.0 ~ 2.2.1 version. + * You do not need to manually add this script in any other project. + * If you don't use cc.Toggle in your project, you can delete this script directly. + * If your project is hosted in VCS such as git, submit this script together. + * + * 此脚本由 Cocos Creator 自动生成,仅用于兼容 v2.1.0 ~ 2.2.1 版本的工程, + * 你无需在任何其它项目中手动添加此脚本。 + * 如果你的项目中没用到 Toggle,可直接删除该脚本。 + * 如果你的项目有托管于 git 等版本库,请将此脚本一并上传。 + */ + +if (cc.Toggle) { + // Whether to trigger 'toggle' and 'checkEvents' events when modifying 'toggle.isChecked' in the code + // 在代码中修改 'toggle.isChecked' 时是否触发 'toggle' 与 'checkEvents' 事件 + cc.Toggle._triggerEventInScript_isChecked = true; +} cc._RF.pop(); } @@ -16712,7 +12137,2034 @@ cc._RF.pop(); }); } })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wb29sX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTyxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUNoQyxJQUFPLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0FBQzFDLElBQU8sV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFFcEM7SUFBQTtJQWdIQSxDQUFDO0lBN0drQixvQkFBUyxHQUF4QixVQUF5QixJQUFVO1FBQy9CLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQy9ELElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsT0FBTzthQUNWO1lBQ0QsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNoRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2QjtTQUNKO2FBQU07WUFDSCxJQUFJLEtBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUcsSUFBSSxDQUFDLEtBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLEtBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEtBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDN0M7U0FDSjtRQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMs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QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7YUFBTTtZQUNILFlBQVk7WUFDWixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2pFO0lBQ0wsQ0FBQztJQTlHYyxtQkFBUSxHQUE4QixFQUFFLENBQUM7SUErRzVELGlCQUFDO0NBaEhELEFBZ0hDLElBQUE7QUFoSFksZ0NBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSA9IGNjLk5vZGU7XHJcbmltcG9ydCBBbmltYXRpb24gPSBjYy5BbmltYXRpb247XHJcbmltcG9ydCBQYXJ0aWNsZVN5c3RlbSA9IGNjLlBhcnRpY2xlU3lzdGVtO1xyXG5pbXBvcnQgaW5zdGFudGlhdGUgPSBjYy5pbnN0YW50aWF0ZTtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBvb2xVdGlsIHtcclxuICAgIHByaXZhdGUgc3RhdGljIGFueV9wb29sOiB7IFtrZXk6IHN0cmluZ106IE5vZGVbXSB9ID0ge307XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRfYW5pKG5vZGU6IE5vZGUpIHtcclxuICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoQW5pbWF0aW9uKTtcclxuICAgICAgICBpZiAoYW5pKSB7XHJcbiAgICAgICAgICAgIGxldCBjbGlwID0gYW5pLmN1cnJlbnRDbGlwID8gYW5pLmN1cnJlbnRDbGlwIDogYW5pLmRlZmF1bHRDbGlwO1xyXG4gICAgICAgICAgICBpZiAoIWNsaXApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYW5pLnBsYXlPbkxvYWQgJiYgY2xpcCAmJiBjbGlwLndyYXBNb2RlID09PSBjYy5XcmFwTW9kZS5Ob3JtYWwpIHtcclxuICAgICAgICAgICAgICAgIGFuaS5wbGF5KGNsaXAubmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xyXG4gICAgICAgICAgICBpZiAoYW5pICYmICFhbmkubG9vcCkge1xyXG4gICAgICAgICAgICAgICAgYW5pLnNldEFuaW1hdGlvbigwLCBhbmkuYW5pbWF0aW9uLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRfYW5pKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlOiBOb2RlLCBvYmo6IHsgaGFzOiBib29sZWFuIH0pIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5nZXRDb21wb25lbnQoUGFydGljbGVTeXN0ZW0pO1xyXG4gICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgIHAuc3RvcFN5c3RlbSgpO1xyXG4gICAgICAgICAgICBvYmouaGFzID0gdHJ1ZTtcclxuICAgICAgICAgICAgcC5ub2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShjaGlsZCwgb2JqKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fcmVzZXRfcGFydGljbGUobm9kZTogTm9kZSkge1xyXG4gICAgICAgIGlmICghbm9kZS5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUuZ2V0Q29tcG9uZW50KFBhcnRpY2xlU3lzdGVtKTtcclxuICAgICAgICBpZiAocCkge1xyXG4gICAgICAgICAgICBwLnJlc2V0U3lzdGVtKCk7XHJcbiAgICAgICAgICAgIHAubm9kZS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fcmVzZXRfcGFydGljbGUoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ub2RlX2Zyb21fcG9vbChub2RlX3BhcmVudDogTm9kZSwgcHJlZmFiOiBOb2RlKSB7XHJcbiAgICAgICAgbGV0IGFyciA9IHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdO1xyXG4gICAgICAgIGlmICghYXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdID0gW107XHJcbiAgICAgICAgICAgIGFyciA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbm9kZSA9IGFyci5wb3AoKTtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICBub2RlID0gaW5zdGFudGlhdGUocHJlZmFiKTtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5vZGUucmVjb3ZlcnlfdXVpZCA9IHByZWZhYi51dWlkO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSBmYWxzZTtcclxuICAgICAgICAgICAgbm9kZV9wYXJlbnQuYWRkQ2hpbGQobm9kZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0X2FuaShub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tfcG9vbF9wdXNoKGFycjogTm9kZVtdLCBub2RlOiBOb2RlKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFycltpXSA9PT0gbm9kZSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYOaxoOWtkOS4jeiDvemHjeWkjea3u+WKoOiKgueCuWAsIG5vZGUubmFtZSwgbm9kZS5yZWNvdmVyeV91dWlkKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGFyci5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcHVzaF9ub2RlX3RvX3Bvb2wobm9kZTogTm9kZSkge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIGlmICghbm9kZS5yZWNvdmVyeV91dWlkIHx8ICF0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0pIHtcclxuICAgICAgICAgICAgaWYgKG5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgICAgbm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmo6IHsgaGFzOiBib29sZWFuIH0gPSB7aGFzOiBmYWxzZX07XHJcbiAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlLCBvYmopO1xyXG4gICAgICAgIGlmIChvYmouaGFzKSB7XHJcbiAgICAgICAgICAgIGxldCBvbGRfb3BhY2l0eSA9IG5vZGUub3BhY2l0eTtcclxuICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlY3Vyc2lvbl9yZXNldF9wYXJ0aWNsZShub2RlKTtcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IG9sZF9vcGFjaXR5O1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ== +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcbWlncmF0aW9uXFx1c2VfdjIuMS0yLjIuMV9jYy5Ub2dnbGVfZXZlbnQuanMiXSwibmFtZXMiOlsiY2MiLCJUb2dnbGUiLCJfdHJpZ2dlckV2ZW50SW5TY3JpcHRfaXNDaGVja2VkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsSUFBSUEsRUFBRSxDQUFDQyxNQUFNLEVBQUU7RUFDWDtFQUNBO0VBQ0FELEVBQUUsQ0FBQ0MsTUFBTSxDQUFDQywrQkFBK0IsR0FBRyxJQUFJO0FBQ3BEIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBUaGlzIHNjcmlwdCBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBDb2NvcyBDcmVhdG9yIGFuZCBpcyBvbmx5IHVzZWQgZm9yIHByb2plY3RzIGNvbXBhdGlibGUgd2l0aCB0aGUgdjIuMS4wIO+9niAyLjIuMSB2ZXJzaW9uLlxyXG4gKiBZb3UgZG8gbm90IG5lZWQgdG8gbWFudWFsbHkgYWRkIHRoaXMgc2NyaXB0IGluIGFueSBvdGhlciBwcm9qZWN0LlxyXG4gKiBJZiB5b3UgZG9uJ3QgdXNlIGNjLlRvZ2dsZSBpbiB5b3VyIHByb2plY3QsIHlvdSBjYW4gZGVsZXRlIHRoaXMgc2NyaXB0IGRpcmVjdGx5LlxyXG4gKiBJZiB5b3VyIHByb2plY3QgaXMgaG9zdGVkIGluIFZDUyBzdWNoIGFzIGdpdCwgc3VibWl0IHRoaXMgc2NyaXB0IHRvZ2V0aGVyLlxyXG4gKlxyXG4gKiDmraTohJrmnKznlLEgQ29jb3MgQ3JlYXRvciDoh6rliqjnlJ/miJDvvIzku4XnlKjkuo7lhbzlrrkgdjIuMS4wIH4gMi4yLjEg54mI5pys55qE5bel56iL77yMXHJcbiAqIOS9oOaXoOmcgOWcqOS7u+S9leWFtuWug+mhueebruS4reaJi+WKqOa3u+WKoOatpOiEmuacrOOAglxyXG4gKiDlpoLmnpzkvaDnmoTpobnnm67kuK3msqHnlKjliLAgVG9nZ2xl77yM5Y+v55u05o6l5Yig6Zmk6K+l6ISa5pys44CCXHJcbiAqIOWmguaenOS9oOeahOmhueebruacieaJmOeuoeS6jiBnaXQg562J54mI5pys5bqT77yM6K+35bCG5q2k6ISa5pys5LiA5bm25LiK5Lyg44CCXHJcbiAqL1xyXG5cclxuaWYgKGNjLlRvZ2dsZSkge1xyXG4gICAgLy8gV2hldGhlciB0byB0cmlnZ2VyICd0b2dnbGUnIGFuZCAnY2hlY2tFdmVudHMnIGV2ZW50cyB3aGVuIG1vZGlmeWluZyAndG9nZ2xlLmlzQ2hlY2tlZCcgaW4gdGhlIGNvZGVcclxuICAgIC8vIOWcqOS7o+eggeS4reS/ruaUuSAndG9nZ2xlLmlzQ2hlY2tlZCcg5pe25piv5ZCm6Kem5Y+RICd0b2dnbGUnIOS4jiAnY2hlY2tFdmVudHMnIOS6i+S7tlxyXG4gICAgY2MuVG9nZ2xlLl90cmlnZ2VyRXZlbnRJblNjcmlwdF9pc0NoZWNrZWQgPSB0cnVlO1xyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/Block.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'c58deN2u1NGZL8nJwvnu1PR', 'Block'); +// Script/Block.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PathType = exports.BlockColor = exports.BlockType = void 0; +var lq_collide_system_1 = require("./lq_collide_system/lq_collide_system"); +var Map_1 = require("./Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var BlockType; +(function (BlockType) { + /*普通地块 */ + BlockType[BlockType["\u666E\u901A\u5757"] = 0] = "\u666E\u901A\u5757"; + /*起点地块 */ + BlockType[BlockType["\u53E0\u52A0\u5757\u4E0B"] = 1] = "\u53E0\u52A0\u5757\u4E0B"; + /*湿地 */ + BlockType[BlockType["\u94A5\u5319\u5757"] = 2] = "\u94A5\u5319\u5757"; + /*山峰 */ + BlockType[BlockType["\u4E0A\u9501\u5757"] = 3] = "\u4E0A\u9501\u5757"; + /*终点地块 */ + BlockType[BlockType["\u51BB\u7ED3\u5757"] = 4] = "\u51BB\u7ED3\u5757"; + /*息壤 */ + BlockType[BlockType["\u661F\u661F\u5757"] = 5] = "\u661F\u661F\u5757"; + /*加固 */ + BlockType[BlockType["\u70B8\u5F39\u5757"] = 6] = "\u70B8\u5F39\u5757"; + /*加固 */ + BlockType[BlockType["\u6C34\u5E73\u5757"] = 7] = "\u6C34\u5E73\u5757"; + /*加固 */ + BlockType[BlockType["\u5782\u76F4\u5757"] = 8] = "\u5782\u76F4\u5757"; + /*加固 */ + BlockType[BlockType["\u7C98\u5408\u5757"] = 9] = "\u7C98\u5408\u5757"; + /*加固 */ + BlockType[BlockType["\u53E0\u52A0\u5757\u4E0A"] = 10] = "\u53E0\u52A0\u5757\u4E0A"; +})(BlockType = exports.BlockType || (exports.BlockType = {})); +var BlockColor; +(function (BlockColor) { + /*起点地块 */ + BlockColor[BlockColor["\u7D2B\u8272"] = 0] = "\u7D2B\u8272"; + /*湿地 */ + BlockColor[BlockColor["\u9EC4\u8272"] = 1] = "\u9EC4\u8272"; + /*山峰 */ + BlockColor[BlockColor["\u7EFF\u8272"] = 2] = "\u7EFF\u8272"; + /*终点地块 */ + BlockColor[BlockColor["\u84DD\u8272"] = 3] = "\u84DD\u8272"; + /*息壤 */ + BlockColor[BlockColor["\u7C89\u8272"] = 4] = "\u7C89\u8272"; + /*加固 */ + BlockColor[BlockColor["\u6A58\u9EC4\u8272"] = 5] = "\u6A58\u9EC4\u8272"; + /*加固 */ + BlockColor[BlockColor["\u9752\u8272"] = 6] = "\u9752\u8272"; + /*加固 */ + BlockColor[BlockColor["\u767D\u8272"] = 7] = "\u767D\u8272"; + /*加固 */ + BlockColor[BlockColor["\u7EA2\u8272"] = 8] = "\u7EA2\u8272"; + /*加固 */ + BlockColor[BlockColor["\u7070\u8272"] = 9] = "\u7070\u8272"; +})(BlockColor = exports.BlockColor || (exports.BlockColor = {})); +var PathType; +(function (PathType) { + PathType["err"] = "err"; + PathType["up"] = "up"; + PathType["down"] = "down"; + PathType["left"] = "left"; + PathType["right"] = "right"; + PathType["up_left"] = "up_left"; + PathType["up_right"] = "up_right"; + PathType["down_left"] = "down_left"; + PathType["down_right"] = "down_right"; + PathType["left_up"] = "left_up"; + PathType["left_down"] = "left_down"; + PathType["right_up"] = "right_up"; + PathType["right_down"] = "right_down"; +})(PathType = exports.PathType || (exports.PathType = {})); +var Block = /** @class */ (function (_super) { + __extends(Block, _super); + function Block() { + var _this = _super !== null && _super.apply(this, arguments) || this; + // 新增缓存变量 + _this.moveInterval = 0; // 约 60 FPS + _this.lastMoveTime = 0; // 上下两个值来调节跟手,一个是时间轴,一个是距离轴 + _this.maxSpeed = 300; // 最大移动距离 + // private otherCollider: cc.Collider = null; + // @property({ + // tooltip: '碰撞形状,None就是无敌,不参与碰撞', + // type: cc.Enum(BlockType), + // // default: BlockType.Nomal, + // displayName: '碰撞形状' + // }) + _this.type = BlockType.普通块; + _this.color = BlockColor.紫色; + _this.heng = 1; + _this.shu = 1; + _this.ice_SpriteFrame = null; + // LIFE-CYCLE CALLBACKS: + // @property(cc.SpriteAtlas) + // UI: cc.SpriteAtlas = null; + _this.initialTouchOffset = null; + _this.offsetTolerance = 100; // 偏移容忍度; + _this.touchPoint = null; //触摸点 + _this.isTouch = false; //是否触摸 + _this.posX = 0; //地图块的X坐标 + _this.posY = 0; //地图块的Y坐标 + _this.moveLeft = true; //是否可以左移; + _this.moveRight = true; //是否可以右移; + _this.moveUp = true; //是否可以上移; + _this.moveDown = true; //是否可以下移; + _this.moveCorner = 0; //是否碰撞角落 + _this.moveY = 0; //是否可以上下移动; + _this.moveX = 0; //是否可以左右移动; + _this.touchPointX = 0; //触摸点X坐标; + _this.touchPointY = 0; //触摸点Y坐标; + _this.blockId = 0; //方块ID; + _this.level = 0; //叠加方块层数; + _this.pz = false; + _this.over = false; //方块是否失效已消失 + _this.touchDelta = cc.v2(0, 0); + _this.checkCollision = false; + return _this; + } + Block.prototype.onLoad = function () { + this.pz = false; + this.stacking = cc.v2(0, 0); + this.adhesive = cc.v2(0, 0); + this.adhesiveNode = []; + this.collider = this.node.getComponent(cc.PolygonCollider); + this.over = false; + this.checkCollision = false; + }; + Block.prototype.start = function () { + }; + Block.prototype.jsonDeepClone = function (obj) { + return JSON.parse(JSON.stringify(obj)); + }; + //createAd 为是否创建粘合快图片 + Block.prototype.init = function (block_Info, posX, posY, node, createAd) { + var _this = this; + this.block_Info = this.jsonDeepClone(block_Info); + if (node) + this.block_Info.node = node; + this.type = block_Info.type; + this.color = block_Info.color; + this.blockId = block_Info.id; + // if(posX&&posY){ + // this.posX = posX; + // this.posY = posY; + // } + // console.log("方块层级",this.node.zIndex); + this.initColor(); + this.initType(); + this.initBlocks(); + if (this.type != BlockType.叠加块上) { + this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); + this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); + this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); + this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); + this.node['_touchListener'].setSwallowTouches(false); + setTimeout(function () { + if (_this.type == BlockType.粘合块) { + // 计算位置偏移 + var posOffset_1 = cc.v2(_this.node.x - _this.block_Info.node.x, _this.node.y - _this.block_Info.node.y); + if (createAd) { + if (_this.node.zIndex >= _this.block_Info.node.zIndex) + _this.createAdhesive(); + else + _this.block_Info.node.getComponent("Block").createAdhesive(); + } + var targetNames_1 = ['top', 'down', 'left', 'right']; + _this.block_Info.node.children.forEach(function (child) { + if (child instanceof cc.Node && targetNames_1.includes(child.name) && child.getComponent("lq_collide").data_string != "-1") { + var clonedChild = cc.instantiate(child); + clonedChild.getComponent("lq_collide").data_string = "-1"; + clonedChild.parent = _this.node; + // 获取子节点相对于父节点的位置 + var relativePos = child.getPosition(); + // 调整子节点位置以保证相对位置不变 + clonedChild.setPosition(relativePos.x - posOffset_1.x, relativePos.y - posOffset_1.y); + } + }); + _this.adhesive = posOffset_1; + } + }, 100); + var mapInfo = Map_1.default._instance.mapInfo; + for (var i = 0; i < mapInfo.length; i++) { + var blockRect = mapInfo[i].getBoundingBox(); + // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 + var point = cc.v2(this.node.position.x - 5, this.node.position.y + 10); + if (blockRect.contains(point)) { + this.posX = mapInfo[i].getComponent("MapBlock").posX; + this.posY = mapInfo[i].getComponent("MapBlock").posY; + this.setMapBlock(); + this.level = 50 + this.posX - this.posY * 3; + this.node.zIndex = this.level; + this.node.x = mapInfo[i].x + 65; + this.node.y = mapInfo[i].y - 60; + i = 10000; + this.hit = new cc.Node(); + this.hit.addComponent(cc.Sprite); + this.hit.parent = this.node; + var name = "xz_" + this.block_Info.block; + this.hit.getComponent(cc.Sprite).spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; + this.hit.setAnchorPoint(this.node.anchorX, this.node.anchorY); + this.hit.setPosition(13, -11); + if (this.hit.anchorX == 0.5) + this.hit.setPosition(0, -11); + else if (this.hit.anchorX == 0.33) + this.hit.setPosition(-13, -11); + else if (this.hit.anchorX == 0.66) + this.hit.setPosition(2, -9); + // this.hit.opacity = 0; + this.hit.active = false; + break; + } + } + } + }; + //初始化方块类型 + Block.prototype.initType = function () { + var _a; + var posConfig = cc.fx.GameConfig.PROP_INFO[this.block_Info.block]; + switch (this.type) { + case BlockType.炸弹块: + var boom = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + boom.parent = this.node; + boom.setPosition(posConfig.pos1.x, posConfig.pos1.y); + if ((_a = this.block_Info) === null || _a === void 0 ? void 0 : _a.boomTime) + boom.getComponent("Boom").init(this.block_Info.boomTime); + break; + case BlockType.星星块: + var star = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + star.anchorX = this.node.anchorX; + star.anchorY = this.node.anchorY; + star.getComponent(cc.Sprite).spriteFrame = star.getComponent("Star").star_SpriteFrame.getSpriteFrame("star_" + this.block_Info.block); + star.parent = this.node; + star.setPosition(posConfig.pos4.x - 10, posConfig.pos4.y); + case BlockType.钥匙块: + var key = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + key.parent = this.node; + key.setPosition(posConfig.pos1.x, posConfig.pos1.y); + break; + case BlockType.上锁块: + var lock = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + lock.parent = this.node; + lock.setPosition(posConfig.pos1.x, posConfig.pos1.y); + lock.getComponent("Lock").init(this.block_Info.lockTime); + break; + case BlockType.冻结块: + var freeze = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + freeze.parent = this.node; + var name = "ice_" + this.block_Info.block; + var spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; + freeze.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; + var freezeX = posConfig.pos6.x - (this.node.width * (this.node.anchorX - 0.5)); + var freezeY = posConfig.pos6.y + this.node.height / 2; + freeze.setPosition(freezeX, freezeY); + freeze.getComponent("Freeze").init(this.block_Info.freezeTime); + freeze.getChildByName("time").setPosition(posConfig.pos5.x - 10 - freezeX, posConfig.pos5.y - 2 - freezeY); + break; + case BlockType.水平块: + var horizontal = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + horizontal.parent = this.node; + var heng = "heng" + this.heng; + horizontal.getChildByName(heng).active = true; + horizontal.setPosition(posConfig.pos2.x - 3, posConfig.pos2.y); + break; + case BlockType.垂直块: + var vertical = cc.instantiate(Map_1.default._instance.Block_Prop[this.type]); + vertical.parent = this.node; + var shu = "shu" + this.shu; + vertical.getChildByName(shu).active = true; + vertical.setPosition(posConfig.pos3.x, posConfig.pos3.y); + break; + case BlockType.叠加块上: + this.moveStack = false; + this.node.off(cc.Node.EventType.TOUCH_START); + this.node.off(cc.Node.EventType.TOUCH_MOVE); + this.node.off(cc.Node.EventType.TOUCH_CANCEL); + this.node.off(cc.Node.EventType.TOUCH_END); + // this.selfBoxColliders = []; + this.node.zIndex = 201; + var pos = this.getStackingPos(); + this.node.setPosition(this.node.x + pos.x, this.node.y + pos.y); + this.stacking = cc.v2(this.node.x - this.block_Info.node.x, this.node.y - this.block_Info.node.y); + this.block_Info.node.getComponent("Block").block_Info.node = this.node; + this.node.scaleX *= 0.7; + this.node.scaleY *= 0.7; + for (var i = 0; i < this.node.children.length; i++) { + if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") + this.node.children[i].active = false; + } + break; + } + }; + //初始化方块颜色 + Block.prototype.initColor = function () { + var name = this.color + "color" + this.block_Info.block; + var number = Math.floor((this.color - 1) / 2); + var blockSpriteFrame = Map_1.default._instance.Block_Color[number]._spriteFrames; + var spriteFrame = blockSpriteFrame[name]; + // if(this.type == BlockType.冻结块){ + // name = "ice_"+this.block_Info.block; + // spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; + // } + this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; + }; + //创建粘合快连接处 + Block.prototype.createAdhesive = function () { + var box = []; + for (var i = 0; i < this.allBlocks.length; i++) { + box.push(cc.v2(this.allBlocks[i].x + this.posX, this.allBlocks[i].y + this.posY)); + } + var otherBox = []; + for (var i = 0; i < this.block_Info.node.getComponent("Block").allBlocks.length; i++) { + otherBox.push(cc.v2(this.block_Info.node.getComponent("Block").allBlocks[i].x + this.block_Info.node.getComponent("Block").posX, this.block_Info.node.getComponent("Block").allBlocks[i].y + this.block_Info.node.getComponent("Block").posY)); + } + for (var k = 0; k < box.length; k++) { + for (var j = 0; j < otherBox.length; j++) { + if ((box[k].x == otherBox[j].x + 1 || box[k].x == otherBox[j].x - 1) && (box[k].y == otherBox[j].y)) { + //在X轴 相邻 + var left = box[k].x == otherBox[j].x + 1 ? "left" : "right"; + this.addAdhesive(left, box[k]); + otherBox.splice(j, 1); + j--; // 调整索引 + if (j < 0) + break; + } + if ((box[k].y == otherBox[j].y + 1 || box[k].y == otherBox[j].y - 1) && (box[k].x == otherBox[j].x)) { + //在Y轴 相邻 + var down = box[k].y == otherBox[j].y + 1 ? "down" : "up"; + this.addAdhesive(down, box[k]); + otherBox.splice(j, 1); + j--; // 调整索引 + if (j < 0) + break; + } + } + } + // let adhesive = cc.instantiate(MapConroler._instance.Block_Prop[this.type]); + }; + //具体添加粘合快锁链方法 + Block.prototype.addAdhesive = function (diraction, box) { + var pos = cc.v2(box.x - this.posX, box.y - this.posY); + var adhesive = cc.instantiate(Map_1.default._instance.Block_Prop[10]); + adhesive.parent = this.node.parent.getChildByName("Adhesive"); + // adhesive.parent = this.node.getChildByName("adhesive"); + adhesive.setPosition(120 * pos.x - 65 + this.node.x, 120 * pos.y + 60 + this.node.y); + if (diraction == "left" || diraction == "right") { + adhesive.getChildByName("heng").active = true; + adhesive.getChildByName("heng").x = -60; + if (diraction == "right") + adhesive.getChildByName("heng").x = 60; + adhesive.getChildByName("heng").x += 9; + adhesive.getChildByName("heng").y += 7; + } + else { + adhesive.getChildByName("shu").active = true; + adhesive.getChildByName("shu").y = -60; + if (diraction == "up") + adhesive.getChildByName("shu").y = 60; + } + adhesive.getComponent("Adhesive").init(this.node); + this.adhesiveNode.push(adhesive); + }; + Block.prototype.removeAdhesive = function () { + if (this.adhesiveNode.length > 0) { + for (var i = 0; i < this.adhesiveNode.length; i++) { + var adhesive = this.adhesiveNode[i]; + adhesive.getComponent("Adhesive").remove(); + } + } + }; + //方块落点 + Block.prototype.blockFall = function (point) { + if (this.over == true) + return; + // // 假设 MapConroler 有网格信息,这里简单示例 + var mapWidth = Map_1.default._instance.mapWidth; + var mapHeight = Map_1.default._instance.mapHeight; + var cellSize = 120; // 每个格子的大小,根据实际情况调整 + // 计算点所在的网格坐标 + var gridX = Math.floor((point.x + (mapWidth * cellSize / 2)) / cellSize); + var gridY = Math.floor((point.y + (mapHeight * cellSize / 2)) / cellSize); + // 检查网格坐标是否越界 + if (gridX >= 0 && gridX < mapWidth && gridY >= 0 && gridY < mapHeight) { + var mapBlock = Map_1.default._instance.mapBlocksWall[gridX][gridY]; + var blockRect = mapBlock.getBoundingBox(); + // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 + if (blockRect.contains(point)) { + //寻找落点 + this.removeMapBlock(); + this.posX = mapBlock.getComponent("MapBlock").posX; + this.posY = mapBlock.getComponent("MapBlock").posY; + this.setMapBlock(); + this.level = 50 + this.posX - this.posY * 3; + this.node.zIndex = this.level; + // console.log("方块层级",this.node.zIndex); + this.node.x = mapBlock.x + 65; + this.node.y = mapBlock.y - 60; + if (this.type == 9) { + if (this.block_Info.node) { + this.block_Info.node.x = this.node.x - this.adhesive.x; + this.block_Info.node.y = this.node.y - this.adhesive.y; + } + } + else if (this.type == 1) { + this.block_Info.node.getComponent("Block").moveStack = false; + this.block_Info.node.x = this.node.x + this.block_Info.node.getComponent("Block").stacking.x; + this.block_Info.node.y = this.node.y + this.block_Info.node.getComponent("Block").stacking.y; + } + } + } + var jg = Map_1.default._instance.checkPass(this.node, this.allBlocks); + if (jg >= 0) { + this.over = true; + Map_1.default._instance.changeState(); + this.removeBoxCollider(); + this.removeMapBlock(); + this.removeAction(jg); + } + else { + Map_1.default._instance.upDoor(this.color); + this.setVibrate("medium", 1); + //@ts-ignore + } + }; + Block.prototype.removeBoxCollider = function () { + for (var i = 0; i < this.node.children.length; i++) { + if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") + this.node.children[i].destroy(); + } + }; + Block.prototype.removeAction = function (diraction) { + var _this = this; + this.node.off(cc.Node.EventType.TOUCH_START); + this.node.off(cc.Node.EventType.TOUCH_MOVE); + this.node.off(cc.Node.EventType.TOUCH_CANCEL); + this.node.off(cc.Node.EventType.TOUCH_END); + this.node.addComponent(cc.Mask); + var self = this; + var pos = this.node.getPosition(); + if (this.type == BlockType.叠加块下) { + var scaleX = this.node.scaleX; + var scaleY = this.node.scaleY; + this.block_Info.node.getComponent("Block").restoreNomal(this.posX, this.posY, true); + cc.tween(this.block_Info.node) + .to(0.3, { position: pos, scaleX: scaleX > 0 ? 1 : -1, scaleY: scaleY > 0 ? 1 : -1 }) + .start(); + } + else if (this.type == BlockType.粘合块) { + this.removeAdhesive(); + this.block_Info.node.getComponent("Block").removeAdhesive(); + this.block_Info.node.getComponent("Block").restoreNomal(this.block_Info.node.getComponent("Block").posX, this.block_Info.node.getComponent("Block").posY, false); + this.block_Info.node = null; + } + else if (this.type == BlockType.炸弹块) { + this.node.getChildByName("boom").getComponent("Boom").stopBoom(); + } + var time = 0.33; + // this.node.zIndex = 0; + var width = Math.floor(this.node.width / 120); + var height = Math.floor(this.node.height / 120); + setTimeout(function () { + cc.fx.AudioManager._instance.playEffect("xiaochu", null); + }, 300); + this.setVibrate("light", 3); + if (diraction == 0) { + time = 0.33 * height; + // time = 0.99; + for (var i = 0; i < this.node.children.length; i++) { + cc.tween(this.node.children[i]) + .to(time, { y: this.node.children[i].y + this.node.children[0].height }) + .start(); + } + } + else if (diraction == 1) { + time = 0.33 * height; + // time = 0.99 + for (var i = 0; i < this.node.children.length; i++) { + cc.tween(this.node.children[i]) + .to(time, { y: this.node.children[i].y - this.node.children[0].height }) + .start(); + } + } + else if (diraction == 2) { + time = 0.33 * width; + // time = 0.99 + for (var i = 0; i < this.node.children.length; i++) { + cc.tween(this.node.children[i]) + .to(time, { x: this.node.children[i].x - this.node.children[0].width }) + .start(); + } + } + else if (diraction == 3) { + time = 0.33 * width; + // time = 0.99 + for (var i = 0; i < this.node.children.length; i++) { + cc.tween(this.node.children[i]) + .to(time, { x: this.node.children[i].x + this.node.children[0].width }) + .start(); + } + } + setTimeout(function () { + var tempColor = _this.color; + setTimeout(function () { + Map_1.default._instance.upDoor(tempColor); + }, 250); + Map_1.default._instance.nextLevel(); + _this.node.active = false; + _this.node.removeFromParent(); + // this.node.active = false; + // this.node.removeFromParent(); + }, time * 1000); + }; + Block.prototype.touchStart = function (event) { + if (this.over || Map_1.default._instance.gameOver) + return; + // 返回世界坐标 + var touchLoc = event.getLocation(); + // https://docs.cocos.com/creator/api/zh/classes/Intersection.html 检测辅助类 + // let pos = this.collider.world.points + if (!this.collider.world) { + return; + } + // 判断触摸点是否在多边形内 + if (cc.Intersection.pointInPolygon(touchLoc, this.collider.world.points)) { + if (Map_1.default._instance.hammer) { + this.eliminate(); + this.isTouch = false; + Map_1.default._instance.hammerMask.active = false; + Map_1.default._instance.node.parent.getChildByName("Bottom").getChildByName("destroyBtn").getComponent("btnControl").setTouch(true); + return false; + } + if (this.type != BlockType.上锁块 && this.type != BlockType.冻结块) { + Map_1.default._instance.startUpdate(); + cc.fx.AudioManager._instance.playEffect("hit", null); + this.node.zIndex = 200; + if (this.type == 9) { + if (this.block_Info.node) { + this.block_Info.node.zIndex = 200; + this.block_Info.node.getComponent("Block").hit.active = true; + Map_1.default._instance.downDoor(this.block_Info.node.getComponent("Block").color, this.block_Info.node.getComponent("Block").type); + } + } + else if (this.type == 1) { + this.block_Info.node.getComponent("Block").moveStack = true; + } + var touchPoint = event.getLocation(); + var local = this.node.parent.convertToNodeSpaceAR(touchPoint); + this.touchPointX = local.x; + this.touchPointY = local.y; + this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; + this.isTouch = true; + this.moveCorner = 0; + this.relative_Position = cc.v2(this.node.x - local.x, this.node.y - local.y); + Map_1.default._instance.changeRiseFall(this.color, true); + Map_1.default._instance.downDoor(this.color, this.type); + this.setVibrate("light", 1); + if (this.hit) + this.hit.active = true; + return true; + } + else { + this.isTouch = false; + return false; + } + } + else { + this.isTouch = false; + return false; + } + }; + Block.prototype.touchEnd = function (event) { + if (Map_1.default._instance.gameOver) + return; + if (this.isTouch) { + this.touchDelta = cc.v2(0, 0); + this.checkCollision = false; + Map_1.default._instance.changeRiseFall(this.color, false); + cc.fx.AudioManager._instance.playEffect("down", null); + Map_1.default._instance.removeOneBlock(); + this.isTouch = false; + this.node.zIndex = this.level; + this.hit.active = false; + if (this.type == 9) { + if (this.block_Info.node) { + this.block_Info.node.getComponent("Block").hit.active = false; + // this.block_Info.node.getComponent("Block").isTouch = false; + } + } + this.touchPoint = event.getLocation(); + var local = cc.v2(this.node.x - 50, this.node.y + 50); + if (this.type != 10) { + //@ts-ignore + this.blockFall(local); + if (this.type == 9) { + if (this.block_Info.node) { + var localTemp = cc.v2(this.block_Info.node.x - 50, this.block_Info.node.y + 50); + this.block_Info.node.getComponent("Block").blockFall(localTemp); + } + } + } + this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; + } + }; + Block.prototype.touchMove = function (event) { + if (Map_1.default._instance.gameOver) + return; + // const currentTime = Date.now(); + // // 如果距离上次移动时间小于间隔时间,直接返回 + // if (currentTime - this.lastMoveTime < this.moveInterval) { + // return; + // } + // this.lastMoveTime = currentTime; + if (this.isTouch) { + var delta = event.getDelta(); + var touchPoint = event.getLocation(); + var local = this.node.parent.convertToNodeSpaceAR(touchPoint); + this.touchPointX = local.x; + this.touchPointY = local.y; + delta.x = this.touchPointX - this.node.x + this.relative_Position.x; + delta.y = this.touchPointY - this.node.y + this.relative_Position.y; + // 限制移动速度 + this.touchPointX = local.x; + this.touchPointY = local.y; + delta.x = this.touchPointX - this.node.x + this.relative_Position.x; + delta.y = this.touchPointY - this.node.y + this.relative_Position.y; + // 限制移动速度 + delta.x = Math.max(-this.maxSpeed, Math.min(this.maxSpeed, delta.x)); + delta.y = Math.max(-this.maxSpeed, Math.min(this.maxSpeed, delta.y)); + // 记录触摸移动的增量 + this.touchDelta = delta; + } + }; + //超出限制判断 + Block.prototype.exceeds = function (stepx, stepy) { + }; + Block.prototype.eliminate = function () { + var _this = this; + //锤子状态消失 + Map_1.default._instance.pause = true; + Map_1.default._instance.hammer = false; + //如果方块是有特殊状态,则特殊处理 + if (this.type == BlockType.冻结块) { + this.node.getChildByName("freeze").getComponent("Freeze").reduce(2); + return; + } + else if (this.type == BlockType.上锁块) { + this.node.getChildByName("lock").getComponent("Lock").reduce(); + return; + } + //如果方块可以消除 + Map_1.default._instance.blockNum -= 1; + Map_1.default._instance.special_Treatment(this.node); + var self = this; + this.removeMapBlock(); + setTimeout(function () { + var pos = _this.node.getPosition(); + if (self.type == BlockType.叠加块下) { + var scaleX = self.node.scaleX; + var scaleY = self.node.scaleY; + self.block_Info.node.getComponent("Block").restoreNomal(_this.posX, _this.posY, true); + cc.tween(self.block_Info.node) + .to(0.1, { position: pos, scaleX: scaleX > 0 ? 1 : -1, scaleY: scaleY > 0 ? 1 : -1 }) + .start(); + } + else if (self.type == BlockType.粘合块) { + self.block_Info.node.getComponent("Block").restoreNomal(self.block_Info.node.getComponent("Block").posX, self.block_Info.node.getComponent("Block").posY, false); + } + else if (self.type == BlockType.炸弹块) { + _this.node.getChildByName("boom").getComponent("Boom").stopBoom(); + } + Map_1.default._instance.nextLevel(); + _this.node.active = false; + _this.node.removeFromParent(); + }, 200); + }; + Block.prototype.setVibrate = function (type, count) { + // return; + if (!cc.fx.GameConfig.GM_INFO.vibrateOpen) { + return; + } + if (count == 1) { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 + //@ts-ignore + wx.vibrateShort({ + type: type, + success: function () { + }, + fail: function (err) { + } + }); + } + else { + } + return; + } + var time = 150; + for (var i = 0; i < 4; i++) { + setTimeout(function () { + //@ts-ignore + if (typeof wx !== 'undefined' && wx !== null) { // 判断是否在微信环境 + //@ts-ignore + wx.vibrateShort({ + type: type, + success: function () { + }, + fail: function (err) { + } + }); + } + else { + } + }, time * i); + } + }; + Block.prototype.setMoveCorner = function (diraction) { + return; + }; + Block.prototype.cmupdate = function () { + var cm = cc.director.getCollisionManager(); + cm.update(); + }; + Block.prototype.restoreNomal = function (posX, posY, type) { + this.type = 0; + this.block_Info.node = null; + this.moveStack = false; + this.posX = posX; + this.posY = posY; + this.setMapBlock(); + this.level = 50 + this.posX - this.posY * 3; + this.node.zIndex = this.level; + var j = 1000; + for (var i = 0; i < this.node.children.length; i++) { + if (this.node.children[i].name == "New Node") { + j = i; + } + if (i > j) { + this.node.children[i].active = false; + } + } + if (type) { + for (var i = 0; i < this.node.children.length; i++) { + if (this.node.children[i].name == "left" || this.node.children[i].name == "right" || this.node.children[i].name == "top" || this.node.children[i].name == "down") + this.node.children[i].active = true; + } + } + this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); + this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); + this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); + this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); + this.node['_touchListener'].setSwallowTouches(false); + this.hit = new cc.Node(); + this.hit.addComponent(cc.Sprite); + this.hit.parent = this.node; + var name = "xz_" + this.block_Info.block; + this.hit.getComponent(cc.Sprite).spriteFrame = this.ice_SpriteFrame._spriteFrames[name]; + this.hit.setAnchorPoint(this.node.anchorX, this.node.anchorY); + this.hit.setPosition(13, -11); + if (this.hit.anchorX == 0.5) + this.hit.setPosition(0, -11); + else if (this.hit.anchorX == 0.33) + this.hit.setPosition(-13, -11); + else if (this.hit.anchorX == 0.66) + this.hit.setPosition(2, -9); + this.hit.active = false; + }; + //冻结状态恢复为常规状态 + Block.prototype.resetFreeze = function () { + this.type = 0; + this.block_Info.type = 0; + var name = this.color + "color" + this.block_Info.block; + var number = Math.floor((this.color - 1) / 2); + var blockSpriteFrame = Map_1.default._instance.Block_Color[number]._spriteFrames; + var spriteFrame = blockSpriteFrame[name]; + this.node.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = spriteFrame; + }; + Block.prototype.initBlocks = function () { + this.allBlocks = []; + switch (this.block_Info.block) { + case 0: + var pos = cc.v2(0, 0); + this.allBlocks = [pos]; + break; + case 1: + var pos1 = cc.v2(0, 0); + var pos2 = cc.v2(-1, 0); + this.allBlocks = [pos1, pos2]; + break; + case 2: + var pos3 = cc.v2(0, 0); + var pos4 = cc.v2(0, 1); + this.allBlocks = [pos3, pos4]; + break; + case 3: + var pos5 = cc.v2(0, 0); + var pos6 = cc.v2(-1, 0); + var pos7 = cc.v2(-2, 0); + this.allBlocks = [pos5, pos6, pos7]; + break; + case 4: + var pos8 = cc.v2(0, 0); + var pos9 = cc.v2(0, 1); + var pos10 = cc.v2(0, 2); + this.allBlocks = [pos8, pos9, pos10]; + break; + case 5: + var pos11 = cc.v2(0, 0); + var pos12 = cc.v2(-1, 0); + var pos13 = cc.v2(-1, 1); + var pos14 = cc.v2(0, 1); + this.allBlocks = [pos11, pos12, pos13, pos14]; + break; + case 6: + var pos15 = cc.v2(0, 0); + var pos16 = cc.v2(0, 1); + var pos17 = cc.v2(0, 2); + var pos18 = cc.v2(-1, 2); + this.allBlocks = [pos15, pos16, pos17, pos18]; + break; + case 7: + var pos19 = cc.v2(0, 0); + var pos20 = cc.v2(0, 1); + var pos21 = cc.v2(-1, 1); + var pos22 = cc.v2(-2, 1); + this.allBlocks = [pos19, pos20, pos21, pos22]; + break; + case 8: + var pos23 = cc.v2(0, 0); + var pos24 = cc.v2(-1, 0); + var pos25 = cc.v2(-1, 1); + var pos26 = cc.v2(-1, 2); + this.allBlocks = [pos23, pos24, pos25, pos26]; + break; + case 9: + var pos27 = cc.v2(0, 0); + var pos28 = cc.v2(-1, 0); + var pos29 = cc.v2(-2, 0); + var pos30 = cc.v2(0, 1); + this.allBlocks = [pos27, pos28, pos29, pos30]; + break; + case 10: + var pos31 = cc.v2(0, 0); + var pos32 = cc.v2(1, 2); + var pos33 = cc.v2(0, 1); + var pos34 = cc.v2(0, 2); + this.allBlocks = [pos31, pos32, pos33, pos34]; + break; + case 11: + var pos35 = cc.v2(0, 0); + var pos36 = cc.v2(2, 1); + var pos37 = cc.v2(1, 1); + var pos38 = cc.v2(0, 1); + this.allBlocks = [pos35, pos36, pos37, pos38]; + break; + case 12: + var pos39 = cc.v2(0, 0); + var pos40 = cc.v2(0, 1); + var pos41 = cc.v2(0, 2); + var pos42 = cc.v2(-1, 0); + this.allBlocks = [pos39, pos40, pos41, pos42]; + break; + case 13: + var pos43 = cc.v2(0, 0); + var pos44 = cc.v2(-1, 0); + var pos45 = cc.v2(-2, 0); + var pos46 = cc.v2(-2, 1); + this.allBlocks = [pos43, pos44, pos45, pos46]; + break; + case 14: + var pos47 = cc.v2(0, 0); + var pos48 = cc.v2(0, 1); + var pos49 = cc.v2(-1, 1); + var pos50 = cc.v2(1, 1); + this.allBlocks = [pos47, pos48, pos49, pos50]; + break; + case 15: + var pos51 = cc.v2(0, 0); + var pos52 = cc.v2(-1, 0); + var pos53 = cc.v2(-2, 0); + var pos54 = cc.v2(-1, 1); + this.allBlocks = [pos51, pos52, pos53, pos54]; + break; + case 16: + var pos55 = cc.v2(0, 0); + var pos56 = cc.v2(1, 1); + var pos57 = cc.v2(0, 1); + var pos58 = cc.v2(0, 2); + this.allBlocks = [pos55, pos56, pos57, pos58]; + break; + case 17: + var pos59 = cc.v2(0, 0); + var pos60 = cc.v2(0, 1); + var pos61 = cc.v2(0, 2); + var pos62 = cc.v2(-1, 1); + this.allBlocks = [pos59, pos60, pos61, pos62]; + break; + case 18: + var pos63 = cc.v2(0, 0); + var pos64 = cc.v2(0, 1); + var pos65 = cc.v2(0, 2); + var pos66 = cc.v2(1, 1); + var pos67 = cc.v2(-1, 1); + this.allBlocks = [pos63, pos64, pos65, pos66, pos67]; + break; + case 19: + var pos68 = cc.v2(0, 0); + var pos69 = cc.v2(0, 1); + var pos70 = cc.v2(-1, 0); + this.allBlocks = [pos68, pos69, pos70]; + break; + case 20: + var pos71 = cc.v2(0, 0); + var pos72 = cc.v2(-1, 0); + var pos73 = cc.v2(-1, 1); + this.allBlocks = [pos71, pos72, pos73]; + break; + case 21: + var pos74 = cc.v2(0, 0); + var pos75 = cc.v2(0, 1); + var pos76 = cc.v2(1, 1); + this.allBlocks = [pos74, pos75, pos76]; + break; + case 22: + var pos77 = cc.v2(0, 0); + var pos78 = cc.v2(0, 1); + var pos79 = cc.v2(-1, 1); + this.allBlocks = [pos77, pos78, pos79]; + break; + } + }; + Block.prototype.setMapBlock = function () { + if (this.allBlocks.length > 0) { + for (var i = 0; i < this.allBlocks.length; i++) { + var pos = this.allBlocks[i]; + var x = this.posX + pos.x; + var y = this.posY + pos.y; + Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock").block_Id = this.node.uuid; + } + } + }; + Block.prototype.removeMapBlock = function () { + if (this.posX == 0 && this.posY == 0) { + return; + } + if (this.allBlocks) { + if (this.allBlocks.length > 0) { + for (var i = 0; i < this.allBlocks.length; i++) { + if (this.allBlocks[i]) { + var pos = this.allBlocks[i]; + var x = this.posX + pos.x; + var y = this.posY + pos.y; + if (Map_1.default._instance.mapBlocksWall[x][y]) { + if (Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock")) + Map_1.default._instance.mapBlocksWall[x][y].getComponent("MapBlock").block_Id = ""; + } + } + } + } + } + }; + //叠加块,位置差异,校准位置 + Block.prototype.getStackingPos = function () { + switch (this.node.name) { + case "block0": + return cc.v2(-21, 22); + case "block1": + return cc.v2(-36, 23); + case "block2": + return cc.v2(-18, 40); + case "block3": + return cc.v2(-59, 25); + case "block4": + return cc.v2(-19, 57); + case "block5": + return cc.v2(-36, 38); + case "block6": + return cc.v2(-19, 97); + case "block7": + return cc.v2(-19, 61); + case "block8": + return cc.v2(-55, 24); + case "block9": + return cc.v2(-20, 24); + case "block10": + return cc.v2(-17, 96); + case "block11": + return cc.v2(-17, 58); + case "block12": + return cc.v2(-20, 24); + case "block13": + return cc.v2(-92, 25); + case "block14": + return cc.v2(-18, 60); + case "block15": + return cc.v2(-58, 24); + case "block16": + return cc.v2(-20, 60); + case "block17": + return cc.v2(-17, 60); + case "block18": + return cc.v2(-17, 60); + case "block19": + return cc.v2(-20, 24); + case "block20": + return cc.v2(-54, 25); + case "block21": + return cc.v2(-17, 60); + case "block22": + return cc.v2(-17, 60); + } + }; + Block.prototype.update = function (dt) { + if (this.isTouch && this.touchDelta.mag() > 0) { + //this.moveLeft = this.moveRight = this.moveUp = this.moveDown = true; + var delta = this.touchDelta; + var newX = this.node.x + delta.x; + var newY = this.node.y + delta.y; + var distance = Math.sqrt(Math.pow(newX - this.node.x, 2) + Math.pow(newY - this.node.y, 2)); + var mag = Math.round(delta.mag()); + if (this.moveY === 1) { + if (this.touchPointY <= this.node.y + this.node.height / 2) { + this.moveY = 0; + } + } + else if (this.moveY === -1) { + if (this.touchPointY >= this.node.y + this.node.height / 2) { + this.moveY = 0; + } + } + if (this.moveX === 1) { + if (this.touchPointX <= this.node.x - this.node.width / 2) { + this.moveX = 0; + } + else { + } + } + else if (this.moveX === -1) { + if (this.touchPointX >= this.node.x - this.node.width / 2) { + this.moveX = 0; + } + else { + } + } + if (distance > 100) { + mag = 10; + var speedScale = 0.5; + delta.x *= speedScale; + delta.y *= speedScale; + } + else { + if (mag > 5) { + mag = Math.floor(mag / 5); + } + } + // mag = 2; + var stepx = delta.x / mag; + var stepy = delta.y / mag; + for (var index = 0; index < mag; index++) { + this.moveCorner = 0; + var tempX = this.node.x + stepx; + var tempY = this.node.y + stepy; + if (!this.checkCollision) { + if (this.type !== 8 && this.type !== 10) { + this.node.x = Math.round(tempX); + } + if (this.type !== 7 && this.type !== 10) { + this.node.y = Math.round(tempY); + } + } + else { + var isXMain = Math.abs(stepx) > Math.abs(stepy); + if (isXMain) { + if (this.node.x > tempX) { + if (this.moveLeft && this.moveX === 0 && this.type !== 8 && this.type !== 10) { + this.node.x = tempX; + } + if (this.moveX !== 0) { + this.moveX = 0; + } + } + else if (this.node.x <= tempX) { + if (this.moveRight && this.moveX === 0 && this.type !== 8 && this.type !== 10) { + this.node.x = tempX; + } + if (this.moveX !== 0) { + this.moveX = 0; + } + } + if (this.node.y > tempY) { + if (this.moveDown && this.moveY === 0 && this.type !== 7 && this.type !== 10) { + this.node.y = tempY; + } + if (this.moveY !== 0) { + this.moveY = 0; + } + } + else if (this.node.y <= tempY) { + if (this.moveUp && this.moveY === 0 && this.type !== 7 && this.type !== 10) { + this.node.y = tempY; + } + if (this.moveY !== 0) { + this.moveY = 0; + } + } + } + else { + if (this.node.y > tempY) { + if (this.moveDown && this.moveY === 0 && this.type !== 7 && this.type !== 10) { + this.node.y = tempY; + } + if (this.moveY !== 0) { + this.moveY = 0; + } + } + else if (this.node.y <= tempY) { + if (this.moveUp && this.moveY === 0 && this.type !== 7 && this.type !== 10) { + this.node.y = tempY; + } + if (this.moveY !== 0) { + this.moveY = 0; + } + } + if (this.node.x > tempX) { + if (this.moveLeft && this.moveX === 0 && this.type !== 8 && this.type !== 10) { + this.node.x = tempX; + } + if (this.moveX !== 0) { + this.moveX = 0; + } + } + else if (this.node.x <= tempX) { + if (this.moveRight && this.moveX === 0 && this.type !== 8 && this.type !== 10) { + this.node.x = tempX; + } + if (this.moveX !== 0) { + this.moveX = 0; + } + } + } + } + lq_collide_system_1.LQCollideSystem.update_logic(dt); + } + // 移动完成后重置触摸增量 + this.touchDelta = cc.v2(0, 0); + } + if (this.type == BlockType.叠加块上 && this.moveStack == true) { + if (this.stacking.x != 0 || this.stacking.y != 0) { + this.node.x = this.block_Info.node.x + this.stacking.x; + this.node.y = this.block_Info.node.y + this.stacking.y; + } + } + if (this.block_Info) { + if (this.block_Info.node != null) { + if (this.type == BlockType.粘合块) { + if (this.adhesive.x != 0 && this.adhesive.y != 0 && this.block_Info.node != null) { + this.block_Info.node.x = this.node.x - this.adhesive.x; + this.block_Info.node.y = this.node.y - this.adhesive.y; + } + if (this.isTouch == true && this.block_Info.node.getComponent("Block").isTouch == false) { + lq_collide_system_1.LQCollideSystem.update_logic(dt); + this.block_Info.node.x = this.node.x - this.adhesive.x; + this.block_Info.node.y = this.node.y - this.adhesive.y; + } + } + } + } + }; + __decorate([ + property({ + tooltip: '碰撞形状,None就是无敌,不参与碰撞', + type: cc.Enum(BlockType), + }) + ], Block.prototype, "type", void 0); + __decorate([ + property({ + tooltip: '碰撞形状,None就是无敌,不参与碰撞', + type: cc.Enum(BlockColor), + }) + ], Block.prototype, "color", void 0); + __decorate([ + property({ + tooltip: '横向长度', + type: cc.Integer, + }) + ], Block.prototype, "heng", void 0); + __decorate([ + property({ + tooltip: '竖向长度', + type: cc.Integer, + }) + ], Block.prototype, "shu", void 0); + __decorate([ + property(cc.SpriteAtlas) + ], Block.prototype, "ice_SpriteFrame", void 0); + Block = __decorate([ + ccclass + ], Block); + return Block; +}(cc.Component)); +exports.default = Block; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsMkVBQXdFO0FBQ3hFLDZCQUFnQztBQUUxQixJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUN6QyxJQUFZLFNBdUJaO0FBdkJBLFdBQVksU0FBUztJQUNsQixTQUFTO0lBQ1QscUVBQVMsQ0FBQTtJQUNULFNBQVM7SUFDVCxpRkFBVSxDQUFBO0lBQ1YsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULFNBQVM7SUFDVCxxRUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULE9BQU87SUFDUCxxRUFBUyxDQUFBO0lBQ1QsT0FBTztJQUNQLHFFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AscUVBQVMsQ0FBQTtJQUNULE9BQU87SUFDUCxrRkFBVyxDQUFBO0FBQ2YsQ0FBQyxFQXZCWSxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQXVCckI7QUFFRCxJQUFZLFVBc0JYO0FBdEJELFdBQVksVUFBVTtJQUVsQixTQUFTO0lBQ1QsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLDJEQUFRLENBQUE7SUFDUixTQUFTO0lBQ1QsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLHVFQUFTLENBQUE7SUFDVCxPQUFPO0lBQ1AsMkRBQVEsQ0FBQTtJQUNSLE9BQU87SUFDUCwyREFBUSxDQUFBO0lBQ1IsT0FBTztJQUNQLDJEQUFRLENBQUE7SUFDUixPQUFPO0lBQ1AsMkRBQVEsQ0FBQTtBQUNaLENBQUMsRUF0QlcsVUFBVSxHQUFWLGtCQUFV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b0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNoRSxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBRXJFLFNBQVM7WUFDVCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzNCLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBRXJFLFNBQVM7WUFDVCxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyRSxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFD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QUFDO2dCQUNGLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3ZCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM3QixNQUFNO1lBQ1YsS0FBSyxDQUFDO2dCQUNGLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLElBQUksR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdEIsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxFQUFDLElBQUksRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDbkMsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLENBQUM7Z0JBQ0YsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssQ0FBQztnQkFDRixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssRUFBRTtnQkFDSCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMzQyxNQUFNO1lBQ1YsS0FBSyxFQUFFO2dCQUNILElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLEVBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLENBQUMsQ0FBQztnQkFDM0MsTUFBTTtZQUNWLEtBQUssRUFBRTtnQkFDSCxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxLQUFLLEVBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE1BQU07WUFDVixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3ZCLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN2QixJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztn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QUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3pCLEtBQUssU0FBUztnQkFDVixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7WUFDekIsS0FBSyxTQUFTO2dCQUNWLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLENBQUMsQ0FBQztZQUN6QixLQUFLLFNBQVM7Z0JBQ1YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFD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LElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjt3QkFFRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTs0QkFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjtxQkFDSjt5QkFBTTt3QkFDSCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRTs0QkFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUMxRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjs2QkFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRTs0QkFDN0IsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dDQUN4RSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7NkJBQ3ZCOzRCQUNELElBQUcsSUFBSSxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUM7Z0NBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDOzZCQUNsQjt5QkFDSjt3QkFFRCxJQUFJLElBQUksQ0FBQyxJ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d0JBQ2pDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzt3QkFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3FCQUMxRDtpQkFDSjthQUNSO1NBQ0o7SUFFTCxDQUFDO0lBcHBDRDtRQUpDLFFBQVEsQ0FBQztZQUNOLE9BQU8sRUFBRSxxQkFBcUI7WUFDOUIsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQzNCLENBQUM7dUNBQzhCO0lBTWhDO1FBSkMsUUFBUSxDQUFDO1lBQ04sT0FBTyxFQUFFLHFCQUFxQjtZQUM5QixJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDNUIsQ0FBQzt3Q0FDZ0M7SUFNbEM7UUFKQyxRQUFRLENBQUM7WUFDTixPQUFPLEVBQUUsTUFBTTtZQUNmLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTztTQUNuQixDQUFDO3VDQUNlO0lBTWpCO1FBSkMsUUFBUSxDQUFDO1lBQ04sT0FBTyxFQUFFLE1BQU07WUFDZixJQUFJLEVBQUUsRUFBRSxDQUFDLE9BQU87U0FDbkIsQ0FBQztzQ0FDYztJQUdoQjtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDO2tEQUNjO0lBeEN0QixLQUFLO1FBRHpCLE9BQU87T0FDYSxLQUFLLENBd3FDekI7SUFBRCxZQUFDO0NBeHFDRCxBQXdxQ0MsQ0F4cUNrQyxFQUFFLENBQUMsU0FBUyxHQXdxQzlDO2tCQXhxQ29CLEtBQUsiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQ29sbGlzaW9uRGV0ZWN0aW9uIGZyb20gXCIuL0NvbGxpc2lvbkRldGVjdGlvblwiO1xyXG5pbXBvcnQgeyBMUUNvbGxpZGVTeXN0ZW0gfSBmcm9tIFwiLi9scV9jb2xsaWRlX3N5c3RlbS9scV9jb2xsaWRlX3N5c3RlbVwiO1xyXG5pbXBvcnQgTWFwQ29ucm9sZXIgZnJvbSBcIi4vTWFwXCI7XHJcblxyXG5jb25zdCB7Y2NjbGFzcywgcHJvcGVydHl9ID0gY2MuX2RlY29yYXRvcjtcclxuIGV4cG9ydCBlbnVtIEJsb2NrVHlwZXtcclxuICAgIC8q5pmu6YCa5Zyw5Z2XICovXHJcbiAgICBcIuaZrumAmuWdl1wiID0gMCwgIFxyXG4gICAgLyrotbfngrnlnLDlnZcgKi9cclxuICAgIFwi5Y+g5Yqg5Z2X5LiLXCIgPSAxLCAgXHJcbiAgICAvKua5v+WcsCAqL1xyXG4gICAgXCLpkqXljJnlnZdcIiA9IDIsICBcclxuICAgIC8q5bGx5bOwICovXHJcbiAgICBcIuS4iumUgeWdl1wiID0gMywgIFxyXG4gICAgLyrnu4jngrnlnLDlnZcgKi9cclxuICAgIFwi5Ya757uT5Z2XXCIgPSA0LCAgXHJcbiAgICAvKuaBr+WjpCAqL1xyXG4gICAgXCLmmJ/mmJ/lnZdcIiA9IDUsICAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLngrjlvLnlnZdcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuawtOW5s+Wdl1wiID0gNywgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5Z6C55u05Z2XXCIgPSA4LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLnspjlkIjlnZdcIiA9IDksICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIuWPoOWKoOWdl+S4ilwiID0gMTAsICBcclxufVxyXG5cclxuZXhwb3J0IGVudW0gQmxvY2tDb2xvcntcclxuXHJcbiAgICAvKui1t+eCueWcsOWdlyAqL1xyXG4gICAgXCLntKvoibJcIiA9IDAsICBcclxuICAgIC8q5rm/5ZywICovXHJcbiAgICBcIum7hOiJslwiID0gMSwgIFxyXG4gICAgLyrlsbHls7AgKi9cclxuICAgIFwi57u/6ImyXCIgPSAyLCAgXHJcbiAgICAvKue7iOeCueWcsOWdlyAqL1xyXG4gICAgXCLok53oibJcIiA9IDMsICBcclxuICAgIC8q5oGv5aOkICovXHJcbiAgICBcIueyieiJslwiID0gNCwgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi5qmY6buE6ImyXCIgPSA1LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLpnZLoibJcIiA9IDYsICBcclxuICAgIC8q5Yqg5Zu6ICovXHJcbiAgICBcIueZveiJslwiID0gNywgIFxyXG4gICAgLyrliqDlm7ogKi9cclxuICAgIFwi57qi6ImyXCIgPSA4LCAgXHJcbiAgICAvKuWKoOWbuiAqL1xyXG4gICAgXCLngbDoibJcIiA9IDksXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIFBhdGhUeXBle1xyXG4gICAgZXJyID0gXCJlcnJcIixcclxuICAgIHVwID0gXCJ1cFwiLCAgXHJcbiAgICBkb3duID0gXCJkb3duXCIsICBcclxuICAgIGxlZnQgPSBcImxlZnRcIixcclxuICAgIHJpZ2h0ID0gXCJyaWdodFwiLFxyXG4gICAgdXBfbGVmdCA9IFwidXBfbGVmdFwiLFxyXG4gICAgdXBfcmlnaHQgPSBcInVwX3JpZ2h0XCIsXHJcbiAgICBkb3duX2xlZnQgPSBcImRvd25fbGVmdFwiLFxyXG4gICAgZG93bl9yaWdodCA9IFwiZG93bl9yaWdodFwiLFxyXG4gICAgbGVmdF91cCA9IFwibGVmdF91cFwiLFxyXG4gICAgbGVmdF9kb3duID0gXCJsZWZ0X2Rvd25cIixcclxuICAgIHJpZ2h0X3VwID0gXCJyaWdodF91cFwiLFxyXG4gICAgcmlnaHRfZG93biA9IFwicmlnaHRfZG93blwiLFxyXG59XHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJsb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyDmlrDlop7nvJPlrZjlj5jph49cclxuICAgIHByaXZhdGUgbW92ZUludGVydmFsID0gMDsgLy8g57qmIDYwIEZQUyBcclxuICAgIHByaXZhdGUgbGFzdE1vdmVUaW1lID0gMDsgIC8vIOS4iuS4i+S4pOS4quWAvOadpeiwg+iKgui3n+aJi++8jOS4gOS4quaYr+aXtumXtOi9tO+8jOS4gOS4quaYr+i3neemu+i9tFxyXG4gICAgcHJpdmF0ZSBtYXhTcGVlZCA9IDMwMDsgICAgLy8gIOacgOWkp+enu+WKqOi3neemu1xyXG5cclxuICAgIC8vIHByaXZhdGUgb3RoZXJDb2xsaWRlcjogY2MuQ29sbGlkZXIgPSBudWxsO1xyXG4gICAgLy8gQHByb3BlcnR5KHtcclxuICAgIC8vICAgICB0b29sdGlwOiAn56Kw5pKe5b2i54q277yMTm9uZeWwseaYr+aXoOaVjO+8jOS4jeWPguS4jueisOaSnicsXHJcbiAgICAvLyAgICAgdHlwZTogY2MuRW51bShCbG9ja1R5cGUpLFxyXG4gICAgLy8gICAgIC8vIGRlZmF1bHQ6IEJsb2NrVHlwZS5Ob21hbCxcclxuICAgIC8vICAgICBkaXNwbGF5TmFtZTogJ+eisOaSnuW9oueKtidcclxuICAgIC8vIH0pXHJcbiAgICBcclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oQmxvY2tUeXBlKSxcclxuICAgIH0pXHJcbiAgICB0eXBlOiBCbG9ja1R5cGUgPSBCbG9ja1R5cGUu5pmu6YCa5Z2XO1xyXG5cclxuICAgIEBwcm9wZXJ0eSh7XHJcbiAgICAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgICAgIHR5cGU6IGNjLkVudW0oQmxvY2tDb2xvciksXHJcbiAgICB9KVxyXG4gICAgY29sb3I6IEJsb2NrQ29sb3IgPSBCbG9ja0NvbG9yLue0q+iJsjtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfmqKrlkJHplb/luqYnLFxyXG4gICAgICAgIHR5cGU6IGNjLkludGVnZXIsXHJcbiAgICB9KVxyXG4gICAgaGVuZzogTnVtYmVyID0gMTtcclxuXHJcbiAgICBAcHJvcGVydHkoe1xyXG4gICAgICAgIHRvb2x0aXA6ICfnq5blkJHplb/luqYnLFxyXG4gICAgICAgIHR5cGU6IGNjLkludGVnZXIsXHJcbiAgICB9KVxyXG4gICAgc2h1OiBOdW1iZXIgPSAxO1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIGljZV9TcHJpdGVGcmFtZTogY2MuU3ByaXRlQXRsYXMgPSBudWxsO1xyXG5cclxuXHJcbiAgICAvLyBMSUZFLUNZQ0xFIENBTExCQUNLUzpcclxuICAgIC8vIEBwcm9wZXJ0eShjYy5TcHJpdGVBdGxhcylcclxuICAgIC8vIFVJOiBjYy5TcHJpdGVBdGxhcyA9IG51bGw7XHJcbiAgICBwcml2YXRlIGluaXRpYWxUb3VjaE9mZnNldDogY2MuVmVjMiA9IG51bGw7XHJcbiAgICBwcml2YXRlIG9mZnNldFRvbGVyYW5jZSA9IDEwMDsgLy8g5YGP56e75a655b+N5bqmOyBcclxuXHJcbiAgICBhbGxCbG9ja3M6YW55OyAgICAgICAvL+aJgOacieeahOaWueWdlyznlKjkuo7orqHnrpdwb3NYLHBvc1nmtojpmaRcclxuICAgIHRvdWNoUG9pbnQ6IGNjLlZlYzIgPSBudWxsOyAgICAgLy/op6bmkbjngrlcclxuICAgIGlzVG91Y2g6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAgLy/mmK/lkKbop6bmkbhcclxuICAgIHBvc1g6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRY5Z2Q5qCHXHJcbiAgICBwb3NZOiBudW1iZXIgPSAwOyAgICAgICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qEWeWdkOagh1xyXG4gICAgbW92ZUxlZnQ6IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5bem56e7O1xyXG4gICAgbW92ZVJpZ2h0OiBib29sZWFuID0gdHJ1ZTsgICAgIC8v5piv5ZCm5Y+v5Lul5Y+z56e7O1xyXG4gICAgbW92ZVVwOiBib29sZWFuID0gdHJ1ZTsgICAgICAgIC8v5piv5ZCm5Y+v5Lul5LiK56e7O1xyXG4gICAgbW92ZURvd246IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5LiL56e7O1xyXG4gICAgbW92ZUNvcm5lcjogbnVtYmVyID0gMDsgICAgICAgIC8v5piv5ZCm56Kw5pKe6KeS6JC9XHJcbiAgICBtb3ZlWTpudW1iZXIgPSAwOyAgICAgICAgICAvL+aYr+WQpuWPr+S7peS4iuS4i+enu+WKqDtcclxuICAgIG1vdmVYOm51bWJlciA9IDA7ICAgICAgICAgIC8v5piv5ZCm5Y+v5Lul5bem5Y+z56e75YqoO1xyXG4gICAgdG91Y2hQb2ludFg6IG51bWJlciA9IDA7ICAgICAgICAvL+inpuaRuOeCuVjlnZDmoIc7XHJcbiAgICB0b3VjaFBvaW50WTogbnVtYmVyID0gMDsgICAgICAgIC8v6Kem5pG454K5WeWdkOaghztcclxuICAgIGJsb2NrSWQ6IG51bWJlciA9IDA7ICAgICAgICAgICAgLy/mlrnlnZdJRDtcclxuICAgIHN0YWNraW5nOiBjYy5WZWMyOyAgICAgICAgICAgICAgLy/lj6DliqDmlrnlnZdcclxuICAgIGFkaGVzaXZlOiBjYy5WZWMyOyAgICAgICAgICAgICAgLy/nspjlkIjmlrnlnZdcclxuICAgIGxldmVsOiBudW1iZXIgPSAwOyAgICAgICAgICAgIC8v5Y+g5Yqg5pa55Z2X5bGC5pWwO1xyXG4gICAgcHo6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIG92ZXI6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAvL+aWueWdl+aYr+WQpuWkseaViOW3sua2iOWksVxyXG4gICAgY29sbGlkZXI6IGFueTtcclxuICAgIGJsb2NrX0luZm86YW55O1xyXG4gICAgX3RvdWNoTGlzdGVuZXI6IGFueTtcclxuICAgIHJlbGF0aXZlX1Bvc2l0aW9uOmNjLlZlYzI7ICAvL+eCueWHu+WSjOaWueWdl+ebuOWvueS9jee9rlxyXG4gICAgcHJpdmF0ZSBfZXZlbnRNYW5hZ2VyOiBhbnk7XHJcbiAgICBoaXQ6IGNjLk5vZGU7XHJcbiAgICBvdGhlckNvbGxpZGVyOiBhbnk7XHJcbiAgICBtb3ZlU3RhY2s6IGJvb2xlYW47XHJcbiAgICB0b3VjaERlbHRhOiBjYy5WZWMyID0gY2MudjIoMCwgMCk7IFxyXG4gICAgYWRoZXNpdmVOb2RlOiBhbnk7XHJcbiAgICBjaGVja0NvbGxpc2lvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcblxyXG4gICAgb25Mb2FkICgpIHtcclxuICAgICAgICB0aGlzLnB6ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFja2luZyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgdGhpcy5hZGhlc2l2ZSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgdGhpcy5hZGhlc2l2ZU5vZGUgPSBbXTtcclxuICAgICAgICB0aGlzLmNvbGxpZGVyID0gdGhpcy5ub2RlLmdldENvbXBvbmVudChjYy5Qb2x5Z29uQ29sbGlkZXIpO1xyXG4gICAgICAgIHRoaXMub3ZlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2hlY2tDb2xsaXNpb24gPSBmYWxzZTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgc3RhcnQgKCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBqc29uRGVlcENsb25lPFQ+KG9iajogVCk6IFQge1xyXG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG9iaikpO1xyXG4gICAgfVxyXG4gICAgLy9jcmVhdGVBZCDkuLrmmK/lkKbliJvlu7rnspjlkIjlv6vlm77niYdcclxuICAgIGluaXQoYmxvY2tfSW5mbyxwb3NYLHBvc1ksbm9kZSxjcmVhdGVBZCl7XHJcbiAgICAgICAgdGhpcy5ibG9ja19JbmZvID0gdGhpcy5qc29uRGVlcENsb25lKGJsb2NrX0luZm8pO1xyXG4gICAgICAgIGlmKG5vZGUpIHRoaXMuYmxvY2tfSW5mby5ub2RlID0gbm9kZTtcclxuICAgICAgICB0aGlzLnR5cGUgPSBibG9ja19JbmZvLnR5cGU7XHJcbiAgICAgICAgdGhpcy5jb2xvciA9IGJsb2NrX0luZm8uY29sb3I7XHJcbiAgICAgICAgdGhpcy5ibG9ja0lkID0gYmxvY2tfSW5mby5pZDtcclxuICAgICAgICAvLyBpZihwb3NYJiZwb3NZKXtcclxuICAgICAgICAvLyAgICAgdGhpcy5wb3NYID0gcG9zWDtcclxuICAgICAgICAvLyAgICAgdGhpcy5wb3NZID0gcG9zWTtcclxuICAgICAgICAvLyB9XHJcblxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKFwi5pa55Z2X5bGC57qnXCIsdGhpcy5ub2RlLnpJbmRleCk7XHJcbiAgICAgICAgdGhpcy5pbml0Q29sb3IoKTtcclxuICAgICAgICB0aGlzLmluaXRUeXBlKCk7XHJcbiAgICAgICAgdGhpcy5pbml0QmxvY2tzKCk7XHJcblxyXG4gICAgICAgIGlmKHRoaXMudHlwZSAhPSBCbG9ja1R5cGUu5Y+g5Yqg5Z2X5LiKKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJULCB0aGlzLnRvdWNoU3RhcnQsIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfTU9WRSwgdGhpcy50b3VjaE1vdmUsIHRoaXMpO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfQ0FOQ0VMLCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgdGhpcy50b3VjaEVuZCwgdGhpcyk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZVsnX3RvdWNoTGlzdGVuZXInXS5zZXRTd2FsbG93VG91Y2hlcyhmYWxzZSk7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgLy8g6K6h566X5L2N572u5YGP56e7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcG9zT2Zmc2V0ID0gY2MudjIoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54IC0gdGhpcy5ibG9ja19JbmZvLm5vZGUueCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgLSB0aGlzLmJsb2NrX0luZm8ubm9kZS55XHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICBpZihjcmVhdGVBZCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubm9kZS56SW5kZXggPj0gdGhpcy5ibG9ja19JbmZvLm5vZGUuekluZGV4KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jcmVhdGVBZGhlc2l2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuY3JlYXRlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFyZ2V0TmFtZXMgPSBbJ3RvcCcsICdkb3duJywgJ2xlZnQnLCAncmlnaHQnXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5jaGlsZHJlbi5mb3JFYWNoKGNoaWxkID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgY2MuTm9kZSAmJiB0YXJnZXROYW1lcy5pbmNsdWRlcyhjaGlsZC5uYW1lKSAmJiBjaGlsZC5nZXRDb21wb25lbnQoXCJscV9jb2xsaWRlXCIpLmRhdGFfc3RyaW5nICE9IFwiLTFcIikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xvbmVkQ2hpbGQgPSBjYy5pbnN0YW50aWF0ZShjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9uZWRDaGlsZC5nZXRDb21wb25lbnQoXCJscV9jb2xsaWRlXCIpLmRhdGFfc3RyaW5nID0gXCItMVwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvbmVkQ2hpbGQucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8g6I635Y+W5a2Q6IqC54K555u45a+55LqO54i26IqC54K555qE5L2N572uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWxhdGl2ZVBvcyA9IGNoaWxkLmdldFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDosIPmlbTlrZDoioLngrnkvY3nva7ku6Xkv53or4Hnm7jlr7nkvY3nva7kuI3lj5hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb25lZENoaWxkLnNldFBvc2l0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0aXZlUG9zLnggLSBwb3NPZmZzZXQueCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVBvcy55IC0gcG9zT2Zmc2V0LnlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRoZXNpdmUgPSBwb3NPZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIDEwMCk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIGxldCBtYXBJbmZvID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEluZm87XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPG1hcEluZm8ubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IGJsb2NrUmVjdCA9IG1hcEluZm9baV0uZ2V0Qm91bmRpbmdCb3goKTtcclxuICAgICAgICAgICAgICAgIC8vIOS9v+eUqCBjYy5JbnRlcnNlY3Rpb24ucG9pbnRJblJlY3Qg5pa55rOV5Yik5pat54K55piv5ZCm5Zyo55+p5b2i6IyD5Zu05YaFXHJcbiAgICAgICAgICAgICAgICBsZXQgcG9pbnQgPSBjYy52Mih0aGlzLm5vZGUucG9zaXRpb24ueC01LCB0aGlzLm5vZGUucG9zaXRpb24ueSsxMClcclxuICAgICAgICAgICAgICAgIGlmKGJsb2NrUmVjdC5jb250YWlucyhwb2ludCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucG9zWCA9IG1hcEluZm9baV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikucG9zWDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvc1kgPSBtYXBJbmZvW2ldLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1k7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubGV2ZWwgPSA1MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gbWFwSW5mb1tpXS54ICsgNjU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSBtYXBJbmZvW2ldLnkgLSA2MDtcclxuICAgICAgICAgICAgICAgICAgICBpPSAxMDAwMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdCA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBuYW1lID0gXCJ4el9cIit0aGlzLmJsb2NrX0luZm8uYmxvY2s7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oaXQuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSB0aGlzLmljZV9TcHJpdGVGcmFtZS5fc3ByaXRlRnJhbWVzW25hbWVdO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGl0LnNldEFuY2hvclBvaW50KHRoaXMubm9kZS5hbmNob3JYLHRoaXMubm9kZS5hbmNob3JZKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdC5zZXRQb3NpdGlvbigxMywtMTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaGl0LmFuY2hvclggPT0gMC41KSB0aGlzLmhpdC5zZXRQb3NpdGlvbigwLC0xMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLmhpdC5hbmNob3JYID09IDAuMzMpIHRoaXMuaGl0LnNldFBvc2l0aW9uKC0xMywtMTEpO1xyXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYodGhpcy5oaXQuYW5jaG9yWCA9PSAwLjY2KSB0aGlzLmhpdC5zZXRQb3NpdGlvbigyLC05KTtcclxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmhpdC5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpdC5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG5cclxuXHJcbiAgICAvL+WIneWni+WMluaWueWdl+exu+Wei1xyXG4gICAgaW5pdFR5cGUoKXtcclxuICAgICAgICBsZXQgcG9zQ29uZmlnID0gY2MuZnguR2FtZUNvbmZpZy5QUk9QX0lORk9bdGhpcy5ibG9ja19JbmZvLmJsb2NrXTtcclxuICAgICAgICBcclxuICAgICAgICBzd2l0Y2godGhpcy50eXBlKXtcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu54K45by55Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IGJvb20gPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIGJvb20ucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgYm9vbS5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMS54LHBvc0NvbmZpZy5wb3MxLnkpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvPy5ib29tVGltZSkgXHJcbiAgICAgICAgICAgICAgICAgICAgYm9vbS5nZXRDb21wb25lbnQoXCJCb29tXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmJvb21UaW1lKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrOyBcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu5pif5pif5Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IHN0YXIgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIHN0YXIuYW5jaG9yWCA9IHRoaXMubm9kZS5hbmNob3JYO1xyXG4gICAgICAgICAgICAgICAgc3Rhci5hbmNob3JZID0gdGhpcy5ub2RlLmFuY2hvclk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLmdldENvbXBvbmVudChjYy5TcHJpdGUpLnNwcml0ZUZyYW1lID0gc3Rhci5nZXRDb21wb25lbnQoXCJTdGFyXCIpLnN0YXJfU3ByaXRlRnJhbWUuZ2V0U3ByaXRlRnJhbWUoXCJzdGFyX1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jayk7XHJcbiAgICAgICAgICAgICAgICBzdGFyLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIHN0YXIuc2V0UG9zaXRpb24ocG9zQ29uZmlnLnBvczQueCAtIDEwLHBvc0NvbmZpZy5wb3M0LnkpO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7pkqXljJnlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQga2V5ID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBrZXkucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAga2V5LnNldFBvc2l0aW9uKHBvc0NvbmZpZy5wb3MxLngscG9zQ29uZmlnLnBvczEueSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBCbG9ja1R5cGUu5LiK6ZSB5Z2XOlxyXG4gICAgICAgICAgICAgICAgbGV0IGxvY2sgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIGxvY2sucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgbG9jay5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMS54LHBvc0NvbmZpZy5wb3MxLnkpO1xyXG4gICAgICAgICAgICAgICAgbG9jay5nZXRDb21wb25lbnQoXCJMb2NrXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmxvY2tUaW1lKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7lhrvnu5PlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQgZnJlZXplID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBmcmVlemUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgbGV0ICBuYW1lID0gXCJpY2VfXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNwcml0ZUZyYW1lID0gdGhpcy5pY2VfU3ByaXRlRnJhbWUuX3Nwcml0ZUZyYW1lc1tuYW1lXTtcclxuICAgICAgICAgICAgICAgIGZyZWV6ZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgICAgICAgICAgICAgIGxldCBmcmVlemVYID0gcG9zQ29uZmlnLnBvczYueC0odGhpcy5ub2RlLndpZHRoKih0aGlzLm5vZGUuYW5jaG9yWC0wLjUpKTsgbGV0IGZyZWV6ZVkgPSBwb3NDb25maWcucG9zNi55ICsgdGhpcy5ub2RlLmhlaWdodC8yO1xyXG4gICAgICAgICAgICAgICAgZnJlZXplLnNldFBvc2l0aW9uKGZyZWV6ZVgsZnJlZXplWSk7XHJcbiAgICAgICAgICAgICAgICBmcmVlemUuZ2V0Q29tcG9uZW50KFwiRnJlZXplXCIpLmluaXQodGhpcy5ibG9ja19JbmZvLmZyZWV6ZVRpbWUpO1xyXG4gICAgICAgICAgICAgICAgZnJlZXplLmdldENoaWxkQnlOYW1lKFwidGltZVwiKS5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zNS54LTEwLWZyZWV6ZVgscG9zQ29uZmlnLnBvczUueS0yLWZyZWV6ZVkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQmxvY2tUeXBlLuawtOW5s+WdlzpcclxuICAgICAgICAgICAgICAgIGxldCBob3Jpem9udGFsID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIGxldCBoZW5nID0gXCJoZW5nXCIgKyB0aGlzLmhlbmc7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLmdldENoaWxkQnlOYW1lKGhlbmcpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBob3Jpem9udGFsLnNldFBvc2l0aW9uKHBvc0NvbmZpZy5wb3MyLngtMyxwb3NDb25maWcucG9zMi55KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIEJsb2NrVHlwZS7lnoLnm7TlnZc6XHJcbiAgICAgICAgICAgICAgICBsZXQgdmVydGljYWwgPSBjYy5pbnN0YW50aWF0ZShNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfUHJvcFt0aGlzLnR5cGVdKTtcclxuICAgICAgICAgICAgICAgIHZlcnRpY2FsLnBhcmVudCA9IHRoaXMubm9kZTtcclxuICAgICAgICAgICAgICAgIGxldCBzaHUgPSBcInNodVwiICsgdGhpcy5zaHU7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC5nZXRDaGlsZEJ5TmFtZShzaHUpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbC5zZXRQb3NpdGlvbihwb3NDb25maWcucG9zMy54LHBvc0NvbmZpZy5wb3MzLnkpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgQmxvY2tUeXBlLuWPoOWKoOWdl+S4ijpcclxuICAgICAgICAgICAgICAgIHRoaXMubW92ZVN0YWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX1NUQVJUKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5vZmYoY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfTU9WRSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCk7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLnNlbGZCb3hDb2xsaWRlcnMgPSBbXTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSAyMDE7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5nZXRTdGFja2luZ1BvcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnNldFBvc2l0aW9uKHRoaXMubm9kZS54ICsgcG9zLngsdGhpcy5ub2RlLnkgKyBwb3MueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNraW5nID0gY2MudjIodGhpcy5ub2RlLnggLSB0aGlzLmJsb2NrX0luZm8ubm9kZS54LHRoaXMubm9kZS55IC0gdGhpcy5ibG9ja19JbmZvLm5vZGUueSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5ibG9ja19JbmZvLm5vZGUgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuc2NhbGVYICo9IDAuNztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5zY2FsZVkgKj0gMC43O1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImxlZnRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInJpZ2h0XCIgfHwgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLm5hbWUgPT0gXCJ0b3BcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImRvd25cIilcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5Yid5aeL5YyW5pa55Z2X6aKc6ImyXHJcbiAgICBpbml0Q29sb3IoKXsgICAgICAgICAgIFxyXG4gICAgIFxyXG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb2xvcitcImNvbG9yXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG5cclxuICAgICAgICBsZXQgbnVtYmVyID0gTWF0aC5mbG9vcigodGhpcy5jb2xvci0xKS8yKTtcclxuXHJcbiAgICAgICAgbGV0IGJsb2NrU3ByaXRlRnJhbWUgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuQmxvY2tfQ29sb3JbbnVtYmVyXS5fc3ByaXRlRnJhbWVzO1xyXG4gICAgICAgIHZhciBzcHJpdGVGcmFtZSA9IGJsb2NrU3ByaXRlRnJhbWVbbmFtZV07XHJcbiAgICAgIFxyXG4gICAgICAgIC8vIGlmKHRoaXMudHlwZSA9PSBCbG9ja1R5cGUu5Ya757uT5Z2XKXtcclxuICAgICAgICAvLyAgICAgbmFtZSA9IFwiaWNlX1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jaztcclxuICAgICAgICAvLyAgICAgc3ByaXRlRnJhbWUgPSB0aGlzLmljZV9TcHJpdGVGcmFtZS5fc3ByaXRlRnJhbWVzW25hbWVdO1xyXG4gICAgICAgIC8vIH1cclxuXHJcbiAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiaWNvblwiKS5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHNwcml0ZUZyYW1lO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Yib5bu657KY5ZCI5b+r6L+e5o6l5aSEXHJcbiAgICBjcmVhdGVBZGhlc2l2ZSgpe1xyXG4gICAgICAgIGxldCBib3ggPSBbXTtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmFsbEJsb2Nrcy5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgYm94LnB1c2goY2MudjIodGhpcy5hbGxCbG9ja3NbaV0ueCt0aGlzLnBvc1gsdGhpcy5hbGxCbG9ja3NbaV0ueSt0aGlzLnBvc1kpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG90aGVyQm94ID0gW107XHJcbiAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYWxsQmxvY2tzLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICBvdGhlckJveC5wdXNoKGNjLnYyKHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmFsbEJsb2Nrc1tpXS54K3RoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuYWxsQmxvY2tzW2ldLnkrdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucG9zWSkpOyBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvcihsZXQgaz0wOyBrPGJveC5sZW5ndGg7IGsrKyl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaj0wOyBqPG90aGVyQm94Lmxlbmd0aDsgaisrKXtcclxuICAgICAgICAgICAgICAgIGlmKChib3hba10ueCA9PSBvdGhlckJveFtqXS54KzEgfHwgYm94W2tdLnggPT0gb3RoZXJCb3hbal0ueC0xKSAmJiAoYm94W2tdLnkgPT0gb3RoZXJCb3hbal0ueSkpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5ZyoWOi9tCDnm7jpgrtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGVmdCA9IGJveFtrXS54ID09IG90aGVyQm94W2pdLngrMSA/IFwibGVmdFwiIDogXCJyaWdodFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQWRoZXNpdmUobGVmdCxib3hba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIG90aGVyQm94LnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBqLS07IC8vIOiwg+aVtOe0ouW8lVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGogPCAwKSBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKChib3hba10ueSA9PSBvdGhlckJveFtqXS55KzEgfHwgYm94W2tdLnkgPT0gb3RoZXJCb3hbal0ueS0xKSAmJiAoYm94W2tdLnggPT0gb3RoZXJCb3hbal0ueCkpe1xyXG4gICAgICAgICAgICAgICAgICAgIC8v5ZyoWei9tCDnm7jpgrtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZG93biA9IGJveFtrXS55ID09IG90aGVyQm94W2pdLnkrMSA/IFwiZG93blwiIDogXCJ1cFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQWRoZXNpdmUoZG93bixib3hba10pO1xyXG4gICAgICAgICAgICAgICAgICAgIG90aGVyQm94LnNwbGljZShqLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICBqLS07IC8vIOiwg+aVtOe0ouW8lVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKGogPCAwKSBicmVhaztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gbGV0IGFkaGVzaXZlID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbdGhpcy50eXBlXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy/lhbfkvZPmt7vliqDnspjlkIjlv6vplIHpk77mlrnms5VcclxuICAgIGFkZEFkaGVzaXZlKGRpcmFjdGlvbixib3gpe1xyXG4gICAgICAgIGxldCBwb3MgPSBjYy52Mihib3gueCAtIHRoaXMucG9zWCxib3gueSAtIHRoaXMucG9zWSk7XHJcbiAgICAgICAgbGV0IGFkaGVzaXZlID0gY2MuaW5zdGFudGlhdGUoTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX1Byb3BbMTBdKTtcclxuICAgICAgICBhZGhlc2l2ZS5wYXJlbnQgPSB0aGlzLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQWRoZXNpdmVcIik7XHJcbiAgICAgICAgLy8gYWRoZXNpdmUucGFyZW50ID0gdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwiYWRoZXNpdmVcIik7XHJcbiAgICAgICAgYWRoZXNpdmUuc2V0UG9zaXRpb24oIDEyMCpwb3MueCAtIDY1ICsgdGhpcy5ub2RlLngsIDEyMCpwb3MueSArIDYwICsgdGhpcy5ub2RlLnkpO1xyXG4gICAgICAgIGlmKGRpcmFjdGlvbiA9PSBcImxlZnRcIiB8fCBkaXJhY3Rpb24gPT0gXCJyaWdodFwiKXtcclxuICAgICAgICAgICAgYWRoZXNpdmUuZ2V0Q2hpbGRCeU5hbWUoXCJoZW5nXCIpLmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIGFkaGVzaXZlLmdldENoaWxkQnlOYW1lKFwiaGVuZ1wiKS54ID0gLTYwO1xyXG4gICAgICAgICAgICBpZihkaXJhY3Rpb24gPT0gXCJyaWdodFwiKSBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueCA9IDYwO1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueCArPSA5O1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcImhlbmdcIikueSArPSA3O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS55ID0gLTYwO1xyXG4gICAgICAgICAgICBpZihkaXJhY3Rpb24gPT0gXCJ1cFwiKSBhZGhlc2l2ZS5nZXRDaGlsZEJ5TmFtZShcInNodVwiKS55ID0gNjA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGFkaGVzaXZlLmdldENvbXBvbmVudChcIkFkaGVzaXZlXCIpLmluaXQodGhpcy5ub2RlKTtcclxuICAgICAgICB0aGlzLmFkaGVzaXZlTm9kZS5wdXNoKGFkaGVzaXZlKTtcclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVBZGhlc2l2ZSgpe1xyXG4gICAgICAgIGlmKHRoaXMuYWRoZXNpdmVOb2RlLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLmFkaGVzaXZlTm9kZS5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBsZXQgYWRoZXNpdmUgPSB0aGlzLmFkaGVzaXZlTm9kZVtpXTtcclxuICAgICAgICAgICAgICAgIGFkaGVzaXZlLmdldENvbXBvbmVudChcIkFkaGVzaXZlXCIpLnJlbW92ZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v5pa55Z2X6JC954K5XHJcbiAgICBibG9ja0ZhbGwocG9pbnQpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciA9PSB0cnVlKSByZXR1cm47XHJcbiAgICAgICAgLy8gLy8g5YGH6K6+IE1hcENvbnJvbGVyIOaciee9keagvOS/oeaBr++8jOi/memHjOeugOWNleekuuS+i1xyXG4gICAgICAgIGNvbnN0IG1hcFdpZHRoID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IG1hcEhlaWdodCA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBIZWlnaHQ7XHJcbiAgICAgICAgY29uc3QgY2VsbFNpemUgPSAxMjA7IC8vIOavj+S4quagvOWtkOeahOWkp+Wwj++8jOagueaNruWunumZheaDheWGteiwg+aVtFxyXG5cclxuICAgICAgICAvLyDorqHnrpfngrnmiYDlnKjnmoTnvZHmoLzlnZDmoIdcclxuICAgICAgICBjb25zdCBncmlkWCA9IE1hdGguZmxvb3IoKHBvaW50LnggKyAobWFwV2lkdGggKiBjZWxsU2l6ZSAvIDIpKSAvIGNlbGxTaXplKTtcclxuICAgICAgICBjb25zdCBncmlkWSA9IE1hdGguZmxvb3IoKHBvaW50LnkgKyAobWFwSGVpZ2h0ICogY2VsbFNpemUgLyAyKSkgLyBjZWxsU2l6ZSk7XHJcblxyXG4gICAgICAgIC8vIOajgOafpee9keagvOWdkOagh+aYr+WQpui2iueVjFxyXG4gICAgICAgIGlmIChncmlkWCA+PSAwICYmIGdyaWRYIDwgbWFwV2lkdGggJiYgZ3JpZFkgPj0gMCAmJiBncmlkWSA8IG1hcEhlaWdodCkge1xyXG4gICAgICAgICAgICBjb25zdCBtYXBCbG9jayA9IE1hcENvbnJvbGVyLl9pbnN0YW5jZS5tYXBCbG9ja3NXYWxsW2dyaWRYXVtncmlkWV07XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrUmVjdCA9IG1hcEJsb2NrLmdldEJvdW5kaW5nQm94KCk7XHJcblxyXG4gICAgICAgICAgICAvLyDkvb/nlKggY2MuSW50ZXJzZWN0aW9uLnBvaW50SW5SZWN0IOaWueazleWIpOaWreeCueaYr+WQpuWcqOefqeW9ouiMg+WbtOWGhVxyXG4gICAgICAgICAgICBpZiAoYmxvY2tSZWN0LmNvbnRhaW5zKHBvaW50KSkge1xyXG4gICAgICAgICAgICAgICAgLy/lr7vmib7okL3ngrlcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlTWFwQmxvY2soKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucG9zWCA9IG1hcEJsb2NrLmdldENvbXBvbmVudChcIk1hcEJsb2NrXCIpLnBvc1g7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBvc1kgPSBtYXBCbG9jay5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCA9IDUwICsgdGhpcy5wb3NYIC0gdGhpcy5wb3NZICogMztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCLmlrnlnZflsYLnuqdcIix0aGlzLm5vZGUuekluZGV4KTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gbWFwQmxvY2sueCArIDY1O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSBtYXBCbG9jay55IC0gNjA7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy50eXBlID09IDkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ibG9ja19JbmZvLm5vZGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS55ID0gdGhpcy5ub2RlLnkgLSB0aGlzLmFkaGVzaXZlLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZih0aGlzLnR5cGUgPT0gMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikubW92ZVN0YWNrID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54ICsgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuc3RhY2tpbmcueDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS55ID0gdGhpcy5ub2RlLnkgKyB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5zdGFja2luZy55O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgICAgICBcclxuICAgICAgICBsZXQgamcgPSBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hlY2tQYXNzKHRoaXMubm9kZSx0aGlzLmFsbEJsb2Nrcyk7XHJcblxyXG4gICAgICAgIGlmKGpnID49IDApe1xyXG4gICAgICAgICAgICB0aGlzLm92ZXIgPSB0cnVlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlU3RhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdmVCb3hDb2xsaWRlcigpO1xyXG4gICAgICAgICAgICB0aGlzLnJlbW92ZU1hcEJsb2NrKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWN0aW9uKGpnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnVwRG9vcih0aGlzLmNvbG9yKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRWaWJyYXRlKFwibWVkaXVtXCIsMSlcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVCb3hDb2xsaWRlcigpe1xyXG4gICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwibGVmdFwiIHx8IHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwicmlnaHRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInRvcFwiIHx8IHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwiZG93blwiKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLmRlc3Ryb3koKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlQWN0aW9uKGRpcmFjdGlvbil7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9TVEFSVCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9NT1ZFKTtcclxuICAgICAgICB0aGlzLm5vZGUub2ZmKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0NBTkNFTCk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9mZihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9FTkQpO1xyXG4gICAgICAgIHRoaXMubm9kZS5hZGRDb21wb25lbnQoY2MuTWFzayk7XHJcbiAgICAgICAgbGV0IHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGxldCBwb3MgPSB0aGlzLm5vZGUuZ2V0UG9zaXRpb24oKTtcclxuICAgICAgICBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLuWPoOWKoOWdl+S4iyl7XHJcbiAgICAgICAgICAgIGxldCBzY2FsZVggPSB0aGlzLm5vZGUuc2NhbGVYO1xyXG4gICAgICAgICAgICBsZXQgc2NhbGVZID0gdGhpcy5ub2RlLnNjYWxlWTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHRoaXMucG9zWCx0aGlzLnBvc1ksdHJ1ZSk7XHJcbiAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMuYmxvY2tfSW5mby5ub2RlKVxyXG4gICAgICAgICAgICAudG8oMC4zLHtwb3NpdGlvbjpwb3Msc2NhbGVYOnNjYWxlWD4wPzE6LTEsc2NhbGVZOnNjYWxlWT4wPzE6LTF9KVxyXG4gICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLueymOWQiOWdlyl7XHJcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVtb3ZlQWRoZXNpdmUoKTtcclxuICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsXHJcbiAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1ksZmFsc2UpO1xyXG4gICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZSA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7ngrjlvLnlnZcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJib29tXCIpLmdldENvbXBvbmVudChcIkJvb21cIikuc3RvcEJvb20oKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgIFxyXG4gICAgICAgIGxldCB0aW1lID0gMC4zMztcclxuICAgICAgICAvLyB0aGlzLm5vZGUuekluZGV4ID0gMDtcclxuICAgICAgICBsZXQgd2lkdGggPSBNYXRoLmZsb29yKHRoaXMubm9kZS53aWR0aCAvIDEyMCk7XHJcbiAgICAgICAgbGV0IGhlaWdodCA9IE1hdGguZmxvb3IodGhpcy5ub2RlLmhlaWdodCAvIDEyMCk7XHJcblxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgY2MuZnguQXVkaW9NYW5hZ2VyLl9pbnN0YW5jZS5wbGF5RWZmZWN0KFwieGlhb2NodVwiLG51bGwpO1xyXG4gICAgICAgIH0sIDMwMCApO1xyXG4gICAgICAgIHRoaXMuc2V0VmlicmF0ZShcImxpZ2h0XCIsMylcclxuXHJcbiAgICAgICAgaWYoZGlyYWN0aW9uID09IDApe1xyXG4gICAgICAgICAgICB0aW1lID0gMC4zMypoZWlnaHQ7XHJcbiAgICAgICAgICAgIC8vIHRpbWUgPSAwLjk5O1xyXG4gICAgICAgICAgICBmb3IobGV0IGk9MDsgaTx0aGlzLm5vZGUuY2hpbGRyZW4ubGVuZ3RoO2krKyl7XHJcbiAgICAgICAgICAgICAgICBjYy50d2Vlbih0aGlzLm5vZGUuY2hpbGRyZW5baV0pXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7eTp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueSArIHRoaXMubm9kZS5jaGlsZHJlblswXS5oZWlnaHR9KVxyXG4gICAgICAgICAgICAgICAgLnN0YXJ0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZihkaXJhY3Rpb24gPT0gMSl7XHJcbiAgICAgICAgICAgIHRpbWUgPSAwLjMzKmhlaWdodDtcclxuICAgICAgICAgICAgLy8gdGltZSA9IDAuOTlcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmNoaWxkcmVuW2ldKSBcclxuICAgICAgICAgICAgICAudG8odGltZSx7eTp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueSAtIHRoaXMubm9kZS5jaGlsZHJlblswXS5oZWlnaHR9KVxyXG4gICAgICAgICAgICAgIC5zdGFydCgpOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gICBcclxuICAgICAgICBlbHNlIGlmKGRpcmFjdGlvbiA9PSAyKXtcclxuICAgICAgICAgICAgdGltZSA9IDAuMzMqd2lkdGg7XHJcbiAgICAgICAgICAgIC8vIHRpbWUgPSAwLjk5XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7aSsrKXtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHRoaXMubm9kZS5jaGlsZHJlbltpXSkgXHJcbiAgICAgICAgICAgICAgICAudG8odGltZSx7eDp0aGlzLm5vZGUuY2hpbGRyZW5baV0ueCAtIHRoaXMubm9kZS5jaGlsZHJlblswXS53aWR0aH0pXHJcbiAgICAgICAgICAgICAgICAuc3RhcnQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKGRpcmFjdGlvbiA9PSAzKXtcclxuICAgICAgICAgICAgdGltZSA9IDAuMzMqd2lkdGhcclxuICAgICAgICAgICAgLy8gdGltZSA9IDAuOTlcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5ub2RlLmNoaWxkcmVuLmxlbmd0aDtpKyspe1xyXG4gICAgICAgICAgICAgICAgY2MudHdlZW4odGhpcy5ub2RlLmNoaWxkcmVuW2ldKSBcclxuICAgICAgICAgICAgICAgIC50byh0aW1lLHt4OnRoaXMubm9kZS5jaGlsZHJlbltpXS54ICsgdGhpcy5ub2RlLmNoaWxkcmVuWzBdLndpZHRofSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHRlbXBDb2xvciA9IHRoaXMuY29sb3I7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnVwRG9vcih0ZW1wQ29sb3IpOyBcclxuICAgICAgICAgICAgfSwgMjUwKTtcclxuXHJcbiAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5uZXh0TGV2ZWwoKTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG5cclxuICAgICAgICAgICAgLy8gdGhpcy5ub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyB0aGlzLm5vZGUucmVtb3ZlRnJvbVBhcmVudCgpO1xyXG4gICAgICAgIH0sIHRpbWUqMTAwMCk7XHJcblxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBcclxuICAgIHRvdWNoU3RhcnQoZXZlbnQpe1xyXG4gICAgICAgIGlmKHRoaXMub3ZlciB8fCBNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZU92ZXIpIHJldHVybjtcclxuICAgICAgICAvLyDov5Tlm57kuJbnlYzlnZDmoIdcclxuICAgICAgICBsZXQgdG91Y2hMb2MgPSBldmVudC5nZXRMb2NhdGlvbigpO1xyXG4gICAgICAgIC8vIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9hcGkvemgvY2xhc3Nlcy9JbnRlcnNlY3Rpb24uaHRtbCDmo4DmtYvovoXliqnnsbtcclxuICAgICAgICAvLyBsZXQgcG9zID0gdGhpcy5jb2xsaWRlci53b3JsZC5wb2ludHNcclxuXHJcbiAgICAgICAgaWYoIXRoaXMuY29sbGlkZXIud29ybGQpe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOWIpOaWreinpuaRuOeCueaYr+WQpuWcqOWkmui+ueW9ouWGhVxyXG4gICAgICAgIGlmIChjYy5JbnRlcnNlY3Rpb24ucG9pbnRJblBvbHlnb24odG91Y2hMb2MsIHRoaXMuY29sbGlkZXIud29ybGQucG9pbnRzKSkge1xyXG4gICAgICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuaGFtbWVyKXtcclxuICAgICAgICAgICAgICAgIHRoaXMuZWxpbWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5oYW1tZXJNYXNrLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm5vZGUucGFyZW50LmdldENoaWxkQnlOYW1lKFwiQm90dG9tXCIpLmdldENoaWxkQnlOYW1lKFwiZGVzdHJveUJ0blwiKS5nZXRDb21wb25lbnQoXCJidG5Db250cm9sXCIpLnNldFRvdWNoKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICBpZih0aGlzLnR5cGUgIT0gQmxvY2tUeXBlLuS4iumUgeWdlyAmJiB0aGlzLnR5cGUgIT0gQmxvY2tUeXBlLuWGu+e7k+Wdlyl7XHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2Uuc3RhcnRVcGRhdGUoKTtcclxuICAgICAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImhpdFwiLG51bGwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnpJbmRleCA9IDIwMDtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMudHlwZSA9PSA5KXtcclxuICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmJsb2NrX0luZm8ubm9kZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLnpJbmRleCA9IDIwMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaGl0LmFjdGl2ZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5kb3duRG9vcih0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5jb2xvcix0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS50eXBlKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmKHRoaXMudHlwZSA9PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5tb3ZlU3RhY2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0b3VjaFBvaW50ID0gZXZlbnQuZ2V0TG9jYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGxldCBsb2NhbCA9IHRoaXMubm9kZS5wYXJlbnQuY29udmVydFRvTm9kZVNwYWNlQVIodG91Y2hQb2ludCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnRYID0gbG9jYWwueDtcclxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hQb2ludFkgPSBsb2NhbC55O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlTGVmdCA9IHRoaXMubW92ZVJpZ2h0ID0gdGhpcy5tb3ZlVXAgPSB0aGlzLm1vdmVEb3duID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVDb3JuZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbiA9IGNjLnYyKHRoaXMubm9kZS54LWxvY2FsLngsdGhpcy5ub2RlLnktbG9jYWwueSk7XHJcbiAgICAgICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlUmlzZUZhbGwodGhpcy5jb2xvcix0cnVlKTtcclxuICAgICAgICAgICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5kb3duRG9vcih0aGlzLmNvbG9yLHRoaXMudHlwZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZpYnJhdGUoXCJsaWdodFwiLDEpXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmhpdCkgdGhpcy5oaXQuYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVG91Y2ggPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5pc1RvdWNoID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRvdWNoRW5kKGV2ZW50KXtcclxuICAgICAgICBpZihNYXBDb25yb2xlci5faW5zdGFuY2UuZ2FtZU92ZXIpIHJldHVybjtcclxuICAgICAgICBpZih0aGlzLmlzVG91Y2gpe1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoRGVsdGEgPSBjYy52MigwLCAwKTtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0NvbGxpc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UuY2hhbmdlUmlzZUZhbGwodGhpcy5jb2xvcixmYWxzZSk7XHJcbiAgICAgICAgICAgIGNjLmZ4LkF1ZGlvTWFuYWdlci5faW5zdGFuY2UucGxheUVmZmVjdChcImRvd25cIixudWxsKTtcclxuICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLnJlbW92ZU9uZUJsb2NrKCk7XHJcbiAgICAgICAgICAgIHRoaXMuaXNUb3VjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuekluZGV4ID0gdGhpcy5sZXZlbDtcclxuICAgICAgICAgICAgdGhpcy5oaXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmKHRoaXMudHlwZSA9PSA5KXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5oaXQuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhpcy5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikuaXNUb3VjaCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnQgPSBldmVudC5nZXRMb2NhdGlvbigpO1xyXG4gICAgICAgICAgICBsZXQgbG9jYWwgPSBjYy52Mih0aGlzLm5vZGUueCAtIDUwLHRoaXMubm9kZS55ICsgNTAgKTtcclxuICAgICAgICAgICAgaWYodGhpcy50eXBlICE9IDEwKXtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ibG9ja0ZhbGwobG9jYWwpO1xyXG4gICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IDkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYmxvY2tfSW5mby5ub2RlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvY2FsVGVtcCA9IGNjLnYyKHRoaXMuYmxvY2tfSW5mby5ub2RlLngtNTAsdGhpcy5ibG9ja19JbmZvLm5vZGUueSs1MCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLmJsb2NrRmFsbChsb2NhbFRlbXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLm1vdmVMZWZ0ID0gdGhpcy5tb3ZlUmlnaHQgPSB0aGlzLm1vdmVVcCA9IHRoaXMubW92ZURvd24gPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgXHJcbiAgICB9XHJcblxyXG4gICAgdG91Y2hNb3ZlKGV2ZW50OiBjYy5FdmVudC5FdmVudFRvdWNoKSB7XHJcbiAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLmdhbWVPdmVyKSByZXR1cm47XHJcbiAgICAgICAgLy8gY29uc3QgY3VycmVudFRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICAgIC8vIC8vIOWmguaenOi3neemu+S4iuasoeenu+WKqOaXtumXtOWwj+S6jumXtOmalOaXtumXtO+8jOebtOaOpei/lOWbnlxyXG4gICAgICAgIC8vIGlmIChjdXJyZW50VGltZSAtIHRoaXMubGFzdE1vdmVUaW1lIDwgdGhpcy5tb3ZlSW50ZXJ2YWwpIHtcclxuICAgICAgICAvLyAgICAgcmV0dXJuO1xyXG4gICAgICAgIC8vIH1cclxuICAgICAgICAvLyB0aGlzLmxhc3RNb3ZlVGltZSA9IGN1cnJlbnRUaW1lO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5pc1RvdWNoKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhID0gZXZlbnQuZ2V0RGVsdGEoKTtcclxuICAgICAgICAgICAgY29uc3QgdG91Y2hQb2ludCA9IGV2ZW50LmdldExvY2F0aW9uKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvY2FsID0gdGhpcy5ub2RlLnBhcmVudC5jb252ZXJ0VG9Ob2RlU3BhY2VBUih0b3VjaFBvaW50KTtcclxuICAgICAgICAgICAgdGhpcy50b3VjaFBvaW50WCA9IGxvY2FsLng7XHJcbiAgICAgICAgICAgIHRoaXMudG91Y2hQb2ludFkgPSBsb2NhbC55O1xyXG4gICAgICAgICAgICBkZWx0YS54ID0gdGhpcy50b3VjaFBvaW50WCAtIHRoaXMubm9kZS54ICsgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbi54O1xyXG4gICAgICAgICAgICBkZWx0YS55ID0gdGhpcy50b3VjaFBvaW50WSAtIHRoaXMubm9kZS55ICsgIHRoaXMucmVsYXRpdmVfUG9zaXRpb24ueTtcclxuXHJcbiAgICAgICAgICAgIC8vIOmZkOWItuenu+WKqOmAn+W6plxyXG4gICAgICAgICAgICB0aGlzLnRvdWNoUG9pbnRYID0gbG9jYWwueDtcclxuICAgICAgICAgICAgdGhpcy50b3VjaFBvaW50WSA9IGxvY2FsLnk7XHJcbiAgICAgICAgICAgIGRlbHRhLnggPSB0aGlzLnRvdWNoUG9pbnRYIC0gdGhpcy5ub2RlLnggKyB0aGlzLnJlbGF0aXZlX1Bvc2l0aW9uLng7XHJcbiAgICAgICAgICAgIGRlbHRhLnkgPSB0aGlzLnRvdWNoUG9pbnRZIC0gdGhpcy5ub2RlLnkgKyAgdGhpcy5yZWxhdGl2ZV9Qb3NpdGlvbi55O1xyXG5cclxuICAgICAgICAgICAgLy8g6ZmQ5Yi256e75Yqo6YCf5bqmXHJcbiAgICAgICAgICAgIGRlbHRhLnggPSBNYXRoLm1heCgtdGhpcy5tYXhTcGVlZCwgTWF0aC5taW4odGhpcy5tYXhTcGVlZCwgZGVsdGEueCkpO1xyXG4gICAgICAgICAgICBkZWx0YS55ID0gTWF0aC5tYXgoLXRoaXMubWF4U3BlZWQsIE1hdGgubWluKHRoaXMubWF4U3BlZWQsIGRlbHRhLnkpKTtcclxuXHJcbiAgICAgICAgICAgIC8vIOiusOW9leinpuaRuOenu+WKqOeahOWinumHj1xyXG4gICAgICAgICAgICB0aGlzLnRvdWNoRGVsdGEgPSBkZWx0YTsgXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8v6LaF5Ye66ZmQ5Yi25Yik5patXHJcbiAgICBleGNlZWRzKHN0ZXB4LHN0ZXB5KXtcclxuICAgICBcclxuICAgIH1cclxuXHJcbiAgICBlbGltaW5hdGUoKXtcclxuICAgICAgICAvL+mUpOWtkOeKtuaAgea2iOWksVxyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5wYXVzZSA9IHRydWU7XHJcbiAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLmhhbW1lciA9IGZhbHNlO1xyXG4gICAgICAgIC8v5aaC5p6c5pa55Z2X5piv5pyJ54m55q6K54q25oCB77yM5YiZ54m55q6K5aSE55CGXHJcbiAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7lhrvnu5PlnZcpe1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoXCJmcmVlemVcIikuZ2V0Q29tcG9uZW50KFwiRnJlZXplXCIpLnJlZHVjZSgyKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmKHRoaXMudHlwZSA9PSBCbG9ja1R5cGUu5LiK6ZSB5Z2XKXtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLmdldENoaWxkQnlOYW1lKFwibG9ja1wiKS5nZXRDb21wb25lbnQoXCJMb2NrXCIpLnJlZHVjZSgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvL+WmguaenOaWueWdl+WPr+S7pea2iOmZpFxyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5ibG9ja051bSAtPSAxO1xyXG4gICAgICAgIE1hcENvbnJvbGVyLl9pbnN0YW5jZS5zcGVjaWFsX1RyZWF0bWVudCh0aGlzLm5vZGUpO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICB0aGlzLnJlbW92ZU1hcEJsb2NrKCk7XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcG9zID0gdGhpcy5ub2RlLmdldFBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgIGlmKHNlbGYudHlwZSA9PSBCbG9ja1R5cGUu5Y+g5Yqg5Z2X5LiLKXtcclxuICAgICAgICAgICAgICAgIGxldCBzY2FsZVggPSBzZWxmLm5vZGUuc2NhbGVYO1xyXG4gICAgICAgICAgICAgICAgbGV0IHNjYWxlWSA9IHNlbGYubm9kZS5zY2FsZVk7XHJcbiAgICAgICAgICAgICAgICBzZWxmLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5yZXN0b3JlTm9tYWwodGhpcy5wb3NYLHRoaXMucG9zWSx0cnVlKTtcclxuICAgICAgICAgICAgICAgIGNjLnR3ZWVuKHNlbGYuYmxvY2tfSW5mby5ub2RlKVxyXG4gICAgICAgICAgICAgICAgLnRvKDAuMSx7cG9zaXRpb246cG9zLHNjYWxlWDpzY2FsZVg+MD8xOi0xLHNjYWxlWTpzY2FsZVk+MD8xOi0xfSlcclxuICAgICAgICAgICAgICAgIC5zdGFydCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYoc2VsZi50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgc2VsZi5ibG9ja19JbmZvLm5vZGUuZ2V0Q29tcG9uZW50KFwiQmxvY2tcIikucmVzdG9yZU5vbWFsKHNlbGYuYmxvY2tfSW5mby5ub2RlLmdldENvbXBvbmVudChcIkJsb2NrXCIpLnBvc1gsXHJcbiAgICAgICAgICAgICAgICBzZWxmLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5wb3NZLGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIGlmKHNlbGYudHlwZSA9PSBCbG9ja1R5cGUu54K45by55Z2XKXtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImJvb21cIikuZ2V0Q29tcG9uZW50KFwiQm9vbVwiKS5zdG9wQm9vbSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBNYXBDb25yb2xlci5faW5zdGFuY2UubmV4dExldmVsKCk7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5hY3RpdmUgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5ub2RlLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICB9LCAyMDApO1xyXG4gICAgfVxyXG4gICAgIFxyXG4gICAgc2V0VmlicmF0ZSh0eXBlLCBjb3VudCl7XHJcbiAgICAgICAgLy8gcmV0dXJuO1xyXG4gICAgICAgIGlmKCFjYy5meC5HYW1lQ29uZmlnLkdNX0lORk8udmlicmF0ZU9wZW4pe1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGNvdW50ID09IDEpe1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHd4LnZpYnJhdGVTaG9ydCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdGltZSA9IDE1MDtcclxuICAgICAgICBmb3IobGV0IGk9MDsgaTw0OyBpKyspe1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB3eCAhPT0gJ3VuZGVmaW5lZCcgJiYgd3ggIT09IG51bGwpIHsgLy8g5Yik5pat5piv5ZCm5Zyo5b6u5L+h546v5aKDXHJcbiAgICAgICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICAgICAgd3gudmlicmF0ZVNob3J0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBmYWlsOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sIHRpbWUqaSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxuXHJcblxyXG4gICAgc2V0TW92ZUNvcm5lcihkaXJhY3Rpb24pe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjbXVwZGF0ZSgpIHtcclxuICAgICAgICBsZXQgY206YW55ID0gY2MuZGlyZWN0b3IuZ2V0Q29sbGlzaW9uTWFuYWdlcigpOyAgICAgICAgXHJcbiAgICAgICAgY20udXBkYXRlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVzdG9yZU5vbWFsKHBvc1gscG9zWSx0eXBlKXtcclxuICAgICAgICB0aGlzLnR5cGUgPSAwO1xyXG4gICAgICAgIHRoaXMuYmxvY2tfSW5mby5ub2RlID0gbnVsbDtcclxuICAgICAgICB0aGlzLm1vdmVTdGFjayA9IGZhbHNlOyBcclxuICAgICAgICB0aGlzLnBvc1ggPSBwb3NYO1xyXG4gICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICAgICAgdGhpcy5zZXRNYXBCbG9jaygpO1xyXG4gICAgICAgIHRoaXMubGV2ZWwgPSA1MCArIHRoaXMucG9zWCAtIHRoaXMucG9zWSozO1xyXG4gICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgIGxldCBqID0gMTAwMDtcclxuICAgICAgICBmb3IobGV0IGkgPTA7IGk8IHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMubm9kZS5jaGlsZHJlbltpXS5uYW1lID09IFwiTmV3IE5vZGVcIil7XHJcbiAgICAgICAgICAgICAgICBqID0gaTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZihpID4gail7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5baV0uYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodHlwZSl7XHJcbiAgICAgICAgICAgIGZvcihsZXQgaT0wOyBpPHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKyl7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImxlZnRcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcInJpZ2h0XCIgfHwgdGhpcy5ub2RlLmNoaWxkcmVuW2ldLm5hbWUgPT0gXCJ0b3BcIiB8fCB0aGlzLm5vZGUuY2hpbGRyZW5baV0ubmFtZSA9PSBcImRvd25cIilcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUuY2hpbGRyZW5baV0uYWN0aXZlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfU1RBUlQsIHRoaXMudG91Y2hTdGFydCwgdGhpcyk7XHJcbiAgICAgICAgdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX01PVkUsIHRoaXMudG91Y2hNb3ZlLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfQ0FOQ0VMLCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfRU5ELCB0aGlzLnRvdWNoRW5kLCB0aGlzKTtcclxuICAgICAgICB0aGlzLm5vZGVbJ190b3VjaExpc3RlbmVyJ10uc2V0U3dhbGxvd1RvdWNoZXMoZmFsc2UpO1xyXG4gICAgICAgIHRoaXMuaGl0ID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICB0aGlzLmhpdC5hZGRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICB0aGlzLmhpdC5wYXJlbnQgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IG5hbWUgPSBcInh6X1wiK3RoaXMuYmxvY2tfSW5mby5ibG9jaztcclxuICAgICAgICB0aGlzLmhpdC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKS5zcHJpdGVGcmFtZSA9IHRoaXMuaWNlX1Nwcml0ZUZyYW1lLl9zcHJpdGVGcmFtZXNbbmFtZV07XHJcbiAgICAgICAgdGhpcy5oaXQuc2V0QW5jaG9yUG9pbnQodGhpcy5ub2RlLmFuY2hvclgsdGhpcy5ub2RlLmFuY2hvclkpO1xyXG4gICAgICAgIHRoaXMuaGl0LnNldFBvc2l0aW9uKDEzLC0xMSk7XHJcbiAgICAgICAgaWYodGhpcy5oaXQuYW5jaG9yWCA9PSAwLjUpIHRoaXMuaGl0LnNldFBvc2l0aW9uKDAsLTExKTtcclxuICAgICAgICBlbHNlIGlmKHRoaXMuaGl0LmFuY2hvclggPT0gMC4zMykgdGhpcy5oaXQuc2V0UG9zaXRpb24oLTEzLC0xMSk7XHJcbiAgICAgICAgZWxzZSBpZih0aGlzLmhpdC5hbmNob3JYID09IDAuNjYpIHRoaXMuaGl0LnNldFBvc2l0aW9uKDIsLTkpO1xyXG4gICAgICAgIHRoaXMuaGl0LmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8v5Ya757uT54q25oCB5oGi5aSN5Li65bi46KeE54q25oCBXHJcbiAgICByZXNldEZyZWV6ZSgpe1xyXG4gICAgICAgIHRoaXMudHlwZSA9IDA7XHJcbiAgICAgICAgdGhpcy5ibG9ja19JbmZvLnR5cGUgPSAwO1xyXG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb2xvcitcImNvbG9yXCIrdGhpcy5ibG9ja19JbmZvLmJsb2NrO1xyXG4gICAgICAgIGxldCBudW1iZXIgPSBNYXRoLmZsb29yKCh0aGlzLmNvbG9yLTEpLzIpO1xyXG4gICAgICAgIGxldCBibG9ja1Nwcml0ZUZyYW1lID0gTWFwQ29ucm9sZXIuX2luc3RhbmNlLkJsb2NrX0NvbG9yW251bWJlcl0uX3Nwcml0ZUZyYW1lcztcclxuICAgICAgICB2YXIgc3ByaXRlRnJhbWUgPSBibG9ja1Nwcml0ZUZyYW1lW25hbWVdO1xyXG4gICAgICAgIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcImljb25cIikuZ2V0Q29tcG9uZW50KGNjLlNwcml0ZSkuc3ByaXRlRnJhbWUgPSBzcHJpdGVGcmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0QmxvY2tzKCl7XHJcbiAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbXTtcclxuICAgICAgICBzd2l0Y2godGhpcy5ibG9ja19JbmZvLmJsb2NrKXtcclxuICAgICAgICAgICAgY2FzZSAwOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3NdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MxLHBvczJdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMjpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczMscG9zNF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAzOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczYgPSBjYy52MigtMSwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3ID0gY2MudjIoLTIsMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M1LHBvczYscG9zN107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA0OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczggPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczkgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczEwID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczgscG9zOSxwb3MxMF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA1OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczExID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxMiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczEzID0gY2MudjIoLTEsMSk7ICAgIFxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczE0ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczExLHBvczEyLHBvczEzLHBvczE0XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDY6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTUgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczE2ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MxNyA9IGNjLnYyKDAsMik7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTggPSBjYy52MigtMSwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczE1LHBvczE2LHBvczE3LHBvczE4XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDc6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMTkgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIwID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyMSA9IGNjLnYyKC0xLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIyID0gY2MudjIoLTIsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MxOSxwb3MyMCxwb3MyMSxwb3MyMl07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSA4OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczIzID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MyNCA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczI1ID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjYgPSBjYy52MigtMSwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczIzLHBvczI0LHBvczI1LHBvczI2XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDk6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjcgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczI4ID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMjkgPSBjYy52MigtMiwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzMCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MyNyxwb3MyOCxwb3MyOSxwb3MzMF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMDpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzMSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMzIgPSBjYy52MigxLDIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczMzID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzNCA9IGNjLnYyKDAsMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MzMSxwb3MzMixwb3MzMyxwb3MzNF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzNSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zMzYgPSBjYy52MigyLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczM3ID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzOCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3MzNSxwb3MzNixwb3MzNyxwb3MzOF07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxMjpcclxuICAgICAgICAgICAgICAgIGxldCBwb3MzOSA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDAgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQxID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbcG9zMzkscG9zNDAscG9zNDEscG9zNDJdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTM6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDMgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQ0ID0gY2MudjIoLTEsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDUgPSBjYy52MigtMiwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0NiA9IGNjLnYyKC0yLDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5hbGxCbG9ja3MgPSBbcG9zNDMscG9zNDQscG9zNDUscG9zNDZdO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgMTQ6XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNDcgPSBjYy52MigwLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczQ4ID0gY2MudjIoMCwxKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M0OSA9IGNjLnYyKC0xLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUwID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczQ3LHBvczQ4LHBvczQ5LHBvczUwXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE1OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M1MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczUzID0gY2MudjIoLTIsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNTQgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczUxLHBvczUyLHBvczUzLHBvczU0XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE2OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU1ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M1NiA9IGNjLnYyKDEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNTcgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU4ID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczU1LHBvczU2LHBvczU3LHBvczU4XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE3OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczU5ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2MCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjEgPSBjYy52MigwLDIpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczYyID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M1OSxwb3M2MCxwb3M2MSxwb3M2Ml07XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAxODpcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2MyA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjQgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczY1ID0gY2MudjIoMCwyKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2NiA9IGNjLnYyKDEsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNjcgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczYzLHBvczY0LHBvczY1LHBvczY2LHBvczY3XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDE5OlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczY4ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M2OSA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzAgPSBjYy52MigtMSwwKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3BvczY4LHBvczY5LHBvczcwXTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIwOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczcxID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3MiA9IGNjLnYyKC0xLDApO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczczID0gY2MudjIoLTEsMSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmFsbEJsb2NrcyA9IFtwb3M3MSxwb3M3Mixwb3M3M107XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAyMTpcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3NCA9IGNjLnYyKDAsMCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzUgPSBjYy52MigwLDEpO1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvczc2ID0gY2MudjIoMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3Bvczc0LHBvczc1LHBvczc2XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIDIyOlxyXG4gICAgICAgICAgICAgICAgbGV0IHBvczc3ID0gY2MudjIoMCwwKTtcclxuICAgICAgICAgICAgICAgIGxldCBwb3M3OCA9IGNjLnYyKDAsMSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgcG9zNzkgPSBjYy52MigtMSwxKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuYWxsQmxvY2tzID0gW3Bvczc3LHBvczc4LHBvczc5XTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc2V0TWFwQmxvY2soKXtcclxuICAgICAgICBpZih0aGlzLmFsbEJsb2Nrcy5sZW5ndGggPiAwKXtcclxuICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5hbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuYWxsQmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgbGV0IHggPSB0aGlzLnBvc1ggKyBwb3MueDtcclxuICAgICAgICAgICAgICAgIGxldCB5ID0gdGhpcy5wb3NZICsgcG9zLnk7IFxyXG4gICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgPSB0aGlzLm5vZGUudXVpZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZW1vdmVNYXBCbG9jaygpe1xyXG4gICAgICAgIGlmKHRoaXMucG9zWCA9PSAwICYmIHRoaXMucG9zWSA9PSAwKXtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLmFsbEJsb2Nrcyl7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuYWxsQmxvY2tzLmxlbmd0aCA+IDApe1xyXG4gICAgICAgICAgICAgICAgZm9yKGxldCBpPTA7IGk8dGhpcy5hbGxCbG9ja3MubGVuZ3RoOyBpKyspe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuYWxsQmxvY2tzW2ldKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvcyA9IHRoaXMuYWxsQmxvY2tzW2ldO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeCA9IHRoaXMucG9zWCArIHBvcy54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeSA9IHRoaXMucG9zWSArIHBvcy55OyBcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0pe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFwQ29ucm9sZXIuX2luc3RhbmNlLm1hcEJsb2Nrc1dhbGxbeF1beV0uZ2V0Q29tcG9uZW50KFwiTWFwQmxvY2tcIikuYmxvY2tfSWQgPSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gICAgLy/lj6DliqDlnZfvvIzkvY3nva7lt67lvILvvIzmoKHlh4bkvY3nva5cclxuICAgIGdldFN0YWNraW5nUG9zKCl7XHJcbiAgICAgICAgc3dpdGNoKHRoaXMubm9kZS5uYW1lKXtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMSwyMik7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazFcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMzYsMjMpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2syXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE4LDQwKTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrM1wiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC01OSwyNSk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTksNTcpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2s1XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTM2LDM4KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrNlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xOSw5Nyk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazdcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTksNjEpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2s4XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTU1LDI0KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrOVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazEwXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE3LDk2KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTFcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTcsNTgpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxMlwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0yMCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazEzXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTkyLDI1KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTRcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTgsNjApO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxNVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC01OCwyNCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazE2XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTIwLDYwKTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMTdcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtMTcsNjApO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2sxOFwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xNyw2MCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazE5XCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTIwLDI0KTtcclxuICAgICAgICAgICAgY2FzZSBcImJsb2NrMjBcIjpcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYy52MigtNTQsMjUpO1xyXG4gICAgICAgICAgICBjYXNlIFwiYmxvY2syMVwiOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNjLnYyKC0xNyw2MCk7XHJcbiAgICAgICAgICAgIGNhc2UgXCJibG9jazIyXCI6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2MudjIoLTE3LDYwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlIChkdDogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXNUb3VjaCAmJiB0aGlzLnRvdWNoRGVsdGEubWFnKCkgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAvL3RoaXMubW92ZUxlZnQgPSB0aGlzLm1vdmVSaWdodCA9IHRoaXMubW92ZVVwID0gdGhpcy5tb3ZlRG93biA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZWx0YSA9IHRoaXMudG91Y2hEZWx0YTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG5ld1ggPSB0aGlzLm5vZGUueCArIGRlbHRhLng7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdZID0gdGhpcy5ub2RlLnkgKyBkZWx0YS55O1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGlzdGFuY2UgPSBNYXRoLnNxcnQoTWF0aC5wb3cobmV3WCAtIHRoaXMubm9kZS54LCAyKSArIE1hdGgucG93KG5ld1kgLSB0aGlzLm5vZGUueSwgMikpO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1hZyA9IE1hdGgucm91bmQoZGVsdGEubWFnKCkpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVkgPT09IDEpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvdWNoUG9pbnRZIDw9IHRoaXMubm9kZS55ICsgdGhpcy5ub2RlLmhlaWdodC8yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmKHRoaXMubW92ZVkgPT09IC0xKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b3VjaFBvaW50WSA+PSB0aGlzLm5vZGUueSArIHRoaXMubm9kZS5oZWlnaHQvMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVYID09PSAxKXtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50b3VjaFBvaW50WCA8PSB0aGlzLm5vZGUueCAtIHRoaXMubm9kZS53aWR0aC8yKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICBlbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZih0aGlzLm1vdmVYID09PSAtMSl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG91Y2hQb2ludFggPj0gdGhpcy5ub2RlLnggLSB0aGlzLm5vZGUud2lkdGgvMil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gXHJcbiAgICAgICAgICAgICAgICAgICAgZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiAxMDApIHtcclxuICAgICAgICAgICAgICAgICAgICBtYWcgPSAxMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGVlZFNjYWxlID0gMC41OyBcclxuICAgICAgICAgICAgICAgICAgICBkZWx0YS54ICo9IHNwZWVkU2NhbGU7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsdGEueSAqPSBzcGVlZFNjYWxlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobWFnID4gNSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWcgPSBNYXRoLmZsb29yKG1hZyAvIDUpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyBtYWcgPSAyO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHggPSBkZWx0YS54IC8gbWFnO1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RlcHkgPSBkZWx0YS55IC8gbWFnO1xyXG5cclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBtYWc7IGluZGV4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVDb3JuZXIgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRlbXBYID0gdGhpcy5ub2RlLnggKyBzdGVweDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0ZW1wWSA9IHRoaXMubm9kZS55ICsgc3RlcHk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5jaGVja0NvbGxpc2lvbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnR5cGUgIT09IDggJiYgdGhpcy50eXBlICE9PSAxMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IE1hdGgucm91bmQodGVtcFgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLnR5cGUgIT09IDcgJiYgdGhpcy50eXBlICE9PSAxMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9ICBNYXRoLnJvdW5kKHRlbXBZKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1hNYWluID0gTWF0aC5hYnMoc3RlcHgpID4gTWF0aC5hYnMoc3RlcHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNYTWFpbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS54ID4gdGVtcFgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlTGVmdCAmJiB0aGlzLm1vdmVYID09PSAwICYmIHRoaXMudHlwZSAhPT0gOCAmJiB0aGlzLnR5cGUgIT09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS54ID0gdGVtcFg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVggIT09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVYID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS54IDw9IHRlbXBYKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW92ZVJpZ2h0ICYmIHRoaXMubW92ZVggPT09IDAgJiYgdGhpcy50eXBlICE9PSA4ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0ZW1wWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWCAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnkgPiB0ZW1wWSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVEb3duICYmIHRoaXMubW92ZVkgPT09IDAgJiYgdGhpcy50eXBlICE9PSA3ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0ZW1wWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWSAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnkgPD0gdGVtcFkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlVXAgJiYgdGhpcy5tb3ZlWSA9PT0gMCAmJiB0aGlzLnR5cGUgIT09IDcgJiYgdGhpcy50eXBlICE9PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9IHRlbXBZO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVZICE9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS55ID4gdGVtcFkpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlRG93biAmJiB0aGlzLm1vdmVZID09PSAwICYmIHRoaXMudHlwZSAhPT0gNyAmJiB0aGlzLnR5cGUgIT09IDEwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS55ID0gdGVtcFk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMubW92ZVkgIT09IDApe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVZID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMubm9kZS55IDw9IHRlbXBZKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubW92ZVVwICYmIHRoaXMubW92ZVkgPT09IDAgJiYgdGhpcy50eXBlICE9PSA3ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnkgPSB0ZW1wWTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWSAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnggPiB0ZW1wWCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm1vdmVMZWZ0ICYmIHRoaXMubW92ZVggPT09IDAgJiYgdGhpcy50eXBlICE9PSA4ICYmIHRoaXMudHlwZSAhPT0gMTApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSB0ZW1wWDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYodGhpcy5tb3ZlWCAhPT0gMCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVggPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLnggPD0gdGVtcFgpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5tb3ZlUmlnaHQgJiYgdGhpcy5tb3ZlWCA9PT0gMCAmJiB0aGlzLnR5cGUgIT09IDggJiYgdGhpcy50eXBlICE9PSAxMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IHRlbXBYO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLm1vdmVYICE9PSAwKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlWCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgTFFDb2xsaWRlU3lzdGVtLnVwZGF0ZV9sb2dpYyhkdCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAvLyDnp7vliqjlrozmiJDlkI7ph43nva7op6bmkbjlop7ph49cclxuICAgICAgICAgICAgICAgIHRoaXMudG91Y2hEZWx0YSA9IGNjLnYyKDAsIDApOyBcclxuICAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBpZih0aGlzLnR5cGUgPT0gQmxvY2tUeXBlLuWPoOWKoOWdl+S4iiAmJiB0aGlzLm1vdmVTdGFjayA9PSB0cnVlKXtcclxuICAgICAgICAgICAgaWYodGhpcy5zdGFja2luZy54ICE9IDAgfHwgdGhpcy5zdGFja2luZy55IT0gMCl7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueCA9IHRoaXMuYmxvY2tfSW5mby5ub2RlLnggKyB0aGlzLnN0YWNraW5nLng7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGUueSA9IHRoaXMuYmxvY2tfSW5mby5ub2RlLnkgKyB0aGlzLnN0YWNraW5nLnk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvKXtcclxuICAgICAgICAgICAgaWYodGhpcy5ibG9ja19JbmZvLm5vZGUgIT0gbnVsbCl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYodGhpcy50eXBlID09IEJsb2NrVHlwZS7nspjlkIjlnZcpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZih0aGlzLmFkaGVzaXZlLnggIT0wICYmIHRoaXMuYWRoZXNpdmUueSE9MCAmJiB0aGlzLmJsb2NrX0luZm8ubm9kZSE9IG51bGwpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueSA9IHRoaXMubm9kZS55IC0gdGhpcy5hZGhlc2l2ZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaXNUb3VjaCA9PSAgdHJ1ZSAmJiB0aGlzLmJsb2NrX0luZm8ubm9kZS5nZXRDb21wb25lbnQoXCJCbG9ja1wiKS5pc1RvdWNoID09IGZhbHNlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExRQ29sbGlkZVN5c3RlbS51cGRhdGVfbG9naWMoZHQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueCA9IHRoaXMubm9kZS54IC0gdGhpcy5hZGhlc2l2ZS54O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ibG9ja19JbmZvLm5vZGUueSA9IHRoaXMubm9kZS55IC0gdGhpcy5hZGhlc2l2ZS55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gXHJcbiAgICB9XHJcbn1cclxuXHJcblxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_const.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '98309gPXUxEF6zBe9e75Knb', 'lq_const'); +// Script/lq_base/data/lq_const.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQConst = exports.LQOperateType = exports.LQLevelStatus = exports.LQAdErrStr = exports.LQCallAd = exports.LQCallBase = exports.LQAnalysisTag = exports.LQByteDanceType = exports.LQPlatformType = exports.LQHttpDataType = exports.LQHttpRequestType = exports.LQEasing = exports.LQCollideStatus = exports.LQFollowTargetMode = exports.LQCollideShape = exports.LQBulletEmitterStatus = exports.LQRecordStatus = void 0; +var Vec2 = cc.Vec2; +var LQRecordStatus; +(function (LQRecordStatus) { + LQRecordStatus[LQRecordStatus["Idle"] = 0] = "Idle"; + LQRecordStatus[LQRecordStatus["Start"] = 1] = "Start"; + LQRecordStatus[LQRecordStatus["Pause"] = 2] = "Pause"; +})(LQRecordStatus = exports.LQRecordStatus || (exports.LQRecordStatus = {})); +var LQBulletEmitterStatus; +(function (LQBulletEmitterStatus) { + LQBulletEmitterStatus[LQBulletEmitterStatus["Idle"] = 0] = "Idle"; + LQBulletEmitterStatus[LQBulletEmitterStatus["Start"] = 1] = "Start"; + LQBulletEmitterStatus[LQBulletEmitterStatus["End"] = 2] = "End"; +})(LQBulletEmitterStatus = exports.LQBulletEmitterStatus || (exports.LQBulletEmitterStatus = {})); +var LQCollideShape; +(function (LQCollideShape) { + LQCollideShape[LQCollideShape["Rect"] = 1] = "Rect"; + LQCollideShape[LQCollideShape["Circle"] = 2] = "Circle"; + LQCollideShape[LQCollideShape["Polygon"] = 3] = "Polygon"; +})(LQCollideShape = exports.LQCollideShape || (exports.LQCollideShape = {})); +var LQFollowTargetMode; +(function (LQFollowTargetMode) { + LQFollowTargetMode[LQFollowTargetMode["Always"] = 0] = "Always"; + LQFollowTargetMode[LQFollowTargetMode["Once"] = 1] = "Once"; + LQFollowTargetMode[LQFollowTargetMode["Pass"] = 2] = "Pass"; +})(LQFollowTargetMode = exports.LQFollowTargetMode || (exports.LQFollowTargetMode = {})); +var LQCollideStatus; +(function (LQCollideStatus) { + LQCollideStatus[LQCollideStatus["Idle"] = 0] = "Idle"; + LQCollideStatus[LQCollideStatus["Live"] = 1] = "Live"; +})(LQCollideStatus = exports.LQCollideStatus || (exports.LQCollideStatus = {})); +var LQEasing; +(function (LQEasing) { + LQEasing["BackIn"] = "backIn"; + LQEasing["BackOut"] = "backOut"; + LQEasing["quadIn"] = "quadIn"; + LQEasing["quadOut"] = "quadOut"; + LQEasing["quadInOut"] = "quadInOut"; + LQEasing["cubicIn"] = "cubicIn"; + LQEasing["expoOut"] = "expoOut"; +})(LQEasing = exports.LQEasing || (exports.LQEasing = {})); +var LQHttpRequestType; +(function (LQHttpRequestType) { + LQHttpRequestType["Get"] = "get"; + LQHttpRequestType["Post"] = "post"; +})(LQHttpRequestType = exports.LQHttpRequestType || (exports.LQHttpRequestType = {})); +var LQHttpDataType; +(function (LQHttpDataType) { + LQHttpDataType[LQHttpDataType["Text"] = 0] = "Text"; + LQHttpDataType[LQHttpDataType["Binary"] = 1] = "Binary"; +})(LQHttpDataType = exports.LQHttpDataType || (exports.LQHttpDataType = {})); +var LQPlatformType; +(function (LQPlatformType) { + LQPlatformType["unknown"] = "\u672A\u77E5\u5E73\u53F0"; + LQPlatformType["all"] = "\u5168\u5E73\u53F0"; + LQPlatformType["wx"] = "\u5FAE\u4FE1"; + LQPlatformType["tt"] = "\u5B57\u8282\u8DF3\u52A8"; + LQPlatformType["oppo"] = "oppo"; + LQPlatformType["vivo"] = "vivo"; + LQPlatformType["qq"] = "qq"; + LQPlatformType["baidu"] = "\u767E\u5EA6"; + LQPlatformType["kwaigame"] = "\u5FEB\u624B"; + LQPlatformType["android"] = "\u5B89\u5353"; + LQPlatformType["ios"] = "\u82F9\u679C"; + LQPlatformType["browser"] = "\u6D4F\u89C8\u5668"; +})(LQPlatformType = exports.LQPlatformType || (exports.LQPlatformType = {})); +var LQByteDanceType; +(function (LQByteDanceType) { + LQByteDanceType["tt"] = "\u5934\u6761"; + LQByteDanceType["tt_lite"] = "\u5934\u6761\u6781\u901F\u7248"; + LQByteDanceType["douyin"] = "\u6296\u97F3"; + LQByteDanceType["douyin_lite"] = "\u6296\u97F3\u6781\u901F\u7248"; + LQByteDanceType["ppx"] = "\u76AE\u76AE\u867E"; + LQByteDanceType["devtools"] = "\u5B57\u8282\u5F00\u53D1\u5DE5\u5177"; +})(LQByteDanceType = exports.LQByteDanceType || (exports.LQByteDanceType = {})); +var LQAnalysisTag; +(function (LQAnalysisTag) { + LQAnalysisTag["VideoComplete"] = "video_complete"; + LQAnalysisTag["VideoBegin"] = "video_begin"; + LQAnalysisTag["VideoInterrupt"] = "video_interrupt"; + LQAnalysisTag["InterstitialShow"] = "interstitial_show"; + LQAnalysisTag["BannerShow"] = "banner_show"; + LQAnalysisTag["ExportShow"] = "export_show"; + LQAnalysisTag["NativeShow"] = "native_show"; + LQAnalysisTag["NativeClick"] = "native_show"; +})(LQAnalysisTag = exports.LQAnalysisTag || (exports.LQAnalysisTag = {})); +var LQCallBase; +(function (LQCallBase) { + LQCallBase[LQCallBase["InitSdk"] = 0] = "InitSdk"; + LQCallBase[LQCallBase["KeepScreenOn"] = 1] = "KeepScreenOn"; + LQCallBase[LQCallBase["Vibrate"] = 2] = "Vibrate"; + LQCallBase[LQCallBase["GetVersionCode"] = 3] = "GetVersionCode"; + LQCallBase[LQCallBase["GetVersionName"] = 4] = "GetVersionName"; + LQCallBase[LQCallBase["OpenUrl"] = 5] = "OpenUrl"; + LQCallBase[LQCallBase["DeleteDir"] = 6] = "DeleteDir"; + LQCallBase[LQCallBase["DeleteFile"] = 7] = "DeleteFile"; +})(LQCallBase = exports.LQCallBase || (exports.LQCallBase = {})); +var LQCallAd; +(function (LQCallAd) { + LQCallAd[LQCallAd["ShowBanner"] = 0] = "ShowBanner"; + LQCallAd[LQCallAd["HideBanner"] = 1] = "HideBanner"; + LQCallAd[LQCallAd["ShowVideo"] = 2] = "ShowVideo"; + LQCallAd[LQCallAd["ShowInterstitial"] = 3] = "ShowInterstitial"; + LQCallAd[LQCallAd["ShowNative"] = 4] = "ShowNative"; + LQCallAd[LQCallAd["CacheAd"] = 5] = "CacheAd"; +})(LQCallAd = exports.LQCallAd || (exports.LQCallAd = {})); +var LQAdErrStr; +(function (LQAdErrStr) { + LQAdErrStr["Unsupported"] = "\u4E0D\u652F\u6301"; + LQAdErrStr["NoParameters"] = "\u6CA1\u6709\u914D\u7F6E\u53C2\u6570"; + LQAdErrStr["NoAD"] = "\u6682\u65E0\u5E7F\u544A"; + LQAdErrStr["VersionOld"] = "\u7248\u672C\u8FC7\u4F4E"; + LQAdErrStr["VideoInterrupt"] = "\u4E2D\u65AD\u64AD\u653E"; + LQAdErrStr["InstanceErr"] = "\u5B9E\u4F8B\u4E3A\u7A7A"; + LQAdErrStr["AlreadyExist"] = "\u5DF2\u7ECF\u5B58\u5728"; + LQAdErrStr["IntervalTooShort"] = "\u95F4\u9694\u592A\u77ED"; +})(LQAdErrStr = exports.LQAdErrStr || (exports.LQAdErrStr = {})); +var LQLevelStatus; +(function (LQLevelStatus) { + LQLevelStatus[LQLevelStatus["Begin"] = 0] = "Begin"; + LQLevelStatus[LQLevelStatus["Failed"] = 1] = "Failed"; + LQLevelStatus[LQLevelStatus["Complete"] = 2] = "Complete"; +})(LQLevelStatus = exports.LQLevelStatus || (exports.LQLevelStatus = {})); +var LQOperateType; +(function (LQOperateType) { + LQOperateType[LQOperateType["ClickNode"] = 0] = "ClickNode"; + LQOperateType[LQOperateType["ClickScreen"] = 1] = "ClickScreen"; + LQOperateType[LQOperateType["Move"] = 2] = "Move"; + LQOperateType[LQOperateType["Null"] = 3] = "Null"; +})(LQOperateType = exports.LQOperateType || (exports.LQOperateType = {})); +var LQConst = /** @class */ (function () { + function LQConst() { + } + LQConst.VEC_ZERO = Vec2.ZERO; + return LQConst; +}()); +exports.LQConst = LQConst; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9jb25zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRXRCLElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN0QixtREFBSSxDQUFBO0lBQUUscURBQUssQ0FBQTtJQUFFLHFEQUFLLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGNBQWMsR0FBZCxzQkFBYyxLQUFkLHNCQUFjLFFBRXpCO0FBRUQsSUFBWSxxQkFFWDtBQUZELFdBQVkscUJBQXFCO0lBQzdCLGlFQUFJLENBQUE7SUFBRSxtRUFBSyxDQUFBO0lBQUUsK0RBQUcsQ0FBQTtBQUNwQixDQUFDLEVBRlcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFFaEM7QUFFRCxJQUFZLGNBRVg7QUFGRCxXQUFZLGNBQWM7SUFDdEIsbURBQVEsQ0FBQTtJQUFFLHVEQUFNLENBQUE7SUFBRSx5REFBTyxDQUFBO0FBQzdCLENBQUMsRUFGVyxjQUFjLEdBQWQsc0JBQWMsS0FBZCxzQkFBYyxRQUV6QjtBQUVELElBQVksa0JBRVg7QUFGRCxXQUFZLGtCQUFrQjtJQUMxQiwrREFBTSxDQUFBO0lBQUUsMkRBQUksQ0FBQTtJQUFFLDJEQUFJLENBQUE7QUFDdEIsQ0FBQyxFQUZXLGtCQUFrQixHQUFsQiwwQkFBa0IsS0FBbEIsMEJBQWtCLFFBRTdCO0FBRUQsSUFBWSxlQUVYO0FBRkQsV0FBWSxlQUFlO0lBQ3ZCLHFEQUFJLENBQUE7SUFBRSxxREFBSSxDQUFBO0FBQ2QsQ0FBQyxFQUZXLGVBQWUsR0FBZix1QkFBZSxLQUFmLHVCQUFlLFFBRTFCO0FBRUQsSUFBWSxRQUdYO0FBSEQsV0FBWSxRQUFRO0lBQ2hCLDZCQUFpQixDQUFBO0lBQUUsK0JBQW1CLENBQUE7SUFBRSw2QkFBaUIsQ0FBQTtJQUN6RCwrQkFBbUIsQ0FBQTtJQUFFLG1D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O0lBQUUsaURBQUksQ0FBQTtBQUN0QyxDQUFDLEVBRlcsYUFBYSxHQUFiLHFCQUFhLEtBQWIscUJBQWEsUUFFeEI7QUFFRDtJQUFBO0lBRUEsQ0FBQztJQURpQixnQkFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDdkMsY0FBQztDQUZELEFBRUMsSUFBQTtBQUZZLDBCQUFPIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZlYzIgPSBjYy5WZWMyO1xyXG5cclxuZXhwb3J0IGVudW0gTFFSZWNvcmRTdGF0dXMge1xyXG4gICAgSWRsZSwgU3RhcnQsIFBhdXNlXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQnVsbGV0RW1pdHRlclN0YXR1cyB7XHJcbiAgICBJZGxlLCBTdGFydCwgRW5kXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ29sbGlkZVNoYXBlIHtcclxuICAgIFJlY3QgPSAxLCBDaXJjbGUsIFBvbHlnb25cclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFGb2xsb3dUYXJnZXRNb2RlIHtcclxuICAgIEFsd2F5cywgT25jZSwgUGFzc1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNvbGxpZGVTdGF0dXMge1xyXG4gICAgSWRsZSwgTGl2ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUVhc2luZyB7XHJcbiAgICBCYWNrSW4gPSAnYmFja0luJywgQmFja091dCA9ICdiYWNrT3V0JywgcXVhZEluID0gJ3F1YWRJbicsXHJcbiAgICBxdWFkT3V0ID0gJ3F1YWRPdXQnLCBxdWFkSW5PdXQgPSAncXVhZEluT3V0JywgY3ViaWNJbiA9ICdjdWJpY0luJywgZXhwb091dCA9ICdleHBvT3V0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBSZXF1ZXN0VHlwZSB7XHJcbiAgICBHZXQgPSAnZ2V0JywgUG9zdCA9ICdwb3N0J1xyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUh0dHBEYXRhVHlwZSB7XHJcbiAgICBUZXh0LCBCaW5hcnlcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFQbGF0Zm9ybVR5cGUge1xyXG4gICAgdW5rbm93biA9ICfmnKrnn6XlubPlj7AnLCBhbGwgPSAn5YWo5bmz5Y+wJywgd3ggPSAn5b6u5L+hJywgdHQgPSAn5a2X6IqC6Lez5YqoJywgb3BwbyA9ICdvcHBvJywgdml2byA9ICd2aXZvJywgcXEgPSAncXEnLCBiYWlkdSA9ICfnmb7luqYnLCBrd2FpZ2FtZSA9ICflv6vmiYsnLCBhbmRyb2lkID0gJ+WuieWNkycsIGlvcyA9ICfoi7nmnpwnLCBicm93c2VyID0gJ+a1j+iniOWZqCdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFCeXRlRGFuY2VUeXBlIHtcclxuICAgIHR0ID0gJ+WktOadoScsIHR0X2xpdGUgPSAn5aS05p2h5p6B6YCf54mIJywgZG91eWluID0gJ+aKlumfsycsIGRvdXlpbl9saXRlID0gJ+aKlumfs+aegemAn+eJiCcsIHBweCA9ICfnmq7nmq7omb4nLCBkZXZ0b29scyA9ICflrZfoioLlvIDlj5Hlt6XlhbcnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQW5hbHlzaXNUYWcge1xyXG4gICAgVmlkZW9Db21wbGV0ZSA9ICd2aWRlb19jb21wbGV0ZScsIFZpZGVvQmVnaW4gPSAndmlkZW9fYmVnaW4nLCBWaWRlb0ludGVycnVwdCA9ICd2aWRlb19pbnRlcnJ1cHQnLCBJbnRlcnN0aXRpYWxTaG93ID0gJ2ludGVyc3RpdGlhbF9zaG93JywgQmFubmVyU2hvdyA9ICdiYW5uZXJfc2hvdycsIEV4cG9ydFNob3cgPSAnZXhwb3J0X3Nob3cnLCBOYXRpdmVTaG93ID0gJ25hdGl2ZV9zaG93JywgTmF0aXZlQ2xpY2sgPSAnbmF0aXZlX3Nob3cnXHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIExRQ2FsbEJhc2Uge1xyXG4gICAgSW5pdFNkaywgS2VlcFNjcmVlbk9uLCBWaWJyYXRlLCBHZXRWZXJzaW9uQ29kZSwgR2V0VmVyc2lvbk5hbWUsIE9wZW5VcmwsIERlbGV0ZURpciwgRGVsZXRlRmlsZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUUNhbGxBZCB7XHJcbiAgICBTaG93QmFubmVyLCBIaWRlQmFubmVyLCBTaG93VmlkZW8sIFNob3dJbnRlcnN0aXRpYWwsIFNob3dOYXRpdmUsIENhY2hlQWRcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFBZEVyclN0ciB7XHJcbiAgICBVbnN1cHBvcnRlZCA9ICfkuI3mlK/mjIEnLCBOb1BhcmFtZXRlcnMgPSAn5rKh5pyJ6YWN572u5Y+C5pWwJywgTm9BRCA9ICfmmoLml6Dlub/lkYonLCBWZXJzaW9uT2xkID0gJ+eJiOacrOi/h+S9jicsIFZpZGVvSW50ZXJydXB0ID0gJ+S4reaWreaSreaUvicsIEluc3RhbmNlRXJyID0gJ+WunuS+i+S4uuepuicsIEFscmVhZHlFeGlzdCA9ICflt7Lnu4/lrZjlnKgnLCBJbnRlcnZhbFRvb1Nob3J0ID0gJ+mXtOmalOWkquefrSdcclxufVxyXG5cclxuZXhwb3J0IGVudW0gTFFMZXZlbFN0YXR1cyB7XHJcbiAgICBCZWdpbiwgRmFpbGVkLCBDb21wbGV0ZVxyXG59XHJcblxyXG5leHBvcnQgZW51bSBMUU9wZXJhdGVUeXBlIHtcclxuICAgIENsaWNrTm9kZSwgQ2xpY2tTY3JlZW4sIE1vdmUsIE51bGxcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExRQ29uc3Qge1xyXG4gICAgcHVibGljIHN0YXRpYyBWRUNfWkVSTyA9IFZlYzIuWkVSTztcclxufVxyXG5cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_platform_util.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '35875T0lsRL3rzhNkUdX4/G', 'lq_platform_util'); +// Script/lq_base/util/lq_platform_util.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQPlatformUtil = void 0; +var lq_const_1 = require("../data/lq_const"); +var LQPlatformUtil = /** @class */ (function () { + function LQPlatformUtil() { + } + LQPlatformUtil.init = function () { + if (typeof qq !== 'undefined') { + this.platform_type = lq_const_1.LQPlatformType.qq; + } + else if (typeof swan !== 'undefined') { + this.platform_type = lq_const_1.LQPlatformType.baidu; + } + else if (typeof tt !== 'undefined') { + this.platform_type = lq_const_1.LQPlatformType.tt; + var info = tt.getSystemInfoSync(); + switch (info.appName) { + case 'Toutiao': + this.byte_dance_type = lq_const_1.LQByteDanceType.tt; + break; + case 'news_article_lite': + this.byte_dance_type = lq_const_1.LQByteDanceType.tt_lite; + break; + case 'Douyin': + this.byte_dance_type = lq_const_1.LQByteDanceType.douyin; + break; + case 'douyin_lite': + this.byte_dance_type = lq_const_1.LQByteDanceType.douyin_lite; + break; + case 'PPX': + this.byte_dance_type = lq_const_1.LQByteDanceType.ppx; + break; + case 'devtools': + this.byte_dance_type = lq_const_1.LQByteDanceType.devtools; + break; + } + } + else if (typeof qg !== 'undefined') { + if (!!qg.getBattle) { + this.platform_type = lq_const_1.LQPlatformType.oppo; + } + else { + this.platform_type = lq_const_1.LQPlatformType.vivo; + } + } + else if (typeof wx !== 'undefined') { + this.platform_type = lq_const_1.LQPlatformType.wx; + } + else if (typeof jsb !== 'undefined') { + if (cc.sys.os === cc.sys.OS_ANDROID) { + this.platform_type = lq_const_1.LQPlatformType.android; + } + else if (cc.sys.os === cc.sys.OS_IOS) { + this.platform_type = lq_const_1.LQPlatformType.ios; + } + else { + this.platform_type = lq_const_1.LQPlatformType.unknown; + } + } + else if (cc.sys.isBrowser) { + this.platform_type = lq_const_1.LQPlatformType.browser; + } + }; + LQPlatformUtil.get_platform = function () { + return this.platform_type; + }; + LQPlatformUtil.get_byte_dance = function () { + return this.byte_dance_type; + }; + LQPlatformUtil.is_wx = function () { + return this.platform_type === lq_const_1.LQPlatformType.wx; + }; + LQPlatformUtil.is_tt = function () { + return this.platform_type === lq_const_1.LQPlatformType.tt; + }; + LQPlatformUtil.is_oppo = function () { + return this.platform_type === lq_const_1.LQPlatformType.oppo; + }; + LQPlatformUtil.is_vivo = function () { + return this.platform_type === lq_const_1.LQPlatformType.vivo; + }; + LQPlatformUtil.is_ov = function () { + return this.platform_type === lq_const_1.LQPlatformType.oppo || this.platform_type === lq_const_1.LQPlatformType.vivo; + }; + LQPlatformUtil.is_browser = function () { + return this.platform_type === lq_const_1.LQPlatformType.browser; + }; + LQPlatformUtil.is_android = function () { + return this.platform_type === lq_const_1.LQPlatformType.android; + }; + LQPlatformUtil.is_ios = function () { + return this.platform_type === lq_const_1.LQPlatformType.ios; + }; + LQPlatformUtil.is_native = function () { + return this.platform_type === lq_const_1.LQPlatformType.android || this.platform_type === lq_const_1.LQPlatformType.ios; + }; + LQPlatformUtil.is_qq = function () { + return this.platform_type === lq_const_1.LQPlatformType.qq; + }; + LQPlatformUtil.is_baidu = function () { + return this.platform_type === lq_const_1.LQPlatformType.baidu; + }; + LQPlatformUtil.is_kwaigame = function () { + return this.platform_type === lq_const_1.LQPlatformType.kwaigame; + }; + return LQPlatformUtil; +}()); +exports.LQPlatformUtil = LQPlatformUtil; +LQPlatformUtil.init(); +if (LQPlatformUtil.is_tt()) { + // console.log('---------当前平台:' + LQPlatformUtil.get_byte_dance()); +} +else { + // console.log('---------当前平台:' + LQPlatformUtil.get_platform()); +} + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wbGF0Zm9ybV91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFpRTtBQUVqRTtJQUFBO0lBNEdBLENBQUM7SUF4R2lCLG1CQUFJLEdBQWxCO1FBQ0ksSUFBSSxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUU7WUFDM0IsSUFBSSxDQUFDLGFBQWEsR0FBRyx5QkFBYyxDQUFDLEVBQUUsQ0FBQztTQUMxQzthQUFNLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcseUJBQWMsQ0FBQyxLQUFLLENBQUM7U0FDN0M7YUFBTSxJQUFJLE9BQU8sRUFBRSxLQUFLLFdBQVcsRUFBRTtZQUNsQyxJQUFJLENBQUMsYUFBYSxHQUFHLHlCQUFjLENBQUMsRUFBRSxDQUFDO1lBQ3ZDLElBQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3BDLFFBQVEsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDbEIsS0FBSyxTQUFTO29CQUNWLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLE1BQU07Z0JBQ1YsS0FBSyxtQkFBbUI7b0JBQ3BCLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxPQUFPLENBQUM7b0JBQy9DLE1BQU07Z0JBQ1YsS0FBSyxRQUFRO29CQUNULElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxNQUFNLENBQUM7b0JBQzlDLE1BQU07Z0JBQ1YsS0FBSyxhQUFhO29CQUNkLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxXQUFXLENBQUM7b0JBQ25ELE1BQU07Z0JBQ1YsS0FBSyxLQUFLO29CQUNOLElBQUksQ0FBQyxlQUFlLEdBQUcsMEJBQWUsQ0FBQyxHQUFHLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1YsS0FBSyxV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dUJBQVEsR0FBdEI7UUFDSSxPQUFPLElBQUksQ0FBQyxhQUFhLEtBQUsseUJBQWMsQ0FBQyxLQUFLLENBQUM7SUFDdkQsQ0FBQztJQUVhLDBCQUFXLEdBQXpCO1FBQ0ksT0FBTyxJQUFJLENBQUMsYUFBYSxLQUFLLHlCQUFjLENBQUMsUUFBUSxDQUFDO0lBQzFELENBQUM7SUFDTCxxQkFBQztBQUFELENBNUdBLEFBNEdDLElBQUE7QUE1R1ksd0NBQWM7QUE4RzNCLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0QixJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUN4QixtRUFBbUU7Q0FDdEU7S0FBTTtJQUNILGlFQUFpRTtDQUNwRSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TFFCeXRlRGFuY2VUeXBlLCBMUVBsYXRmb3JtVHlwZX0gZnJvbSBcIi4uL2RhdGEvbHFfY29uc3RcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBsYXRmb3JtVXRpbCB7XHJcbiAgICBwcml2YXRlIHN0YXRpYyBwbGF0Zm9ybV90eXBlOiBMUVBsYXRmb3JtVHlwZTtcclxuICAgIHByaXZhdGUgc3RhdGljIGJ5dGVfZGFuY2VfdHlwZTogTFFCeXRlRGFuY2VUeXBlO1xyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW5pdCgpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHFxICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5xcTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBzd2FuICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0dCAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudHQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSB0dC5nZXRTeXN0ZW1JbmZvU3luYygpO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKGluZm8uYXBwTmFtZSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnVG91dGlhbyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICduZXdzX2FydGljbGVfbGl0ZSc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUudHRfbGl0ZTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ0RvdXlpbic6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZG91eWluO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnZG91eWluX2xpdGUnOlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYnl0ZV9kYW5jZV90eXBlID0gTFFCeXRlRGFuY2VUeXBlLmRvdXlpbl9saXRlO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnUFBYJzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmJ5dGVfZGFuY2VfdHlwZSA9IExRQnl0ZURhbmNlVHlwZS5wcHg7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdkZXZ0b29scyc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ieXRlX2RhbmNlX3R5cGUgPSBMUUJ5dGVEYW5jZVR5cGUuZGV2dG9vbHM7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBxZyAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgaWYgKCEhcWcuZ2V0QmF0dGxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5vcHBvO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHd4ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS53eDtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBqc2IgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIGlmIChjYy5zeXMub3MgPT09IGNjLnN5cy5PU19BTkRST0lEKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGNjLnN5cy5vcyA9PT0gY2Muc3lzLk9TX0lPUykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbGF0Zm9ybV90eXBlID0gTFFQbGF0Zm9ybVR5cGUudW5rbm93bjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY2Muc3lzLmlzQnJvd3Nlcikge1xyXG4gICAgICAgICAgICB0aGlzLnBsYXRmb3JtX3R5cGUgPSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9wbGF0Zm9ybSgpOiBMUVBsYXRmb3JtVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ieXRlX2RhbmNlKCk6IExRQnl0ZURhbmNlVHlwZSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYnl0ZV9kYW5jZV90eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfd3goKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUud3g7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc190dCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS50dDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX29wcG8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUub3BwbztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX3Zpdm8oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUudml2bztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX292KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLm9wcG8gfHwgdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS52aXZvO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYnJvd3NlcigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5icm93c2VyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfYW5kcm9pZCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfaW9zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmlvcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX25hdGl2ZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5hbmRyb2lkIHx8IHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUuaW9zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfcXEoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGxhdGZvcm1fdHlwZSA9PT0gTFFQbGF0Zm9ybVR5cGUucXE7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc19iYWlkdSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbGF0Zm9ybV90eXBlID09PSBMUVBsYXRmb3JtVHlwZS5iYWlkdTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGlzX2t3YWlnYW1lKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBsYXRmb3JtX3R5cGUgPT09IExRUGxhdGZvcm1UeXBlLmt3YWlnYW1lO1xyXG4gICAgfVxyXG59XHJcblxyXG5MUVBsYXRmb3JtVXRpbC5pbml0KCk7XHJcbmlmIChMUVBsYXRmb3JtVXRpbC5pc190dCgpKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnLS0tLS0tLS0t5b2T5YmN5bmz5Y+wOicgKyBMUVBsYXRmb3JtVXRpbC5nZXRfYnl0ZV9kYW5jZSgpKTtcclxufSBlbHNlIHtcclxuICAgIC8vIGNvbnNvbGUubG9nKCctLS0tLS0tLS3lvZPliY3lubPlj7A6JyArIExRUGxhdGZvcm1VdGlsLmdldF9wbGF0Zm9ybSgpKTtcclxufVxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/MapBlock.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '52958xsurVAp54WMo+xFDo6', 'MapBlock'); +// Script/MapBlock.ts + +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.label = null; + _this.block_Id = ''; + // LIFE-CYCLE CALLBACKS: + _this.posX = 0; //地图块的X坐标 + _this.posY = 0; //地图块的Y坐标 + _this.direction = ""; //地图块的方向 + return _this; + // update (dt) {} + } + // onLoad () {} + NewClass.prototype.start = function () { + this.direction = ""; + this.block_Id = ""; + // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; + }; + NewClass.prototype.setDiraction = function (direction) { + this.direction = direction; + // this.node.getChildByName("num").getComponent(cc.Label).string = this.direction; + }; + NewClass.prototype.init = function (posX, posY) { + this.posX = posX; + this.posY = posY; + }; + __decorate([ + property(cc.Label) + ], NewClass.prototype, "label", void 0); + __decorate([ + property + ], NewClass.prototype, "block_Id", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxNYXBCbG9jay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0JBQW9CO0FBQ3BCLHdFQUF3RTtBQUN4RSxtQkFBbUI7QUFDbkIsa0ZBQWtGO0FBQ2xGLDhCQUE4QjtBQUM5QixrRkFBa0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU1RSxJQUFBLEtBQXNCLEVBQUUsQ0FBQyxVQUFVLEVBQWxDLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBaUIsQ0FBQztBQUcxQztJQUFzQyw0QkFBWTtJQUFsRDtRQUFBLHFFQWdDQztRQTdCRyxXQUFLLEdBQWEsSUFBSSxDQUFDO1FBR3ZCLGNBQVEsR0FBVyxFQUFFLENBQUM7UUFFdEIsd0JBQXdCO1FBRXhCLFVBQUksR0FBVyxDQUFDLENBQUMsQ0FBZSxTQUFTO1FBQ3pDLFVBQUksR0FBVyxDQUFDLENBQUMsQ0FBZSxTQUFTO1FBQ3pDLGVBQVMsR0FBVyxFQUFFLENBQUMsQ0FBVSxRQUFROztRQW1CekMsaUJBQWlCO0lBQ3JCLENBQUM7SUFuQkcsZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixrRkFBa0Y7SUFDdEYsQ0FBQztJQUVELCtCQUFZLEdBQVosVUFBYSxTQUFTO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBQzNCLGtGQUFrRjtJQUN0RixDQUFDO0lBRUQsdUJBQUksR0FBSixVQUFLLElBQUksRUFBQyxJQUFJO1FBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQTFCRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDOzJDQUNJO0lBR3ZCO1FBREMsUUFBUTs4Q0FDYTtJQU5MLFFBQVE7UUFENUIsT0FBTztPQUNhLFFBQVEsQ0FnQzVCO0lBQUQsZUFBQztDQWhDRCxBQWdDQyxDQWhDcUMsRUFBRSxDQUFDLFNBQVMsR0FnQ2pEO2tCQWhDb0IsUUFBUSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIFR5cGVTY3JpcHQ6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3R5cGVzY3JpcHQuaHRtbFxyXG4vLyBMZWFybiBBdHRyaWJ1dGU6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL3JlZmVyZW5jZS9hdHRyaWJ1dGVzLmh0bWxcclxuLy8gTGVhcm4gbGlmZS1jeWNsZSBjYWxsYmFja3M6XHJcbi8vICAtIGh0dHBzOi8vZG9jcy5jb2Nvcy5jb20vY3JlYXRvci9tYW51YWwvZW4vc2NyaXB0aW5nL2xpZmUtY3ljbGUtY2FsbGJhY2tzLmh0bWxcclxuXHJcbmNvbnN0IHtjY2NsYXNzLCBwcm9wZXJ0eX0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG5cclxuICAgIEBwcm9wZXJ0eShjYy5MYWJlbClcclxuICAgIGxhYmVsOiBjYy5MYWJlbCA9IG51bGw7XHJcblxyXG4gICAgQHByb3BlcnR5XHJcbiAgICBibG9ja19JZDogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgLy8gTElGRS1DWUNMRSBDQUxMQkFDS1M6XHJcblxyXG4gICAgcG9zWDogbnVtYmVyID0gMDsgICAgICAgICAgICAgICAvL+WcsOWbvuWdl+eahFjlnZDmoIdcclxuICAgIHBvc1k6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRZ5Z2Q5qCHXHJcbiAgICBkaXJlY3Rpb246IHN0cmluZyA9IFwiXCI7ICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qE5pa55ZCRXHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCAoKSB7XHJcbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuYmxvY2tfSWQgPSBcIlwiO1xyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERpcmFjdGlvbihkaXJlY3Rpb24pe1xyXG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uOyAgIFxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShcIm51bVwiKS5nZXRDb21wb25lbnQoY2MuTGFiZWwpLnN0cmluZyA9IHRoaXMuZGlyZWN0aW9uO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXQocG9zWCxwb3NZKXtcclxuICAgICAgICB0aGlzLnBvc1ggPSBwb3NYO1xyXG4gICAgICAgIHRoaXMucG9zWSA9IHBvc1k7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdXBkYXRlIChkdCkge31cclxufVxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_math_util.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '997fc58y39OFLflh6T58fZD', 'lq_math_util'); +// Script/lq_base/util/lq_math_util.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQMathUtil = void 0; +var LQMathUtil = /** @class */ (function () { + function LQMathUtil() { + } + LQMathUtil.random = function (min, max) { + if (min === max) { + return min; + } + else if (min < max) { + return Math.random() * (max - min) + min; + } + else { + return Math.random() * (min - max) + max; + } + }; + LQMathUtil.random_int = function (min, max) { + return Math.floor(this.random(min, max)); + }; + LQMathUtil.get_radians = function (pos, target_pos) { + var r = Math.atan2(target_pos.y - pos.y, target_pos.x - pos.x); + return r > 0 ? r : r + 6.28; + }; + LQMathUtil.intersects_rect = function (r1, r2) { + return Math.abs(r1.x - r2.x) < r1.half_width + r2.half_width && Math.abs(r1.y - r2.y) < r1.half_height + r2.half_height; + }; + LQMathUtil.intersects_point_rect = function (p, r) { + return (p.x > r.x - r.width * 0.5) && (p.x < r.x + r.width * 0.5) && (p.y > r.y - r.height * 0.5) && (p.y < r.y + r.height * 0.5); + }; + LQMathUtil.intersects_point_circle = function (p1, p2, r) { + return p1.sub(p2).magSqr() < r * r; + }; + LQMathUtil.intersects_circle = function (p1, r1, p2, r2) { + return p1.sub(p2).mag() < r1 + r2; + }; + LQMathUtil.intersects_circle_rect = function (p, r, rect) { + var relative_x = p.x - rect.x; + var relative_y = p.y - rect.y; + var dx = Math.min(relative_x, rect.half_width); + var dx1 = Math.max(dx, -rect.half_width); + var dy = Math.min(relative_y, rect.half_height); + var dy1 = Math.max(dy, -rect.half_height); + return (dx1 - relative_x) * (dx1 - relative_x) + (dy1 - relative_y) * (dy1 - relative_y) <= r * r; + }; + return LQMathUtil; +}()); +exports.LQMathUtil = LQMathUtil; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9tYXRoX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUE7SUFBQTtJQTZDQSxDQUFDO0lBNUNpQixpQkFBTSxHQUFwQixVQUFxQixHQUFXLEVBQUUsR0FBVztRQUN6QyxJQUFJLEdBQUcsS0FBSyxHQUFHLEVBQUU7WUFDYixPQUFPLEdBQUcsQ0FBQztTQUNkO2FBQU0sSUFBSSxHQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztTQUM1QzthQUFNO1lBQ0gsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVhLHFCQUFVLEdBQXhCLFVBQXlCLEdBQVcsRUFBRSxHQUFXO1FBQzdDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFYSxzQkFBVyxHQUF6QixVQUEwQixHQUFTLEVBQUUsVUFBZ0I7UUFDakQsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDakUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVhLDBCQUFlLEdBQTdCLFVBQThCLEVBQVMsRUFBRSxFQUFTO1FBQzlDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7SUFDNUgsQ0FBQztJQUVhLGdDQUFxQixHQUFuQyxVQUFvQyxDQUFPLEVBQUUsQ0FBUTtRQUNqRCxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDdEksQ0FBQztJQUVhLGtDQUF1QixHQUFyQyxVQUFzQyxFQUFRLEVBQUUsRUFBUSxFQUFFLENBQVM7UUFDL0QsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVhLDRCQUFpQixHQUEvQixVQUFnQyxFQUFRLEVBQUUsRUFBVSxFQUFFLEVBQVEsRUFBRSxFQUFVO1FBQ3RFLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFYSxpQ0FBc0IsR0FBcEMsVUFBcUMsQ0FBTyxFQUFFLENBQVMsRUFBRSxJQUFXO1FBQ2hFLElBQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEMsSUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNDLElBQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNsRCxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUM1QyxPQUFPLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUNMLGlCQUFDO0FBQUQsQ0E3Q0EsQUE2Q0MsSUFBQTtBQTdDWSxnQ0FBVSIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVBvcywgSVJlY3R9IGZyb20gXCIuLi9kYXRhL2xxX2ludGVyZmFjZVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIExRTWF0aFV0aWwge1xyXG4gICAgcHVibGljIHN0YXRpYyByYW5kb20obWluOiBudW1iZXIsIG1heDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAobWluID09PSBtYXgpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG1pbjtcclxuICAgICAgICB9IGVsc2UgaWYgKG1pbiA8IG1heCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIChtYXggLSBtaW4pICsgbWluO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogKG1pbiAtIG1heCkgKyBtYXg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcmFuZG9tX2ludChtaW46IG51bWJlciwgbWF4OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKHRoaXMucmFuZG9tKG1pbiwgbWF4KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBnZXRfcmFkaWFucyhwb3M6IElQb3MsIHRhcmdldF9wb3M6IElQb3MpIHtcclxuICAgICAgICBjb25zdCByID0gTWF0aC5hdGFuMih0YXJnZXRfcG9zLnkgLSBwb3MueSwgdGFyZ2V0X3Bvcy54IC0gcG9zLngpO1xyXG4gICAgICAgIHJldHVybiByID4gMCA/IHIgOiByICsgNi4yODtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGludGVyc2VjdHNfcmVjdChyMTogSVJlY3QsIHIyOiBJUmVjdCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmFicyhyMS54IC0gcjIueCkgPCByMS5oYWxmX3dpZHRoICsgcjIuaGFsZl93aWR0aCAmJiBNYXRoLmFicyhyMS55IC0gcjIueSkgPCByMS5oYWxmX2hlaWdodCArIHIyLmhhbGZfaGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19wb2ludF9yZWN0KHA6IElQb3MsIHI6IElSZWN0KTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIChwLnggPiByLnggLSByLndpZHRoICogMC41KSAmJiAocC54IDwgci54ICsgci53aWR0aCAqIDAuNSkgJiYgKHAueSA+IHIueSAtIHIuaGVpZ2h0ICogMC41KSAmJiAocC55IDwgci55ICsgci5oZWlnaHQgKiAwLjUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19wb2ludF9jaXJjbGUocDE6IElQb3MsIHAyOiBJUG9zLCByOiBudW1iZXIpIHtcclxuICAgICAgICByZXR1cm4gcDEuc3ViKHAyKS5tYWdTcXIoKSA8IHIgKiByO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19jaXJjbGUocDE6IElQb3MsIHIxOiBudW1iZXIsIHAyOiBJUG9zLCByMjogbnVtYmVyKSB7XHJcbiAgICAgICAgcmV0dXJuIHAxLnN1YihwMikubWFnKCkgPCByMSArIHIyO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJzZWN0c19jaXJjbGVfcmVjdChwOiBJUG9zLCByOiBudW1iZXIsIHJlY3Q6IElSZWN0KSB7XHJcbiAgICAgICAgY29uc3QgcmVsYXRpdmVfeCA9IHAueCAtIHJlY3QueDtcclxuICAgICAgICBjb25zdCByZWxhdGl2ZV95ID0gcC55IC0gcmVjdC55O1xyXG4gICAgICAgIGNvbnN0IGR4ID0gTWF0aC5taW4ocmVsYXRpdmVfeCwgcmVjdC5oYWxmX3dpZHRoKTtcclxuICAgICAgICBjb25zdCBkeDEgPSBNYXRoLm1heChkeCwgLXJlY3QuaGFsZl93aWR0aCk7XHJcbiAgICAgICAgY29uc3QgZHkgPSBNYXRoLm1pbihyZWxhdGl2ZV95LCByZWN0LmhhbGZfaGVpZ2h0KTtcclxuICAgICAgICBjb25zdCBkeTEgPSBNYXRoLm1heChkeSwgLXJlY3QuaGFsZl9oZWlnaHQpO1xyXG4gICAgICAgIHJldHVybiAoZHgxIC0gcmVsYXRpdmVfeCkgKiAoZHgxIC0gcmVsYXRpdmVfeCkgKyAoZHkxIC0gcmVsYXRpdmVfeSkgKiAoZHkxIC0gcmVsYXRpdmVfeSkgPD0gciAqIHI7XHJcbiAgICB9XHJcbn0iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/Barrier.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '90c37YHUUVPsY0mlNmom67u', 'Barrier'); +// Script/Barrier.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var Map_1 = require("./Map"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var Block = /** @class */ (function (_super) { + __extends(Block, _super); + function Block() { + var _this = _super !== null && _super.apply(this, arguments) || this; + // 新增缓存变量 + _this.selfBoxColliders = []; + _this.allBoxColliders = []; + // @property({ + // tooltip: '碰撞形状,None就是无敌,不参与碰撞', + // type: cc.Enum(BlockType), + // // default: BlockType.Nomal, + // displayName: '碰撞形状' + // }) + // LIFE-CYCLE CALLBACKS: + // @property(cc.SpriteAtlas) + // UI: cc.SpriteAtlas = null; + _this.initialTouchOffset = null; + _this.offsetTolerance = 100; // 偏移容忍度; + _this.touchPoint = null; //触摸点 + _this.isTouch = false; //是否触摸 + _this.posX = 0; //地图块的X坐标 + _this.posY = 0; //地图块的Y坐标 + _this.moveLeft = true; //是否可以左移; + _this.moveRight = true; //是否可以右移; + _this.moveUp = true; //是否可以上移; + _this.moveDown = true; //是否可以下移; + _this.moveCorner = 0; //是否碰撞角落 + _this.moveY = 0; //是否可以上下移动; + _this.moveX = 0; //是否可以左右移动; + _this.touchPointX = 0; //触摸点X坐标; + _this.touchPointY = 0; //触摸点Y坐标; + _this.blockId = 0; //方块ID; + _this.level = 0; //叠加方块层数; + _this.pz = false; + return _this; + } + Block.prototype.onLoad = function () { + // this.node.on(cc.Node.EventType.TOUCH_START, this.touchStart, this); + // this.node.on(cc.Node.EventType.TOUCH_MOVE, this.touchMove, this); + // this.node.on(cc.Node.EventType.TOUCH_CANCEL, this.touchEnd, this); + // this.node.on(cc.Node.EventType.TOUCH_END, this.touchEnd, this); + this.pz = false; + this.stacking = cc.v2(0, 0); + // this.selfBoxColliders = this.node.getComponentsInChildren(cc.BoxCollider) + // .filter(collider => collider.tag < 4); + }; + Block.prototype.start = function () { + }; + Block.prototype.jsonDeepClone = function (obj) { + return JSON.parse(JSON.stringify(obj)); + }; + Block.prototype.init = function (block_Info, posX, posY, node) { + this.block_Info = this.jsonDeepClone(block_Info); + var mapInfo = Map_1.default._instance.mapInfo; + console.log("block_Info", this.block_Info); + for (var i = 0; i < mapInfo.length; i++) { + var blockRect = mapInfo[i].getBoundingBox(); + // 使用 cc.Intersection.pointInRect 方法判断点是否在矩形范围内 + var point = cc.v2(this.node.position.x - 5, this.node.position.y + 10); + if (blockRect.contains(point)) { + this.posX = mapInfo[i].getComponent("MapBlock").posX; + this.posY = mapInfo[i].getComponent("MapBlock").posY; + this.level = 50 + this.posX - this.posY * 3; + this.node.zIndex = this.level; + this.node.x = mapInfo[i].x + 65; + this.node.y = mapInfo[i].y - 60; + i = 10000; + break; + } + } + }; + Block = __decorate([ + ccclass + ], Block); + return Block; +}(cc.Component)); +exports.default = Block; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxCYXJyaWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZCQUFnQztBQUUxQixJQUFBLEtBQXdCLEVBQUUsQ0FBQyxVQUFVLEVBQW5DLE9BQU8sYUFBQSxFQUFFLFFBQVEsY0FBa0IsQ0FBQztBQUc1QztJQUFtQyx5QkFBWTtJQUEvQztRQUFBLHFFQTBGQztRQXhGRyxTQUFTO1FBQ0Qsc0JBQWdCLEdBQXFCLEVBQUUsQ0FBQztRQUN4QyxxQkFBZSxHQUFxQixFQUFFLENBQUM7UUFDL0MsY0FBYztRQUNkLHNDQUFzQztRQUN0QyxnQ0FBZ0M7UUFDaEMsbUNBQW1DO1FBQ25DLDBCQUEwQjtRQUMxQixLQUFLO1FBS0wsd0JBQXdCO1FBQ3hCLDRCQUE0QjtRQUM1Qiw2QkFBNkI7UUFDckIsd0JBQWtCLEdBQVksSUFBSSxDQUFDO1FBQ25DLHFCQUFlLEdBQUcsR0FBRyxDQUFDLENBQUMsVUFBVTtRQUd6QyxnQkFBVSxHQUFZLElBQUksQ0FBQyxDQUFLLEtBQUs7UUFDckMsYUFBTyxHQUFZLEtBQUssQ0FBQyxDQUFPLE1BQU07UUFDdEMsVUFBSSxHQUFXLENBQUMsQ0FBQyxDQUFlLFNBQVM7UUFDekMsVUFBSSxHQUFXLENBQUMsQ0FBQyxDQUFlLFNBQVM7UUFDekMsY0FBUSxHQUFZLElBQUksQ0FBQyxDQUFNLFNBQVM7UUFDeEMsZUFBUyxHQUFZLElBQUksQ0FBQyxDQUFLLFNBQVM7UUFDeEMsWUFBTSxHQUFZLElBQUksQ0FBQyxDQUFRLFNBQVM7UUFDeEMsY0FBUSxHQUFZLElBQUksQ0FBQyxDQUFNLFNBQVM7UUFDeEMsZ0JBQVUsR0FBVyxDQUFDLENBQUMsQ0FBUSxRQUFRO1FBQ3ZDLFdBQUssR0FBVyxDQUFDLENBQUMsQ0FBVSxXQUFXO1FBQ3ZDLFdBQUssR0FBVyxDQUFDLENBQUMsQ0FBVSxXQUFXO1FBQ3ZDLGlCQUFXLEdBQVcsQ0FBQyxDQUFDLENBQVEsU0FBUztRQUN6QyxpQkFBVyxHQUFXLENBQUMsQ0FBQyxDQUFRLFNBQVM7UUFDekMsYUFBTyxHQUFXLENBQUMsQ0FBQyxDQUFZLE9BQU87UUFFdkMsV0FBSyxHQUFXLENBQUMsQ0FBQyxDQUFZLFNBQVM7UUFDdkMsUUFBRSxHQUFZLEtBQUssQ0FBQzs7SUFvRHhCLENBQUM7SUExQ0csc0JBQU0sR0FBTjtRQUNJLHNFQUFzRTtRQUN0RSxzRUFBc0U7UUFDdEUsdUVBQXVFO1FBQ3ZFLG9FQUFvRTtRQUNwRSxJQUFJLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVCLDRFQUE0RTtRQUM1RSx5Q0FBeUM7SUFDN0MsQ0FBQztJQUdELHFCQUFLLEdBQUw7SUFFQSxDQUFDO0lBRUQsNkJBQWEsR0FBYixVQUFpQixHQUFNO1FBQ25CLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVELG9CQUFJLEdBQUosVUFBSyxVQUFVLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRCxJQUFJLE9BQU8sR0FBRyxhQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQztRQUM1QyxPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckMsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVDLCtDQUErQztZQUMvQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQ3RFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDM0IsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckQsSUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoQyxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUNWLE1BQU07YUFDVDtTQUNKO0lBRUwsQ0FBQztJQXhGZ0IsS0FBSztRQUR6QixPQUFPO09BQ2EsS0FBSyxDQTBGekI7SUFBRCxZQUFDO0NBMUZELEFBMEZDLENBMUZrQyxFQUFFLENBQUMsU0FBUyxHQTBGOUM7a0JBMUZvQixLQUFLIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbGxpc2lvbkRldGVjdGlvbiBmcm9tIFwiLi9Db2xsaXNpb25EZXRlY3Rpb25cIjtcclxuaW1wb3J0IE1hcENvbnJvbGVyIGZyb20gXCIuL01hcFwiO1xyXG5cclxuY29uc3QgeyBjY2NsYXNzLCBwcm9wZXJ0eSB9ID0gY2MuX2RlY29yYXRvcjtcclxuXHJcbkBjY2NsYXNzXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJsb2NrIGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLyDmlrDlop7nvJPlrZjlj5jph49cclxuICAgIHByaXZhdGUgc2VsZkJveENvbGxpZGVyczogY2MuQm94Q29sbGlkZXJbXSA9IFtdO1xyXG4gICAgcHJpdmF0ZSBhbGxCb3hDb2xsaWRlcnM6IGNjLkJveENvbGxpZGVyW10gPSBbXTtcclxuICAgIC8vIEBwcm9wZXJ0eSh7XHJcbiAgICAvLyAgICAgdG9vbHRpcDogJ+eisOaSnuW9oueKtu+8jE5vbmXlsLHmmK/ml6DmlYzvvIzkuI3lj4LkuI7norDmkp4nLFxyXG4gICAgLy8gICAgIHR5cGU6IGNjLkVudW0oQmxvY2tUeXBlKSxcclxuICAgIC8vICAgICAvLyBkZWZhdWx0OiBCbG9ja1R5cGUuTm9tYWwsXHJcbiAgICAvLyAgICAgZGlzcGxheU5hbWU6ICfnorDmkp7lvaLnirYnXHJcbiAgICAvLyB9KVxyXG5cclxuXHJcblxyXG5cclxuICAgIC8vIExJRkUtQ1lDTEUgQ0FMTEJBQ0tTOlxyXG4gICAgLy8gQHByb3BlcnR5KGNjLlNwcml0ZUF0bGFzKVxyXG4gICAgLy8gVUk6IGNjLlNwcml0ZUF0bGFzID0gbnVsbDtcclxuICAgIHByaXZhdGUgaW5pdGlhbFRvdWNoT2Zmc2V0OiBjYy5WZWMyID0gbnVsbDtcclxuICAgIHByaXZhdGUgb2Zmc2V0VG9sZXJhbmNlID0gMTAwOyAvLyDlgY/np7vlrrnlv43luqY7IFxyXG5cclxuICAgIGFsbEJsb2NrczogYW55OyAgICAgICAvL+aJgOacieeahOaWueWdlyznlKjkuo7orqHnrpdwb3NYLHBvc1nmtojpmaRcclxuICAgIHRvdWNoUG9pbnQ6IGNjLlZlYzIgPSBudWxsOyAgICAgLy/op6bmkbjngrlcclxuICAgIGlzVG91Y2g6IGJvb2xlYW4gPSBmYWxzZTsgICAgICAgLy/mmK/lkKbop6bmkbhcclxuICAgIHBvc1g6IG51bWJlciA9IDA7ICAgICAgICAgICAgICAgLy/lnLDlm77lnZfnmoRY5Z2Q5qCHXHJcbiAgICBwb3NZOiBudW1iZXIgPSAwOyAgICAgICAgICAgICAgIC8v5Zyw5Zu+5Z2X55qEWeWdkOagh1xyXG4gICAgbW92ZUxlZnQ6IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5bem56e7O1xyXG4gICAgbW92ZVJpZ2h0OiBib29sZWFuID0gdHJ1ZTsgICAgIC8v5piv5ZCm5Y+v5Lul5Y+z56e7O1xyXG4gICAgbW92ZVVwOiBib29sZWFuID0gdHJ1ZTsgICAgICAgIC8v5piv5ZCm5Y+v5Lul5LiK56e7O1xyXG4gICAgbW92ZURvd246IGJvb2xlYW4gPSB0cnVlOyAgICAgIC8v5piv5ZCm5Y+v5Lul5LiL56e7O1xyXG4gICAgbW92ZUNvcm5lcjogbnVtYmVyID0gMDsgICAgICAgIC8v5piv5ZCm56Kw5pKe6KeS6JC9XHJcbiAgICBtb3ZlWTogbnVtYmVyID0gMDsgICAgICAgICAgLy/mmK/lkKblj6/ku6XkuIrkuIvnp7vliqg7XHJcbiAgICBtb3ZlWDogbnVtYmVyID0gMDsgICAgICAgICAgLy/mmK/lkKblj6/ku6Xlt6blj7Pnp7vliqg7XHJcbiAgICB0b3VjaFBvaW50WDogbnVtYmVyID0gMDsgICAgICAgIC8v6Kem5pG454K5WOWdkOaghztcclxuICAgIHRvdWNoUG9pbnRZOiBudW1iZXIgPSAwOyAgICAgICAgLy/op6bmkbjngrlZ5Z2Q5qCHO1xyXG4gICAgYmxvY2tJZDogbnVtYmVyID0gMDsgICAgICAgICAgICAvL+aWueWdl0lEO1xyXG4gICAgc3RhY2tpbmc6IGNjLlZlYzI7ICAgICAgICAvL+WPoOWKoOaWueWdl1xyXG4gICAgbGV2ZWw6IG51bWJlciA9IDA7ICAgICAgICAgICAgLy/lj6DliqDmlrnlnZflsYLmlbA7XHJcbiAgICBwejogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgY29sbGlkZXI6IGFueTtcclxuICAgIGJsb2NrX0luZm86IGFueTtcclxuICAgIF90b3VjaExpc3RlbmVyOiBhbnk7XHJcbiAgICByZWxhdGl2ZV9Qb3NpdGlvbjogY2MuVmVjMjsgIC8v54K55Ye75ZKM5pa55Z2X55u45a+55L2N572uXHJcbiAgICBwcml2YXRlIF9ldmVudE1hbmFnZXI6IGFueTtcclxuICAgIGhpdDogY2MuTm9kZTtcclxuXHJcblxyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICAvLyB0aGlzLm5vZGUub24oY2MuTm9kZS5FdmVudFR5cGUuVE9VQ0hfU1RBUlQsIHRoaXMudG91Y2hTdGFydCwgdGhpcyk7XHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX01PVkUsIHRoaXMudG91Y2hNb3ZlLCB0aGlzKTsgIFxyXG4gICAgICAgIC8vIHRoaXMubm9kZS5vbihjYy5Ob2RlLkV2ZW50VHlwZS5UT1VDSF9DQU5DRUwsIHRoaXMudG91Y2hFbmQsIHRoaXMpOyAgXHJcbiAgICAgICAgLy8gdGhpcy5ub2RlLm9uKGNjLk5vZGUuRXZlbnRUeXBlLlRPVUNIX0VORCwgdGhpcy50b3VjaEVuZCwgdGhpcyk7ICBcclxuICAgICAgICB0aGlzLnB6ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zdGFja2luZyA9IGNjLnYyKDAsIDApO1xyXG4gICAgICAgIC8vIHRoaXMuc2VsZkJveENvbGxpZGVycyA9IHRoaXMubm9kZS5nZXRDb21wb25lbnRzSW5DaGlsZHJlbihjYy5Cb3hDb2xsaWRlcilcclxuICAgICAgICAvLyAuZmlsdGVyKGNvbGxpZGVyID0+IGNvbGxpZGVyLnRhZyA8IDQpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBzdGFydCgpIHtcclxuXHJcbiAgICB9XHJcblxyXG4gICAganNvbkRlZXBDbG9uZTxUPihvYmo6IFQpOiBUIHtcclxuICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShvYmopKTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KGJsb2NrX0luZm8sIHBvc1gsIHBvc1ksIG5vZGUpIHtcclxuICAgICAgICB0aGlzLmJsb2NrX0luZm8gPSB0aGlzLmpzb25EZWVwQ2xvbmUoYmxvY2tfSW5mbyk7XHJcbiAgICAgICAgbGV0IG1hcEluZm8gPSBNYXBDb25yb2xlci5faW5zdGFuY2UubWFwSW5mbztcclxuICAgICAgICBjb25zb2xlLmxvZyhcImJsb2NrX0luZm9cIiwgdGhpcy5ibG9ja19JbmZvKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1hcEluZm8ubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGJsb2NrUmVjdCA9IG1hcEluZm9baV0uZ2V0Qm91bmRpbmdCb3goKTtcclxuICAgICAgICAgICAgLy8g5L2/55SoIGNjLkludGVyc2VjdGlvbi5wb2ludEluUmVjdCDmlrnms5XliKTmlq3ngrnmmK/lkKblnKjnn6nlvaLojIPlm7TlhoVcclxuICAgICAgICAgICAgbGV0IHBvaW50ID0gY2MudjIodGhpcy5ub2RlLnBvc2l0aW9uLnggLSA1LCB0aGlzLm5vZGUucG9zaXRpb24ueSArIDEwKVxyXG4gICAgICAgICAgICBpZiAoYmxvY2tSZWN0LmNvbnRhaW5zKHBvaW50KSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NYID0gbWFwSW5mb1tpXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NYO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3NZID0gbWFwSW5mb1tpXS5nZXRDb21wb25lbnQoXCJNYXBCbG9ja1wiKS5wb3NZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sZXZlbCA9IDUwICsgdGhpcy5wb3NYIC0gdGhpcy5wb3NZICogMztcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS56SW5kZXggPSB0aGlzLmxldmVsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlLnggPSBtYXBJbmZvW2ldLnggKyA2NTtcclxuICAgICAgICAgICAgICAgIHRoaXMubm9kZS55ID0gbWFwSW5mb1tpXS55IC0gNjA7XHJcbiAgICAgICAgICAgICAgICBpID0gMTAwMDA7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG59XHJcblxyXG5cclxuIl19 +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Storage/Storage.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '1002938VFRJd70RiAno9Iys', 'Storage'); +// Script/module/Storage/Storage.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.StorageMessage = void 0; +//缓存浏览器数据 +var StorageMessage = { + getStorage: function (key) { + var result = null; + if (cc.sys.localStorage.getItem(key)) { + var result = cc.sys.localStorage.getItem(key); + } + if (result) { + result = JSON.parse(result); + } + return result; + }, + setStorage: function (key, value) { + //主动拉起分享接口 + var temp = JSON.stringify(value); + cc.sys.localStorage.setItem(key, temp); + }, + removeStorage: function (key) { + //主动删除消息接口 + if (cc.sys.localStorage.getItem(key)) { + cc.sys.localStorage.removeItem(key); + } + }, +}; +exports.StorageMessage = StorageMessage; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFN0b3JhZ2VcXFN0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsU0FBUztBQUNULElBQUksY0FBYyxHQUFHO0lBQ2pCLFVBQVUsRUFBRyxVQUFTLEdBQUc7UUFDckIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFDO1lBQ2xDLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMvQztRQUVELElBQUcsTUFBTSxFQUFDO1lBQ1IsTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDN0I7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBQ0QsVUFBVSxFQUFHLFVBQVMsR0FBRyxFQUFDLEtBQUs7UUFDM0IsVUFBVTtRQUNWLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsYUFBYSxFQUFHLFVBQVMsR0FBRztRQUMxQixVQUFVO1FBQ1YsSUFBRyxFQUFFLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUM7WUFDbEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3BDO0lBQ0gsQ0FBQztDQUNKLENBQUM7QUFFTyx3Q0FBYyIsImZpbGUiOiIiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8v57yT5a2Y5rWP6KeI5Zmo5pWw5o2uXHJcbnZhciBTdG9yYWdlTWVzc2FnZSA9IHtcclxuICAgIGdldFN0b3JhZ2UgOiBmdW5jdGlvbihrZXkpe1xyXG4gICAgICAgIHZhciByZXN1bHQgPSBudWxsO1xyXG4gICAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcclxuICAgICAgICAgIHZhciByZXN1bHQgPSBjYy5zeXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYocmVzdWx0KXtcclxuICAgICAgICAgIHJlc3VsdCA9IEpTT04ucGFyc2UocmVzdWx0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0sXHJcbiAgICBzZXRTdG9yYWdlIDogZnVuY3Rpb24oa2V5LHZhbHVlKXtcclxuICAgICAgICAvL+S4u+WKqOaLiei1t+WIhuS6q+aOpeWPo1xyXG4gICAgICAgIHZhciB0ZW1wID0gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xyXG4gICAgICAgIGNjLnN5cy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShrZXksIHRlbXApXHJcbiAgICB9LFxyXG4gICAgcmVtb3ZlU3RvcmFnZSA6IGZ1bmN0aW9uKGtleSl7XHJcbiAgICAgIC8v5Li75Yqo5Yig6Zmk5raI5oGv5o6l5Y+jXHJcbiAgICAgIGlmKGNjLnN5cy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpKXtcclxuICAgICAgICBjYy5zeXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG59O1xyXG5cclxuZXhwb3J0IHsgU3RvcmFnZU1lc3NhZ2UgfTsiXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_base/data/lq_data.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'a54702UNV9NA7pYgQd6eA5/', 'lq_data'); +// Script/lq_base/data/lq_data.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQPlatformData = exports.LQShareData = exports.LQNativeComponent = exports.LQRect = void 0; +var Vec2 = cc.Vec2; +var Rect = cc.Rect; +var LQRect = /** @class */ (function () { + function LQRect(x, y, width, height) { + this.x = x; + this.y = y; + this.width = width; + this.height = height; + this.half_width = width * 0.5; + this.half_height = height * 0.5; + } + LQRect.prototype.top_left = function () { + return new Vec2(this.x - this.half_width, this.y + this.half_height); + }; + LQRect.prototype.top_right = function () { + return new Vec2(this.x + this.half_width, this.y + this.half_height); + }; + LQRect.prototype.bottom_left = function () { + return new Vec2(this.x - this.half_width, this.y - this.half_height); + }; + LQRect.prototype.bottom_right = function () { + return new Vec2(this.x + this.half_width, this.y - this.half_height); + }; + LQRect.prototype.pos = function () { + return new Vec2(this.x, this.y); + }; + LQRect.prototype.sub = function (pos) { + return new Vec2(pos.x - this.x, pos.y - this.y); + }; + LQRect.prototype.add = function (pos) { + return new Vec2(pos.x + this.x, pos.y + this.y); + }; + LQRect.prototype.to_cocos_rect = function () { + return new Rect(this.x - this.half_width, this.y - this.half_height, this.width, this.height); + }; + return LQRect; +}()); +exports.LQRect = LQRect; +var LQNativeComponent = /** @class */ (function () { + function LQNativeComponent() { + this.node_btn_arr = []; + } + return LQNativeComponent; +}()); +exports.LQNativeComponent = LQNativeComponent; +var LQShareData = /** @class */ (function () { + function LQShareData(obj) { + if (obj.title) { + this.title = obj.title; + } + if (obj.remote_url) { + this.remote_url = obj.remote_url; + } + if (obj.url_id) { + this.url_id = obj.url_id; + } + if (obj.query) { + this.query = obj.query; + } + if (obj.content) { + this.content = obj.content; + } + if (obj.extra) { + this.extra = obj.extra; + } + if (obj.type) { + this.type = obj.type; + } + } + return LQShareData; +}()); +exports.LQShareData = LQShareData; +var LQPlatformData = /** @class */ (function () { + function LQPlatformData() { + } + return LQPlatformData; +}()); +exports.LQPlatformData = LQPlatformData; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFxkYXRhXFxscV9kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLElBQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDdEIsSUFBTyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztBQUt0QjtJQVFJLGdCQUFZLENBQVMsRUFBRSxDQUFTLEVBQUUsS0FBYSxFQUFFLE1BQWM7UUFDM0QsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxHQUFHLEdBQUcsQ0FBQztRQUM5QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDcEMsQ0FBQztJQUVNLHlCQUFRLEdBQWY7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sMEJBQVMsR0FBaEI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sNEJBQVcsR0FBbEI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sNkJBQVksR0FBbkI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRU0sb0JBQUcsR0FBVjtRQUNJLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVNLG9CQUFHLEdBQVYsVUFBVyxHQUFTO1FBQ2hCLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFTSxvQkFBRyxHQUFWLFVBQVcsR0FBUztRQUNoQixPQUFPLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU0sOEJBQWEsR0FBcEI7UUFDSSxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUNMLGFBQUM7QUFBRCxDQWhEQSxBQWdEQyxJQUFBO0FBaERZLHdCQUFNO0FBa0RuQjtJQUFBO1FBQ1csaUJBQVksR0FBVyxFQUFFLENBQUM7SUFNckMsQ0FBQztJQUFELHdCQUFDO0FBQUQsQ0FQQSxBQU9DLElBQUE7QUFQWSw4Q0FBaUI7QUFTOUI7SUFTSSxxQkFBWSxHQUE0SDtRQUNwSSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUU7WUFDWCxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUM7U0FDMUI7UUFDRCxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDO1NBQ3BDO1FBQ0QsSUFBSSxHQUFHLENBQUMsTUFBTSxFQUFFO1lBQ1osSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1NBQzlCO1FBQ0QsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFO1lBQ1gsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDO1NBQzFCO1FBQ0QsSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFO1lBQ1YsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1NBQ3hCO0lBQ0wsQ0FBQztJQUNMLGtCQUFDO0FBQUQsQ0FoQ0EsQUFnQ0MsSUFBQTtBQWhDWSxrQ0FBVztBQWtDeEI7SUFBQTtJQWlCQSxDQUFDO0lBQUQscUJBQUM7QUFBRCxDQWpCQSxBQWlCQyxJQUFBO0FBakJZLHdDQUFjIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJUG9zLCBJUmVjdH0gZnJvbSBcIi4vbHFfaW50ZXJmYWNlXCI7XHJcbmltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuaW1wb3J0IFJlY3QgPSBjYy5SZWN0O1xyXG5pbXBvcnQgU3ByaXRlID0gY2MuU3ByaXRlO1xyXG5pbXBvcnQgTGFiZWwgPSBjYy5MYWJlbDtcclxuaW1wb3J0IE5vZGUgPSBjYy5Ob2RlO1xyXG5cclxuZXhwb3J0IGNsYXNzIExRUmVjdCBpbXBsZW1lbnRzIElSZWN0IHtcclxuICAgIHB1YmxpYyB4OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgeTogbnVtYmVyO1xyXG4gICAgcHVibGljIHdpZHRoOiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaGVpZ2h0OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgaGFsZl93aWR0aDogbnVtYmVyO1xyXG4gICAgcHVibGljIGhhbGZfaGVpZ2h0OiBudW1iZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XHJcbiAgICAgICAgdGhpcy54ID0geDtcclxuICAgICAgICB0aGlzLnkgPSB5O1xyXG4gICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDtcclxuICAgICAgICB0aGlzLmhlaWdodCA9IGhlaWdodDtcclxuICAgICAgICB0aGlzLmhhbGZfd2lkdGggPSB3aWR0aCAqIDAuNTtcclxuICAgICAgICB0aGlzLmhhbGZfaGVpZ2h0ID0gaGVpZ2h0ICogMC41O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b3BfbGVmdCgpOiBWZWMyIHtcclxuICAgICAgICByZXR1cm4gbmV3IFZlYzIodGhpcy54IC0gdGhpcy5oYWxmX3dpZHRoLCB0aGlzLnkgKyB0aGlzLmhhbGZfaGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9wX3JpZ2h0KCk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiBuZXcgVmVjMih0aGlzLnggKyB0aGlzLmhhbGZfd2lkdGgsIHRoaXMueSArIHRoaXMuaGFsZl9oZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBib3R0b21fbGVmdCgpOiBWZWMyIHtcclxuICAgICAgICByZXR1cm4gbmV3IFZlYzIodGhpcy54IC0gdGhpcy5oYWxmX3dpZHRoLCB0aGlzLnkgLSB0aGlzLmhhbGZfaGVpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYm90dG9tX3JpZ2h0KCk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiBuZXcgVmVjMih0aGlzLnggKyB0aGlzLmhhbGZfd2lkdGgsIHRoaXMueSAtIHRoaXMuaGFsZl9oZWlnaHQpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBwb3MoKTogY2MuVmVjMiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBWZWMyKHRoaXMueCwgdGhpcy55KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3ViKHBvczogSVBvcyk6IFZlYzIge1xyXG4gICAgICAgIHJldHVybiBuZXcgVmVjMihwb3MueCAtIHRoaXMueCwgcG9zLnkgLSB0aGlzLnkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGQocG9zOiBJUG9zKTogVmVjMiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBWZWMyKHBvcy54ICsgdGhpcy54LCBwb3MueSArIHRoaXMueSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvX2NvY29zX3JlY3QoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZWN0KHRoaXMueCAtIHRoaXMuaGFsZl93aWR0aCwgdGhpcy55IC0gdGhpcy5oYWxmX2hlaWdodCwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTFFOYXRpdmVDb21wb25lbnQge1xyXG4gICAgcHVibGljIG5vZGVfYnRuX2FycjogTm9kZVtdID0gW107XHJcbiAgICBwdWJsaWMgc3ByaXRlX2xvZ28hOiBTcHJpdGU7XHJcbiAgICBwdWJsaWMgc3ByaXRlX2ltZyE6IFNwcml0ZTtcclxuICAgIHB1YmxpYyBzcHJpdGVfYWRfdGlwITogU3ByaXRlO1xyXG4gICAgcHVibGljIGxhYmVsX3RpdGxlITogTGFiZWw7XHJcbiAgICBwdWJsaWMgbGFiZWxfZGVzYyE6IExhYmVsO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTFFTaGFyZURhdGEge1xyXG4gICAgcHVibGljIHRpdGxlITogc3RyaW5nO1xyXG4gICAgcHVibGljIHJlbW90ZV91cmwhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdXJsX2lkITogc3RyaW5nO1xyXG4gICAgcHVibGljIHF1ZXJ5ITogc3RyaW5nO1xyXG4gICAgcHVibGljIGNvbnRlbnQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgZXh0cmEhOiBhbnk7XHJcbiAgICBwdWJsaWMgdHlwZSE6IHN0cmluZztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihvYmo/OiB7IHRpdGxlPzogc3RyaW5nLCByZW1vdGVfdXJsPzogc3RyaW5nLCB1cmxfaWQ/OiBzdHJpbmcsIHF1ZXJ5Pzogc3RyaW5nLCBjb250ZW50Pzogc3RyaW5nLCBleHRyYT86IGFueSwgdHlwZT86IHN0cmluZyB9KSB7XHJcbiAgICAgICAgaWYgKG9iai50aXRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gb2JqLnRpdGxlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLnJlbW90ZV91cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5yZW1vdGVfdXJsID0gb2JqLnJlbW90ZV91cmw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmoudXJsX2lkKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXJsX2lkID0gb2JqLnVybF9pZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai5xdWVyeSkge1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXJ5ID0gb2JqLnF1ZXJ5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob2JqLmNvbnRlbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50ID0gb2JqLmNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvYmouZXh0cmEpIHtcclxuICAgICAgICAgICAgdGhpcy5leHRyYSA9IG9iai5leHRyYTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9iai50eXBlKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IG9iai50eXBlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIExRUGxhdGZvcm1EYXRhIHtcclxuICAgIHB1YmxpYyBhcHBfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgcHJpbnRfbG9nITogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBzaG93X3NoYXJlX21lbnUhOiBib29sZWFuO1xyXG4gICAgcHVibGljIGtlZXBfc2NyZWVuX29uITogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBiYW5uZXJfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYmFubmVyX3dpZHRoITogbnVtYmVyO1xyXG4gICAgcHVibGljIGludGVyc3RpdGlhbF9pZCE6IHN0cmluZztcclxuICAgIHB1YmxpYyBuYXRpdmVfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdmlkZW9faWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgaXNfdmlkZW9fZnJlZSE6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgaXNfY2FjaGVfdmlkZW8hOiBib29sZWFuO1xyXG4gICAgcHVibGljIGFkX3R5cGUhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYWRfaWQhOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgYWRfa2V5ITogc3RyaW5nO1xyXG4gICAgcHVibGljIHN3aXRjaF9hZCE6IGJvb2xlYW47XHJcbiAgICBwdWJsaWMgc2hhcmVfZGF0YV9hcnIhOiBMUVNoYXJlRGF0YVtdO1xyXG59Il19 //------QC-SOURCE-SPLIT------ (function() { @@ -16729,168 +14181,168 @@ cc._RF.pop(); cc._RF.push(module, 'cd21fuTZY5LOoiXtN66R7wx', 'lq_base_util'); // Script/lq_base/util/lq_base_util.ts -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LQBaseUtil = void 0; -var lq_platform_util_1 = require("./lq_platform_util"); -var lq_const_1 = require("../data/lq_const"); -var view = cc.view; -var LQBaseUtil = /** @class */ (function () { - function LQBaseUtil() { - } - // public static readonly unit_arr = ['K', 'M', 'B', 'T']; - LQBaseUtil.has_value = function (arr, v) { - var has = false; - for (var i = 0; i < arr.length; i++) { - if (arr[i] === v) { - has = true; - break; - } - } - return has; - }; - LQBaseUtil.get_value_by_duration = function (percent, timeline) { - if (timeline.length === 0) { - return 1; - } - var end_index = -1; - for (var i = 1; i < timeline.length; i++) { - if (timeline[i].x > percent) { - end_index = i; - break; - } - } - if (end_index === -1) { - return timeline[timeline.length - 1].y; - } - var start_index = end_index - 1; - return timeline[start_index].y + (timeline[end_index].y - timeline[start_index].y) * ((percent - timeline[start_index].x) / (timeline[end_index].x - timeline[start_index].x)); - }; - LQBaseUtil.number_to_counting = function (num) { - if (num < 1000) { - return num + ''; - } - else if (num < 1000000) { - return Math.floor(num / 1000) + 'K'; - } - else if (num < 1000000000) { - return Math.floor(num / 1000000) + 'M'; - } - else if (num < 1000000000000) { - return Math.floor(num / 1000000000) + 'B'; - } - else if (num < 1000000000000000) { - return Math.floor(num / 1000000000000) + 'T'; - } - return Math.floor(num / 1000000000000) + 'T'; - }; - LQBaseUtil.number_to_time = function (time) { - var t = Math.floor(time / (60 * 60)); - time = time - t * 60 * 60; - var hour = t.toString(); - var min = Math.floor(time / 60).toString(); - var sec = (time % 60).toString(); - if (hour.length === 1) { - hour = '0' + hour; - } - if (min.length === 1) { - min = '0' + min; - } - if (sec.length === 1) { - sec = '0' + sec; - } - return [hour, min, sec]; - }; - LQBaseUtil.set_normal_angle = function (angle) { - while (angle > 360) { - angle -= 360; - } - while (angle < 0) { - angle += 360; - } - return angle; - }; - LQBaseUtil.compare_version = function (v1, v2) { - var v1_arr = v1.split('.'); - var v2_arr = v2.split('.'); - var len = Math.max(v1_arr.length, v2_arr.length); - while (v1_arr.length < len) { - v1_arr.push('0'); - } - while (v2_arr.length < len) { - v2_arr.push('0'); - } - for (var i = 0; i < len; i++) { - var num1 = parseInt(v1_arr[i]); - var num2 = parseInt(v2_arr[i]); - if (num1 > num2) { - return 1; - } - else if (num1 < num2) { - return -1; - } - } - return 0; - }; - LQBaseUtil.is_today = function (date) { - var d1 = new Date(); - var d2; - if (date && date !== '') { - d2 = new Date(date); - } - else { - d2 = new Date(); - d2.setDate(d2.getDate() - 1); - } - return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate(); - }; - LQBaseUtil.is_safe_area = function () { - var cb = function (width, height) { - return (width === 2280 && height === 1080) || (width === 1792 && height === 828) || (width === 2436 && height === 1125) || (width === 2688 && height === 1242); - }; - switch (lq_platform_util_1.LQPlatformUtil.get_platform()) { - case lq_const_1.LQPlatformType.baidu: - var sys_info_swan = swan.getSystemInfoSync(); - return cb(sys_info_swan.pixelRatio * sys_info_swan.screenWidth, sys_info_swan.pixelRatio * sys_info_swan.screenHeight); - case lq_const_1.LQPlatformType.qq: - var sys_info_qq = qq.getSystemInfoSync(); - return cb(sys_info_qq.pixelRatio * sys_info_qq.screenWidth, sys_info_qq.pixelRatio * sys_info_qq.screenHeight); - case lq_const_1.LQPlatformType.tt: - var sys_info_tt = tt.getSystemInfoSync(); - return cb(sys_info_tt.pixelRatio * sys_info_tt.screenWidth, sys_info_tt.pixelRatio * sys_info_tt.screenHeight); - case lq_const_1.LQPlatformType.oppo: - case lq_const_1.LQPlatformType.vivo: - var sys_info_vivo = qg.getSystemInfoSync(); - return cb(sys_info_vivo.pixelRatio * sys_info_vivo.screenWidth, sys_info_vivo.pixelRatio * sys_info_vivo.screenHeight); - case lq_const_1.LQPlatformType.wx: - var sys_info_wx = wx.getSystemInfoSync(); - return cb(sys_info_wx.pixelRatio * sys_info_wx.screenWidth, sys_info_wx.pixelRatio * sys_info_wx.screenHeight); - case lq_const_1.LQPlatformType.android: - break; - case lq_const_1.LQPlatformType.ios: - var size = view.getFrameSize(); - return cb(size.width, size.height); - } - return false; - }; - LQBaseUtil.deep_clone = function (obj) { - if (typeof obj !== 'object') { - return obj; - } - var new_obj = (obj instanceof Array ? [] : {}); - for (var key in obj) { - if (typeof obj[key] === 'object') { - new_obj[key] = this.deep_clone(obj[key]); - } - else { - new_obj[key] = obj[key]; - } - } - return new_obj; - }; - return LQBaseUtil; -}()); -exports.LQBaseUtil = LQBaseUtil; +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQBaseUtil = void 0; +var lq_platform_util_1 = require("./lq_platform_util"); +var lq_const_1 = require("../data/lq_const"); +var view = cc.view; +var LQBaseUtil = /** @class */ (function () { + function LQBaseUtil() { + } + // public static readonly unit_arr = ['K', 'M', 'B', 'T']; + LQBaseUtil.has_value = function (arr, v) { + var has = false; + for (var i = 0; i < arr.length; i++) { + if (arr[i] === v) { + has = true; + break; + } + } + return has; + }; + LQBaseUtil.get_value_by_duration = function (percent, timeline) { + if (timeline.length === 0) { + return 1; + } + var end_index = -1; + for (var i = 1; i < timeline.length; i++) { + if (timeline[i].x > percent) { + end_index = i; + break; + } + } + if (end_index === -1) { + return timeline[timeline.length - 1].y; + } + var start_index = end_index - 1; + return timeline[start_index].y + (timeline[end_index].y - timeline[start_index].y) * ((percent - timeline[start_index].x) / (timeline[end_index].x - timeline[start_index].x)); + }; + LQBaseUtil.number_to_counting = function (num) { + if (num < 1000) { + return num + ''; + } + else if (num < 1000000) { + return Math.floor(num / 1000) + 'K'; + } + else if (num < 1000000000) { + return Math.floor(num / 1000000) + 'M'; + } + else if (num < 1000000000000) { + return Math.floor(num / 1000000000) + 'B'; + } + else if (num < 1000000000000000) { + return Math.floor(num / 1000000000000) + 'T'; + } + return Math.floor(num / 1000000000000) + 'T'; + }; + LQBaseUtil.number_to_time = function (time) { + var t = Math.floor(time / (60 * 60)); + time = time - t * 60 * 60; + var hour = t.toString(); + var min = Math.floor(time / 60).toString(); + var sec = (time % 60).toString(); + if (hour.length === 1) { + hour = '0' + hour; + } + if (min.length === 1) { + min = '0' + min; + } + if (sec.length === 1) { + sec = '0' + sec; + } + return [hour, min, sec]; + }; + LQBaseUtil.set_normal_angle = function (angle) { + while (angle > 360) { + angle -= 360; + } + while (angle < 0) { + angle += 360; + } + return angle; + }; + LQBaseUtil.compare_version = function (v1, v2) { + var v1_arr = v1.split('.'); + var v2_arr = v2.split('.'); + var len = Math.max(v1_arr.length, v2_arr.length); + while (v1_arr.length < len) { + v1_arr.push('0'); + } + while (v2_arr.length < len) { + v2_arr.push('0'); + } + for (var i = 0; i < len; i++) { + var num1 = parseInt(v1_arr[i]); + var num2 = parseInt(v2_arr[i]); + if (num1 > num2) { + return 1; + } + else if (num1 < num2) { + return -1; + } + } + return 0; + }; + LQBaseUtil.is_today = function (date) { + var d1 = new Date(); + var d2; + if (date && date !== '') { + d2 = new Date(date); + } + else { + d2 = new Date(); + d2.setDate(d2.getDate() - 1); + } + return d1.getFullYear() === d2.getFullYear() && d1.getMonth() === d2.getMonth() && d1.getDate() === d2.getDate(); + }; + LQBaseUtil.is_safe_area = function () { + var cb = function (width, height) { + return (width === 2280 && height === 1080) || (width === 1792 && height === 828) || (width === 2436 && height === 1125) || (width === 2688 && height === 1242); + }; + switch (lq_platform_util_1.LQPlatformUtil.get_platform()) { + case lq_const_1.LQPlatformType.baidu: + var sys_info_swan = swan.getSystemInfoSync(); + return cb(sys_info_swan.pixelRatio * sys_info_swan.screenWidth, sys_info_swan.pixelRatio * sys_info_swan.screenHeight); + case lq_const_1.LQPlatformType.qq: + var sys_info_qq = qq.getSystemInfoSync(); + return cb(sys_info_qq.pixelRatio * sys_info_qq.screenWidth, sys_info_qq.pixelRatio * sys_info_qq.screenHeight); + case lq_const_1.LQPlatformType.tt: + var sys_info_tt = tt.getSystemInfoSync(); + return cb(sys_info_tt.pixelRatio * sys_info_tt.screenWidth, sys_info_tt.pixelRatio * sys_info_tt.screenHeight); + case lq_const_1.LQPlatformType.oppo: + case lq_const_1.LQPlatformType.vivo: + var sys_info_vivo = qg.getSystemInfoSync(); + return cb(sys_info_vivo.pixelRatio * sys_info_vivo.screenWidth, sys_info_vivo.pixelRatio * sys_info_vivo.screenHeight); + case lq_const_1.LQPlatformType.wx: + var sys_info_wx = wx.getSystemInfoSync(); + return cb(sys_info_wx.pixelRatio * sys_info_wx.screenWidth, sys_info_wx.pixelRatio * sys_info_wx.screenHeight); + case lq_const_1.LQPlatformType.android: + break; + case lq_const_1.LQPlatformType.ios: + var size = view.getFrameSize(); + return cb(size.width, size.height); + } + return false; + }; + LQBaseUtil.deep_clone = function (obj) { + if (typeof obj !== 'object') { + return obj; + } + var new_obj = (obj instanceof Array ? [] : {}); + for (var key in obj) { + if (typeof obj[key] === 'object') { + new_obj[key] = this.deep_clone(obj[key]); + } + else { + new_obj[key] = obj[key]; + } + } + return new_obj; + }; + return LQBaseUtil; +}()); +exports.LQBaseUtil = LQBaseUtil; cc._RF.pop(); } @@ -16904,181 +14356,6 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9iYXNlX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdURBQWtEO0FBQ2xELDZDQUFnRDtBQUNoRCxJQUFPLElBQUksR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBR3RCO0lBQUE7SUE0SkEsQ0FBQztJQTNKRywwREFBMEQ7SUFFNUMsb0JBQVMsR0FBdkIsVUFBMkIsR0FBUSxFQUFFLENBQUk7UUFDckMsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDZCxHQUFHLEdBQUcsSUFBSSxDQUFDO2dCQUNYLE1BQU07YUFDVDtTQUNKO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRWEsZ0NBQXFCLEdBQW5DLFVBQW9DLE9BQWUsRUFBRSxRQUFnQjtRQUNqRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sQ0FBQyxDQUFDO1NBQ1o7UUFDRCxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0QyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsT0FBTyxFQUFFO2dCQUN6QixTQUFTLEdBQUcsQ0FBQyxDQUFDO2dCQUNkLE1BQU07YUFDVDtTQUNKO1FBQ0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDbEIsT0FBTyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENB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R0FBeEIsVUFBeUIsR0FBUTtRQUM3QixJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBRTtZQUN6QixPQUFPLEdBQUcsQ0FBQztTQUNkO1FBQ0QsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBUSxDQUFDO1FBQ3RELEtBQUssSUFBSSxHQUFHLElBQUksR0FBRyxFQUFFO1lBQ2pCLElBQUksT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssUUFBUSxFQUFFO2dCQUM5QixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUM1QztpQkFBTTtnQkFDSCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQzNCO1NBQ0o7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBQ0wsaUJBQUM7QUFBRCxDQTVKQSxBQTRKQyxJQUFBO0FBNUpZLGdDQUFVIiwiZmlsZSI6IiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMUVBsYXRmb3JtVXRpbH0gZnJvbSBcIi4vbHFfcGxhdGZvcm1fdXRpbFwiO1xyXG5pbXBvcnQge0xRUGxhdGZvcm1UeXBlfSBmcm9tIFwiLi4vZGF0YS9scV9jb25zdFwiO1xyXG5pbXBvcnQgdmlldyA9IGNjLnZpZXc7XHJcbmltcG9ydCBWZWMyID0gY2MuVmVjMjtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUUJhc2VVdGlsIHtcclxuICAgIC8vIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgdW5pdF9hcnIgPSBbJ0snLCAnTScsICdCJywgJ1QnXTtcclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGhhc192YWx1ZTxUPihhcnI6IFRbXSwgdjogVCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGxldCBoYXMgPSBmYWxzZTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoYXJyW2ldID09PSB2KSB7XHJcbiAgICAgICAgICAgICAgICBoYXMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGhhcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF92YWx1ZV9ieV9kdXJhdGlvbihwZXJjZW50OiBudW1iZXIsIHRpbWVsaW5lOiBWZWMyW10pOiBudW1iZXIge1xyXG4gICAgICAgIGlmICh0aW1lbGluZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIDE7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBlbmRfaW5kZXggPSAtMTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IHRpbWVsaW5lLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmICh0aW1lbGluZVtpXS54ID4gcGVyY2VudCkge1xyXG4gICAgICAgICAgICAgICAgZW5kX2luZGV4ID0gaTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbmRfaW5kZXggPT09IC0xKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0aW1lbGluZVt0aW1lbGluZS5sZW5ndGggLSAxXS55O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdGFydF9pbmRleCA9IGVuZF9pbmRleCAtIDE7XHJcbiAgICAgICAgcmV0dXJuIHRpbWVsaW5lW3N0YXJ0X2luZGV4XS55ICsgKHRpbWVsaW5lW2VuZF9pbmRleF0ueSAtIHRpbWVsaW5lW3N0YXJ0X2luZGV4XS55KSAqICgocGVyY2VudCAtIHRpbWVsaW5lW3N0YXJ0X2luZGV4XS54KSAvICh0aW1lbGluZVtlbmRfaW5kZXhdLnggLSB0aW1lbGluZVtzdGFydF9pbmRleF0ueCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgbnVtYmVyX3RvX2NvdW50aW5nKG51bTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAobnVtIDwgMTAwMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVtICsgJyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChudW0gPCAxMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bSAvIDEwMDApICsgJ0snO1xyXG4gICAgICAgIH0gZWxzZSBpZiAobnVtIDwgMTAwMDAwMDAwMCkge1xyXG4gICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW0gLyAxMDAwMDAwKSArICdNJztcclxuICAgICAgICB9IGVsc2UgaWYgKG51bSA8IDEwMDAwMDAwMDAwMDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtIC8gMTAwMDAwMDAwMCkgKyAnQic7XHJcbiAgICAgICAgfSBlbHNlIGlmIChudW0gPCAxMDAwMDAwMDAwMDAwMDAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBNYXRoLmZsb29yKG51bSAvIDEwMDAwMDAwMDAwMDApICsgJ1QnO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW0gLyAxMDAwMDAwMDAwMDAwKSArICdUJztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIG51bWJlcl90b190aW1lKHRpbWU6IG51bWJlcik6IFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXSB7XHJcbiAgICAgICAgY29uc3QgdCA9IE1hdGguZmxvb3IodGltZSAvICg2MCAqIDYwKSk7XHJcbiAgICAgICAgdGltZSA9IHRpbWUgLSB0ICogNjAgKiA2MDtcclxuICAgICAgICBsZXQgaG91ciA9IHQudG9TdHJpbmcoKTtcclxuICAgICAgICBsZXQgbWluID0gTWF0aC5mbG9vcih0aW1lIC8gNjApLnRvU3RyaW5nKCk7XHJcbiAgICAgICAgbGV0IHNlYyA9ICh0aW1lICUgNjApLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgICAgIGlmIChob3VyLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBob3VyID0gJzAnICsgaG91cjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG1pbi5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgICAgbWluID0gJzAnICsgbWluO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoc2VjLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgICBzZWMgPSAnMCcgKyBzZWM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBbaG91ciwgbWluLCBzZWNdO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgc2V0X25vcm1hbF9hbmdsZShhbmdsZTogbnVtYmVyKSB7XHJcbiAgICAgICAgd2hpbGUgKGFuZ2xlID4gMzYwKSB7XHJcbiAgICAgICAgICAgIGFuZ2xlIC09IDM2MDtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKGFuZ2xlIDwgMCkge1xyXG4gICAgICAgICAgICBhbmdsZSArPSAzNjA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBhbmdsZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGNvbXBhcmVfdmVyc2lvbih2MTogc3RyaW5nLCB2Mjogc3RyaW5nKTogbnVtYmVyIHtcclxuICAgICAgICBsZXQgdjFfYXJyID0gdjEuc3BsaXQoJy4nKTtcclxuICAgICAgICBsZXQgdjJfYXJyID0gdjIuc3BsaXQoJy4nKTtcclxuICAgICAgICBjb25zdCBsZW4gPSBNYXRoLm1heCh2MV9hcnIubGVuZ3RoLCB2Ml9hcnIubGVuZ3RoKTtcclxuXHJcbiAgICAgICAgd2hpbGUgKHYxX2Fyci5sZW5ndGggPCBsZW4pIHtcclxuICAgICAgICAgICAgdjFfYXJyLnB1c2goJzAnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgd2hpbGUgKHYyX2Fyci5sZW5ndGggPCBsZW4pIHtcclxuICAgICAgICAgICAgdjJfYXJyLnB1c2goJzAnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBudW0xID0gcGFyc2VJbnQodjFfYXJyW2ldKTtcclxuICAgICAgICAgICAgY29uc3QgbnVtMiA9IHBhcnNlSW50KHYyX2FycltpXSk7XHJcblxyXG4gICAgICAgICAgICBpZiAobnVtMSA+IG51bTIpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAxO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG51bTEgPCBudW0yKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBpc190b2RheShkYXRlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgICAgICBjb25zdCBkMSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgbGV0IGQyO1xyXG4gICAgICAgIGlmIChkYXRlICYmIGRhdGUgIT09ICcnKSB7XHJcbiAgICAgICAgICAgIGQyID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZDIgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBkMi5zZXREYXRlKGQyLmdldERhdGUoKSAtIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZDEuZ2V0RnVsbFllYXIoKSA9PT0gZDIuZ2V0RnVsbFllYXIoKSAmJiBkMS5nZXRNb250aCgpID09PSBkMi5nZXRNb250aCgpICYmIGQxLmdldERhdGUoKSA9PT0gZDIuZ2V0RGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgaXNfc2FmZV9hcmVhKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGNvbnN0IGNiID0gKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAod2lkdGggPT09IDIyODAgJiYgaGVpZ2h0ID09PSAxMDgwKSB8fCAod2lkdGggPT09IDE3OTIgJiYgaGVpZ2h0ID09PSA4MjgpIHx8ICh3aWR0aCA9PT0gMjQzNiAmJiBoZWlnaHQgPT09IDExMjUpIHx8ICh3aWR0aCA9PT0gMjY4OCAmJiBoZWlnaHQgPT09IDEyNDIpO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgc3dpdGNoIChMUVBsYXRmb3JtVXRpbC5nZXRfcGxhdGZvcm0oKSkge1xyXG4gICAgICAgICAgICBjYXNlIExRUGxhdGZvcm1UeXBlLmJhaWR1OlxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3lzX2luZm9fc3dhbiA9IHN3YW4uZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYihzeXNfaW5mb19zd2FuLnBpeGVsUmF0aW8gKiBzeXNfaW5mb19zd2FuLnNjcmVlbldpZHRoLCBzeXNfaW5mb19zd2FuLnBpeGVsUmF0aW8gKiBzeXNfaW5mb19zd2FuLnNjcmVlbkhlaWdodCk7XHJcbiAgICAgICAgICAgIGNhc2UgTFFQbGF0Zm9ybVR5cGUucXE6XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzeXNfaW5mb19xcSA9IHFxLmdldFN5c3RlbUluZm9TeW5jKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2Ioc3lzX2luZm9fcXEucGl4ZWxSYXRpbyAqIHN5c19pbmZvX3FxLnNjcmVlbldpZHRoLCBzeXNfaW5mb19xcS5waXhlbFJhdGlvICogc3lzX2luZm9fcXEuc2NyZWVuSGVpZ2h0KTtcclxuICAgICAgICAgICAgY2FzZSBMUVBsYXRmb3JtVHlwZS50dDpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN5c19pbmZvX3R0ID0gdHQuZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYihzeXNfaW5mb190dC5waXhlbFJhdGlvICogc3lzX2luZm9fdHQuc2NyZWVuV2lkdGgsIHN5c19pbmZvX3R0LnBpeGVsUmF0aW8gKiBzeXNfaW5mb190dC5zY3JlZW5IZWlnaHQpO1xyXG4gICAgICAgICAgICBjYXNlIExRUGxhdGZvcm1UeXBlLm9wcG86XHJcbiAgICAgICAgICAgIGNhc2UgTFFQbGF0Zm9ybVR5cGUudml2bzpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN5c19pbmZvX3Zpdm8gPSBxZy5nZXRTeXN0ZW1JbmZvU3luYygpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNiKHN5c19pbmZvX3Zpdm8ucGl4ZWxSYXRpbyAqIHN5c19pbmZvX3Zpdm8uc2NyZWVuV2lkdGgsIHN5c19pbmZvX3Zpdm8ucGl4ZWxSYXRpbyAqIHN5c19pbmZvX3Zpdm8uc2NyZWVuSGVpZ2h0KTtcclxuICAgICAgICAgICAgY2FzZSBMUVBsYXRmb3JtVHlwZS53eDpcclxuICAgICAgICAgICAgICAgIGNvbnN0IHN5c19pbmZvX3d4ID0gd3guZ2V0U3lzdGVtSW5mb1N5bmMoKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjYihzeXNfaW5mb193eC5waXhlbFJhdGlvICogc3lzX2luZm9fd3guc2NyZWVuV2lkdGgsIHN5c19pbmZvX3d4LnBpeGVsUmF0aW8gKiBzeXNfaW5mb193eC5zY3JlZW5IZWlnaHQpO1xyXG4gICAgICAgICAgICBjYXNlIExRUGxhdGZvcm1UeXBlLmFuZHJvaWQ6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSBMUVBsYXRmb3JtVHlwZS5pb3M6XHJcbiAgICAgICAgICAgICAgICBsZXQgc2l6ZSA9IHZpZXcuZ2V0RnJhbWVTaXplKCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2Ioc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyBkZWVwX2Nsb25lKG9iajogYW55KSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBvYmo7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBuZXdfb2JqID0gKG9iaiBpbnN0YW5jZW9mIEFycmF5ID8gW10gOiB7fSkgYXMgYW55O1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBvYmopIHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgIG5ld19vYmpba2V5XSA9IHRoaXMuZGVlcF9jbG9uZShvYmpba2V5XSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBuZXdfb2JqW2tleV0gPSBvYmpba2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbmV3X29iajtcclxuICAgIH1cclxufSJdfQ== -//------QC-SOURCE-SPLIT------ - - (function() { - var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; - var __module = nodeEnv ? module : {exports:{}}; - var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoTiledMap.js'; - var __require = nodeEnv ? function (request) { - return cc.require(request); - } : function (request) { - return __quick_compile_project__.require(request, __filename); - }; - function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '0b9eetmSUdJRZCQS91TYCw/', 'TmoTiledMap'); -// Script/TmoTiledMap.js - -"use strict"; - -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var TmoTiledLayer = require("./TmoTiledLayer"); -var TmoObjectGroup = require("./TmoObjectGroup"); -cc.Class({ - "extends": cc.TiledMap, - properties: { - objectMaterial: cc.Material, - noColor: true, - singleTexture: true, - _objectTextures: [] - }, - _applyFile: function _applyFile() { - if (!this.objectMaterial) { - cc.error("TiledmapOptimize: 未设置objectMaterial!"); - return; - } - this._super(); - }, - _buildLayerAndGroup: function _buildLayerAndGroup() { - var tilesets = this._tilesets; - var texGrids = this._texGrids; - var animations = this._animations; - texGrids.length = 0; - for (var i = 0, l = tilesets.length; i < l; ++i) { - var tilesetInfo = tilesets[i]; - if (!tilesetInfo) continue; - cc.TiledMap.fillTextureGrids(tilesetInfo, texGrids, i); - } - this._fillAniGrids(texGrids, animations); - var layers = this._layers; - var groups = this._groups; - var images = this._images; - var oldNodeNames = {}; - for (var _i = 0, n = layers.length; _i < n; _i++) { - oldNodeNames[layers[_i].node._name] = true; - } - for (var _i2 = 0, _n = groups.length; _i2 < _n; _i2++) { - oldNodeNames[groups[_i2].node._name] = true; - } - for (var _i3 = 0, _n2 = images.length; _i3 < _n2; _i3++) { - oldNodeNames[images[_i3]._name] = true; - } - layers = this._layers = []; - groups = this._groups = []; - images = this._images = []; - var mapInfo = this._mapInfo; - var node = this.node; - var layerInfos = mapInfo.getAllChildren(); - var textures = this._textures; - var maxWidth = 0; - var maxHeight = 0; - this._objectTextures = []; - var firstTmxLayer = null; - if (layerInfos && layerInfos.length > 0) { - for (var _i4 = 0, len = layerInfos.length; _i4 < len; _i4++) { - var layerInfo = layerInfos[_i4]; - var name = layerInfo.name; - var child = this.node.getChildByName(name); - oldNodeNames[name] = false; - if (!child) { - child = new cc.Node(); - child.name = name; - node.addChild(child); - } - child.setSiblingIndex(_i4); - child.active = layerInfo.visible; - if (layerInfo instanceof cc.TMXLayerInfo) { - // 此处修改 改为创建MyTiledLayer - var layer = child.getComponent(TmoTiledLayer); - if (!layer) { - layer = child.addComponent(TmoTiledLayer); - } - // 修改结束 - // 此处修改 传递firstTmxLayer 记录firstTmxLayer - layer._init(layerInfo, mapInfo, tilesets, textures, texGrids, this, firstTmxLayer); - firstTmxLayer = firstTmxLayer || layer; - // 修改结束 - - // tell the layerinfo to release the ownership of the tiles map. - layerInfo.ownTiles = false; - layers.push(layer); - } else if (layerInfo instanceof cc.TMXObjectGroupInfo) { - var group = child.getComponent(TmoObjectGroup); - if (!group) { - group = child.addComponent(TmoObjectGroup); - } - group._init(layerInfo, mapInfo, texGrids, this); - groups.push(group); - } else if (layerInfo instanceof cc.TMXImageLayerInfo) { - var texture = layerInfo.sourceImage; - child.opacity = layerInfo.opacity; - child.layerInfo = layerInfo; - child._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); - var image = child.getComponent(cc.Sprite); - if (!image) { - image = child.addComponent(cc.Sprite); - } - var spf = image.spriteFrame || new cc.SpriteFrame(); - spf.setTexture(texture); - image.spriteFrame = spf; - child.width = texture.width; - child.height = texture.height; - images.push(child); - } - maxWidth = Math.max(maxWidth, child.width); - maxHeight = Math.max(maxHeight, child.height); - } - } - - // 设置材质的texture属性 - var objectTextures = this._objectTextures; - for (var _i5 = 0; _i5 < objectTextures.length; _i5++) { - var idx = _i5 === 0 ? '' : _i5; - this.objectMaterial.setProperty("texture" + idx, objectTextures[_i5], 0); - } - var children = node.children; - for (var _i6 = 0, _n3 = children.length; _i6 < _n3; _i6++) { - var c = children[_i6]; - if (oldNodeNames[c._name]) { - c.destroy(); - } - } - this.node.width = maxWidth; - this.node.height = maxHeight; - this._syncAnchorPoint(); - }, - getObjectMaterial: function getObjectMaterial() { - return this.objectMaterial; - }, - isNoColor: function isNoColor() { - return this.noColor; - }, - isSingleTexture: function isSingleTexture() { - return this.singleTexture; - }, - getObjectTextures: function getObjectTextures() { - return this._objectTextures; - } -}); - -cc._RF.pop(); - } - if (nodeEnv) { - __define(__module.exports, __require, __module); - } - else { - __quick_compile_project__.registerModuleFunc(__filename, function () { - __define(__module.exports, __require, __module); - }); - } - })(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRNYXAuanMiXSwibmFtZXMiOlsiVG1vVGlsZWRMYXllciIsInJlcXVpcmUiLCJUbW9PYmplY3RHcm91cCIsImNjIiwiQ2xhc3MiLCJUaWxlZE1hcCIsInByb3BlcnRpZXMiLCJvYmplY3RNYXRlcmlhbCIsIk1hdGVyaWFsIiwibm9Db2xvciIsInNpbmdsZVRleHR1cmUiLCJfb2JqZWN0VGV4dHVyZXMiLCJfYXBwbHlGaWxlIiwiZXJyb3IiLCJfc3VwZXIiLCJfYnVpbGRMYXllckFuZEdyb3VwIiwidGlsZXNldHMiLCJfdGlsZXNldHMiLCJ0ZXhHcmlkcyIsIl90ZXhHcmlkcyIsImFuaW1hdGlvbnMiLCJfYW5pbWF0aW9ucyIsImxlbmd0aCIsImkiLCJsIiwidGlsZXNldEluZm8iLCJmaWxsVGV4dHVyZUdyaWRzIiwiX2ZpbGxBbmlHcmlkcyIsImxheWVycyIsIl9sYXllcnMiLCJncm91cHMiLCJfZ3JvdXBzIiwiaW1hZ2VzIiwiX2ltYWdlcyIsIm9sZE5vZGVOYW1lcyIsIm4iLCJub2RlIiwiX25hbWUiLCJtYXBJbmZvIiwiX21hcEluZm8iLCJsYXllckluZm9zIiwiZ2V0QWxsQ2hpbGRyZW4iLCJ0ZXh0dXJlcyIsIl90ZXh0dXJlcyIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwiZmlyc3RUbXhMYXllciIsImxlbiIsImxheWVySW5mbyIsIm5hbWUiLCJjaGlsZCIsImdldENoaWxkQnlOYW1lIiwiTm9kZSIsImFkZENoaWxkIiwic2V0U2libGluZ0luZGV4IiwiYWN0aXZlIiwidmlzaWJsZSIsIlRNWExheWVySW5mbyIsImxheWVyIiwiZ2V0Q29tcG9uZW50IiwiYWRkQ29tcG9uZW50IiwiX2luaXQiLCJvd25UaWxlcyIsInB1c2giLCJUTVhPYmplY3RHcm91cEluZm8iLCJncm91cCIsIlRNWEltYWdlTGF5ZXJJbmZvIiwidGV4dHVyZSIsInNvdXJjZUltYWdlIiwib3BhY2l0eSIsIl9vZmZzZXQiLCJ2MiIsIm9mZnNldCIsIngiLCJ5IiwiaW1hZ2UiLCJTcHJpdGUiLCJzcGYiLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwic2V0VGV4dHVyZSIsIndpZHRoIiwiaGVpZ2h0IiwiTWF0aCIsIm1heCIsIm9iamVjdFRleHR1cmVzIiwiaWR4Iiwic2V0UHJvcGVydHkiLCJjaGlsZHJlbiIsImMiLCJkZXN0cm95IiwiX3N5bmNBbmNob3JQb2ludCIsImdldE9iamVjdE1hdGVyaWFsIiwiaXNOb0NvbG9yIiwiaXNTaW5nbGVUZXh0dXJlIiwiZ2V0T2JqZWN0VGV4dHVyZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsYUFBYSxHQUFHQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFDaEQsSUFBTUMsY0FBYyxHQUFHRCxPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFDbERFLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxRQUFRO0VBQ3BCQyxVQUFVLEVBQUU7SUFDUkMsY0FBYyxFQUFFSixFQUFFLENBQUNLLFFBQVE7SUFDM0JDLE9BQU8sRUFBRSxJQUFJO0lBQ2JDLGFBQWEsRUFBRSxJQUFJO0lBRW5CQyxlQUFlLEVBQUU7RUFDckIsQ0FBQztFQUdEQyxVQUFVLEVBQUUsU0FBQUEsV0FBQSxFQUFZO0lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUNMLGNBQWMsRUFBRTtNQUN0QkosRUFBRSxDQUFDVSxLQUFLLENBQUMsc0NBQXNDLENBQUM7TUFDaEQ7SUFDSjtJQUVBLElBQUksQ0FBQ0MsTUFBTSxFQUFFO0VBQ2pCLENBQUM7RUFFREMsbUJBQW1CLEVBQUUsU0FBQUEsb0JBQUEsRUFBWTtJQUM3QixJQUFJQyxRQUFRLEdBQUcsSUFBSSxDQUFDQyxTQUFTO0lBQzdCLElBQUlDLFFBQVEsR0FBRyxJQUFJLENBQUNDLFNBQVM7SUFDN0IsSUFBSUMsVUFBVSxH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QUFDO0VBRURzRixTQUFTLEVBQUUsU0FBQUEsVUFBQSxFQUFZO0lBQ25CLE9BQU8sSUFBSSxDQUFDcEYsT0FBTztFQUN2QixDQUFDO0VBRURxRixlQUFlLEVBQUUsU0FBQUEsZ0JBQUEsRUFBWTtJQUN6QixPQUFPLElBQUksQ0FBQ3BGLGFBQWE7RUFDN0IsQ0FBQztFQUVEcUYsaUJBQWlCLEVBQUUsU0FBQUEsa0JBQUEsRUFBWTtJQUMzQixPQUFPLElBQUksQ0FBQ3BGLGVBQWU7RUFDL0I7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5jb25zdCBUbW9UaWxlZExheWVyID0gcmVxdWlyZShcIi4vVG1vVGlsZWRMYXllclwiKTtcclxuY29uc3QgVG1vT2JqZWN0R3JvdXAgPSByZXF1aXJlKFwiLi9UbW9PYmplY3RHcm91cFwiKTtcclxuY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuVGlsZWRNYXAsXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgb2JqZWN0TWF0ZXJpYWw6IGNjLk1hdGVyaWFsLFxyXG4gICAgICAgIG5vQ29sb3I6IHRydWUsXHJcbiAgICAgICAgc2luZ2xlVGV4dHVyZTogdHJ1ZSxcclxuXHJcbiAgICAgICAgX29iamVjdFRleHR1cmVzOiBbXSxcclxuICAgIH0sXHJcbiAgICBcclxuXHJcbiAgICBfYXBwbHlGaWxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdE1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIGNjLmVycm9yKFwiVGlsZWRtYXBPcHRpbWl6ZTog5pyq6K6+572ub2JqZWN0TWF0ZXJpYWwhXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zdXBlcigpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfYnVpbGRMYXllckFuZEdyb3VwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHRpbGVzZXRzID0gdGhpcy5fdGlsZXNldHM7XHJcbiAgICAgICAgbGV0IHRleEdyaWRzID0gdGhpcy5fdGV4R3JpZHM7XHJcbiAgICAgICAgbGV0IGFuaW1hdGlvbnMgPSB0aGlzLl9hbmltYXRpb25zO1xyXG4gICAgICAgIHRleEdyaWRzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aWxlc2V0cy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcclxuICAgICAgICAgICAgbGV0IHRpbGVzZXRJbmZvID0gdGlsZXNldHNbaV07XHJcbiAgICAgICAgICAgIGlmICghdGlsZXNldEluZm8pIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjYy5UaWxlZE1hcC5maWxsVGV4dHVyZUdyaWRzKHRpbGVzZXRJbmZvLCB0ZXhHcmlkcywgaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZpbGxBbmlHcmlkcyh0ZXhHcmlkcywgYW5pbWF0aW9ucyk7XHJcblxyXG4gICAgICAgIGxldCBsYXllcnMgPSB0aGlzLl9sYXllcnM7XHJcbiAgICAgICAgbGV0IGdyb3VwcyA9IHRoaXMuX2dyb3VwcztcclxuICAgICAgICBsZXQgaW1hZ2VzID0gdGhpcy5faW1hZ2VzO1xyXG4gICAgICAgIGxldCBvbGROb2RlTmFtZXMgPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IGxheWVycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgb2xkTm9kZU5hbWVzW2xheWVyc1tpXS5ub2RlLl9uYW1lXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gZ3JvdXBzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBvbGROb2RlTmFtZXNbZ3JvdXBzW2ldLm5vZGUuX25hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBpbWFnZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIG9sZE5vZGVOYW1lc1tpbWFnZXNbaV0uX25hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxheWVycyA9IHRoaXMuX2xheWVycyA9IFtdO1xyXG4gICAgICAgIGdyb3VwcyA9IHRoaXMuX2dyb3VwcyA9IFtdO1xyXG4gICAgICAgIGltYWdlcyA9IHRoaXMuX2ltYWdlcyA9IFtdO1xyXG5cclxuICAgICAgICBsZXQgbWFwSW5mbyA9IHRoaXMuX21hcEluZm87XHJcbiAgICAgICAgbGV0IG5vZGUgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IGxheWVySW5mb3MgPSBtYXBJbmZvLmdldEFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgbGV0IHRleHR1cmVzID0gdGhpcy5fdGV4dHVyZXM7XHJcbiAgICAgICAgbGV0IG1heFdpZHRoID0gMDtcclxuICAgICAgICBsZXQgbWF4SGVpZ2h0ID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5fb2JqZWN0VGV4dHVyZXMgPSBbXTtcclxuICAgICAgICBsZXQgZmlyc3RUbXhMYXllciA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmIChsYXllckluZm9zICYmIGxheWVySW5mb3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGF5ZXJJbmZvcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGxheWVySW5mbyA9IGxheWVySW5mb3NbaV07XHJcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGxheWVySW5mby5uYW1lO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBjaGlsZCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShuYW1lKTtcclxuICAgICAgICAgICAgICAgIG9sZE5vZGVOYW1lc1tuYW1lXSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghY2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2hpbGQuc2V0U2libGluZ0luZGV4KGkpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGQuYWN0aXZlID0gbGF5ZXJJbmZvLnZpc2libGU7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGxheWVySW5mbyBpbnN0YW5jZW9mIGNjLlRNWExheWVySW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDmlLnkuLrliJvlu7pNeVRpbGVkTGF5ZXJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGF5ZXIgPSBjaGlsZC5nZXRDb21wb25lbnQoVG1vVGlsZWRMYXllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXllciA9IGNoaWxkLmFkZENvbXBvbmVudChUbW9UaWxlZExheWVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOS8oOmAkmZpcnN0VG14TGF5ZXIg6K6w5b2VZmlyc3RUbXhMYXllclxyXG4gICAgICAgICAgICAgICAgICAgIGxheWVyLl9pbml0KGxheWVySW5mbywgbWFwSW5mbywgdGlsZXNldHMsIHRleHR1cmVzLCB0ZXhHcmlkcywgdGhpcywgZmlyc3RUbXhMYXllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RUbXhMYXllciA9IGZpcnN0VG14TGF5ZXIgfHwgbGF5ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRlbGwgdGhlIGxheWVyaW5mbyB0byByZWxlYXNlIHRoZSBvd25lcnNoaXAgb2YgdGhlIHRpbGVzIG1hcC5cclxuICAgICAgICAgICAgICAgICAgICBsYXllckluZm8ub3duVGlsZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBsYXllcnMucHVzaChsYXllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChsYXllckluZm8gaW5zdGFuY2VvZiBjYy5UTVhPYmplY3RHcm91cEluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgPSBjaGlsZC5nZXRDb21wb25lbnQoVG1vT2JqZWN0R3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBjaGlsZC5hZGRDb21wb25lbnQoVG1vT2JqZWN0R3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuX2luaXQobGF5ZXJJbmZvLCBtYXBJbmZvLCB0ZXhHcmlkcywgdGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJJbmZvIGluc3RhbmNlb2YgY2MuVE1YSW1hZ2VMYXllckluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dHVyZSA9IGxheWVySW5mby5zb3VyY2VJbWFnZTtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5vcGFjaXR5ID0gbGF5ZXJJbmZvLm9wYWNpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5ZXJJbmZvID0gbGF5ZXJJbmZvO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLl9vZmZzZXQgPSBjYy52MihsYXllckluZm8ub2Zmc2V0LngsIC1sYXllckluZm8ub2Zmc2V0LnkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW1hZ2UgPSBjaGlsZC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWltYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlID0gY2hpbGQuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3BmID0gaW1hZ2Uuc3ByaXRlRnJhbWUgfHwgbmV3IGNjLlNwcml0ZUZyYW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldFRleHR1cmUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3ByaXRlRnJhbWUgPSBzcGY7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLndpZHRoID0gdGV4dHVyZS53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5oZWlnaHQgPSB0ZXh0dXJlLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgY2hpbGQud2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gTWF0aC5tYXgobWF4SGVpZ2h0LCBjaGlsZC5oZWlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDorr7nva7mnZDotKjnmoR0ZXh0dXJl5bGe5oCnXHJcbiAgICAgICAgbGV0IG9iamVjdFRleHR1cmVzID0gdGhpcy5fb2JqZWN0VGV4dHVyZXM7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3RUZXh0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaWR4ID0gaSA9PT0gMCA/ICcnIDogaTtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RNYXRlcmlhbC5zZXRQcm9wZXJ0eShgdGV4dHVyZSR7aWR4fWAsIG9iamVjdFRleHR1cmVzW2ldLCAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGMgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgaWYgKG9sZE5vZGVOYW1lc1tjLl9uYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgYy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS53aWR0aCA9IG1heFdpZHRoO1xyXG4gICAgICAgIHRoaXMubm9kZS5oZWlnaHQgPSBtYXhIZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5fc3luY0FuY2hvclBvaW50KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE9iamVjdE1hdGVyaWFsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0TWF0ZXJpYWw7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzTm9Db2xvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5vQ29sb3I7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzU2luZ2xlVGV4dHVyZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpbmdsZVRleHR1cmU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE9iamVjdFRleHR1cmVzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdFRleHR1cmVzO1xyXG4gICAgfVxyXG59KTsiXX0= //------QC-SOURCE-SPLIT------ (function() { @@ -17095,622 +14372,622 @@ cc._RF.pop(); cc._RF.push(module, 'd5421HgLShFKIjj5f18m1mi', 'List'); // Script/module/RankList/List.ts -"use strict"; -// Learn TypeScript: -// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html -var __extends = (this && this.__extends) || (function () { - var extendStatics = function (d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; - return extendStatics(d, b); - }; - return function (d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; -})(); -var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.StartAxisType = exports.ListType = void 0; -var ItemRender_1 = require("./ItemRender"); -var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; -/**列表排列方式 */ -var ListType; -(function (ListType) { - /**水平排列 */ - ListType[ListType["Horizontal"] = 1] = "Horizontal"; - /**垂直排列 */ - ListType[ListType["Vertical"] = 2] = "Vertical"; - /**网格排列 */ - ListType[ListType["Grid"] = 3] = "Grid"; -})(ListType = exports.ListType || (exports.ListType = {})); -/**网格布局中的方向 */ -var StartAxisType; -(function (StartAxisType) { - /**水平排列 */ - StartAxisType[StartAxisType["Horizontal"] = 1] = "Horizontal"; - /**垂直排列 */ - StartAxisType[StartAxisType["Vertical"] = 2] = "Vertical"; -})(StartAxisType = exports.StartAxisType || (exports.StartAxisType = {})); -/** - * 列表 - * 根据cocos_example的listView改动而来 - * @author chenkai 2020.7.8 - * @example - * 1.创建cocos的ScrollView组件,添加List,设置List属性即可 - * - */ -var List = /** @class */ (function (_super) { - __extends(List, _super); - function List() { - var _this = _super !== null && _super.apply(this, arguments) || this; - //==================== 属性面板 ========================= - /**列表选项 */ - _this.itemRender = null; - /**排列方式 */ - _this.type = ListType.Vertical; - /**网格布局中的方向 */ - _this.startAxis = StartAxisType.Horizontal; - /**列表项之间X间隔 */ - _this.spaceX = 0; - /**列表项之间Y间隔 */ - _this.spaceY = 0; - /**上间距 */ - _this.padding_top = 0; - /**下间距 */ - _this.padding_buttom = 0; - /**左间距 */ - _this.padding_left = 0; - _this._padding = 0; - /**右间距 */ - _this.padding_right = 0; - //====================== 滚动容器 =============================== - /**列表滚动容器 */ - _this.scrollView = null; - /**scrollView的内容容器 */ - _this.content = null; - //======================== 列表项 =========================== - /**列表项数据 */ - _this.itemDataList = []; - /**应创建的实例数量 */ - _this.spawnCount = 0; - /**存放列表项实例的数组 */ - _this.itemList = []; - /**item的高度 */ - _this.itemHeight = 0; - /**item的宽度 */ - _this.itemWidth = 0; - /**存放不再使用中的列表项 */ - _this.itemPool = []; - //======================= 计算参数 ========================== - /**距离scrollView中心点的距离,超过这个距离的item会被重置,一般设置为 scrollVIew.height/2 + item.heigt/2 + space,因为这个距离item正好超出scrollView显示范围 */ - _this.halfScrollView = 0; - /**上一次content的X值,用于和现在content的X值比较,得出是向左还是向右滚动 */ - _this.lastContentPosX = 0; - /**上一次content的Y值,用于和现在content的Y值比较,得出是向上还是向下滚动 */ - _this.lastContentPosY = 0; - /**网格行数 */ - _this.gridRow = 0; - /**网格列数 */ - _this.gridCol = 0; - /**刷新时间,单位s */ - _this.updateTimer = 0; - /**刷新间隔,单位s */ - _this.updateInterval = 0.1; - /**是否滚动容器 */ - _this.bScrolling = false; - /**刷新的函数 */ - _this.updateFun = function () { }; - return _this; - } - List.prototype.onLoad = function () { - this.itemHeight = this.itemRender.height; - this.itemWidth = this.itemRender.width; - this.scrollView = this.node.getComponent(cc.ScrollView); - this.content = this.scrollView.content; - this.content.anchorX = 0; - this.content.anchorY = 1; - this.content.removeAllChildren(); - this.scrollView.node.on("scrolling", this.onScrolling, this); - }; - /** - * 列表数据 (列表数据复制使用,如果列表数据改变,则需要重新设置一遍数据) - * @param itemDataList item数据列表 - */ - List.prototype.setData = function (itemDataList) { - this.itemDataList = itemDataList.slice(); - this.updateContent(); - }; - /**计算列表的各项参数 */ - List.prototype.countListParam = function () { - var dataLen = this.itemDataList.length; - if (this.type == ListType.Vertical) { - this.scrollView.horizontal = false; - this.scrollView.vertical = true; - this.content.width = this.content.parent.width; - this.content.height = dataLen * this.itemHeight + (dataLen - 1) * this.spaceY + this.padding_top + this.padding_buttom; - this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) + 2; //计算创建的item实例数量,比当前scrollView容器能放下的item数量再加上2个 - this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; //计算bufferZone,item的显示范围 - this.updateFun = this.updateV; - } - else if (this.type == ListType.Horizontal) { - this.scrollView.horizontal = true; - this.scrollView.vertical = false; - this.content.width = dataLen * this.itemWidth + (dataLen - 1) * this.spaceX + this.padding_left + this.padding_right; - this.content.height = this.content.parent.height; - this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) + 2; - this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; - this.updateFun = this.udpateH; - } - else if (this.type == ListType.Grid) { - if (this.startAxis == StartAxisType.Vertical) { - this.scrollView.horizontal = false; - this.scrollView.vertical = true; - this.content.width = this.content.parent.width; - //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 - if (this.padding_left + this.padding_right + this.itemWidth + this.spaceX > this.content.width) { - this.padding_left = 0; - this.padding_right = 0; - console.error("padding_left或padding_right过大"); - } - this.gridCol = Math.floor((this.content.width - this.padding_left - this.padding_right) / (this.itemWidth + this.spaceX)); - this.gridRow = Math.ceil(dataLen / this.gridCol); - this.content.height = this.gridRow * this.itemHeight + (this.gridRow - 1) * this.spaceY + this.padding_top + this.padding_buttom; - this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) * this.gridCol + this.gridCol * 2; - this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; - this.updateFun = this.updateGrid_V; - } - else if (this.startAxis == StartAxisType.Horizontal) { - this.scrollView.horizontal = true; - this.scrollView.vertical = false; - //计算高间隔 - this.content.height = this.content.parent.height; - //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 - if (this.padding_top + this.padding_buttom + this.itemHeight + this.spaceY > this.content.height) { - this.padding_top = 0; - this.padding_buttom = 0; - console.error("padding_top或padding_buttom过大"); - } - this.gridRow = Math.floor((this.content.height - this.padding_top - this.padding_buttom) / (this.itemHeight + this.spaceY)); - this.gridCol = Math.ceil(dataLen / this.gridRow); - this.content.width = this.gridCol * this.itemWidth + (this.gridCol - 1) * this.spaceX + this.padding_left + this.padding_right; - this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) * this.gridRow + this.gridRow * 2; - this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; - this.updateFun = this.updateGrid_H; - } - } - }; - /** - * 创建列表 - * @param startIndex 起始显示的数据索引 0表示第一项 - * @param offset scrollView偏移量 - */ - List.prototype.createList = function (startIndex, offset) { - //当需要显示的数据长度 > 虚拟列表长度, 删除最末尾几个数据时,列表需要重置位置到scrollView最底端 - if (this.itemDataList.length > this.spawnCount && (startIndex + this.spawnCount - 1) >= this.itemDataList.length) { - startIndex = this.itemDataList.length - this.spawnCount; - offset = this.scrollView.getMaxScrollOffset(); - //当需要显示的数据长度 <= 虚拟列表长度, 隐藏多余的虚拟列表项 - } - else if (this.itemDataList.length <= this.spawnCount) { - startIndex = 0; - } - for (var i = 0; i < this.spawnCount; i++) { - var item = void 0; - //需要显示的数据索引在数据范围内,则item实例显示出来 - if (i + startIndex < this.itemDataList.length) { - if (this.itemList[i] == null) { - item = this.getItem(); - this.itemList.push(item); - item.parent = this.content; - } - else { - item = this.itemList[i]; - } - //需要显示的数据索引超过了数据范围,则item实例隐藏起来 - } - else { - //item实例数量 > 需要显示的数据量 - if (this.itemList.length > (this.itemDataList.length - startIndex)) { - item = this.itemList.pop(); - item.removeFromParent(); - this.itemPool.push(item); - } - continue; - } - var itemRender = item.getComponent(ItemRender_1.default); - itemRender.itemIndex = i + startIndex; - itemRender.data = this.itemDataList[i + startIndex]; - itemRender.dataChanged(); - if (this.type == ListType.Vertical) { - //因为content的锚点X是0,所以item的x值是content.with/2表示居中,锚点Y是1,所以item的y值从content顶部向下是0到负无穷。所以item.y= -item.height/2时,是在content的顶部。 - item.setPosition(this.content.width / 2, -item.height * (0.5 + i + startIndex) - this.spaceY * (i + startIndex) - this.padding_top); - } - else if (this.type == ListType.Horizontal) { - item.setPosition(item.width * (0.5 + i + startIndex) + this.spaceX * (i + startIndex) + this.padding_left, -this.content.height / 2); - } - else if (this.type == ListType.Grid) { - if (this.startAxis == StartAxisType.Vertical) { - var row = Math.floor((i + startIndex) / this.gridCol); - var col = (i + startIndex) % this.gridCol; - item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); - item.opacity = 255; - } - else if (this.startAxis == StartAxisType.Horizontal) { - var row = (i + startIndex) % this.gridRow; - var col = Math.floor((i + startIndex) / this.gridRow); - item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); - item.opacity = 255; - } - } - } - this.scrollView.scrollToOffset(offset); - }; - /**获取一个列表项 */ - List.prototype.getItem = function () { - if (this.itemPool.length == 0) { - return cc.instantiate(this.itemRender); - } - else { - return this.itemPool.pop(); - } - }; - List.prototype.update = function (dt) { - if (this.bScrolling == false) { - return; - } - this.updateTimer += dt; - if (this.updateTimer < this.updateInterval) { - return; - } - this.updateTimer = 0; - this.bScrolling = false; - this.updateFun(); - }; - List.prototype.onScrolling = function () { - this.bScrolling = true; - }; - /**垂直排列 */ - List.prototype.updateV = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isUp = this.scrollView.content.y > this.lastContentPosY; - var offset = (this.itemHeight + this.spaceY) * items.length; - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isUp) { - //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 - if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.y = item.y - offset; - } - } - else { - //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 - if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.y = item.y + offset; - } - } - } - this.lastContentPosY = this.scrollView.content.y; - }; - /**水平排列 */ - List.prototype.udpateH = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isRight = this.scrollView.content.x > this.lastContentPosX; - var offset = (this.itemWidth + this.spaceX) * items.length; - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isRight) { - //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 - if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.x = item.x - offset; - } - } - else { - //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 - if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + items.length; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.x = item.x + offset; - } - } - } - this.lastContentPosX = this.scrollView.content.x; - }; - /**网格垂直排列 */ - List.prototype.updateGrid_V = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isUp = this.scrollView.content.y > this.lastContentPosY; - var offset = (this.itemHeight + this.spaceY) * (this.spawnCount / this.gridCol); - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isUp) { - //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 - if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridCol) * this.gridCol; - if (this.itemDataList[itemIndex] != null) { - item.y = item.y - offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.y = item.y - offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - else { //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 - if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridCol) * this.gridCol; - if (this.itemDataList[itemIndex] != null) { - item.y = item.y + offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.y = item.y + offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - } - this.lastContentPosY = this.scrollView.content.y; - }; - /**网格水平排列 */ - List.prototype.updateGrid_H = function () { - var items = this.itemList; - var item; - var bufferZone = this.halfScrollView; - var isRight = this.scrollView.content.x > this.lastContentPosX; - var offset = (this.itemWidth + this.spaceX) * (this.spawnCount / this.gridRow); - for (var i = 0; i < items.length; i++) { - item = items[i]; - var viewPos = this.getPositionInView(item); - if (isRight) { - //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 - if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridRow) * this.gridRow; - if (this.itemDataList[itemIndex] != null) { - item.x = item.x - offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.x = item.x - offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - else { - //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 - if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { - var itemRender = item.getComponent(ItemRender_1.default); - var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridRow) * this.gridRow; - if (this.itemDataList[itemIndex] != null) { - item.x = item.x + offset; - itemRender.itemIndex = itemIndex; - itemRender.data = this.itemDataList[itemIndex]; - itemRender.dataChanged(); - item.opacity = 255; - } - else { - item.x = item.x + offset; - itemRender.itemIndex = itemIndex; - item.opacity = 0; - } - } - } - } - this.lastContentPosX = this.scrollView.content.x; - }; - /**获取item在scrollView的局部坐标 */ - List.prototype.getPositionInView = function (item) { - var worldPos = item.parent.convertToWorldSpaceAR(item.position); - var viewPos = this.scrollView.node.convertToNodeSpaceAR(worldPos); - return viewPos; - }; - /**获取列表数据 */ - List.prototype.getListData = function () { - return this.itemDataList; - }; - /** - * 增加一项数据到列表的末尾 - * @param data 数据 - */ - List.prototype.addItem = function (data) { - this.itemDataList.push(data); - this.updateContent(); - }; - /** - * 增加一项数据到列表指定位置 - * @param index 位置,0表示第1项 - * @param data 数据 - */ - List.prototype.addItemAt = function (index, data) { - if (this.itemDataList[index] != null || this.itemDataList.length == index) { - this.itemDataList.splice(index, 1, data); - this.updateContent(); - } - }; - /** - * 删除一项数据 - * @param index 删除项的位置 ,0表示第1项 - */ - List.prototype.deleteItem = function (index) { - if (this.itemDataList[index] != null) { - this.itemDataList.splice(index, 1); - this.updateContent(); - } - }; - /** - * 改变一项数据 - * @param index 位置,0表示第1项 - * @param data 替换的数据 - */ - List.prototype.changeItem = function (index, data) { - if (this.itemDataList[index] != null) { - this.itemDataList[index] = data; - this.updateContent(); - } - }; - /**获取第一个Item的位置 */ - List.prototype.updateContent = function () { - //显示列表实例为0个 - if (this.itemList.length == 0) { - this.countListParam(); - this.createList(0, new cc.Vec2(0, 0)); - //显示列表的实例不为0个,则需要重新排列item实例数组 - } - else { - if (this.type == ListType.Vertical) { - this.itemList.sort(function (a, b) { - return b.y - a.y; - }); - } - else if (this.type == ListType.Horizontal) { - this.itemList.sort(function (a, b) { - return a.x - b.x; - }); - } - else if (this.type == ListType.Grid) { - if (this.startAxis == StartAxisType.Vertical) { - this.itemList.sort(function (a, b) { - return a.x - b.x; - }); - this.itemList.sort(function (a, b) { - return b.y - a.y; - }); - } - else if (this.startAxis == StartAxisType.Horizontal) { - this.itemList.sort(function (a, b) { - return b.y - a.y; - }); - this.itemList.sort(function (a, b) { - return a.x - b.x; - }); - } - } - this.countListParam(); - //获取第一个item实例需要显示的数据索引 - var startIndex = this.itemList[0].getComponent(ItemRender_1.default).itemIndex; - if (this.type == ListType.Grid && this.startAxis == StartAxisType.Vertical) { - startIndex += (startIndex + this.spawnCount) % this.gridCol; - } - else if (this.type == ListType.Grid && this.startAxis == StartAxisType.Horizontal) { - startIndex += (startIndex + this.spawnCount) % this.gridRow; - } - //getScrollOffset()和scrollToOffset()的x值是相反的 - var offset = this.scrollView.getScrollOffset(); - offset.x = -offset.x; - this.createList(startIndex, offset); - } - }; - /**销毁 */ - List.prototype.onDestroy = function () { - //清理列表项 - var len = this.itemList.length; - for (var i = 0; i < len; i++) { - if (cc.isValid(this.itemList[i], true)) { - this.itemList[i].destroy(); - } - } - this.itemList.length = 0; - //清理对象池 - len = this.itemPool.length; - for (var i = 0; i < len; i++) { - if (cc.isValid(this.itemPool[i], true)) { - this.itemPool[i].destroy(); - } - } - this.itemPool.length = 0; - //清理列表数据 - this.itemDataList.length = 0; - }; - __decorate([ - property({ type: cc.Node, tooltip: "列表项" }) - ], List.prototype, "itemRender", void 0); - __decorate([ - property({ type: cc.Enum(ListType), tooltip: "排列方式" }) - ], List.prototype, "type", void 0); - __decorate([ - property({ type: cc.Enum(StartAxisType), tooltip: "网格布局中的方向", visible: function () { return this.type == ListType.Grid; } }) - ], List.prototype, "startAxis", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "列表项X间隔", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) - ], List.prototype, "spaceX", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "列表项Y间隔", visible: function () { return this.type == ListType.Vertical || this.type == ListType.Grid; } }) - ], List.prototype, "spaceY", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "上间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) - ], List.prototype, "padding_top", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "下间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) - ], List.prototype, "padding_buttom", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "左间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) - ], List.prototype, "padding_left", void 0); - __decorate([ - property(cc.Integer) - ], List.prototype, "_padding", void 0); - __decorate([ - property({ type: cc.Integer, tooltip: "右间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) - ], List.prototype, "padding_right", void 0); - List = __decorate([ - ccclass - ], List); - return List; -}(cc.Component)); -exports.default = List; +"use strict"; +// Learn TypeScript: +// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.StartAxisType = exports.ListType = void 0; +var ItemRender_1 = require("./ItemRender"); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +/**列表排列方式 */ +var ListType; +(function (ListType) { + /**水平排列 */ + ListType[ListType["Horizontal"] = 1] = "Horizontal"; + /**垂直排列 */ + ListType[ListType["Vertical"] = 2] = "Vertical"; + /**网格排列 */ + ListType[ListType["Grid"] = 3] = "Grid"; +})(ListType = exports.ListType || (exports.ListType = {})); +/**网格布局中的方向 */ +var StartAxisType; +(function (StartAxisType) { + /**水平排列 */ + StartAxisType[StartAxisType["Horizontal"] = 1] = "Horizontal"; + /**垂直排列 */ + StartAxisType[StartAxisType["Vertical"] = 2] = "Vertical"; +})(StartAxisType = exports.StartAxisType || (exports.StartAxisType = {})); +/** + * 列表 + * 根据cocos_example的listView改动而来 + * @author chenkai 2020.7.8 + * @example + * 1.创建cocos的ScrollView组件,添加List,设置List属性即可 + * + */ +var List = /** @class */ (function (_super) { + __extends(List, _super); + function List() { + var _this = _super !== null && _super.apply(this, arguments) || this; + //==================== 属性面板 ========================= + /**列表选项 */ + _this.itemRender = null; + /**排列方式 */ + _this.type = ListType.Vertical; + /**网格布局中的方向 */ + _this.startAxis = StartAxisType.Horizontal; + /**列表项之间X间隔 */ + _this.spaceX = 0; + /**列表项之间Y间隔 */ + _this.spaceY = 0; + /**上间距 */ + _this.padding_top = 0; + /**下间距 */ + _this.padding_buttom = 0; + /**左间距 */ + _this.padding_left = 0; + _this._padding = 0; + /**右间距 */ + _this.padding_right = 0; + //====================== 滚动容器 =============================== + /**列表滚动容器 */ + _this.scrollView = null; + /**scrollView的内容容器 */ + _this.content = null; + //======================== 列表项 =========================== + /**列表项数据 */ + _this.itemDataList = []; + /**应创建的实例数量 */ + _this.spawnCount = 0; + /**存放列表项实例的数组 */ + _this.itemList = []; + /**item的高度 */ + _this.itemHeight = 0; + /**item的宽度 */ + _this.itemWidth = 0; + /**存放不再使用中的列表项 */ + _this.itemPool = []; + //======================= 计算参数 ========================== + /**距离scrollView中心点的距离,超过这个距离的item会被重置,一般设置为 scrollVIew.height/2 + item.heigt/2 + space,因为这个距离item正好超出scrollView显示范围 */ + _this.halfScrollView = 0; + /**上一次content的X值,用于和现在content的X值比较,得出是向左还是向右滚动 */ + _this.lastContentPosX = 0; + /**上一次content的Y值,用于和现在content的Y值比较,得出是向上还是向下滚动 */ + _this.lastContentPosY = 0; + /**网格行数 */ + _this.gridRow = 0; + /**网格列数 */ + _this.gridCol = 0; + /**刷新时间,单位s */ + _this.updateTimer = 0; + /**刷新间隔,单位s */ + _this.updateInterval = 0.1; + /**是否滚动容器 */ + _this.bScrolling = false; + /**刷新的函数 */ + _this.updateFun = function () { }; + return _this; + } + List.prototype.onLoad = function () { + this.itemHeight = this.itemRender.height; + this.itemWidth = this.itemRender.width; + this.scrollView = this.node.getComponent(cc.ScrollView); + this.content = this.scrollView.content; + this.content.anchorX = 0; + this.content.anchorY = 1; + this.content.removeAllChildren(); + this.scrollView.node.on("scrolling", this.onScrolling, this); + }; + /** + * 列表数据 (列表数据复制使用,如果列表数据改变,则需要重新设置一遍数据) + * @param itemDataList item数据列表 + */ + List.prototype.setData = function (itemDataList) { + this.itemDataList = itemDataList.slice(); + this.updateContent(); + }; + /**计算列表的各项参数 */ + List.prototype.countListParam = function () { + var dataLen = this.itemDataList.length; + if (this.type == ListType.Vertical) { + this.scrollView.horizontal = false; + this.scrollView.vertical = true; + this.content.width = this.content.parent.width; + this.content.height = dataLen * this.itemHeight + (dataLen - 1) * this.spaceY + this.padding_top + this.padding_buttom; + this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) + 2; //计算创建的item实例数量,比当前scrollView容器能放下的item数量再加上2个 + this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; //计算bufferZone,item的显示范围 + this.updateFun = this.updateV; + } + else if (this.type == ListType.Horizontal) { + this.scrollView.horizontal = true; + this.scrollView.vertical = false; + this.content.width = dataLen * this.itemWidth + (dataLen - 1) * this.spaceX + this.padding_left + this.padding_right; + this.content.height = this.content.parent.height; + this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) + 2; + this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; + this.updateFun = this.udpateH; + } + else if (this.type == ListType.Grid) { + if (this.startAxis == StartAxisType.Vertical) { + this.scrollView.horizontal = false; + this.scrollView.vertical = true; + this.content.width = this.content.parent.width; + //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 + if (this.padding_left + this.padding_right + this.itemWidth + this.spaceX > this.content.width) { + this.padding_left = 0; + this.padding_right = 0; + console.error("padding_left或padding_right过大"); + } + this.gridCol = Math.floor((this.content.width - this.padding_left - this.padding_right) / (this.itemWidth + this.spaceX)); + this.gridRow = Math.ceil(dataLen / this.gridCol); + this.content.height = this.gridRow * this.itemHeight + (this.gridRow - 1) * this.spaceY + this.padding_top + this.padding_buttom; + this.spawnCount = Math.round(this.scrollView.node.height / (this.itemHeight + this.spaceY)) * this.gridCol + this.gridCol * 2; + this.halfScrollView = this.scrollView.node.height / 2 + this.itemHeight / 2 + this.spaceY; + this.updateFun = this.updateGrid_V; + } + else if (this.startAxis == StartAxisType.Horizontal) { + this.scrollView.horizontal = true; + this.scrollView.vertical = false; + //计算高间隔 + this.content.height = this.content.parent.height; + //如果left和right间隔过大,导致放不下一个item,则left和right都设置为0,相当于不生效 + if (this.padding_top + this.padding_buttom + this.itemHeight + this.spaceY > this.content.height) { + this.padding_top = 0; + this.padding_buttom = 0; + console.error("padding_top或padding_buttom过大"); + } + this.gridRow = Math.floor((this.content.height - this.padding_top - this.padding_buttom) / (this.itemHeight + this.spaceY)); + this.gridCol = Math.ceil(dataLen / this.gridRow); + this.content.width = this.gridCol * this.itemWidth + (this.gridCol - 1) * this.spaceX + this.padding_left + this.padding_right; + this.spawnCount = Math.round(this.scrollView.node.width / (this.itemWidth + this.spaceX)) * this.gridRow + this.gridRow * 2; + this.halfScrollView = this.scrollView.node.width / 2 + this.itemWidth / 2 + this.spaceX; + this.updateFun = this.updateGrid_H; + } + } + }; + /** + * 创建列表 + * @param startIndex 起始显示的数据索引 0表示第一项 + * @param offset scrollView偏移量 + */ + List.prototype.createList = function (startIndex, offset) { + //当需要显示的数据长度 > 虚拟列表长度, 删除最末尾几个数据时,列表需要重置位置到scrollView最底端 + if (this.itemDataList.length > this.spawnCount && (startIndex + this.spawnCount - 1) >= this.itemDataList.length) { + startIndex = this.itemDataList.length - this.spawnCount; + offset = this.scrollView.getMaxScrollOffset(); + //当需要显示的数据长度 <= 虚拟列表长度, 隐藏多余的虚拟列表项 + } + else if (this.itemDataList.length <= this.spawnCount) { + startIndex = 0; + } + for (var i = 0; i < this.spawnCount; i++) { + var item = void 0; + //需要显示的数据索引在数据范围内,则item实例显示出来 + if (i + startIndex < this.itemDataList.length) { + if (this.itemList[i] == null) { + item = this.getItem(); + this.itemList.push(item); + item.parent = this.content; + } + else { + item = this.itemList[i]; + } + //需要显示的数据索引超过了数据范围,则item实例隐藏起来 + } + else { + //item实例数量 > 需要显示的数据量 + if (this.itemList.length > (this.itemDataList.length - startIndex)) { + item = this.itemList.pop(); + item.removeFromParent(); + this.itemPool.push(item); + } + continue; + } + var itemRender = item.getComponent(ItemRender_1.default); + itemRender.itemIndex = i + startIndex; + itemRender.data = this.itemDataList[i + startIndex]; + itemRender.dataChanged(); + if (this.type == ListType.Vertical) { + //因为content的锚点X是0,所以item的x值是content.with/2表示居中,锚点Y是1,所以item的y值从content顶部向下是0到负无穷。所以item.y= -item.height/2时,是在content的顶部。 + item.setPosition(this.content.width / 2, -item.height * (0.5 + i + startIndex) - this.spaceY * (i + startIndex) - this.padding_top); + } + else if (this.type == ListType.Horizontal) { + item.setPosition(item.width * (0.5 + i + startIndex) + this.spaceX * (i + startIndex) + this.padding_left, -this.content.height / 2); + } + else if (this.type == ListType.Grid) { + if (this.startAxis == StartAxisType.Vertical) { + var row = Math.floor((i + startIndex) / this.gridCol); + var col = (i + startIndex) % this.gridCol; + item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); + item.opacity = 255; + } + else if (this.startAxis == StartAxisType.Horizontal) { + var row = (i + startIndex) % this.gridRow; + var col = Math.floor((i + startIndex) / this.gridRow); + item.setPosition(item.width * (0.5 + col) + this.spaceX * col + this.padding_left, -item.height * (0.5 + row) - this.spaceY * row - this.padding_top); + item.opacity = 255; + } + } + } + this.scrollView.scrollToOffset(offset); + }; + /**获取一个列表项 */ + List.prototype.getItem = function () { + if (this.itemPool.length == 0) { + return cc.instantiate(this.itemRender); + } + else { + return this.itemPool.pop(); + } + }; + List.prototype.update = function (dt) { + if (this.bScrolling == false) { + return; + } + this.updateTimer += dt; + if (this.updateTimer < this.updateInterval) { + return; + } + this.updateTimer = 0; + this.bScrolling = false; + this.updateFun(); + }; + List.prototype.onScrolling = function () { + this.bScrolling = true; + }; + /**垂直排列 */ + List.prototype.updateV = function () { + var items = this.itemList; + var item; + var bufferZone = this.halfScrollView; + var isUp = this.scrollView.content.y > this.lastContentPosY; + var offset = (this.itemHeight + this.spaceY) * items.length; + for (var i = 0; i < items.length; i++) { + item = items[i]; + var viewPos = this.getPositionInView(item); + if (isUp) { + //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 + if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex + items.length; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.y = item.y - offset; + } + } + else { + //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 + if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex - items.length; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.y = item.y + offset; + } + } + } + this.lastContentPosY = this.scrollView.content.y; + }; + /**水平排列 */ + List.prototype.udpateH = function () { + var items = this.itemList; + var item; + var bufferZone = this.halfScrollView; + var isRight = this.scrollView.content.x > this.lastContentPosX; + var offset = (this.itemWidth + this.spaceX) * items.length; + for (var i = 0; i < items.length; i++) { + item = items[i]; + var viewPos = this.getPositionInView(item); + if (isRight) { + //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 + if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex - items.length; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.x = item.x - offset; + } + } + else { + //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 + if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex + items.length; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.x = item.x + offset; + } + } + } + this.lastContentPosX = this.scrollView.content.x; + }; + /**网格垂直排列 */ + List.prototype.updateGrid_V = function () { + var items = this.itemList; + var item; + var bufferZone = this.halfScrollView; + var isUp = this.scrollView.content.y > this.lastContentPosY; + var offset = (this.itemHeight + this.spaceY) * (this.spawnCount / this.gridCol); + for (var i = 0; i < items.length; i++) { + item = items[i]; + var viewPos = this.getPositionInView(item); + if (isUp) { + //item上滑时,超出了scrollView上边界,将item移动到下方复用,item移动到下方的位置必须不超过content的下边界 + if (viewPos.y > bufferZone && item.y - offset - this.padding_buttom > -this.content.height) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridCol) * this.gridCol; + if (this.itemDataList[itemIndex] != null) { + item.y = item.y - offset; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.opacity = 255; + } + else { + item.y = item.y - offset; + itemRender.itemIndex = itemIndex; + item.opacity = 0; + } + } + } + else { //item下滑时,超出了scrollView下边界,将item移动到上方复用,item移动到上方的位置必须不超过content的上边界 + if (viewPos.y < -bufferZone && item.y + offset + this.padding_top < 0) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridCol) * this.gridCol; + if (this.itemDataList[itemIndex] != null) { + item.y = item.y + offset; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.opacity = 255; + } + else { + item.y = item.y + offset; + itemRender.itemIndex = itemIndex; + item.opacity = 0; + } + } + } + } + this.lastContentPosY = this.scrollView.content.y; + }; + /**网格水平排列 */ + List.prototype.updateGrid_H = function () { + var items = this.itemList; + var item; + var bufferZone = this.halfScrollView; + var isRight = this.scrollView.content.x > this.lastContentPosX; + var offset = (this.itemWidth + this.spaceX) * (this.spawnCount / this.gridRow); + for (var i = 0; i < items.length; i++) { + item = items[i]; + var viewPos = this.getPositionInView(item); + if (isRight) { + //item右滑时,超出了scrollView右边界,将item移动到左方复用,item移动到左方的位置必须不超过content的左边界 + if (viewPos.x > bufferZone && item.x - offset - this.padding_left > 0) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex - (this.spawnCount / this.gridRow) * this.gridRow; + if (this.itemDataList[itemIndex] != null) { + item.x = item.x - offset; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.opacity = 255; + } + else { + item.x = item.x - offset; + itemRender.itemIndex = itemIndex; + item.opacity = 0; + } + } + } + else { + //item左滑时,超出了scrollView左边界,将item移动到右方复用,item移动到右方的位置必须不超过content的右边界 + if (viewPos.x < -bufferZone && item.x + offset + this.padding_right < this.content.width) { + var itemRender = item.getComponent(ItemRender_1.default); + var itemIndex = itemRender.itemIndex + (this.spawnCount / this.gridRow) * this.gridRow; + if (this.itemDataList[itemIndex] != null) { + item.x = item.x + offset; + itemRender.itemIndex = itemIndex; + itemRender.data = this.itemDataList[itemIndex]; + itemRender.dataChanged(); + item.opacity = 255; + } + else { + item.x = item.x + offset; + itemRender.itemIndex = itemIndex; + item.opacity = 0; + } + } + } + } + this.lastContentPosX = this.scrollView.content.x; + }; + /**获取item在scrollView的局部坐标 */ + List.prototype.getPositionInView = function (item) { + var worldPos = item.parent.convertToWorldSpaceAR(item.position); + var viewPos = this.scrollView.node.convertToNodeSpaceAR(worldPos); + return viewPos; + }; + /**获取列表数据 */ + List.prototype.getListData = function () { + return this.itemDataList; + }; + /** + * 增加一项数据到列表的末尾 + * @param data 数据 + */ + List.prototype.addItem = function (data) { + this.itemDataList.push(data); + this.updateContent(); + }; + /** + * 增加一项数据到列表指定位置 + * @param index 位置,0表示第1项 + * @param data 数据 + */ + List.prototype.addItemAt = function (index, data) { + if (this.itemDataList[index] != null || this.itemDataList.length == index) { + this.itemDataList.splice(index, 1, data); + this.updateContent(); + } + }; + /** + * 删除一项数据 + * @param index 删除项的位置 ,0表示第1项 + */ + List.prototype.deleteItem = function (index) { + if (this.itemDataList[index] != null) { + this.itemDataList.splice(index, 1); + this.updateContent(); + } + }; + /** + * 改变一项数据 + * @param index 位置,0表示第1项 + * @param data 替换的数据 + */ + List.prototype.changeItem = function (index, data) { + if (this.itemDataList[index] != null) { + this.itemDataList[index] = data; + this.updateContent(); + } + }; + /**获取第一个Item的位置 */ + List.prototype.updateContent = function () { + //显示列表实例为0个 + if (this.itemList.length == 0) { + this.countListParam(); + this.createList(0, new cc.Vec2(0, 0)); + //显示列表的实例不为0个,则需要重新排列item实例数组 + } + else { + if (this.type == ListType.Vertical) { + this.itemList.sort(function (a, b) { + return b.y - a.y; + }); + } + else if (this.type == ListType.Horizontal) { + this.itemList.sort(function (a, b) { + return a.x - b.x; + }); + } + else if (this.type == ListType.Grid) { + if (this.startAxis == StartAxisType.Vertical) { + this.itemList.sort(function (a, b) { + return a.x - b.x; + }); + this.itemList.sort(function (a, b) { + return b.y - a.y; + }); + } + else if (this.startAxis == StartAxisType.Horizontal) { + this.itemList.sort(function (a, b) { + return b.y - a.y; + }); + this.itemList.sort(function (a, b) { + return a.x - b.x; + }); + } + } + this.countListParam(); + //获取第一个item实例需要显示的数据索引 + var startIndex = this.itemList[0].getComponent(ItemRender_1.default).itemIndex; + if (this.type == ListType.Grid && this.startAxis == StartAxisType.Vertical) { + startIndex += (startIndex + this.spawnCount) % this.gridCol; + } + else if (this.type == ListType.Grid && this.startAxis == StartAxisType.Horizontal) { + startIndex += (startIndex + this.spawnCount) % this.gridRow; + } + //getScrollOffset()和scrollToOffset()的x值是相反的 + var offset = this.scrollView.getScrollOffset(); + offset.x = -offset.x; + this.createList(startIndex, offset); + } + }; + /**销毁 */ + List.prototype.onDestroy = function () { + //清理列表项 + var len = this.itemList.length; + for (var i = 0; i < len; i++) { + if (cc.isValid(this.itemList[i], true)) { + this.itemList[i].destroy(); + } + } + this.itemList.length = 0; + //清理对象池 + len = this.itemPool.length; + for (var i = 0; i < len; i++) { + if (cc.isValid(this.itemPool[i], true)) { + this.itemPool[i].destroy(); + } + } + this.itemPool.length = 0; + //清理列表数据 + this.itemDataList.length = 0; + }; + __decorate([ + property({ type: cc.Node, tooltip: "列表项" }) + ], List.prototype, "itemRender", void 0); + __decorate([ + property({ type: cc.Enum(ListType), tooltip: "排列方式" }) + ], List.prototype, "type", void 0); + __decorate([ + property({ type: cc.Enum(StartAxisType), tooltip: "网格布局中的方向", visible: function () { return this.type == ListType.Grid; } }) + ], List.prototype, "startAxis", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "列表项X间隔", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) + ], List.prototype, "spaceX", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "列表项Y间隔", visible: function () { return this.type == ListType.Vertical || this.type == ListType.Grid; } }) + ], List.prototype, "spaceY", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "上间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) + ], List.prototype, "padding_top", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "下间距", visible: function () { return (this.type == ListType.Vertical || this.type == ListType.Grid); } }) + ], List.prototype, "padding_buttom", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "左间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) + ], List.prototype, "padding_left", void 0); + __decorate([ + property(cc.Integer) + ], List.prototype, "_padding", void 0); + __decorate([ + property({ type: cc.Integer, tooltip: "右间距", visible: function () { return (this.type == ListType.Horizontal || this.type == ListType.Grid); } }) + ], List.prototype, "padding_right", void 0); + List = __decorate([ + ccclass + ], List); + return List; +}(cc.Component)); +exports.default = List; cc._RF.pop(); } @@ -17724,6 +15001,347 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXFJhbmtMaXN0XFxMaXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxvQkFBb0I7QUFDcEIsd0VBQXdFO0FBQ3hFLG1CQUFtQjtBQUNuQixrRkFBa0Y7QUFDbEYsOEJBQThCO0FBQzlCLGtGQUFrRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVsRiwyQ0FBcUM7QUFFL0IsSUFBQSxLQUF3QixFQUFFLENBQUMsVUFBVSxFQUFuQyxPQUFPLGFBQUEsRUFBRSxRQUFRLGNBQWtCLENBQUM7QUFFNUMsWUFBWTtBQUNaLElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNoQixVQUFVO0lBQ1YsbURBQWMsQ0FBQTtJQUNkLFVBQVU7SUFDViwrQ0FBWSxDQUFBO0lBQ1osVUFBVTtJQUNWLHVDQUFRLENBQUE7QUFDWixDQUFDLEVBUFcsUUFBUSxHQUFSLGdCQUFRLEtBQVIsZ0JBQVEsUUFPbkI7QUFFRCxjQUFjO0FBQ2QsSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3JCLFVBQVU7SUFDViw2REFBYyxDQUFBO0lBQ2QsVUFBVTtJQUNWLHlEQUFZLENBQUE7QUFDaEIsQ0FBQyxFQUxXLGFBQWEsR0FBYixxQkFBYSxLQUFiLHFCQUFhLFFBS3hCO0FBRUQ7Ozs7Ozs7R0FPRztBQUVIO0lBQWtDLHdCQUFZO0lBQTlDO1FBQUEscUVBeWlCQztRQXZpQkcscURBQXFEO1FBQ3JELFVBQVU7UUFFSCxnQkFBVSxHQUFZLElBQUksQ0FBQztRQUVsQyxVQUFVO1FBRUgsVUFBSSxHQUFhLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFFMUMsY0FBYztRQUVQLGVBQVMsR0FBa0IsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUUzRCxjQUFjO1FBRVAsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUUxQixjQUFjO1FBRVAsWUFBTSxHQUFXLENBQUMsQ0FBQztRQUUxQixTQUFTO1FBRUYsaUJBQVcsR0FBVyxDQUFDLENB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SSxDQUFDLENBQUEsQ0FBQyxDQUFDLEVBQUUsQ0FBQzs4Q0FDdEc7SUFLaEM7UUFEQyxRQUFRLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQzswQ0FDTztJQUk1QjtRQURDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxnQkFBSyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUM7K0NBQ3JHO0lBMUNoQixJQUFJO1FBRHhCLE9BQU87T0FDYSxJQUFJLENBeWlCeEI7SUFBRCxXQUFDO0NBemlCRCxBQXlpQkMsQ0F6aUJpQyxFQUFFLENBQUMsU0FBUyxHQXlpQjdDO2tCQXppQm9CLElBQUkiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvLyBMZWFybiBUeXBlU2NyaXB0OlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy90eXBlc2NyaXB0Lmh0bWxcclxuLy8gTGVhcm4gQXR0cmlidXRlOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9yZWZlcmVuY2UvYXR0cmlidXRlcy5odG1sXHJcbi8vIExlYXJuIGxpZmUtY3ljbGUgY2FsbGJhY2tzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9saWZlLWN5Y2xlLWNhbGxiYWNrcy5odG1sXHJcblxyXG5pbXBvcnQgSXRlbVJlbmRlciBmcm9tIFwiLi9JdGVtUmVuZGVyXCJcclxuXHJcbmNvbnN0IHsgY2NjbGFzcywgcHJvcGVydHkgfSA9IGNjLl9kZWNvcmF0b3I7XHJcblxyXG4vKirliJfooajmjpLliJfmlrnlvI8gKi9cclxuZXhwb3J0IGVudW0gTGlzdFR5cGUge1xyXG4gICAgLyoq5rC05bmz5o6S5YiXICovXHJcbiAgICBIb3Jpem9udGFsID0gMSxcclxuICAgIC8qKuWeguebtOaOkuWIlyAqL1xyXG4gICAgVmVydGljYWwgPSAyLFxyXG4gICAgLyoq572R5qC85o6S5YiXICovXHJcbiAgICBHcmlkID0gM1xyXG59XHJcblxyXG4vKirnvZHmoLzluIPlsYDkuK3nmoTmlrnlkJEgKi9cclxuZXhwb3J0IGVudW0gU3RhcnRBeGlzVHlwZSB7XHJcbiAgICAvKirmsLTlubPmjpLliJcgKi9cclxuICAgIEhvcml6b250YWwgPSAxLFxyXG4gICAgLyoq5Z6C55u05o6S5YiXICovXHJcbiAgICBWZXJ0aWNhbCA9IDIsXHJcbn1cclxuXHJcbi8qKlxyXG4gKiDliJfooahcclxuICog5qC55o2uY29jb3NfZXhhbXBsZeeahGxpc3RWaWV35pS55Yqo6ICM5p2lXHJcbiAqIEBhdXRob3IgY2hlbmthaSAyMDIwLjcuOFxyXG4gKiBAZXhhbXBsZVxyXG4gKiAgMS7liJvlu7pjb2Nvc+eahFNjcm9sbFZpZXfnu4Tku7bvvIzmt7vliqBMaXN077yM6K6+572uTGlzdOWxnuaAp+WNs+WPr1xyXG4gKiAgXHJcbiAqL1xyXG5AY2NjbGFzc1xyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaXN0IGV4dGVuZHMgY2MuQ29tcG9uZW50IHtcclxuXHJcbiAgICAvLz09PT09PT09PT09PT09PT09PT09IOWxnuaAp+mdouadvyA9PT09PT09PT09PT09PT09PT09PT09PT09XHJcbiAgICAvKirliJfooajpgInpobkgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLk5vZGUsIHRvb2x0aXA6IFwi5YiX6KGo6aG5XCIgfSlcclxuICAgIHB1YmxpYyBpdGVtUmVuZGVyOiBjYy5Ob2RlID0gbnVsbDtcclxuXHJcbiAgICAvKirmjpLliJfmlrnlvI8gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkVudW0oTGlzdFR5cGUpLCB0b29sdGlwOiBcIuaOkuWIl+aWueW8j1wiIH0pXHJcbiAgICBwdWJsaWMgdHlwZTogTGlzdFR5cGUgPSBMaXN0VHlwZS5WZXJ0aWNhbDtcclxuXHJcbiAgICAvKirnvZHmoLzluIPlsYDkuK3nmoTmlrnlkJEgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkVudW0oU3RhcnRBeGlzVHlwZSksIHRvb2x0aXA6IFwi572R5qC85biD5bGA5Lit55qE5pa55ZCRXCIsIHZpc2libGUoKSB7IHJldHVybiB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCB9IH0pXHJcbiAgICBwdWJsaWMgc3RhcnRBeGlzOiBTdGFydEF4aXNUeXBlID0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsO1xyXG5cclxuICAgIC8qKuWIl+ihqOmhueS5i+mXtFjpl7TpmpQgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5YiX6KGo6aG5WOmXtOmalFwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5Ib3Jpem9udGFsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkKSB9IH0pXHJcbiAgICBwdWJsaWMgc3BhY2VYOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuWIl+ihqOmhueS5i+mXtFnpl7TpmpQgKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5YiX6KGo6aG5WemXtOmalFwiLCB2aXNpYmxlKCkgeyByZXR1cm4gdGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsIHx8IHRoaXMudHlwZSA9PSBMaXN0VHlwZS5HcmlkIH0gfSlcclxuICAgIHB1YmxpYyBzcGFjZVk6IG51bWJlciA9IDA7XHJcblxyXG4gICAgLyoq5LiK6Ze06LedICovXHJcbiAgICBAcHJvcGVydHkoeyB0eXBlOiBjYy5JbnRlZ2VyLCB0b29sdGlwOiBcIuS4iumXtOi3nVwiLCB2aXNpYmxlKCkgeyByZXR1cm4gKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCB8fCB0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkgfSB9KVxyXG4gICAgcHVibGljIHBhZGRpbmdfdG9wOiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8qKuS4i+mXtOi3nSAqL1xyXG4gICAgQHByb3BlcnR5KHsgdHlwZTogY2MuSW50ZWdlciwgdG9vbHRpcDogXCLkuIvpl7Tot51cIiwgdmlzaWJsZSgpIHsgcmV0dXJuICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuVmVydGljYWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX2J1dHRvbTogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirlt6bpl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5bem6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX2xlZnQ6IG51bWJlciA9IDA7XHJcblxyXG5cclxuXHJcbiAgICBAcHJvcGVydHkoY2MuSW50ZWdlcilcclxuICAgIHB1YmxpYyBfcGFkZGluZzogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKirlj7Ppl7Tot50gKi9cclxuICAgIEBwcm9wZXJ0eSh7IHR5cGU6IGNjLkludGVnZXIsIHRvb2x0aXA6IFwi5Y+z6Ze06LedXCIsIHZpc2libGUoKSB7IHJldHVybiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwgfHwgdGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIH0gfSlcclxuICAgIHB1YmxpYyBwYWRkaW5nX3JpZ2h0OiBudW1iZXIgPSAwO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PSDmu5rliqjlrrnlmaggPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxyXG4gICAgLyoq5YiX6KGo5rua5Yqo5a655ZmoICovXHJcbiAgICBwdWJsaWMgc2Nyb2xsVmlldzogY2MuU2Nyb2xsVmlldyA9IG51bGw7XHJcbiAgICAvKipzY3JvbGxWaWV355qE5YaF5a655a655ZmoICovXHJcbiAgICBwcml2YXRlIGNvbnRlbnQ6IGNjLk5vZGUgPSBudWxsO1xyXG5cclxuICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09IOWIl+ihqOmhuSA9PT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKuWIl+ihqOmhueaVsOaNriAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtRGF0YUxpc3Q6IEFycmF5PGFueT4gPSBbXTtcclxuICAgIC8qKuW6lOWIm+W7uueahOWunuS+i+aVsOmHjyAqL1xyXG4gICAgcHJpdmF0ZSBzcGF3bkNvdW50OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5a2Y5pS+5YiX6KGo6aG55a6e5L6L55qE5pWw57uEICovXHJcbiAgICBwcml2YXRlIGl0ZW1MaXN0OiBBcnJheTxjYy5Ob2RlPiA9IFtdO1xyXG4gICAgLyoqaXRlbeeahOmrmOW6piAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtSGVpZ2h0OiBudW1iZXIgPSAwO1xyXG4gICAgLyoqaXRlbeeahOWuveW6piAqL1xyXG4gICAgcHJpdmF0ZSBpdGVtV2lkdGg6IG51bWJlciA9IDA7XHJcbiAgICAvKirlrZjmlL7kuI3lho3kvb/nlKjkuK3nmoTliJfooajpobkgKi9cclxuICAgIHByaXZhdGUgaXRlbVBvb2w6IEFycmF5PGNjLk5vZGU+ID0gW107XHJcblxyXG4gICAgLy89PT09PT09PT09PT09PT09PT09PT09PSDorqHnrpflj4LmlbAgPT09PT09PT09PT09PT09PT09PT09PT09PT1cclxuICAgIC8qKui3neemu3Njcm9sbFZpZXfkuK3lv4PngrnnmoTot53nprvvvIzotoXov4fov5nkuKrot53nprvnmoRpdGVt5Lya6KKr6YeN572u77yM5LiA6Iis6K6+572u5Li6IHNjcm9sbFZJZXcuaGVpZ2h0LzIgKyBpdGVtLmhlaWd0LzIgKyBzcGFjZe+8jOWboOS4uui/meS4qui3neemu2l0ZW3mraPlpb3otoXlh7pzY3JvbGxWaWV35pi+56S66IyD5Zu0ICovXHJcbiAgICBwcml2YXRlIGhhbGZTY3JvbGxWaWV3OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5LiK5LiA5qyhY29udGVudOeahFjlgLzvvIznlKjkuo7lkoznjrDlnKhjb250ZW5055qEWOWAvOavlOi+g++8jOW+l+WHuuaYr+WQkeW3pui/mOaYr+WQkeWPs+a7muWKqCAqL1xyXG4gICAgcHJpdmF0ZSBsYXN0Q29udGVudFBvc1g6IG51bWJlciA9IDA7XHJcbiAgICAvKirkuIrkuIDmrKFjb250ZW5055qEWeWAvO+8jOeUqOS6juWSjOeOsOWcqGNvbnRlbnTnmoRZ5YC85q+U6L6D77yM5b6X5Ye65piv5ZCR5LiK6L+Y5piv5ZCR5LiL5rua5YqoICovXHJcbiAgICBwcml2YXRlIGxhc3RDb250ZW50UG9zWTogbnVtYmVyID0gMDtcclxuICAgIC8qKue9keagvOihjOaVsCAqL1xyXG4gICAgcHJpdmF0ZSBncmlkUm93OiBudW1iZXIgPSAwO1xyXG4gICAgLyoq572R5qC85YiX5pWwICovXHJcbiAgICBwcml2YXRlIGdyaWRDb2w6IG51bWJlciA9IDA7XHJcbiAgICAvKirliLfmlrDml7bpl7TvvIzljZXkvY1zICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZVRpbWVyOiBudW1iZXIgPSAwO1xyXG4gICAgLyoq5Yi35paw6Ze06ZqU77yM5Y2V5L2NcyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnRlcnZhbDogbnVtYmVyID0gMC4xO1xyXG4gICAgLyoq5piv5ZCm5rua5Yqo5a655ZmoICovXHJcbiAgICBwcml2YXRlIGJTY3JvbGxpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIC8qKuWIt+aWsOeahOWHveaVsCAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVGdW46IEZ1bmN0aW9uID0gZnVuY3Rpb24gKCkgeyB9O1xyXG5cclxuICAgIG9uTG9hZCgpIHtcclxuICAgICAgICB0aGlzLml0ZW1IZWlnaHQgPSB0aGlzLml0ZW1SZW5kZXIuaGVpZ2h0O1xyXG4gICAgICAgIHRoaXMuaXRlbVdpZHRoID0gdGhpcy5pdGVtUmVuZGVyLndpZHRoO1xyXG4gICAgICAgIHRoaXMuc2Nyb2xsVmlldyA9IHRoaXMubm9kZS5nZXRDb21wb25lbnQoY2MuU2Nyb2xsVmlldyk7XHJcbiAgICAgICAgdGhpcy5jb250ZW50ID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQ7XHJcbiAgICAgICAgdGhpcy5jb250ZW50LmFuY2hvclggPSAwO1xyXG4gICAgICAgIHRoaXMuY29udGVudC5hbmNob3JZID0gMTtcclxuICAgICAgICB0aGlzLmNvbnRlbnQucmVtb3ZlQWxsQ2hpbGRyZW4oKTtcclxuICAgICAgICB0aGlzLnNjcm9sbFZpZXcubm9kZS5vbihcInNjcm9sbGluZ1wiLCB0aGlzLm9uU2Nyb2xsaW5nLCB0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWIl+ihqOaVsOaNriAo5YiX6KGo5pWw5o2u5aSN5Yi25L2/55So77yM5aaC5p6c5YiX6KGo5pWw5o2u5pS55Y+Y77yM5YiZ6ZyA6KaB6YeN5paw6K6+572u5LiA6YGN5pWw5o2uKVxyXG4gICAgICogQHBhcmFtIGl0ZW1EYXRhTGlzdCBpdGVt5pWw5o2u5YiX6KGoXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXREYXRhKGl0ZW1EYXRhTGlzdDogQXJyYXk8YW55Pikge1xyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0ID0gaXRlbURhdGFMaXN0LnNsaWNlKCk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICAvKirorqHnrpfliJfooajnmoTlkITpobnlj4LmlbAgKi9cclxuICAgIHByaXZhdGUgY291bnRMaXN0UGFyYW0oKSB7XHJcbiAgICAgICAgbGV0IGRhdGFMZW4gPSB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcuaG9yaXpvbnRhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQud2lkdGggPSB0aGlzLmNvbnRlbnQucGFyZW50LndpZHRoO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRlbnQuaGVpZ2h0ID0gZGF0YUxlbiAqIHRoaXMuaXRlbUhlaWdodCArIChkYXRhTGVuIC0gMSkgKiB0aGlzLnNwYWNlWSArIHRoaXMucGFkZGluZ190b3AgKyB0aGlzLnBhZGRpbmdfYnV0dG9tO1xyXG4gICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpICsgMjsgLy/orqHnrpfliJvlu7rnmoRpdGVt5a6e5L6L5pWw6YeP77yM5q+U5b2T5YmNc2Nyb2xsVmlld+WuueWZqOiDveaUvuS4i+eahGl0ZW3mlbDph4/lho3liqDkuIoy5LiqXHJcbiAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAyICsgdGhpcy5pdGVtSGVpZ2h0IC8gMiArIHRoaXMuc3BhY2VZOyAvL+iuoeeul2J1ZmZlclpvbmXvvIxpdGVt55qE5pi+56S66IyD5Zu0XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVWO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgdGhpcy5zY3JvbGxWaWV3Lmhvcml6b250YWwgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gZGF0YUxlbiAqIHRoaXMuaXRlbVdpZHRoICsgKGRhdGFMZW4gLSAxKSAqIHRoaXMuc3BhY2VYICsgdGhpcy5wYWRkaW5nX2xlZnQgKyB0aGlzLnBhZGRpbmdfcmlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmNvbnRlbnQucGFyZW50LmhlaWdodDtcclxuICAgICAgICAgICAgdGhpcy5zcGF3bkNvdW50ID0gTWF0aC5yb3VuZCh0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSkgKyAyO1xyXG4gICAgICAgICAgICB0aGlzLmhhbGZTY3JvbGxWaWV3ID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAyICsgdGhpcy5pdGVtV2lkdGggLyAyICsgdGhpcy5zcGFjZVg7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51ZHBhdGVIO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbFZpZXcudmVydGljYWwgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LndpZHRoID0gdGhpcy5jb250ZW50LnBhcmVudC53aWR0aDtcclxuICAgICAgICAgICAgICAgIC8v5aaC5p6cbGVmdOWSjHJpZ2h06Ze06ZqU6L+H5aSn77yM5a+86Ie05pS+5LiN5LiL5LiA5LiqaXRlbe+8jOWImWxlZnTlkoxyaWdodOmDveiuvue9ruS4ujDvvIznm7jlvZPkuo7kuI3nlJ/mlYhcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodCArIHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVggPiB0aGlzLmNvbnRlbnQud2lkdGgpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBhZGRpbmdfbGVmdCA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wYWRkaW5nX3JpZ2h0ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwicGFkZGluZ19sZWZ05oiWcGFkZGluZ19yaWdodOi/h+Wkp1wiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdyaWRDb2wgPSBNYXRoLmZsb29yKCh0aGlzLmNvbnRlbnQud2lkdGggLSB0aGlzLnBhZGRpbmdfbGVmdCAtIHRoaXMucGFkZGluZ19yaWdodCkgLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ncmlkUm93ID0gTWF0aC5jZWlsKGRhdGFMZW4gLyB0aGlzLmdyaWRDb2wpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmhlaWdodCA9IHRoaXMuZ3JpZFJvdyAqIHRoaXMuaXRlbUhlaWdodCArICh0aGlzLmdyaWRSb3cgLSAxKSAqIHRoaXMuc3BhY2VZICsgdGhpcy5wYWRkaW5nX3RvcCArIHRoaXMucGFkZGluZ19idXR0b207XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNwYXduQ291bnQgPSBNYXRoLnJvdW5kKHRoaXMuc2Nyb2xsVmlldy5ub2RlLmhlaWdodCAvICh0aGlzLml0ZW1IZWlnaHQgKyB0aGlzLnNwYWNlWSkpICogdGhpcy5ncmlkQ29sICsgdGhpcy5ncmlkQ29sICogMjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS5oZWlnaHQgLyAyICsgdGhpcy5pdGVtSGVpZ2h0IC8gMiArIHRoaXMuc3BhY2VZO1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVGdW4gPSB0aGlzLnVwZGF0ZUdyaWRfVjtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy5ob3Jpem9udGFsID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVmlldy52ZXJ0aWNhbCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgLy/orqHnrpfpq5jpl7TpmpRcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5oZWlnaHQgPSB0aGlzLmNvbnRlbnQucGFyZW50LmhlaWdodDtcclxuICAgICAgICAgICAgICAgIC8v5aaC5p6cbGVmdOWSjHJpZ2h06Ze06ZqU6L+H5aSn77yM5a+86Ie05pS+5LiN5LiL5LiA5LiqaXRlbe+8jOWImWxlZnTlkoxyaWdodOmDveiuvue9ruS4ujDvvIznm7jlvZPkuo7kuI3nlJ/mlYhcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhZGRpbmdfdG9wICsgdGhpcy5wYWRkaW5nX2J1dHRvbSArIHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZID4gdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ190b3AgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGFkZGluZ19idXR0b20gPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJwYWRkaW5nX3RvcOaIlnBhZGRpbmdfYnV0dG9t6L+H5aSnXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZFJvdyA9IE1hdGguZmxvb3IoKHRoaXMuY29udGVudC5oZWlnaHQgLSB0aGlzLnBhZGRpbmdfdG9wIC0gdGhpcy5wYWRkaW5nX2J1dHRvbSkgLyAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZ3JpZENvbCA9IE1hdGguY2VpbChkYXRhTGVuIC8gdGhpcy5ncmlkUm93KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC53aWR0aCA9IHRoaXMuZ3JpZENvbCAqIHRoaXMuaXRlbVdpZHRoICsgKHRoaXMuZ3JpZENvbCAtIDEpICogdGhpcy5zcGFjZVggKyB0aGlzLnBhZGRpbmdfbGVmdCArIHRoaXMucGFkZGluZ19yaWdodDtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3Bhd25Db3VudCA9IE1hdGgucm91bmQodGhpcy5zY3JvbGxWaWV3Lm5vZGUud2lkdGggLyAodGhpcy5pdGVtV2lkdGggKyB0aGlzLnNwYWNlWCkpICogdGhpcy5ncmlkUm93ICsgdGhpcy5ncmlkUm93ICogMjtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFsZlNjcm9sbFZpZXcgPSB0aGlzLnNjcm9sbFZpZXcubm9kZS53aWR0aCAvIDIgKyB0aGlzLml0ZW1XaWR0aCAvIDIgKyB0aGlzLnNwYWNlWDtcclxuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlRnVuID0gdGhpcy51cGRhdGVHcmlkX0g7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliJvlu7rliJfooaggXHJcbiAgICAgKiBAcGFyYW0gc3RhcnRJbmRleCDotbflp4vmmL7npLrnmoTmlbDmja7ntKLlvJUgMOihqOekuuesrOS4gOmhuVxyXG4gICAgICogQHBhcmFtIG9mZnNldCAgICAgc2Nyb2xsVmlld+WBj+enu+mHj1xyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGNyZWF0ZUxpc3Qoc3RhcnRJbmRleDogbnVtYmVyLCBvZmZzZXQ6IGNjLlZlYzIpIHtcclxuICAgICAgICAvL+W9k+mcgOimgeaYvuekuueahOaVsOaNrumVv+W6piA+IOiZmuaLn+WIl+ihqOmVv+W6pu+8jCDliKDpmaTmnIDmnKvlsL7lh6DkuKrmlbDmja7ml7bvvIzliJfooajpnIDopoHph43nva7kvY3nva7liLBzY3JvbGxWaWV35pyA5bqV56uvXHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA+IHRoaXMuc3Bhd25Db3VudCAmJiAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCAtIDEpID49IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCkge1xyXG4gICAgICAgICAgICBzdGFydEluZGV4ID0gdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIC0gdGhpcy5zcGF3bkNvdW50O1xyXG4gICAgICAgICAgICBvZmZzZXQgPSB0aGlzLnNjcm9sbFZpZXcuZ2V0TWF4U2Nyb2xsT2Zmc2V0KCk7XHJcblxyXG4gICAgICAgICAgICAvL+W9k+mcgOimgeaYvuekuueahOaVsOaNrumVv+W6piA8PSDomZrmi5/liJfooajplb/luqbvvIwg6ZqQ6JeP5aSa5L2Z55qE6Jma5ouf5YiX6KGo6aG5IFxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIDw9IHRoaXMuc3Bhd25Db3VudCkge1xyXG4gICAgICAgICAgICBzdGFydEluZGV4ID0gMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5zcGF3bkNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGl0ZW06IGNjLk5vZGU7XHJcbiAgICAgICAgICAgIC8v6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byV5Zyo5pWw5o2u6IyD5Zu05YaF77yM5YiZaXRlbeWunuS+i+aYvuekuuWHuuadpVxyXG4gICAgICAgICAgICBpZiAoaSArIHN0YXJ0SW5kZXggPCB0aGlzLml0ZW1EYXRhTGlzdC5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1MaXN0W2ldID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5nZXRJdGVtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ucGFyZW50ID0gdGhpcy5jb250ZW50O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtTGlzdFtpXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8v6ZyA6KaB5pi+56S655qE5pWw5o2u57Si5byV6LaF6L+H5LqG5pWw5o2u6IyD5Zu077yM5YiZaXRlbeWunuS+i+makOiXj+i1t+adpVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5a6e5L6L5pWw6YePID4g6ZyA6KaB5pi+56S655qE5pWw5o2u6YePXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtTGlzdC5sZW5ndGggPiAodGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoIC0gc3RhcnRJbmRleCkpIHtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5pdGVtTGlzdC5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnJlbW92ZUZyb21QYXJlbnQoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1Qb29sLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpICsgc3RhcnRJbmRleDtcclxuICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaSArIHN0YXJ0SW5kZXhdO1xyXG4gICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLlZlcnRpY2FsKSB7XHJcbiAgICAgICAgICAgICAgICAvL+WboOS4umNvbnRlbnTnmoTplJrngrlY5pivMO+8jOaJgOS7pWl0ZW3nmoR45YC85pivY29udGVudC53aXRoLzLooajnpLrlsYXkuK3vvIzplJrngrlZ5pivMe+8jOaJgOS7pWl0ZW3nmoR55YC85LuOY29udGVudOmhtumDqOWQkeS4i+aYrzDliLDotJ/ml6DnqbfjgILmiYDku6VpdGVtLnk9IC1pdGVtLmhlaWdodC8y5pe277yM5piv5ZyoY29udGVudOeahOmhtumDqOOAglxyXG4gICAgICAgICAgICAgICAgaXRlbS5zZXRQb3NpdGlvbih0aGlzLmNvbnRlbnQud2lkdGggLyAyLCAtaXRlbS5oZWlnaHQgKiAoMC41ICsgaSArIHN0YXJ0SW5kZXgpIC0gdGhpcy5zcGFjZVkgKiAoaSArIHN0YXJ0SW5kZXgpIC0gdGhpcy5wYWRkaW5nX3RvcCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBpICsgc3RhcnRJbmRleCkgKyB0aGlzLnNwYWNlWCAqIChpICsgc3RhcnRJbmRleCkgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLXRoaXMuY29udGVudC5oZWlnaHQgLyAyKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcm93ID0gTWF0aC5mbG9vcigoaSArIHN0YXJ0SW5kZXgpIC8gdGhpcy5ncmlkQ29sKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgY29sID0gKGkgKyBzdGFydEluZGV4KSAlIHRoaXMuZ3JpZENvbDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnNldFBvc2l0aW9uKGl0ZW0ud2lkdGggKiAoMC41ICsgY29sKSArIHRoaXMuc3BhY2VYICogY29sICsgdGhpcy5wYWRkaW5nX2xlZnQsIC1pdGVtLmhlaWdodCAqICgwLjUgKyByb3cpIC0gdGhpcy5zcGFjZVkgKiByb3cgLSB0aGlzLnBhZGRpbmdfdG9wKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciByb3cgPSAoaSArIHN0YXJ0SW5kZXgpICUgdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb2wgPSBNYXRoLmZsb29yKChpICsgc3RhcnRJbmRleCkgLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0UG9zaXRpb24oaXRlbS53aWR0aCAqICgwLjUgKyBjb2wpICsgdGhpcy5zcGFjZVggKiBjb2wgKyB0aGlzLnBhZGRpbmdfbGVmdCwgLWl0ZW0uaGVpZ2h0ICogKDAuNSArIHJvdykgLSB0aGlzLnNwYWNlWSAqIHJvdyAtIHRoaXMucGFkZGluZ190b3ApO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zY3JvbGxWaWV3LnNjcm9sbFRvT2Zmc2V0KG9mZnNldCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoq6I635Y+W5LiA5Liq5YiX6KGo6aG5ICovXHJcbiAgICBwcml2YXRlIGdldEl0ZW0oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbVBvb2wubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGNjLmluc3RhbnRpYXRlKHRoaXMuaXRlbVJlbmRlcik7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVBvb2wucG9wKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZShkdCkge1xyXG4gICAgICAgIGlmICh0aGlzLmJTY3JvbGxpbmcgPT0gZmFsc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0ZVRpbWVyICs9IGR0O1xyXG4gICAgICAgIGlmICh0aGlzLnVwZGF0ZVRpbWVyIDwgdGhpcy51cGRhdGVJbnRlcnZhbCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBkYXRlVGltZXIgPSAwO1xyXG4gICAgICAgIHRoaXMuYlNjcm9sbGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudXBkYXRlRnVuKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TY3JvbGxpbmcoKSB7XHJcbiAgICAgICAgdGhpcy5iU2Nyb2xsaW5nID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKirlnoLnm7TmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlVigpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNVcCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnkgPiB0aGlzLmxhc3RDb250ZW50UG9zWTtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbUhlaWdodCArIHRoaXMuc3BhY2VZKSAqIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGl0ZW0gPSBpdGVtc1tpXTtcclxuICAgICAgICAgICAgbGV0IHZpZXdQb3MgPSB0aGlzLmdldFBvc2l0aW9uSW5WaWV3KGl0ZW0pO1xyXG4gICAgICAgICAgICBpZiAoaXNVcCkge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiK5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4iui+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIvmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiL5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4i+i+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA+IGJ1ZmZlclpvbmUgJiYgaXRlbS55IC0gb2Zmc2V0IC0gdGhpcy5wYWRkaW5nX2J1dHRvbSA+IC10aGlzLmNvbnRlbnQuaGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgLy9pdGVt5LiL5ruR5pe277yM6LaF5Ye65LqGc2Nyb2xsVmlld+S4i+i+ueeVjO+8jOWwhml0ZW3np7vliqjliLDkuIrmlrnlpI3nlKjvvIxpdGVt56e75Yqo5Yiw5LiK5pa555qE5L2N572u5b+F6aG75LiN6LaF6L+HY29udGVudOeahOS4iui+ueeVjFxyXG4gICAgICAgICAgICAgICAgaWYgKHZpZXdQb3MueSA8IC1idWZmZXJab25lICYmIGl0ZW0ueSArIG9mZnNldCArIHRoaXMucGFkZGluZ190b3AgPCAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggLSBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NZID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueTtcclxuICAgIH1cclxuXHJcbiAgICAvKirmsLTlubPmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdWRwYXRlSCgpIHtcclxuICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1MaXN0O1xyXG4gICAgICAgIGxldCBpdGVtO1xyXG4gICAgICAgIGxldCBidWZmZXJab25lID0gdGhpcy5oYWxmU2Nyb2xsVmlldztcclxuICAgICAgICBsZXQgaXNSaWdodCA9IHRoaXMuc2Nyb2xsVmlldy5jb250ZW50LnggPiB0aGlzLmxhc3RDb250ZW50UG9zWDtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gKHRoaXMuaXRlbVdpZHRoICsgdGhpcy5zcGFjZVgpICogaXRlbXMubGVuZ3RoO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1JpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lj7Pmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35Y+z6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOW3puaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlt6bmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5bem6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnggLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfbGVmdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtIGl0ZW1zLmxlbmd0aDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLnggPSBpdGVtLnggLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lt6bmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35bem6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOWPs+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlj7PmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5Y+z6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS54ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0IDwgdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyBpdGVtcy5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NYID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueDtcclxuICAgIH1cclxuXHJcbiAgICAvKirnvZHmoLzlnoLnm7TmjpLliJcgKi9cclxuICAgIHByaXZhdGUgdXBkYXRlR3JpZF9WKCkge1xyXG4gICAgICAgIGxldCBpdGVtcyA9IHRoaXMuaXRlbUxpc3Q7XHJcbiAgICAgICAgbGV0IGl0ZW06IGNjLk5vZGU7XHJcbiAgICAgICAgbGV0IGJ1ZmZlclpvbmUgPSB0aGlzLmhhbGZTY3JvbGxWaWV3O1xyXG4gICAgICAgIGxldCBpc1VwID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueSA+IHRoaXMubGFzdENvbnRlbnRQb3NZO1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSAodGhpcy5pdGVtSGVpZ2h0ICsgdGhpcy5zcGFjZVkpICogKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpdGVtID0gaXRlbXNbaV07XHJcbiAgICAgICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5nZXRQb3NpdGlvbkluVmlldyhpdGVtKTtcclxuICAgICAgICAgICAgaWYgKGlzVXApIHtcclxuICAgICAgICAgICAgICAgIC8vaXRlbeS4iua7keaXtu+8jOi2heWHuuS6hnNjcm9sbFZpZXfkuIrovrnnlYzvvIzlsIZpdGVt56e75Yqo5Yiw5LiL5pa55aSN55So77yMaXRlbeenu+WKqOWIsOS4i+aWueeahOS9jee9ruW/hemhu+S4jei2hei/h2NvbnRlbnTnmoTkuIvovrnnlYxcclxuICAgICAgICAgICAgICAgIGlmICh2aWV3UG9zLnkgPiBidWZmZXJab25lICYmIGl0ZW0ueSAtIG9mZnNldCAtIHRoaXMucGFkZGluZ19idXR0b20gPiAtdGhpcy5jb250ZW50LmhlaWdodCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtUmVuZGVyOiBJdGVtUmVuZGVyID0gaXRlbS5nZXRDb21wb25lbnQoSXRlbVJlbmRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1JbmRleCA9IGl0ZW1SZW5kZXIuaXRlbUluZGV4ICsgKHRoaXMuc3Bhd25Db3VudCAvIHRoaXMuZ3JpZENvbCkgKiB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGEgPSB0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLmRhdGFDaGFuZ2VkKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDI1NTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnkgPSBpdGVtLnkgLSBvZmZzZXQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuaXRlbUluZGV4ID0gaXRlbUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHsvL2l0ZW3kuIvmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35LiL6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOS4iuaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDkuIrmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5LiK6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy55IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS55ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3RvcCA8IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRDb2wpICogdGhpcy5ncmlkQ29sO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS55ID0gaXRlbS55ICsgb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sYXN0Q29udGVudFBvc1kgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC55O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKue9keagvOawtOW5s+aOkuWIlyAqL1xyXG4gICAgcHJpdmF0ZSB1cGRhdGVHcmlkX0goKSB7XHJcbiAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtTGlzdDtcclxuICAgICAgICBsZXQgaXRlbTtcclxuICAgICAgICBsZXQgYnVmZmVyWm9uZSA9IHRoaXMuaGFsZlNjcm9sbFZpZXc7XHJcbiAgICAgICAgbGV0IGlzUmlnaHQgPSB0aGlzLnNjcm9sbFZpZXcuY29udGVudC54ID4gdGhpcy5sYXN0Q29udGVudFBvc1g7XHJcbiAgICAgICAgbGV0IG9mZnNldCA9ICh0aGlzLml0ZW1XaWR0aCArIHRoaXMuc3BhY2VYKSAqICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaXRlbSA9IGl0ZW1zW2ldO1xyXG4gICAgICAgICAgICBsZXQgdmlld1BvcyA9IHRoaXMuZ2V0UG9zaXRpb25JblZpZXcoaXRlbSk7XHJcbiAgICAgICAgICAgIGlmIChpc1JpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lj7Pmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35Y+z6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOW3puaWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlt6bmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5bem6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54ID4gYnVmZmVyWm9uZSAmJiBpdGVtLnggLSBvZmZzZXQgLSB0aGlzLnBhZGRpbmdfbGVmdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbVJlbmRlcjogSXRlbVJlbmRlciA9IGl0ZW0uZ2V0Q29tcG9uZW50KEl0ZW1SZW5kZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBpdGVtSW5kZXggPSBpdGVtUmVuZGVyLml0ZW1JbmRleCAtICh0aGlzLnNwYXduQ291bnQgLyB0aGlzLmdyaWRSb3cpICogdGhpcy5ncmlkUm93O1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1EYXRhTGlzdFtpdGVtSW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhID0gdGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5kYXRhQ2hhbmdlZCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9wYWNpdHkgPSAyNTU7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS54ID0gaXRlbS54IC0gb2Zmc2V0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtUmVuZGVyLml0ZW1JbmRleCA9IGl0ZW1JbmRleDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvL2l0ZW3lt6bmu5Hml7bvvIzotoXlh7rkuoZzY3JvbGxWaWV35bem6L6555WM77yM5bCGaXRlbeenu+WKqOWIsOWPs+aWueWkjeeUqO+8jGl0ZW3np7vliqjliLDlj7PmlrnnmoTkvY3nva7lv4XpobvkuI3otoXov4djb250ZW5055qE5Y+z6L6555WMXHJcbiAgICAgICAgICAgICAgICBpZiAodmlld1Bvcy54IDwgLWJ1ZmZlclpvbmUgJiYgaXRlbS54ICsgb2Zmc2V0ICsgdGhpcy5wYWRkaW5nX3JpZ2h0IDwgdGhpcy5jb250ZW50LndpZHRoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGl0ZW1SZW5kZXI6IEl0ZW1SZW5kZXIgPSBpdGVtLmdldENvbXBvbmVudChJdGVtUmVuZGVyKTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaXRlbUluZGV4ID0gaXRlbVJlbmRlci5pdGVtSW5kZXggKyAodGhpcy5zcGF3bkNvdW50IC8gdGhpcy5ncmlkUm93KSAqIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaXRlbUluZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YSA9IHRoaXMuaXRlbURhdGFMaXN0W2l0ZW1JbmRleF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZW5kZXIuZGF0YUNoYW5nZWQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ueCA9IGl0ZW0ueCArIG9mZnNldDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlbmRlci5pdGVtSW5kZXggPSBpdGVtSW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub3BhY2l0eSA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubGFzdENvbnRlbnRQb3NYID0gdGhpcy5zY3JvbGxWaWV3LmNvbnRlbnQueDtcclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5ZpdGVt5Zyoc2Nyb2xsVmlld+eahOWxgOmDqOWdkOaghyAqL1xyXG4gICAgcHJpdmF0ZSBnZXRQb3NpdGlvbkluVmlldyhpdGVtKSB7XHJcbiAgICAgICAgbGV0IHdvcmxkUG9zID0gaXRlbS5wYXJlbnQuY29udmVydFRvV29ybGRTcGFjZUFSKGl0ZW0ucG9zaXRpb24pO1xyXG4gICAgICAgIGxldCB2aWV3UG9zID0gdGhpcy5zY3JvbGxWaWV3Lm5vZGUuY29udmVydFRvTm9kZVNwYWNlQVIod29ybGRQb3MpO1xyXG4gICAgICAgIHJldHVybiB2aWV3UG9zO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKuiOt+WPluWIl+ihqOaVsOaNriAqL1xyXG4gICAgcHVibGljIGdldExpc3REYXRhKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1EYXRhTGlzdDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIOWinuWKoOS4gOmhueaVsOaNruWIsOWIl+ihqOeahOacq+WwvlxyXG4gICAgICogQHBhcmFtIGRhdGEg5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJdGVtKGRhdGE6IGFueSkge1xyXG4gICAgICAgIHRoaXMuaXRlbURhdGFMaXN0LnB1c2goZGF0YSk7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDlop7liqDkuIDpobnmlbDmja7liLDliJfooajmjIflrprkvY3nva5cclxuICAgICAqIEBwYXJhbSBpbmRleCAgIOS9jee9ru+8jDDooajnpLrnrKwx6aG5XHJcbiAgICAgKiBAcGFyYW0gZGF0YSAg5pWw5o2uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhZGRJdGVtQXQoaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsIHx8IHRoaXMuaXRlbURhdGFMaXN0Lmxlbmd0aCA9PSBpbmRleCkge1xyXG4gICAgICAgICAgICB0aGlzLml0ZW1EYXRhTGlzdC5zcGxpY2UoaW5kZXgsIDEsIGRhdGEpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbnRlbnQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDliKDpmaTkuIDpobnmlbDmja5cclxuICAgICAqIEBwYXJhbSBpbmRleCDliKDpmaTpobnnmoTkvY3nva4gLDDooajnpLrnrKwx6aG5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxldGVJdGVtKGluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICBpZiAodGhpcy5pdGVtRGF0YUxpc3RbaW5kZXhdICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDb250ZW50KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICog5pS55Y+Y5LiA6aG55pWw5o2uXHJcbiAgICAgKiBAcGFyYW0gaW5kZXggICDkvY3nva4sMOihqOekuuesrDHpoblcclxuICAgICAqIEBwYXJhbSBkYXRhICDmm7/mjaLnmoTmlbDmja5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGNoYW5nZUl0ZW0oaW5kZXg6IG51bWJlciwgZGF0YTogYW55KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXRlbURhdGFMaXN0W2luZGV4XSA9IGRhdGE7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ29udGVudCgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKirojrflj5bnrKzkuIDkuKpJdGVt55qE5L2N572uICovXHJcbiAgICBwcml2YXRlIHVwZGF0ZUNvbnRlbnQoKSB7XHJcbiAgICAgICAgLy/mmL7npLrliJfooajlrp7kvovkuLow5LiqXHJcbiAgICAgICAgaWYgKHRoaXMuaXRlbUxpc3QubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgdGhpcy5jb3VudExpc3RQYXJhbSgpO1xyXG4gICAgICAgICAgICB0aGlzLmNyZWF0ZUxpc3QoMCwgbmV3IGNjLlZlYzIoMCwgMCkpO1xyXG4gICAgICAgICAgICAvL+aYvuekuuWIl+ihqOeahOWunuS+i+S4jeS4ujDkuKrvvIzliJnpnIDopoHph43mlrDmjpLliJdpdGVt5a6e5L6L5pWw57uEXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBMaXN0VHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuSG9yaXpvbnRhbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT0gTGlzdFR5cGUuR3JpZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnRBeGlzID09IFN0YXJ0QXhpc1R5cGUuVmVydGljYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBhLnggLSBiLng7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYi55IC0gYS55O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnN0YXJ0QXhpcyA9PSBTdGFydEF4aXNUeXBlLkhvcml6b250YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1MaXN0LnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiLnkgLSBhLnk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdC5zb3J0KChhOiBhbnksIGI6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYS54IC0gYi54O1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmNvdW50TGlzdFBhcmFtKCk7XHJcblxyXG4gICAgICAgICAgICAvL+iOt+WPluesrOS4gOS4qml0ZW3lrp7kvovpnIDopoHmmL7npLrnmoTmlbDmja7ntKLlvJVcclxuICAgICAgICAgICAgdmFyIHN0YXJ0SW5kZXggPSB0aGlzLml0ZW1MaXN0WzBdLmdldENvbXBvbmVudChJdGVtUmVuZGVyKS5pdGVtSW5kZXg7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgJiYgdGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5WZXJ0aWNhbCkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnRJbmRleCArPSAoc3RhcnRJbmRleCArIHRoaXMuc3Bhd25Db3VudCkgJSB0aGlzLmdyaWRDb2w7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09IExpc3RUeXBlLkdyaWQgJiYgdGhpcy5zdGFydEF4aXMgPT0gU3RhcnRBeGlzVHlwZS5Ib3Jpem9udGFsKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ICs9IChzdGFydEluZGV4ICsgdGhpcy5zcGF3bkNvdW50KSAlIHRoaXMuZ3JpZFJvdztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy9nZXRTY3JvbGxPZmZzZXQoKeWSjHNjcm9sbFRvT2Zmc2V0KCnnmoR45YC85piv55u45Y+N55qEXHJcbiAgICAgICAgICAgIHZhciBvZmZzZXQ6IGNjLlZlYzIgPSB0aGlzLnNjcm9sbFZpZXcuZ2V0U2Nyb2xsT2Zmc2V0KCk7XHJcbiAgICAgICAgICAgIG9mZnNldC54ID0gLSBvZmZzZXQueDtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuY3JlYXRlTGlzdChzdGFydEluZGV4LCBvZmZzZXQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKirplIDmr4EgKi9cclxuICAgIHB1YmxpYyBvbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy/muIXnkIbliJfooajpoblcclxuICAgICAgICBsZXQgbGVuID0gdGhpcy5pdGVtTGlzdC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY2MuaXNWYWxpZCh0aGlzLml0ZW1MaXN0W2ldLCB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtTGlzdFtpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtTGlzdC5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8v5riF55CG5a+56LGh5rGgXHJcbiAgICAgICAgbGVuID0gdGhpcy5pdGVtUG9vbC5sZW5ndGg7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoY2MuaXNWYWxpZCh0aGlzLml0ZW1Qb29sW2ldLCB0cnVlKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtUG9vbFtpXS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pdGVtUG9vbC5sZW5ndGggPSAwO1xyXG4gICAgICAgIC8v5riF55CG5YiX6KGo5pWw5o2uXHJcbiAgICAgICAgdGhpcy5pdGVtRGF0YUxpc3QubGVuZ3RoID0gMDtcclxuICAgIH1cclxufVxyXG4iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/lq_base/util/lq_pool_util.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '984882e2dpD17LvCQnTDykE', 'lq_pool_util'); +// Script/lq_base/util/lq_pool_util.ts + +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LQPoolUtil = void 0; +var Animation = cc.Animation; +var ParticleSystem = cc.ParticleSystem; +var instantiate = cc.instantiate; +var LQPoolUtil = /** @class */ (function () { + function LQPoolUtil() { + } + LQPoolUtil.reset_ani = function (node) { + var ani = node.getComponent(Animation); + if (ani) { + var clip = ani.currentClip ? ani.currentClip : ani.defaultClip; + if (!clip) { + return; + } + if (ani.playOnLoad && clip && clip.wrapMode === cc.WrapMode.Normal) { + ani.play(clip.name); + } + } + else { + var ani_1 = node.getComponent(sp.Skeleton); + if (ani_1 && !ani_1.loop) { + ani_1.setAnimation(0, ani_1.animation, false); + } + } + for (var i = 0; i < node.childrenCount; i++) { + var child = node.children[i]; + this.reset_ani(child); + } + }; + LQPoolUtil.recursion_stop_particle = function (node, obj) { + var p = node.getComponent(ParticleSystem); + if (p) { + p.stopSystem(); + obj.has = true; + p.node.opacity = 0; + } + for (var i = 0; i < node.childrenCount; i++) { + var child = node.children[i]; + this.recursion_stop_particle(child, obj); + } + }; + LQPoolUtil.recursion_reset_particle = function (node) { + if (!node.isValid) { + return; + } + var p = node.getComponent(ParticleSystem); + if (p) { + p.resetSystem(); + p.node.opacity = 255; + } + for (var i = 0; i < node.childrenCount; i++) { + var child = node.children[i]; + this.recursion_reset_particle(child); + } + }; + LQPoolUtil.get_node_from_pool = function (node_parent, prefab) { + var arr = this.any_pool[prefab.uuid]; + if (!arr) { + this.any_pool[prefab.uuid] = []; + arr = []; + } + var node = arr.pop(); + if (!node || !node.isValid) { + node = instantiate(prefab); + //@ts-ignore + node.recovery_uuid = prefab.uuid; + //@ts-ignore + node.is_from_pool = false; + node_parent.addChild(node); + } + else { + node.active = true; + //@ts-ignore + node.is_from_pool = true; + this.reset_ani(node); + } + return node; + }; + LQPoolUtil.check_pool_push = function (arr, node) { + for (var i = 0; i < arr.length; i++) { + if (arr[i] === node) { + //@ts-ignore + console.warn("\u6C60\u5B50\u4E0D\u80FD\u91CD\u590D\u6DFB\u52A0\u8282\u70B9", node.name, node.recovery_uuid); + return; + } + } + node.active = false; + arr.push(node); + }; + LQPoolUtil.push_node_to_pool = function (node) { + var _this = this; + //@ts-ignore + if (!node.recovery_uuid || !this.any_pool[node.recovery_uuid]) { + if (node.isValid) { + node.destroy(); + } + return; + } + var obj = { has: false }; + this.recursion_stop_particle(node, obj); + if (obj.has) { + var old_opacity_1 = node.opacity; + node.opacity = 0; + setTimeout(function () { + _this.recursion_reset_particle(node); + node.opacity = old_opacity_1; + //@ts-ignore + _this.check_pool_push(_this.any_pool[node.recovery_uuid], node); + }, 500); + } + else { + //@ts-ignore + this.check_pool_push(this.any_pool[node.recovery_uuid], node); + } + }; + LQPoolUtil.any_pool = {}; + return LQPoolUtil; +}()); +exports.LQPoolUtil = LQPoolUtil; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxscV9iYXNlXFx1dGlsXFxscV9wb29sX3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsSUFBTyxTQUFTLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQztBQUNoQyxJQUFPLGNBQWMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDO0FBQzFDLElBQU8sV0FBVyxHQUFHLEVBQUUsQ0FBQyxXQUFXLENBQUM7QUFFcEM7SUFBQTtJQWdIQSxDQUFDO0lBN0drQixvQkFBUyxHQUF4QixVQUF5QixJQUFVO1FBQy9CLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsSUFBSSxHQUFHLEVBQUU7WUFDTCxJQUFJLElBQUksR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQy9ELElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ1AsT0FBTzthQUNWO1lBQ0QsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO2dCQUNoRSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN2QjtTQUNKO2FBQU07WUFDSCxJQUFJLEtBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN6QyxJQUFJLEtBQUcsSUFBSSxDQUFDLEtBQUcsQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xCLEtBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLEtBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7YUFDN0M7U0FDSjtRQUNELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMs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QyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ1g7YUFBTTtZQUNILFlBQVk7WUFDWixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBQ2pFO0lBQ0wsQ0FBQztJQTlHYyxtQkFBUSxHQUE4QixFQUFFLENBQUM7SUErRzVELGlCQUFDO0NBaEhELEFBZ0hDLElBQUE7QUFoSFksZ0NBQVUiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTm9kZSA9IGNjLk5vZGU7XHJcbmltcG9ydCBBbmltYXRpb24gPSBjYy5BbmltYXRpb247XHJcbmltcG9ydCBQYXJ0aWNsZVN5c3RlbSA9IGNjLlBhcnRpY2xlU3lzdGVtO1xyXG5pbXBvcnQgaW5zdGFudGlhdGUgPSBjYy5pbnN0YW50aWF0ZTtcclxuXHJcbmV4cG9ydCBjbGFzcyBMUVBvb2xVdGlsIHtcclxuICAgIHByaXZhdGUgc3RhdGljIGFueV9wb29sOiB7IFtrZXk6IHN0cmluZ106IE5vZGVbXSB9ID0ge307XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcmVzZXRfYW5pKG5vZGU6IE5vZGUpIHtcclxuICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoQW5pbWF0aW9uKTtcclxuICAgICAgICBpZiAoYW5pKSB7XHJcbiAgICAgICAgICAgIGxldCBjbGlwID0gYW5pLmN1cnJlbnRDbGlwID8gYW5pLmN1cnJlbnRDbGlwIDogYW5pLmRlZmF1bHRDbGlwO1xyXG4gICAgICAgICAgICBpZiAoIWNsaXApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoYW5pLnBsYXlPbkxvYWQgJiYgY2xpcCAmJiBjbGlwLndyYXBNb2RlID09PSBjYy5XcmFwTW9kZS5Ob3JtYWwpIHtcclxuICAgICAgICAgICAgICAgIGFuaS5wbGF5KGNsaXAubmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgYW5pID0gbm9kZS5nZXRDb21wb25lbnQoc3AuU2tlbGV0b24pO1xyXG4gICAgICAgICAgICBpZiAoYW5pICYmICFhbmkubG9vcCkge1xyXG4gICAgICAgICAgICAgICAgYW5pLnNldEFuaW1hdGlvbigwLCBhbmkuYW5pbWF0aW9uLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub2RlLmNoaWxkcmVuQ291bnQ7IGkrKykge1xyXG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG5vZGUuY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRfYW5pKGNoaWxkKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlOiBOb2RlLCBvYmo6IHsgaGFzOiBib29sZWFuIH0pIHtcclxuICAgICAgICBjb25zdCBwID0gbm9kZS5nZXRDb21wb25lbnQoUGFydGljbGVTeXN0ZW0pO1xyXG4gICAgICAgIGlmIChwKSB7XHJcbiAgICAgICAgICAgIHAuc3RvcFN5c3RlbSgpO1xyXG4gICAgICAgICAgICBvYmouaGFzID0gdHJ1ZTtcclxuICAgICAgICAgICAgcC5ub2RlLm9wYWNpdHkgPSAwO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShjaGlsZCwgb2JqKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHN0YXRpYyByZWN1cnNpb25fcmVzZXRfcGFydGljbGUobm9kZTogTm9kZSkge1xyXG4gICAgICAgIGlmICghbm9kZS5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcCA9IG5vZGUuZ2V0Q29tcG9uZW50KFBhcnRpY2xlU3lzdGVtKTtcclxuICAgICAgICBpZiAocCkge1xyXG4gICAgICAgICAgICBwLnJlc2V0U3lzdGVtKCk7XHJcbiAgICAgICAgICAgIHAubm9kZS5vcGFjaXR5ID0gMjU1O1xyXG4gICAgICAgIH1cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vZGUuY2hpbGRyZW5Db3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gbm9kZS5jaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgdGhpcy5yZWN1cnNpb25fcmVzZXRfcGFydGljbGUoY2hpbGQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldF9ub2RlX2Zyb21fcG9vbChub2RlX3BhcmVudDogTm9kZSwgcHJlZmFiOiBOb2RlKSB7XHJcbiAgICAgICAgbGV0IGFyciA9IHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdO1xyXG4gICAgICAgIGlmICghYXJyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYW55X3Bvb2xbcHJlZmFiLnV1aWRdID0gW107XHJcbiAgICAgICAgICAgIGFyciA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbm9kZSA9IGFyci5wb3AoKTtcclxuICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICBub2RlID0gaW5zdGFudGlhdGUocHJlZmFiKTtcclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIG5vZGUucmVjb3ZlcnlfdXVpZCA9IHByZWZhYi51dWlkO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSBmYWxzZTtcclxuICAgICAgICAgICAgbm9kZV9wYXJlbnQuYWRkQ2hpbGQobm9kZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbm9kZS5hY3RpdmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgbm9kZS5pc19mcm9tX3Bvb2wgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnJlc2V0X2FuaShub2RlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgY2hlY2tfcG9vbF9wdXNoKGFycjogTm9kZVtdLCBub2RlOiBOb2RlKSB7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGFycltpXSA9PT0gbm9kZSkge1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYOaxoOWtkOS4jeiDvemHjeWkjea3u+WKoOiKgueCuWAsIG5vZGUubmFtZSwgbm9kZS5yZWNvdmVyeV91dWlkKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBub2RlLmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICAgIGFyci5wdXNoKG5vZGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzdGF0aWMgcHVzaF9ub2RlX3RvX3Bvb2wobm9kZTogTm9kZSkge1xyXG4gICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgIGlmICghbm9kZS5yZWNvdmVyeV91dWlkIHx8ICF0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0pIHtcclxuICAgICAgICAgICAgaWYgKG5vZGUuaXNWYWxpZCkge1xyXG4gICAgICAgICAgICAgICAgbm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBvYmo6IHsgaGFzOiBib29sZWFuIH0gPSB7aGFzOiBmYWxzZX07XHJcbiAgICAgICAgdGhpcy5yZWN1cnNpb25fc3RvcF9wYXJ0aWNsZShub2RlLCBvYmopO1xyXG4gICAgICAgIGlmIChvYmouaGFzKSB7XHJcbiAgICAgICAgICAgIGxldCBvbGRfb3BhY2l0eSA9IG5vZGUub3BhY2l0eTtcclxuICAgICAgICAgICAgbm9kZS5vcGFjaXR5ID0gMDtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlY3Vyc2lvbl9yZXNldF9wYXJ0aWNsZShub2RlKTtcclxuICAgICAgICAgICAgICAgIG5vZGUub3BhY2l0eSA9IG9sZF9vcGFjaXR5O1xyXG4gICAgICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICB0aGlzLmNoZWNrX3Bvb2xfcHVzaCh0aGlzLmFueV9wb29sW25vZGUucmVjb3ZlcnlfdXVpZF0sIG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoTiledLayer.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'd60cfrGbXBLBbplLoT7TBn7', 'TmoTiledLayer'); +// Script/TmoTiledLayer.js + +"use strict"; + +exports.__esModule = true; +exports["default"] = void 0; +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html + +var _mat4_temp = cc.mat4(); +var _vec2_temp = cc.v2(); +var _vec2_temp2 = cc.v2(); +var _default = cc.Class({ + "extends": cc.TiledLayer, + // 此处修改 增加firstTmxLayer参数 + _init: function _init(layerInfo, mapInfo, tilesets, textures, texGrids, tiledMap, firstTmxLayer) { + // 修改结束 + this._cullingDirty = true; + this._layerInfo = layerInfo; + this._mapInfo = mapInfo; + // 此处修改 保存firstTmxLayer参数 + this._firstTmxLayer = firstTmxLayer; + this._tiledMap = tiledMap; + // 修改结束 + + var size = layerInfo._layerSize; + + // layerInfo + this._layerName = layerInfo.name; + this._tiles = layerInfo._tiles; + this._properties = layerInfo.properties; + this._layerSize = size; + this._minGID = layerInfo._minGID; + this._maxGID = layerInfo._maxGID; + this._opacity = layerInfo._opacity; + this._renderOrder = mapInfo.renderOrder; + this._staggerAxis = mapInfo.getStaggerAxis(); + this._staggerIndex = mapInfo.getStaggerIndex(); + this._hexSideLength = mapInfo.getHexSideLength(); + this._animations = mapInfo.getTileAnimations(); + + // tilesets + this._tilesets = tilesets; + // textures + this._textures = textures; + // grid texture + this._texGrids = texGrids; + + // mapInfo + this._layerOrientation = mapInfo.orientation; + this._mapTileSize = mapInfo.getTileSize(); + var maptw = this._mapTileSize.width; + var mapth = this._mapTileSize.height; + var layerW = this._layerSize.width; + var layerH = this._layerSize.height; + if (this._layerOrientation === cc.TiledMap.Orientation.HEX) { + // handle hex map + var TiledMap = cc.TiledMap; + var StaggerAxis = TiledMap.StaggerAxis; + var StaggerIndex = TiledMap.StaggerIndex; + var width = 0, + height = 0; + this._odd_even = this._staggerIndex === StaggerIndex.STAGGERINDEX_ODD ? 1 : -1; + if (this._staggerAxis === StaggerAxis.STAGGERAXIS_X) { + this._diffX1 = (maptw - this._hexSideLength) / 2; + this._diffY1 = 0; + height = mapth * (layerH + 0.5); + width = (maptw + this._hexSideLength) * Math.floor(layerW / 2) + maptw * (layerW % 2); + } else { + this._diffX1 = 0; + this._diffY1 = (mapth - this._hexSideLength) / 2; + width = maptw * (layerW + 0.5); + height = (mapth + this._hexSideLength) * Math.floor(layerH / 2) + mapth * (layerH % 2); + } + this.node.setContentSize(width, height); + } else if (this._layerOrientation === cc.TiledMap.Orientation.ISO) { + var wh = layerW + layerH; + this.node.setContentSize(maptw * 0.5 * wh, mapth * 0.5 * wh); + } else { + this.node.setContentSize(layerW * maptw, layerH * mapth); + } + + // offset (after layer orientation is set); + this._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); + this._useAutomaticVertexZ = false; + this._vertexZvalue = 0; + this._syncAnchorPoint(); + this._prepareToRender(); + }, + _updateCulling: function _updateCulling() { + if (CC_EDITOR) { + this.enableCulling(false); + } else if (this._enableCulling) { + // 此处修改 若不为首个layer 直接复用firstLayer的结果 + // this._firstTmxLayer不为空时 表示当前layer不是首个layer + var firstTmxLayer = this._firstTmxLayer; + if (!!firstTmxLayer) { + this._cullingRect = firstTmxLayer._cullingRect; + this._cullingDirty = firstTmxLayer._cacheCullingDirty; + return; + } + // 修改结束 + + this.node._updateWorldMatrix(); + cc.Mat4.invert(_mat4_temp, this.node._worldMatrix); + var rect = cc.visibleRect; + var camera = cc.Camera.findCamera(this.node); + if (camera) { + _vec2_temp.x = 0; + _vec2_temp.y = 0; + _vec2_temp2.x = _vec2_temp.x + rect.width; + _vec2_temp2.y = _vec2_temp.y + rect.height; + camera.getScreenToWorldPoint(_vec2_temp, _vec2_temp); + camera.getScreenToWorldPoint(_vec2_temp2, _vec2_temp2); + cc.Vec2.transformMat4(_vec2_temp, _vec2_temp, _mat4_temp); + cc.Vec2.transformMat4(_vec2_temp2, _vec2_temp2, _mat4_temp); + this._updateViewPort(_vec2_temp.x, _vec2_temp.y, _vec2_temp2.x - _vec2_temp.x, _vec2_temp2.y - _vec2_temp.y); + // 此处修改 若为首个layer 缓存_cullingDirty。 + // _cullingDirty会在填充渲染数据后被改为false 所以需要缓存这里的结果 + if (!firstTmxLayer) { + this._cacheCullingDirty = this._cullingDirty; + } + // 修改结束 + } + } + }, + _traverseAllGrid: function _traverseAllGrid() { + var tiles = this._tiles; + var texGrids = this._texGrids; + var tilesetIndexArr = this._tilesetIndexArr; + var tilesetIndexToArrIndex = this._tilesetIndexToArrIndex = {}; + var TiledMap = cc.TiledMap; + var TileFlag = TiledMap.TileFlag; + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + var singleTexture = this._tiledMap.isSingleTexture(); + tilesetIndexArr.length = 0; + for (var i = 0; i < tiles.length; i++) { + var gid = tiles[i]; + if (gid === 0) continue; + gid = (gid & FLIPPED_MASK) >>> 0; + var grid = texGrids[gid]; + if (!grid) { + cc.error("CCTiledLayer:_traverseAllGrid grid is null, gid is:", gid); + continue; + } + var tilesetIdx = grid.texId; + if (tilesetIndexToArrIndex[tilesetIdx] !== undefined) continue; + tilesetIndexToArrIndex[tilesetIdx] = tilesetIndexArr.length; + tilesetIndexArr.push(tilesetIdx); + + // 此处修改 当只有一个图集时 可以直接停止遍历 + if (singleTexture) { + break; + } + // 修改结束 + } + } +}); +exports["default"] = _default; +module.exports = exports["default"]; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRMYXllci5qcyJdLCJuYW1lcyI6WyJfbWF0NF90ZW1wIiwiY2MiLCJtYXQ0IiwiX3ZlYzJfdGVtcCIsInYyIiwiX3ZlYzJfdGVtcDIiLCJfZGVmYXVsdCIsIkNsYXNzIiwiVGlsZWRMYXllciIsIl9pbml0IiwibGF5ZXJJbmZvIiwibWFwSW5mbyIsInRpbGVzZXRzIiwidGV4dHVyZXMiLCJ0ZXhHcmlkcyIsInRpbGVkTWFwIiwiZmlyc3RUbXhMYXllciIsIl9jdWxsaW5nRGlydHkiLCJfbGF5ZXJJbmZvIiwiX21hcEluZm8iLCJfZmlyc3RUbXhMYXllciIsIl90aWxlZE1hcCIsInNpemUiLCJfbGF5ZXJTaXplIiwiX2xheWVyTmFtZSIsIm5hbWUiLCJfdGlsZXMiLCJfcHJvcGVydGllcyIsInByb3BlcnRpZXMiLCJfbWluR0lEIiwiX21heEdJRCIsIl9vcGFjaXR5IiwiX3JlbmRlck9yZGVyIiwicmVuZGVyT3JkZXIiLCJfc3RhZ2dlckF4aXMiLCJnZXRTdGFnZ2VyQXhpcyIsIl9zdGFnZ2VySW5kZXgiLCJnZXRTdGFnZ2VySW5kZXgiLCJfaGV4U2lkZUxlbmd0aCIsImdldEhleFNpZGVMZW5ndGgiLCJfYW5pbWF0aW9ucyIsImdldFRpbGVBbmltYXRpb25zIiwiX3RpbGVzZXRzIiwiX3RleHR1cmVzIiwiX3RleEdyaWRzIiwiX2xheWVyT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsIl9tYXBUaWxlU2l6ZSIsImdldFRpbGVTaXplIiwibWFwdHciLCJ3aWR0aCIsIm1hcHRoIiwiaGVpZ2h0IiwibGF5ZXJXIiwibGF5ZXJIIiwiVGlsZWRNYXAiLCJPcmllbnRhdGlvbiIsIkhFWCIsIlN0YWdnZXJBeGlzIiwiU3RhZ2dlckluZGV4IiwiX29kZF9ldmVuIiwiU1RBR0dFUklOREVYX09ERCIsIlNUQUdHRVJBWElTX1giLCJfZGlmZlgxIiwiX2RpZmZZMSIsIk1hdGgiLCJmbG9vciIsIm5vZGUiLCJzZXRDb250ZW50U2l6ZSIsIklTTyIsIndoIiwiX29mZnNldCIsIm9mZnNldCIsIngiLCJ5IiwiX3VzZUF1dG9tYXRpY1ZlcnRleFoiLCJfdmVydGV4WnZhbHVlIiwiX3N5bmNBbmNob3JQb2ludCIsIl9wcmVwYXJlVG9SZW5kZXIiLCJfdXBkYXRlQ3VsbGluZyIsIkNDX0VESVRPUiIsImVuYWJsZUN1bGxpbmciLCJfZW5hYmxlQ3VsbGluZyIsIl9jdWxsaW5nUmVjdCIsIl9jYWNoZUN1bGxpbmdEaXJ0eSIsIl91cGRhdGVXb3JsZE1hdHJpeCIsIk1hdDQiLCJpbnZlcnQiLCJfd29ybGRNYXRyaXgiLCJyZWN0IiwidmlzaWJsZVJlY3QiLCJjYW1lcmEiLCJDYW1lcmEiLCJmaW5kQ2FtZXJhIiwiZ2V0U2NyZWVuVG9Xb3JsZFBvaW50IiwiVmVjMiIsInRyYW5zZm9ybU1hdDQiLCJfdXBkYXRlVmlld1BvcnQiLCJfdHJhdmVyc2VBbGxHcmlkIiwidGlsZXMiLCJ0aWxlc2V0SW5kZXhBcnIiLCJfdGlsZXNldEluZGV4QXJyIiwidGlsZXNldEluZGV4VG9BcnJJbmRleCIsIl90aWxlc2V0SW5kZXhUb0FyckluZGV4IiwiVGlsZUZsYWciLCJGTElQUEVEX01BU0siLCJzaW5nbGVUZXh0dXJlIiwiaXNTaW5nbGVUZXh0dXJlIiwibGVuZ3RoIiwiaSIsImdpZCIsImdyaWQiLCJlcnJvciIsInRpbGVzZXRJZHgiLCJ0ZXhJZCIsInVuZGVmaW5lZCIsInB1c2giLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQUlBLFVBQVUsR0FBR0MsRUFBRSxDQUFDQyxJQUFJLEVBQUU7QUFDMUIsSUFBSUMsVUFBVSxHQUFHRixFQUFFLENBQUNHLEVBQUUsRUFBRTtBQUN4QixJQUFJQyxXQUFXLEdBQUdKLEVBQUUsQ0FBQ0csRUFBRSxFQUFFO0FBQUMsSUFBQUUsUUFBQSxHQUVY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QUFBL0csUUFBQTtBQUFBZ0gsTUFBQSxDQUFBRCxPQUFBLEdBQUFBLE9BQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxubGV0IF9tYXQ0X3RlbXAgPSBjYy5tYXQ0KCk7XHJcbmxldCBfdmVjMl90ZW1wID0gY2MudjIoKTtcclxubGV0IF92ZWMyX3RlbXAyID0gY2MudjIoKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNjLkNsYXNzKHtcclxuICAgIGV4dGVuZHM6IGNjLlRpbGVkTGF5ZXIsXHJcblxyXG4gICAgLy8g5q2k5aSE5L+u5pS5IOWinuWKoGZpcnN0VG14TGF5ZXLlj4LmlbBcclxuICAgIF9pbml0KGxheWVySW5mbywgbWFwSW5mbywgdGlsZXNldHMsIHRleHR1cmVzLCB0ZXhHcmlkcywgdGlsZWRNYXAsIGZpcnN0VG14TGF5ZXIpIHtcclxuICAgICAgICAvLyDkv67mlLnnu5PmnZ9cclxuICAgICAgICB0aGlzLl9jdWxsaW5nRGlydHkgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2xheWVySW5mbyA9IGxheWVySW5mbztcclxuICAgICAgICB0aGlzLl9tYXBJbmZvID0gbWFwSW5mbztcclxuICAgICAgICAvLyDmraTlpITkv67mlLkg5L+d5a2YZmlyc3RUbXhMYXllcuWPguaVsFxyXG4gICAgICAgIHRoaXMuX2ZpcnN0VG14TGF5ZXIgPSBmaXJzdFRteExheWVyO1xyXG4gICAgICAgIHRoaXMuX3RpbGVkTWFwID0gdGlsZWRNYXA7XHJcbiAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcblxyXG4gICAgICAgIGxldCBzaXplID0gbGF5ZXJJbmZvLl9sYXllclNpemU7XHJcblxyXG4gICAgICAgIC8vIGxheWVySW5mb1xyXG4gICAgICAgIHRoaXMuX2xheWVyTmFtZSA9IGxheWVySW5mby5uYW1lO1xyXG4gICAgICAgIHRoaXMuX3RpbGVzID0gbGF5ZXJJbmZvLl90aWxlcztcclxuICAgICAgICB0aGlzLl9wcm9wZXJ0aWVzID0gbGF5ZXJJbmZvLnByb3BlcnRpZXM7XHJcbiAgICAgICAgdGhpcy5fbGF5ZXJTaXplID0gc2l6ZTtcclxuICAgICAgICB0aGlzLl9taW5HSUQgPSBsYXllckluZm8uX21pbkdJRDtcclxuICAgICAgICB0aGlzLl9tYXhHSUQgPSBsYXllckluZm8uX21heEdJRDtcclxuICAgICAgICB0aGlzLl9vcGFjaXR5ID0gbGF5ZXJJbmZvLl9vcGFjaXR5O1xyXG4gICAgICAgIHRoaXMuX3JlbmRlck9yZGVyID0gbWFwSW5mby5yZW5kZXJPcmRlcjtcclxuICAgICAgICB0aGlzLl9zdGFnZ2VyQXhpcyA9IG1hcEluZm8uZ2V0U3RhZ2dlckF4aXMoKTtcclxuICAgICAgICB0aGlzLl9zdGFnZ2VySW5kZXggPSBtYXBJbmZvLmdldFN0YWdnZXJJbmRleCgpO1xyXG4gICAgICAgIHRoaXMuX2hleFNpZGVMZW5ndGggPSBtYXBJbmZvLmdldEhleFNpZGVMZW5ndGgoKTtcclxuICAgICAgICB0aGlzLl9hbmltYXRpb25zID0gbWFwSW5mby5nZXRUaWxlQW5pbWF0aW9ucygpO1xyXG5cclxuICAgICAgICAvLyB0aWxlc2V0c1xyXG4gICAgICAgIHRoaXMuX3RpbGVzZXRzID0gdGlsZXNldHM7XHJcbiAgICAgICAgLy8gdGV4dHVyZXNcclxuICAgICAgICB0aGlzLl90ZXh0dXJlcyA9IHRleHR1cmVzO1xyXG4gICAgICAgIC8vIGdyaWQgdGV4dHVyZVxyXG4gICAgICAgIHRoaXMuX3RleEdyaWRzID0gdGV4R3JpZHM7XHJcblxyXG4gICAgICAgIC8vIG1hcEluZm9cclxuICAgICAgICB0aGlzLl9sYXllck9yaWVudGF0aW9uID0gbWFwSW5mby5vcmllbnRhdGlvbjtcclxuICAgICAgICB0aGlzLl9tYXBUaWxlU2l6ZSA9IG1hcEluZm8uZ2V0VGlsZVNpemUoKTtcclxuXHJcbiAgICAgICAgbGV0IG1hcHR3ID0gdGhpcy5fbWFwVGlsZVNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IG1hcHRoID0gdGhpcy5fbWFwVGlsZVNpemUuaGVpZ2h0O1xyXG4gICAgICAgIGxldCBsYXllclcgPSB0aGlzLl9sYXllclNpemUud2lkdGg7XHJcbiAgICAgICAgbGV0IGxheWVySCA9IHRoaXMuX2xheWVyU2l6ZS5oZWlnaHQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9sYXllck9yaWVudGF0aW9uID09PSBjYy5UaWxlZE1hcC5PcmllbnRhdGlvbi5IRVgpIHtcclxuICAgICAgICAgICAgLy8gaGFuZGxlIGhleCBtYXBcclxuICAgICAgICAgICAgY29uc3QgVGlsZWRNYXAgPSBjYy5UaWxlZE1hcDtcclxuICAgICAgICAgICAgY29uc3QgU3RhZ2dlckF4aXMgPSBUaWxlZE1hcC5TdGFnZ2VyQXhpcztcclxuICAgICAgICAgICAgY29uc3QgU3RhZ2dlckluZGV4ID0gVGlsZWRNYXAuU3RhZ2dlckluZGV4O1xyXG4gICAgICAgICAgICBsZXQgd2lkdGggPSAwLCBoZWlnaHQgPSAwO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fb2RkX2V2ZW4gPSAodGhpcy5fc3RhZ2dlckluZGV4ID09PSBTdGFnZ2VySW5kZXguU1RBR0dFUklOREVYX09ERCkgPyAxIDogLTE7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdGFnZ2VyQXhpcyA9PT0gU3RhZ2dlckF4aXMuU1RBR0dFUkFYSVNfWCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlgxID0gKG1hcHR3IC0gdGhpcy5faGV4U2lkZUxlbmd0aCkgLyAyO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlkxID0gMDtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IG1hcHRoICogKGxheWVySCArIDAuNSk7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCA9IChtYXB0dyArIHRoaXMuX2hleFNpZGVMZW5ndGgpICogTWF0aC5mbG9vcihsYXllclcgLyAyKSArIG1hcHR3ICogKGxheWVyVyAlIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fZGlmZlgxID0gMDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2RpZmZZMSA9IChtYXB0aCAtIHRoaXMuX2hleFNpZGVMZW5ndGgpIC8gMjtcclxuICAgICAgICAgICAgICAgIHdpZHRoID0gbWFwdHcgKiAobGF5ZXJXICsgMC41KTtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IChtYXB0aCArIHRoaXMuX2hleFNpZGVMZW5ndGgpICogTWF0aC5mbG9vcihsYXllckggLyAyKSArIG1hcHRoICogKGxheWVySCAlIDIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2xheWVyT3JpZW50YXRpb24gPT09IGNjLlRpbGVkTWFwLk9yaWVudGF0aW9uLklTTykge1xyXG4gICAgICAgICAgICBsZXQgd2ggPSBsYXllclcgKyBsYXllckg7XHJcbiAgICAgICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZShtYXB0dyAqIDAuNSAqIHdoLCBtYXB0aCAqIDAuNSAqIHdoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm5vZGUuc2V0Q29udGVudFNpemUobGF5ZXJXICogbWFwdHcsIGxheWVySCAqIG1hcHRoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIG9mZnNldCAoYWZ0ZXIgbGF5ZXIgb3JpZW50YXRpb24gaXMgc2V0KTtcclxuICAgICAgICB0aGlzLl9vZmZzZXQgPSBjYy52MihsYXllckluZm8ub2Zmc2V0LngsIC1sYXllckluZm8ub2Zmc2V0LnkpO1xyXG4gICAgICAgIHRoaXMuX3VzZUF1dG9tYXRpY1ZlcnRleFogPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl92ZXJ0ZXhadmFsdWUgPSAwO1xyXG4gICAgICAgIHRoaXMuX3N5bmNBbmNob3JQb2ludCgpO1xyXG4gICAgICAgIHRoaXMuX3ByZXBhcmVUb1JlbmRlcigpO1xyXG4gICAgfSxcclxuICAgIF91cGRhdGVDdWxsaW5nKCkge1xyXG4gICAgICAgIGlmIChDQ19FRElUT1IpIHtcclxuICAgICAgICAgICAgdGhpcy5lbmFibGVDdWxsaW5nKGZhbHNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2VuYWJsZUN1bGxpbmcpIHtcclxuICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOiLpeS4jeS4uummluS4qmxheWVyIOebtOaOpeWkjeeUqGZpcnN0TGF5ZXLnmoTnu5PmnpxcclxuICAgICAgICAgICAgLy8gdGhpcy5fZmlyc3RUbXhMYXllcuS4jeS4uuepuuaXtiDooajnpLrlvZPliY1sYXllcuS4jeaYr+mmluS4qmxheWVyXHJcbiAgICAgICAgICAgIGxldCBmaXJzdFRteExheWVyID0gdGhpcy5fZmlyc3RUbXhMYXllcjtcclxuICAgICAgICAgICAgaWYgKCEhZmlyc3RUbXhMYXllcikge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY3VsbGluZ1JlY3QgPSBmaXJzdFRteExheWVyLl9jdWxsaW5nUmVjdDtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2N1bGxpbmdEaXJ0eSA9IGZpcnN0VG14TGF5ZXIuX2NhY2hlQ3VsbGluZ0RpcnR5O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOS/ruaUuee7k+adn1xyXG5cclxuICAgICAgICAgICAgdGhpcy5ub2RlLl91cGRhdGVXb3JsZE1hdHJpeCgpO1xyXG4gICAgICAgICAgICBjYy5NYXQ0LmludmVydChfbWF0NF90ZW1wLCB0aGlzLm5vZGUuX3dvcmxkTWF0cml4KTtcclxuICAgICAgICAgICAgbGV0IHJlY3QgPSBjYy52aXNpYmxlUmVjdDtcclxuICAgICAgICAgICAgbGV0IGNhbWVyYSA9IGNjLkNhbWVyYS5maW5kQ2FtZXJhKHRoaXMubm9kZSk7XHJcbiAgICAgICAgICAgIGlmIChjYW1lcmEpIHtcclxuICAgICAgICAgICAgICAgIF92ZWMyX3RlbXAueCA9IDA7XHJcbiAgICAgICAgICAgICAgICBfdmVjMl90ZW1wLnkgPSAwO1xyXG4gICAgICAgICAgICAgICAgX3ZlYzJfdGVtcDIueCA9IF92ZWMyX3RlbXAueCArIHJlY3Qud2lkdGg7XHJcbiAgICAgICAgICAgICAgICBfdmVjMl90ZW1wMi55ID0gX3ZlYzJfdGVtcC55ICsgcmVjdC5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBjYW1lcmEuZ2V0U2NyZWVuVG9Xb3JsZFBvaW50KF92ZWMyX3RlbXAsIF92ZWMyX3RlbXApO1xyXG4gICAgICAgICAgICAgICAgY2FtZXJhLmdldFNjcmVlblRvV29ybGRQb2ludChfdmVjMl90ZW1wMiwgX3ZlYzJfdGVtcDIpO1xyXG4gICAgICAgICAgICAgICAgY2MuVmVjMi50cmFuc2Zvcm1NYXQ0KF92ZWMyX3RlbXAsIF92ZWMyX3RlbXAsIF9tYXQ0X3RlbXApO1xyXG4gICAgICAgICAgICAgICAgY2MuVmVjMi50cmFuc2Zvcm1NYXQ0KF92ZWMyX3RlbXAyLCBfdmVjMl90ZW1wMiwgX21hdDRfdGVtcCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVmlld1BvcnQoX3ZlYzJfdGVtcC54LCBfdmVjMl90ZW1wLnksIF92ZWMyX3RlbXAyLnggLSBfdmVjMl90ZW1wLngsIF92ZWMyX3RlbXAyLnkgLSBfdmVjMl90ZW1wLnkpO1xyXG4gICAgICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOiLpeS4uummluS4qmxheWVyIOe8k+WtmF9jdWxsaW5nRGlydHnjgIJcclxuICAgICAgICAgICAgICAgIC8vIF9jdWxsaW5nRGlydHnkvJrlnKjloavlhYXmuLLmn5PmlbDmja7lkI7ooqvmlLnkuLpmYWxzZSDmiYDku6XpnIDopoHnvJPlrZjov5nph4znmoTnu5PmnpxcclxuICAgICAgICAgICAgICAgIGlmICghZmlyc3RUbXhMYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlQ3VsbGluZ0RpcnR5ID0gdGhpcy5fY3VsbGluZ0RpcnR5O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgX3RyYXZlcnNlQWxsR3JpZCAoKSB7XHJcbiAgICAgICAgbGV0IHRpbGVzID0gdGhpcy5fdGlsZXM7XHJcbiAgICAgICAgbGV0IHRleEdyaWRzID0gdGhpcy5fdGV4R3JpZHM7XHJcbiAgICAgICAgbGV0IHRpbGVzZXRJbmRleEFyciA9IHRoaXMuX3RpbGVzZXRJbmRleEFycjtcclxuICAgICAgICBsZXQgdGlsZXNldEluZGV4VG9BcnJJbmRleCA9IHRoaXMuX3RpbGVzZXRJbmRleFRvQXJySW5kZXggPSB7fTtcclxuXHJcbiAgICAgICAgY29uc3QgVGlsZWRNYXAgPSBjYy5UaWxlZE1hcDtcclxuICAgICAgICBjb25zdCBUaWxlRmxhZyA9IFRpbGVkTWFwLlRpbGVGbGFnO1xyXG4gICAgICAgIGNvbnN0IEZMSVBQRURfTUFTSyA9IFRpbGVGbGFnLkZMSVBQRURfTUFTSztcclxuXHJcbiAgICAgICAgbGV0IHNpbmdsZVRleHR1cmUgPSB0aGlzLl90aWxlZE1hcC5pc1NpbmdsZVRleHR1cmUoKTtcclxuXHJcbiAgICAgICAgdGlsZXNldEluZGV4QXJyLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aWxlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgZ2lkID0gdGlsZXNbaV07XHJcbiAgICAgICAgICAgIGlmIChnaWQgPT09IDApIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBnaWQgPSAoKGdpZCAmIEZMSVBQRURfTUFTSykgPj4+IDApO1xyXG4gICAgICAgICAgICBsZXQgZ3JpZCA9IHRleEdyaWRzW2dpZF07XHJcbiAgICAgICAgICAgIGlmICghZ3JpZCkge1xyXG4gICAgICAgICAgICAgICAgY2MuZXJyb3IoXCJDQ1RpbGVkTGF5ZXI6X3RyYXZlcnNlQWxsR3JpZCBncmlkIGlzIG51bGwsIGdpZCBpczpcIiwgZ2lkKTtcclxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB0aWxlc2V0SWR4ID0gZ3JpZC50ZXhJZDtcclxuICAgICAgICAgICAgaWYgKHRpbGVzZXRJbmRleFRvQXJySW5kZXhbdGlsZXNldElkeF0gIT09IHVuZGVmaW5lZCkgY29udGludWU7XHJcbiAgICAgICAgICAgIHRpbGVzZXRJbmRleFRvQXJySW5kZXhbdGlsZXNldElkeF0gPSB0aWxlc2V0SW5kZXhBcnIubGVuZ3RoO1xyXG4gICAgICAgICAgICB0aWxlc2V0SW5kZXhBcnIucHVzaCh0aWxlc2V0SWR4KTtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDlvZPlj6rmnInkuIDkuKrlm77pm4bml7Yg5Y+v5Lul55u05o6l5YGc5q2i6YGN5Y6GXHJcbiAgICAgICAgICAgIGlmIChzaW5nbGVUZXh0dXJlKSB7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyDkv67mlLnnu5PmnZ9cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG59KTtcclxuIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -17736,333 +15354,333 @@ cc._RF.pop(); return __quick_compile_project__.require(request, __filename); }; function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '18d1c5ObBtCeaysyO5bMIgb', 'TmoAssembler'); -// Script/TmoAssembler.js - -"use strict"; - -exports.__esModule = true; -exports.TmoAssembler = void 0; -function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } -function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } -function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } -function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } -function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } -function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } -var gfx = cc.gfx; -// 颜色去除 + 物件图集合批 -var vfmtPosUvIndex = new gfx.VertexFormat([{ - name: gfx.ATTR_POSITION, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: gfx.ATTR_UV0, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: "a_texture_idx", - type: gfx.ATTR_TYPE_FLOAT32, - num: 1 -}]); - -// 仅物件图集合批 -var vfmtPosUvColorIndex = new gfx.VertexFormat([{ - name: gfx.ATTR_POSITION, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: gfx.ATTR_UV0, - type: gfx.ATTR_TYPE_FLOAT32, - num: 2 -}, { - name: "a_texture_idx", - type: gfx.ATTR_TYPE_FLOAT32, - num: 1 -}, { - name: gfx.ATTR_COLOR, - type: gfx.ATTR_TYPE_UINT8, - num: 4, - normalize: true -}]); -var TmoAssembler = /*#__PURE__*/function (_cc$Assembler) { - _inheritsLoose(TmoAssembler, _cc$Assembler); - function TmoAssembler() { - return _cc$Assembler.apply(this, arguments) || this; - } - var _proto = TmoAssembler.prototype; - _proto.init = function init(comp) { - _cc$Assembler.prototype.init.call(this, comp); - this._noColor = comp.isNoColor(); - this.updateColor = this._noColor ? undefined : this.updateColorFunc; - this.uvOffset = 2; - this.colorOffset = 5; - this.textureIndexOffset = 4; - this.floatsPerVert = this._noColor ? 5 : 6; - this.indicesCount = 6; - this.verticesCount = 4; - this._renderData = new cc.RenderData(); - this._renderData.init(this); - this.initLocal(); - this.initData(); - }; - _proto.initLocal = function initLocal() { - this._local = []; - this._local.length = 4; - }; - _proto.initData = function initData() { - var data = this._renderData; - data.createFlexData(0, this.verticesCount, this.indicesCount, this.getVfmt()); - - // 填充顶点索引信息 - var indices = data.iDatas[0]; - var count = indices.length / 6; - for (var i = 0, idx = 0; i < count; i++) { - var vertextID = i * 4; - indices[idx++] = vertextID; - indices[idx++] = vertextID + 1; - indices[idx++] = vertextID + 2; - indices[idx++] = vertextID + 1; - indices[idx++] = vertextID + 3; - indices[idx++] = vertextID + 2; - } - }; - _proto.getBuffer = function getBuffer() { - return cc.renderer._handle.getBuffer("mesh", this.getVfmt()); - }; - _proto.getVfmt = function getVfmt() { - return this._noColor ? vfmtPosUvIndex : vfmtPosUvColorIndex; - }; - _proto.updateRenderData = function updateRenderData(sprite) { - this.packToDynamicAtlas(sprite, sprite._spriteFrame); - if (sprite._vertsDirty) { - this.updateUVs(sprite); - this.updateVerts(sprite); - this.updateTextureIdx(sprite); - sprite._vertsDirty = false; - } - } - - /** - * 填充textureIndex数据 - * @param {cc.Sprite} sprite - */; - _proto.updateTextureIdx = function updateTextureIdx(sprite) { - var textureIdx = sprite._textureIdx; - var verts = this._renderData.vDatas[0]; - var verticesCount = this.verticesCount; - var floatsPerVert = this.floatsPerVert; - var textureIndexOffset = this.textureIndexOffset; - for (var i = 0; i < verticesCount; i++) { - var index = i * floatsPerVert + textureIndexOffset; - verts[index] = textureIdx; - } - }; - _proto.updateUVs = function updateUVs(sprite) { - var uv = sprite._spriteFrame.uv; - var uvOffset = this.uvOffset; - var floatsPerVert = this.floatsPerVert; - var verts = this._renderData.vDatas[0]; - for (var i = 0; i < 4; i++) { - var srcOffset = i * 2; - var dstOffset = floatsPerVert * i + uvOffset; - verts[dstOffset] = uv[srcOffset]; - verts[dstOffset + 1] = uv[srcOffset + 1]; - } - }; - _proto.updateVerts = function updateVerts(sprite) { - var node = sprite.node, - cw = node.width, - ch = node.height, - appx = node.anchorX * cw, - appy = node.anchorY * ch, - l, - b, - r, - t; - if (sprite.trim) { - l = -appx; - b = -appy; - r = cw - appx; - t = ch - appy; - } else { - var frame = sprite.spriteFrame, - ow = frame._originalSize.width, - oh = frame._originalSize.height, - rw = frame._rect.width, - rh = frame._rect.height, - offset = frame._offset, - scaleX = cw / ow, - scaleY = ch / oh; - var trimLeft = offset.x + (ow - rw) / 2; - var trimRight = offset.x - (ow - rw) / 2; - var trimBottom = offset.y + (oh - rh) / 2; - var trimTop = offset.y - (oh - rh) / 2; - l = trimLeft * scaleX - appx; - b = trimBottom * scaleY - appy; - r = cw + trimRight * scaleX - appx; - t = ch + trimTop * scaleY - appy; - } - var local = this._local; - local[0] = l; - local[1] = b; - local[2] = r; - local[3] = t; - this.updateWorldVerts(sprite); - }; - _proto.updateColorFunc = function updateColorFunc(comp, color) { - var uintVerts = this._renderData.uintVDatas[0]; - if (!uintVerts) return; - color = color != null ? color : comp.node.color._val; - var floatsPerVert = this.floatsPerVert; - var colorOffset = this.colorOffset; - for (var i = colorOffset, l = uintVerts.length; i < l; i += floatsPerVert) { - uintVerts[i] = color; - } - }; - _proto.updateWorldVerts = function updateWorldVerts(comp) { - if (CC_NATIVERENDERER) { - // 原生平台兼容代码 复制于jsb-engine.js中的cc.Assembler2D.prototype.updateWorldVerts - var local = this._local; - var verts = this._renderData.vDatas[0]; - var vl = local[0], - vr = local[2], - vb = local[1], - vt = local[3]; - var floatsPerVert = this.floatsPerVert; - var vertexOffset = 0; // left bottom - - verts[vertexOffset] = vl; - verts[vertexOffset + 1] = vb; - vertexOffset += floatsPerVert; // right bottom - - verts[vertexOffset] = vr; - verts[vertexOffset + 1] = vb; - vertexOffset += floatsPerVert; // left top - - verts[vertexOffset] = vl; - verts[vertexOffset + 1] = vt; - vertexOffset += floatsPerVert; // right top - - verts[vertexOffset] = vr; - verts[vertexOffset + 1] = vt; - } else { - var _local = this._local; - var _verts = this._renderData.vDatas[0]; - var matrix = comp.node._worldMatrix; - var matrixm = matrix.m, - a = matrixm[0], - b = matrixm[1], - c = matrixm[4], - d = matrixm[5], - tx = matrixm[12], - ty = matrixm[13]; - var _vl = _local[0], - _vr = _local[2], - _vb = _local[1], - _vt = _local[3]; - var _floatsPerVert = this.floatsPerVert; - var _vertexOffset = 0; - var justTranslate = a === 1 && b === 0 && c === 0 && d === 1; - if (justTranslate) { - // left bottom - _verts[_vertexOffset] = _vl + tx; - _verts[_vertexOffset + 1] = _vb + ty; - _vertexOffset += _floatsPerVert; - // right bottom - _verts[_vertexOffset] = _vr + tx; - _verts[_vertexOffset + 1] = _vb + ty; - _vertexOffset += _floatsPerVert; - // left top - _verts[_vertexOffset] = _vl + tx; - _verts[_vertexOffset + 1] = _vt + ty; - _vertexOffset += _floatsPerVert; - // right top - _verts[_vertexOffset] = _vr + tx; - _verts[_vertexOffset + 1] = _vt + ty; - } else { - var al = a * _vl, - ar = a * _vr, - bl = b * _vl, - br = b * _vr, - cb = c * _vb, - ct = c * _vt, - db = d * _vb, - dt = d * _vt; - - // left bottom - _verts[_vertexOffset] = al + cb + tx; - _verts[_vertexOffset + 1] = bl + db + ty; - _vertexOffset += _floatsPerVert; - // right bottom - _verts[_vertexOffset] = ar + cb + tx; - _verts[_vertexOffset + 1] = br + db + ty; - _vertexOffset += _floatsPerVert; - // left top - _verts[_vertexOffset] = al + ct + tx; - _verts[_vertexOffset + 1] = bl + dt + ty; - _vertexOffset += _floatsPerVert; - // right top - _verts[_vertexOffset] = ar + ct + tx; - _verts[_vertexOffset + 1] = br + dt + ty; - } - } - }; - _proto.fillBuffers = function fillBuffers(comp, renderer) { - if (renderer.worldMatDirty) { - this.updateWorldVerts(comp); - } - var renderData = this._renderData; - var vData = renderData.vDatas[0]; - var iData = renderData.iDatas[0]; - var buffer = this.getBuffer(renderer); - var offsetInfo = buffer.request(this.verticesCount, this.indicesCount); - - // buffer data may be realloc, need get reference after request. - - // fill vertices - var vertexOffset = offsetInfo.byteOffset >> 2, - vbuf = buffer._vData; - if (vData.length + vertexOffset > vbuf.length) { - vbuf.set(vData.subarray(0, vbuf.length - vertexOffset), vertexOffset); - } else { - vbuf.set(vData, vertexOffset); - } - - // fill indices - var ibuf = buffer._iData, - indiceOffset = offsetInfo.indiceOffset, - vertexId = offsetInfo.vertexOffset; - for (var i = 0, l = iData.length; i < l; i++) { - ibuf[indiceOffset++] = vertexId + iData[i]; - } - }; - _proto.packToDynamicAtlas = function packToDynamicAtlas(comp, frame) { - if (CC_TEST) return; - if (!frame._original && cc.dynamicAtlasManager && frame._texture.packable) { - var packedFrame = cc.dynamicAtlasManager.insertSpriteFrame(frame); - if (packedFrame) { - frame._setDynamicAtlasFrame(packedFrame); - } - } - var material = comp._materials[0]; - if (!material) return; - if (material.getProperty('texture') !== frame._texture) { - // texture was packed to dynamic atlas, should update uvs - comp._vertsDirty = true; - comp._updateMaterial(); - } - }; - _createClass(TmoAssembler, [{ - key: "verticesFloats", - get: function get() { - return this.verticesCount * this.floatsPerVert; - } - }]); - return TmoAssembler; -}(cc.Assembler); -exports.TmoAssembler = TmoAssembler; - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '18d1c5ObBtCeaysyO5bMIgb', 'TmoAssembler'); +// Script/TmoAssembler.js + +"use strict"; + +exports.__esModule = true; +exports.TmoAssembler = void 0; +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); } +function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } +function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); } +function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } +var gfx = cc.gfx; +// 颜色去除 + 物件图集合批 +var vfmtPosUvIndex = new gfx.VertexFormat([{ + name: gfx.ATTR_POSITION, + type: gfx.ATTR_TYPE_FLOAT32, + num: 2 +}, { + name: gfx.ATTR_UV0, + type: gfx.ATTR_TYPE_FLOAT32, + num: 2 +}, { + name: "a_texture_idx", + type: gfx.ATTR_TYPE_FLOAT32, + num: 1 +}]); + +// 仅物件图集合批 +var vfmtPosUvColorIndex = new gfx.VertexFormat([{ + name: gfx.ATTR_POSITION, + type: gfx.ATTR_TYPE_FLOAT32, + num: 2 +}, { + name: gfx.ATTR_UV0, + type: gfx.ATTR_TYPE_FLOAT32, + num: 2 +}, { + name: "a_texture_idx", + type: gfx.ATTR_TYPE_FLOAT32, + num: 1 +}, { + name: gfx.ATTR_COLOR, + type: gfx.ATTR_TYPE_UINT8, + num: 4, + normalize: true +}]); +var TmoAssembler = /*#__PURE__*/function (_cc$Assembler) { + _inheritsLoose(TmoAssembler, _cc$Assembler); + function TmoAssembler() { + return _cc$Assembler.apply(this, arguments) || this; + } + var _proto = TmoAssembler.prototype; + _proto.init = function init(comp) { + _cc$Assembler.prototype.init.call(this, comp); + this._noColor = comp.isNoColor(); + this.updateColor = this._noColor ? undefined : this.updateColorFunc; + this.uvOffset = 2; + this.colorOffset = 5; + this.textureIndexOffset = 4; + this.floatsPerVert = this._noColor ? 5 : 6; + this.indicesCount = 6; + this.verticesCount = 4; + this._renderData = new cc.RenderData(); + this._renderData.init(this); + this.initLocal(); + this.initData(); + }; + _proto.initLocal = function initLocal() { + this._local = []; + this._local.length = 4; + }; + _proto.initData = function initData() { + var data = this._renderData; + data.createFlexData(0, this.verticesCount, this.indicesCount, this.getVfmt()); + + // 填充顶点索引信息 + var indices = data.iDatas[0]; + var count = indices.length / 6; + for (var i = 0, idx = 0; i < count; i++) { + var vertextID = i * 4; + indices[idx++] = vertextID; + indices[idx++] = vertextID + 1; + indices[idx++] = vertextID + 2; + indices[idx++] = vertextID + 1; + indices[idx++] = vertextID + 3; + indices[idx++] = vertextID + 2; + } + }; + _proto.getBuffer = function getBuffer() { + return cc.renderer._handle.getBuffer("mesh", this.getVfmt()); + }; + _proto.getVfmt = function getVfmt() { + return this._noColor ? vfmtPosUvIndex : vfmtPosUvColorIndex; + }; + _proto.updateRenderData = function updateRenderData(sprite) { + this.packToDynamicAtlas(sprite, sprite._spriteFrame); + if (sprite._vertsDirty) { + this.updateUVs(sprite); + this.updateVerts(sprite); + this.updateTextureIdx(sprite); + sprite._vertsDirty = false; + } + } + + /** + * 填充textureIndex数据 + * @param {cc.Sprite} sprite + */; + _proto.updateTextureIdx = function updateTextureIdx(sprite) { + var textureIdx = sprite._textureIdx; + var verts = this._renderData.vDatas[0]; + var verticesCount = this.verticesCount; + var floatsPerVert = this.floatsPerVert; + var textureIndexOffset = this.textureIndexOffset; + for (var i = 0; i < verticesCount; i++) { + var index = i * floatsPerVert + textureIndexOffset; + verts[index] = textureIdx; + } + }; + _proto.updateUVs = function updateUVs(sprite) { + var uv = sprite._spriteFrame.uv; + var uvOffset = this.uvOffset; + var floatsPerVert = this.floatsPerVert; + var verts = this._renderData.vDatas[0]; + for (var i = 0; i < 4; i++) { + var srcOffset = i * 2; + var dstOffset = floatsPerVert * i + uvOffset; + verts[dstOffset] = uv[srcOffset]; + verts[dstOffset + 1] = uv[srcOffset + 1]; + } + }; + _proto.updateVerts = function updateVerts(sprite) { + var node = sprite.node, + cw = node.width, + ch = node.height, + appx = node.anchorX * cw, + appy = node.anchorY * ch, + l, + b, + r, + t; + if (sprite.trim) { + l = -appx; + b = -appy; + r = cw - appx; + t = ch - appy; + } else { + var frame = sprite.spriteFrame, + ow = frame._originalSize.width, + oh = frame._originalSize.height, + rw = frame._rect.width, + rh = frame._rect.height, + offset = frame._offset, + scaleX = cw / ow, + scaleY = ch / oh; + var trimLeft = offset.x + (ow - rw) / 2; + var trimRight = offset.x - (ow - rw) / 2; + var trimBottom = offset.y + (oh - rh) / 2; + var trimTop = offset.y - (oh - rh) / 2; + l = trimLeft * scaleX - appx; + b = trimBottom * scaleY - appy; + r = cw + trimRight * scaleX - appx; + t = ch + trimTop * scaleY - appy; + } + var local = this._local; + local[0] = l; + local[1] = b; + local[2] = r; + local[3] = t; + this.updateWorldVerts(sprite); + }; + _proto.updateColorFunc = function updateColorFunc(comp, color) { + var uintVerts = this._renderData.uintVDatas[0]; + if (!uintVerts) return; + color = color != null ? color : comp.node.color._val; + var floatsPerVert = this.floatsPerVert; + var colorOffset = this.colorOffset; + for (var i = colorOffset, l = uintVerts.length; i < l; i += floatsPerVert) { + uintVerts[i] = color; + } + }; + _proto.updateWorldVerts = function updateWorldVerts(comp) { + if (CC_NATIVERENDERER) { + // 原生平台兼容代码 复制于jsb-engine.js中的cc.Assembler2D.prototype.updateWorldVerts + var local = this._local; + var verts = this._renderData.vDatas[0]; + var vl = local[0], + vr = local[2], + vb = local[1], + vt = local[3]; + var floatsPerVert = this.floatsPerVert; + var vertexOffset = 0; // left bottom + + verts[vertexOffset] = vl; + verts[vertexOffset + 1] = vb; + vertexOffset += floatsPerVert; // right bottom + + verts[vertexOffset] = vr; + verts[vertexOffset + 1] = vb; + vertexOffset += floatsPerVert; // left top + + verts[vertexOffset] = vl; + verts[vertexOffset + 1] = vt; + vertexOffset += floatsPerVert; // right top + + verts[vertexOffset] = vr; + verts[vertexOffset + 1] = vt; + } else { + var _local = this._local; + var _verts = this._renderData.vDatas[0]; + var matrix = comp.node._worldMatrix; + var matrixm = matrix.m, + a = matrixm[0], + b = matrixm[1], + c = matrixm[4], + d = matrixm[5], + tx = matrixm[12], + ty = matrixm[13]; + var _vl = _local[0], + _vr = _local[2], + _vb = _local[1], + _vt = _local[3]; + var _floatsPerVert = this.floatsPerVert; + var _vertexOffset = 0; + var justTranslate = a === 1 && b === 0 && c === 0 && d === 1; + if (justTranslate) { + // left bottom + _verts[_vertexOffset] = _vl + tx; + _verts[_vertexOffset + 1] = _vb + ty; + _vertexOffset += _floatsPerVert; + // right bottom + _verts[_vertexOffset] = _vr + tx; + _verts[_vertexOffset + 1] = _vb + ty; + _vertexOffset += _floatsPerVert; + // left top + _verts[_vertexOffset] = _vl + tx; + _verts[_vertexOffset + 1] = _vt + ty; + _vertexOffset += _floatsPerVert; + // right top + _verts[_vertexOffset] = _vr + tx; + _verts[_vertexOffset + 1] = _vt + ty; + } else { + var al = a * _vl, + ar = a * _vr, + bl = b * _vl, + br = b * _vr, + cb = c * _vb, + ct = c * _vt, + db = d * _vb, + dt = d * _vt; + + // left bottom + _verts[_vertexOffset] = al + cb + tx; + _verts[_vertexOffset + 1] = bl + db + ty; + _vertexOffset += _floatsPerVert; + // right bottom + _verts[_vertexOffset] = ar + cb + tx; + _verts[_vertexOffset + 1] = br + db + ty; + _vertexOffset += _floatsPerVert; + // left top + _verts[_vertexOffset] = al + ct + tx; + _verts[_vertexOffset + 1] = bl + dt + ty; + _vertexOffset += _floatsPerVert; + // right top + _verts[_vertexOffset] = ar + ct + tx; + _verts[_vertexOffset + 1] = br + dt + ty; + } + } + }; + _proto.fillBuffers = function fillBuffers(comp, renderer) { + if (renderer.worldMatDirty) { + this.updateWorldVerts(comp); + } + var renderData = this._renderData; + var vData = renderData.vDatas[0]; + var iData = renderData.iDatas[0]; + var buffer = this.getBuffer(renderer); + var offsetInfo = buffer.request(this.verticesCount, this.indicesCount); + + // buffer data may be realloc, need get reference after request. + + // fill vertices + var vertexOffset = offsetInfo.byteOffset >> 2, + vbuf = buffer._vData; + if (vData.length + vertexOffset > vbuf.length) { + vbuf.set(vData.subarray(0, vbuf.length - vertexOffset), vertexOffset); + } else { + vbuf.set(vData, vertexOffset); + } + + // fill indices + var ibuf = buffer._iData, + indiceOffset = offsetInfo.indiceOffset, + vertexId = offsetInfo.vertexOffset; + for (var i = 0, l = iData.length; i < l; i++) { + ibuf[indiceOffset++] = vertexId + iData[i]; + } + }; + _proto.packToDynamicAtlas = function packToDynamicAtlas(comp, frame) { + if (CC_TEST) return; + if (!frame._original && cc.dynamicAtlasManager && frame._texture.packable) { + var packedFrame = cc.dynamicAtlasManager.insertSpriteFrame(frame); + if (packedFrame) { + frame._setDynamicAtlasFrame(packedFrame); + } + } + var material = comp._materials[0]; + if (!material) return; + if (material.getProperty('texture') !== frame._texture) { + // texture was packed to dynamic atlas, should update uvs + comp._vertsDirty = true; + comp._updateMaterial(); + } + }; + _createClass(TmoAssembler, [{ + key: "verticesFloats", + get: function get() { + return this.verticesCount * this.floatsPerVert; + } + }]); + return TmoAssembler; +}(cc.Assembler); +exports.TmoAssembler = TmoAssembler; + cc._RF.pop(); } if (nodeEnv) { @@ -18075,6 +15693,2204 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vQXNzZW1ibGVyLmpzIl0sIm5hbWVzIjpbImdmeCIsImNjIiwidmZtdFBvc1V2SW5kZXgiLCJWZXJ0ZXhGb3JtYXQiLCJuYW1lIiwiQVRUUl9QT1NJVElPTiIsInR5cGUiLCJBVFRSX1RZUEVfRkxPQVQzMiIsIm51bSIsIkFUVFJfVVYwIiwidmZtdFBvc1V2Q29sb3JJbmRleCIsIkFUVFJfQ09MT1IiLCJBVFRSX1RZUEVfVUlOVDgiLCJub3JtYWxpemUiLCJUbW9Bc3NlbWJsZXIiLCJfY2MkQXNzZW1ibGVyIiwiX2luaGVyaXRzTG9vc2UiLCJhcHBseSIsImFyZ3VtZW50cyIsIl9wcm90byIsInByb3RvdHlwZSIsImluaXQiLCJjb21wIiwiY2FsbCIsIl9ub0NvbG9yIiwiaXNOb0NvbG9yIiwidXBkYXRlQ29sb3IiLCJ1bmRlZmluZWQiLCJ1cGRhdGVDb2xvckZ1bmMiLCJ1dk9mZnNldCIsImNvbG9yT2Zmc2V0IiwidGV4dHVyZUluZGV4T2Zmc2V0IiwiZmxvYXRzUGVyVmVydCIsImluZGljZXNDb3VudCIsInZlcnRpY2VzQ291bnQiLCJfcmVuZGVyRGF0YSIsIlJlbmRlckRhdGEiLCJpbml0TG9jYWwiLCJpbml0RGF0YSIsIl9sb2NhbCIsImxlbmd0aCIsImRhdGEiLCJjcmVhdGVGbGV4RGF0YSIsImdldFZmbXQiLCJpbmRpY2VzIiwiaURhdGFzIiwiY291bnQiLCJpIiwiaWR4IiwidmVydGV4dElEIiwiZ2V0QnVmZmVyIiwicmVuZGVyZXIiLCJfaGFuZGxlIiwidXBkYXRlUmVuZGVyRGF0YSIsInNwcml0ZSIsInBhY2tUb0R5bmFtaWNBdGxhcyIsIl9zcHJpdGVGcmFtZSIsIl92ZXJ0c0RpcnR5IiwidXBkYXRlVVZzIiwidXBkYXRlVmVydHMiLCJ1cGRhdGVUZXh0dXJlSWR4IiwidGV4dHVyZUlkeCIsIl90ZXh0dXJlSWR4IiwidmVydHMiLCJ2RGF0YXMiLCJpbmRleCIsInV2Iiwic3JjT2Zmc2V0IiwiZHN0T2Zmc2V0Iiwibm9kZSIsImN3Iiwid2lkdGgiLCJjaCIsImhlaWdodCIsImFwcHgiLCJhbmNob3JYIiwiYXBweSIsImFuY2hvclkiLCJsIiwiYiIsInIiLCJ0IiwidHJpbSIsImZyYW1lIiwic3ByaXRlRnJhbWUiLCJvdyIsIl9vcmlnaW5hbFNpemUiLCJvaCIsInJ3IiwiX3JlY3QiLCJyaCIsIm9mZnNldCIsIl9vZmZzZXQiLCJzY2FsZVgiLCJzY2FsZVkiLCJ0cmltTGVmdCIsIngiLCJ0cmltUmlnaHQiLCJ0cmltQm90dG9tIiwieSIsInRyaW1Ub3AiLCJsb2NhbCIsInVwZGF0ZVdvcmxkVmVydHMiLCJjb2xvciIsInVpbnRWZXJ0cyIsInVpbnRWRGF0YXMiLCJfdmFsIiwiQ0NfTkFUSVZFUkVOREVSRVIiLCJ2bCIsInZyIiwidmIiLCJ2dCIsInZlcnRleE9mZnNldCIsIm1hdHJpeCIsIl93b3JsZE1hdHJpeCIsIm1hdHJpeG0iLCJtIiwiYSIsImMiLCJkIiwidHgiLCJ0eSIsImp1c3RUcmFuc2xhdGUiLCJhbCIsImFyIiwiYmwiLCJiciIsImNiIiwiY3QiLCJkYiIsImR0IiwiZmlsbEJ1ZmZlcnMiLCJ3b3JsZE1hdERpcnR5IiwicmVuZGVyRGF0YSIsInZEYXRhIiwiaURhdGEiLCJidWZmZXIiLCJvZmZzZXRJbmZvIiwicmVxdWVzdCIsImJ5dGVPZmZzZXQiLCJ2YnVmIiwiX3ZEYXRhIiwic2V0Iiwic3ViYXJyYXkiLCJpYnVmIiwiX2lEYXRhIiwiaW5kaWNlT2Zmc2V0IiwidmVydGV4SWQiLCJDQ19URVNUIiwiX29yaWdpbmFsIiwiZHluYW1pY0F0bGFzTWFuYWdlciIsIl90ZXh0dXJlIiwicGFja2FibGUiLCJwYWNrZWRGcmFtZSIsImluc2VydFNwcml0ZUZyYW1lIiwiX3NldER5bmFtaWNBdGxhc0ZyYW1lIiwibWF0ZXJpYWwiLCJfbWF0ZXJpYWxzIiwiZ2V0UHJvcGVydHkiLCJfdXBkYXRlTWF0ZXJpYWwiLCJfY3JlYXRlQ2xhc3MiLCJrZXkiLCJn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QUFDcUosbUJBQW1CLENBQUNJLGlCQUFpQixDQUFDdkUsS0FBSyxDQUFDO01BQ2pFLElBQUlzRSxXQUFXLEVBQUU7UUFDYnRFLEtBQUssQ0FBQ3dFLHFCQUFxQixDQUFDRixXQUFXLENBQUM7TUFDNUM7SUFDSjtJQUNBLElBQUlHLFFBQVEsR0FBR3RJLElBQUksQ0FBQ3VJLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDakMsSUFBSSxDQUFDRCxRQUFRLEVBQUU7SUFFZixJQUFJQSxRQUFRLENBQUNFLFdBQVcsQ0FBQyxTQUFTLENBQUMsS0FBSzNFLEtBQUssQ0FBQ29FLFFBQVEsRUFBRTtNQUNwRDtNQUNBakksSUFBSSxDQUFDbUMsV0FBVyxHQUFHLElBQUk7TUFDdkJuQyxJQUFJLENBQUN5SSxlQUFlLEVBQUU7SUFDMUI7RUFDSixDQUFDO0VBQUFDLFlBQUEsQ0FBQWxKLFlBQUE7SUFBQW1KLEdBQUE7SUFBQUMsR0FBQSxFQXBKRCxTQUFBQSxJQUFBLEVBQXFCO01BQ2pCLE9BQU8sSUFBSSxDQUFDaEksYUFBYSxHQUFHLElBQUksQ0FBQ0YsYUFBYTtJQUNsRDtFQUFDO0VBQUEsT0FBQWxCLFlBQUE7QUFBQSxFQXBJNkJiLEVBQUUsQ0FBQ2tLLFNBQVM7QUFBQUMsT0FBQSxDQUFBdEosWUFBQSxHQUFBQSxZQUFBIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgZ2Z4ID0gY2MuZ2Z4O1xyXG4vLyDpopzoibLljrvpmaQgKyDnianku7blm77pm4blkIjmiblcclxudmFyIHZmbXRQb3NVdkluZGV4ID0gbmV3IGdmeC5WZXJ0ZXhGb3JtYXQoW1xyXG4gICAgeyBuYW1lOiBnZnguQVRUUl9QT1NJVElPTiwgdHlwZTogZ2Z4LkFUVFJfVFlQRV9GTE9BVDMyLCBudW06IDIgfSxcclxuICAgIHsgbmFtZTogZ2Z4LkFUVFJfVVYwLCB0eXBlOiBnZnguQVRUUl9UWVBFX0ZMT0FUMzIsIG51bTogMiB9LFxyXG4gICAgeyBuYW1lOiBcImFfdGV4dHVyZV9pZHhcIiwgdHlwZTogZ2Z4LkFUVFJfVFlQRV9GTE9BVDMyLCBudW06IDEgfSxcclxuXSk7XHJcblxyXG4vLyDku4Xnianku7blm77pm4blkIjmiblcclxudmFyIHZmbXRQb3NVdkNvbG9ySW5kZXggPSBuZXcgZ2Z4LlZlcnRleEZvcm1hdChbXHJcbiAgICB7IG5hbWU6IGdmeC5BVFRSX1BPU0lUSU9OLCB0eXBlOiBnZnguQVRUUl9UWVBFX0ZMT0FUMzIsIG51bTogMiB9LFxyXG4gICAgeyBuYW1lOiBnZnguQVRUUl9VVjAsIHR5cGU6IGdmeC5BVFRSX1RZUEVfRkxPQVQzMiwgbnVtOiAyIH0sXHJcbiAgICB7IG5hbWU6IFwiYV90ZXh0dXJlX2lkeFwiLCB0eXBlOiBnZnguQVRUUl9UWVBFX0ZMT0FUMzIsIG51bTogMSB9LFxyXG4gICAgeyBuYW1lOiBnZnguQVRUUl9DT0xPUiwgdHlwZTogZ2Z4LkFUVFJfVFlQRV9VSU5UOCwgbnVtOiA0LCBub3JtYWxpemU6IHRydWUgfSxcclxuXSk7XHJcblxyXG5leHBvcnQgY2xhc3MgVG1vQXNzZW1ibGVyIGV4dGVuZHMgY2MuQXNzZW1ibGVyIHtcclxuICAgIGluaXQoY29tcCkge1xyXG4gICAgICAgIHN1cGVyLmluaXQoY29tcCk7XHJcblxyXG4gICAgICAgIHRoaXMuX25vQ29sb3IgPSBjb21wLmlzTm9Db2xvcigpO1xyXG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IgPSB0aGlzLl9ub0NvbG9yID8gdW5kZWZpbmVkIDogdGhpcy51cGRhdGVDb2xvckZ1bmM7XHJcblxyXG4gICAgICAgIHRoaXMudXZPZmZzZXQgPSAyO1xyXG4gICAgICAgIHRoaXMuY29sb3JPZmZzZXQgPSA1O1xyXG4gICAgICAgIHRoaXMudGV4dHVyZUluZGV4T2Zmc2V0ID0gNDtcclxuICAgICAgICB0aGlzLmZsb2F0c1BlclZlcnQgPSB0aGlzLl9ub0NvbG9yID8gNSA6IDY7XHJcblxyXG4gICAgICAgIHRoaXMuaW5kaWNlc0NvdW50ID0gNjtcclxuICAgICAgICB0aGlzLnZlcnRpY2VzQ291bnQgPSA0O1xyXG5cclxuICAgICAgICB0aGlzLl9yZW5kZXJEYXRhID0gbmV3IGNjLlJlbmRlckRhdGEoKTtcclxuICAgICAgICB0aGlzLl9yZW5kZXJEYXRhLmluaXQodGhpcyk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdExvY2FsKCk7XHJcbiAgICAgICAgdGhpcy5pbml0RGF0YSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGluaXRMb2NhbCgpIHtcclxuICAgICAgICB0aGlzLl9sb2NhbCA9IFtdO1xyXG4gICAgICAgIHRoaXMuX2xvY2FsLmxlbmd0aCA9IDQ7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdERhdGEoKSB7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLl9yZW5kZXJEYXRhO1xyXG4gICAgICAgIGRhdGEuY3JlYXRlRmxleERhdGEoMCwgdGhpcy52ZXJ0aWNlc0NvdW50LCB0aGlzLmluZGljZXNDb3VudCwgdGhpcy5nZXRWZm10KCkpO1xyXG5cclxuICAgICAgICAvLyDloavlhYXpobbngrnntKLlvJXkv6Hmga9cclxuICAgICAgICBsZXQgaW5kaWNlcyA9IGRhdGEuaURhdGFzWzBdO1xyXG4gICAgICAgIGxldCBjb3VudCA9IGluZGljZXMubGVuZ3RoIC8gNjtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgaWR4ID0gMDsgaSA8IGNvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHZlcnRleHRJRCA9IGkgKiA0O1xyXG4gICAgICAgICAgICBpbmRpY2VzW2lkeCsrXSA9IHZlcnRleHRJRDtcclxuICAgICAgICAgICAgaW5kaWNlc1tpZHgrK10gPSB2ZXJ0ZXh0SUQgKyAxO1xyXG4gICAgICAgICAgICBpbmRpY2VzW2lkeCsrXSA9IHZlcnRleHRJRCArIDI7XHJcbiAgICAgICAgICAgIGluZGljZXNbaWR4KytdID0gdmVydGV4dElEICsgMTtcclxuICAgICAgICAgICAgaW5kaWNlc1tpZHgrK10gPSB2ZXJ0ZXh0SUQgKyAzO1xyXG4gICAgICAgICAgICBpbmRpY2VzW2lkeCsrXSA9IHZlcnRleHRJRCArIDI7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldEJ1ZmZlcigpIHtcclxuICAgICAgICByZXR1cm4gY2MucmVuZGVyZXIuX2hhbmRsZS5nZXRCdWZmZXIoXCJtZXNoXCIsIHRoaXMuZ2V0VmZtdCgpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRWZm10KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9ub0NvbG9yID8gdmZtdFBvc1V2SW5kZXggOiB2Zm10UG9zVXZDb2xvckluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVJlbmRlckRhdGEoc3ByaXRlKSB7XHJcbiAgICAgICAgdGhpcy5wYWNrVG9EeW5hbWljQXRsYXMoc3ByaXRlLCBzcHJpdGUuX3Nwcml0ZUZyYW1lKTtcclxuXHJcbiAgICAgICAgaWYgKHNwcml0ZS5fdmVydHNEaXJ0eSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVVWcyhzcHJpdGUpO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZlcnRzKHNwcml0ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVGV4dHVyZUlkeChzcHJpdGUpO1xyXG4gICAgICAgICAgICBzcHJpdGUuX3ZlcnRzRGlydHkgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiDloavlhYV0ZXh0dXJlSW5kZXjmlbDmja5cclxuICAgICAqIEBwYXJhbSB7Y2MuU3ByaXRlfSBzcHJpdGUgXHJcbiAgICAgKi9cclxuICAgIHVwZGF0ZVRleHR1cmVJZHgoc3ByaXRlKSB7XHJcbiAgICAgICAgbGV0IHRleHR1cmVJZHggPSBzcHJpdGUuX3RleHR1cmVJZHg7XHJcbiAgICAgICAgbGV0IHZlcnRzID0gdGhpcy5fcmVuZGVyRGF0YS52RGF0YXNbMF07XHJcblxyXG4gICAgICAgIGxldCB2ZXJ0aWNlc0NvdW50ID0gdGhpcy52ZXJ0aWNlc0NvdW50O1xyXG4gICAgICAgIGxldCBmbG9hdHNQZXJWZXJ0ID0gdGhpcy5mbG9hdHNQZXJWZXJ0O1xyXG4gICAgICAgIGxldCB0ZXh0dXJlSW5kZXhPZmZzZXQgPSB0aGlzLnRleHR1cmVJbmRleE9mZnNldDtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2ZXJ0aWNlc0NvdW50OyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gaSAqIGZsb2F0c1BlclZlcnQgKyB0ZXh0dXJlSW5kZXhPZmZzZXQ7XHJcbiAgICAgICAgICAgIHZlcnRzW2luZGV4XSA9IHRleHR1cmVJZHg7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVVWcyhzcHJpdGUpIHtcclxuICAgICAgICBsZXQgdXYgPSBzcHJpdGUuX3Nwcml0ZUZyYW1lLnV2O1xyXG4gICAgICAgIGxldCB1dk9mZnNldCA9IHRoaXMudXZPZmZzZXQ7XHJcbiAgICAgICAgbGV0IGZsb2F0c1BlclZlcnQgPSB0aGlzLmZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgbGV0IHZlcnRzID0gdGhpcy5fcmVuZGVyRGF0YS52RGF0YXNbMF07XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA0OyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHNyY09mZnNldCA9IGkgKiAyO1xyXG4gICAgICAgICAgICBsZXQgZHN0T2Zmc2V0ID0gZmxvYXRzUGVyVmVydCAqIGkgKyB1dk9mZnNldDtcclxuICAgICAgICAgICAgdmVydHNbZHN0T2Zmc2V0XSA9IHV2W3NyY09mZnNldF07XHJcbiAgICAgICAgICAgIHZlcnRzW2RzdE9mZnNldCArIDFdID0gdXZbc3JjT2Zmc2V0ICsgMV07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVZlcnRzKHNwcml0ZSkge1xyXG4gICAgICAgIGxldCBub2RlID0gc3ByaXRlLm5vZGUsXHJcbiAgICAgICAgICAgIGN3ID0gbm9kZS53aWR0aCwgY2ggPSBub2RlLmhlaWdodCxcclxuICAgICAgICAgICAgYXBweCA9IG5vZGUuYW5jaG9yWCAqIGN3LCBhcHB5ID0gbm9kZS5hbmNob3JZICogY2gsXHJcbiAgICAgICAgICAgIGwsIGIsIHIsIHQ7XHJcbiAgICAgICAgaWYgKHNwcml0ZS50cmltKSB7XHJcbiAgICAgICAgICAgIGwgPSAtYXBweDtcclxuICAgICAgICAgICAgYiA9IC1hcHB5O1xyXG4gICAgICAgICAgICByID0gY3cgLSBhcHB4O1xyXG4gICAgICAgICAgICB0ID0gY2ggLSBhcHB5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGZyYW1lID0gc3ByaXRlLnNwcml0ZUZyYW1lLFxyXG4gICAgICAgICAgICAgICAgb3cgPSBmcmFtZS5fb3JpZ2luYWxTaXplLndpZHRoLCBvaCA9IGZyYW1lLl9vcmlnaW5hbFNpemUuaGVpZ2h0LFxyXG4gICAgICAgICAgICAgICAgcncgPSBmcmFtZS5fcmVjdC53aWR0aCwgcmggPSBmcmFtZS5fcmVjdC5oZWlnaHQsXHJcbiAgICAgICAgICAgICAgICBvZmZzZXQgPSBmcmFtZS5fb2Zmc2V0LFxyXG4gICAgICAgICAgICAgICAgc2NhbGVYID0gY3cgLyBvdywgc2NhbGVZID0gY2ggLyBvaDtcclxuICAgICAgICAgICAgbGV0IHRyaW1MZWZ0ID0gb2Zmc2V0LnggKyAob3cgLSBydykgLyAyO1xyXG4gICAgICAgICAgICBsZXQgdHJpbVJpZ2h0ID0gb2Zmc2V0LnggLSAob3cgLSBydykgLyAyO1xyXG4gICAgICAgICAgICBsZXQgdHJpbUJvdHRvbSA9IG9mZnNldC55ICsgKG9oIC0gcmgpIC8gMjtcclxuICAgICAgICAgICAgbGV0IHRyaW1Ub3AgPSBvZmZzZXQueSAtIChvaCAtIHJoKSAvIDI7XHJcbiAgICAgICAgICAgIGwgPSB0cmltTGVmdCAqIHNjYWxlWCAtIGFwcHg7XHJcbiAgICAgICAgICAgIGIgPSB0cmltQm90dG9tICogc2NhbGVZIC0gYXBweTtcclxuICAgICAgICAgICAgciA9IGN3ICsgdHJpbVJpZ2h0ICogc2NhbGVYIC0gYXBweDtcclxuICAgICAgICAgICAgdCA9IGNoICsgdHJpbVRvcCAqIHNjYWxlWSAtIGFwcHk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbG9jYWwgPSB0aGlzLl9sb2NhbDtcclxuICAgICAgICBsb2NhbFswXSA9IGw7XHJcbiAgICAgICAgbG9jYWxbMV0gPSBiO1xyXG4gICAgICAgIGxvY2FsWzJdID0gcjtcclxuICAgICAgICBsb2NhbFszXSA9IHQ7XHJcbiAgICAgICAgdGhpcy51cGRhdGVXb3JsZFZlcnRzKHNwcml0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHZlcnRpY2VzRmxvYXRzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZlcnRpY2VzQ291bnQgKiB0aGlzLmZsb2F0c1BlclZlcnQ7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlQ29sb3JGdW5jKGNvbXAsIGNvbG9yKSB7XHJcbiAgICAgICAgbGV0IHVpbnRWZXJ0cyA9IHRoaXMuX3JlbmRlckRhdGEudWludFZEYXRhc1swXTtcclxuICAgICAgICBpZiAoIXVpbnRWZXJ0cykgcmV0dXJuO1xyXG4gICAgICAgIGNvbG9yID0gY29sb3IgIT0gbnVsbCA/IGNvbG9yIDogY29tcC5ub2RlLmNvbG9yLl92YWw7XHJcbiAgICAgICAgbGV0IGZsb2F0c1BlclZlcnQgPSB0aGlzLmZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgbGV0IGNvbG9yT2Zmc2V0ID0gdGhpcy5jb2xvck9mZnNldDtcclxuICAgICAgICBmb3IgKGxldCBpID0gY29sb3JPZmZzZXQsIGwgPSB1aW50VmVydHMubGVuZ3RoOyBpIDwgbDsgaSArPSBmbG9hdHNQZXJWZXJ0KSB7XHJcbiAgICAgICAgICAgIHVpbnRWZXJ0c1tpXSA9IGNvbG9yO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB1cGRhdGVXb3JsZFZlcnRzKGNvbXApIHtcclxuICAgICAgICBpZiAoQ0NfTkFUSVZFUkVOREVSRVIpIHtcclxuICAgICAgICAgICAgLy8g5Y6f55Sf5bmz5Y+w5YW85a655Luj56CBIOWkjeWItuS6jmpzYi1lbmdpbmUuanPkuK3nmoRjYy5Bc3NlbWJsZXIyRC5wcm90b3R5cGUudXBkYXRlV29ybGRWZXJ0c1xyXG4gICAgICAgICAgICB2YXIgbG9jYWwgPSB0aGlzLl9sb2NhbDtcclxuICAgICAgICAgICAgdmFyIHZlcnRzID0gdGhpcy5fcmVuZGVyRGF0YS52RGF0YXNbMF07XHJcbiAgICAgICAgICAgIHZhciB2bCA9IGxvY2FsWzBdLFxyXG4gICAgICAgICAgICAgICAgdnIgPSBsb2NhbFsyXSxcclxuICAgICAgICAgICAgICAgIHZiID0gbG9jYWxbMV0sXHJcbiAgICAgICAgICAgICAgICB2dCA9IGxvY2FsWzNdO1xyXG4gICAgICAgICAgICB2YXIgZmxvYXRzUGVyVmVydCA9IHRoaXMuZmxvYXRzUGVyVmVydDtcclxuICAgICAgICAgICAgdmFyIHZlcnRleE9mZnNldCA9IDA7IC8vIGxlZnQgYm90dG9tXHJcblxyXG4gICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXRdID0gdmw7XHJcbiAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldCArIDFdID0gdmI7XHJcbiAgICAgICAgICAgIHZlcnRleE9mZnNldCArPSBmbG9hdHNQZXJWZXJ0OyAvLyByaWdodCBib3R0b21cclxuXHJcbiAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSB2cjtcclxuICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSB2YjtcclxuICAgICAgICAgICAgdmVydGV4T2Zmc2V0ICs9IGZsb2F0c1BlclZlcnQ7IC8vIGxlZnQgdG9wXHJcblxyXG4gICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXRdID0gdmw7XHJcbiAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldCArIDFdID0gdnQ7XHJcbiAgICAgICAgICAgIHZlcnRleE9mZnNldCArPSBmbG9hdHNQZXJWZXJ0OyAvLyByaWdodCB0b3BcclxuXHJcbiAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSB2cjtcclxuICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSB2dDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgbG9jYWwgPSB0aGlzLl9sb2NhbDtcclxuICAgICAgICAgICAgbGV0IHZlcnRzID0gdGhpcy5fcmVuZGVyRGF0YS52RGF0YXNbMF07XHJcblxyXG4gICAgICAgICAgICBsZXQgbWF0cml4ID0gY29tcC5ub2RlLl93b3JsZE1hdHJpeDtcclxuICAgICAgICAgICAgbGV0IG1hdHJpeG0gPSBtYXRyaXgubSxcclxuICAgICAgICAgICAgICAgIGEgPSBtYXRyaXhtWzBdLCBiID0gbWF0cml4bVsxXSwgYyA9IG1hdHJpeG1bNF0sIGQgPSBtYXRyaXhtWzVdLFxyXG4gICAgICAgICAgICAgICAgdHggPSBtYXRyaXhtWzEyXSwgdHkgPSBtYXRyaXhtWzEzXTtcclxuXHJcbiAgICAgICAgICAgIGxldCB2bCA9IGxvY2FsWzBdLCB2ciA9IGxvY2FsWzJdLFxyXG4gICAgICAgICAgICAgICAgdmIgPSBsb2NhbFsxXSwgdnQgPSBsb2NhbFszXTtcclxuXHJcbiAgICAgICAgICAgIGxldCBmbG9hdHNQZXJWZXJ0ID0gdGhpcy5mbG9hdHNQZXJWZXJ0O1xyXG4gICAgICAgICAgICBsZXQgdmVydGV4T2Zmc2V0ID0gMDtcclxuICAgICAgICAgICAgbGV0IGp1c3RUcmFuc2xhdGUgPSBhID09PSAxICYmIGIgPT09IDAgJiYgYyA9PT0gMCAmJiBkID09PSAxO1xyXG5cclxuICAgICAgICAgICAgaWYgKGp1c3RUcmFuc2xhdGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGxlZnQgYm90dG9tXHJcbiAgICAgICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXRdID0gdmwgKyB0eDtcclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldCArIDFdID0gdmIgKyB0eTtcclxuICAgICAgICAgICAgICAgIHZlcnRleE9mZnNldCArPSBmbG9hdHNQZXJWZXJ0O1xyXG4gICAgICAgICAgICAgICAgLy8gcmlnaHQgYm90dG9tXHJcbiAgICAgICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXRdID0gdnIgKyB0eDtcclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldCArIDFdID0gdmIgKyB0eTtcclxuICAgICAgICAgICAgICAgIHZlcnRleE9mZnNldCArPSBmbG9hdHNQZXJWZXJ0O1xyXG4gICAgICAgICAgICAgICAgLy8gbGVmdCB0b3BcclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSB2bCArIHR4O1xyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSB2dCArIHR5O1xyXG4gICAgICAgICAgICAgICAgdmVydGV4T2Zmc2V0ICs9IGZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgICAgICAgICAvLyByaWdodCB0b3BcclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSB2ciArIHR4O1xyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSB2dCArIHR5O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IGFsID0gYSAqIHZsLCBhciA9IGEgKiB2cixcclxuICAgICAgICAgICAgICAgICAgICBibCA9IGIgKiB2bCwgYnIgPSBiICogdnIsXHJcbiAgICAgICAgICAgICAgICAgICAgY2IgPSBjICogdmIsIGN0ID0gYyAqIHZ0LFxyXG4gICAgICAgICAgICAgICAgICAgIGRiID0gZCAqIHZiLCBkdCA9IGQgKiB2dDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBsZWZ0IGJvdHRvbVxyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0XSA9IGFsICsgY2IgKyB0eDtcclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldCArIDFdID0gYmwgKyBkYiArIHR5O1xyXG4gICAgICAgICAgICAgICAgdmVydGV4T2Zmc2V0ICs9IGZsb2F0c1BlclZlcnQ7XHJcbiAgICAgICAgICAgICAgICAvLyByaWdodCBib3R0b21cclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSBhciArIGNiICsgdHg7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXQgKyAxXSA9IGJyICsgZGIgKyB0eTtcclxuICAgICAgICAgICAgICAgIHZlcnRleE9mZnNldCArPSBmbG9hdHNQZXJWZXJ0O1xyXG4gICAgICAgICAgICAgICAgLy8gbGVmdCB0b3BcclxuICAgICAgICAgICAgICAgIHZlcnRzW3ZlcnRleE9mZnNldF0gPSBhbCArIGN0ICsgdHg7XHJcbiAgICAgICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXQgKyAxXSA9IGJsICsgZHQgKyB0eTtcclxuICAgICAgICAgICAgICAgIHZlcnRleE9mZnNldCArPSBmbG9hdHNQZXJWZXJ0O1xyXG4gICAgICAgICAgICAgICAgLy8gcmlnaHQgdG9wXHJcbiAgICAgICAgICAgICAgICB2ZXJ0c1t2ZXJ0ZXhPZmZzZXRdID0gYXIgKyBjdCArIHR4O1xyXG4gICAgICAgICAgICAgICAgdmVydHNbdmVydGV4T2Zmc2V0ICsgMV0gPSBiciArIGR0ICsgdHk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZmlsbEJ1ZmZlcnMoY29tcCwgcmVuZGVyZXIpIHtcclxuICAgICAgICBpZiAocmVuZGVyZXIud29ybGRNYXREaXJ0eSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVdvcmxkVmVydHMoY29tcCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgcmVuZGVyRGF0YSA9IHRoaXMuX3JlbmRlckRhdGE7XHJcbiAgICAgICAgbGV0IHZEYXRhID0gcmVuZGVyRGF0YS52RGF0YXNbMF07XHJcbiAgICAgICAgbGV0IGlEYXRhID0gcmVuZGVyRGF0YS5pRGF0YXNbMF07XHJcblxyXG4gICAgICAgIGxldCBidWZmZXIgPSB0aGlzLmdldEJ1ZmZlcihyZW5kZXJlcik7XHJcbiAgICAgICAgbGV0IG9mZnNldEluZm8gPSBidWZmZXIucmVxdWVzdCh0aGlzLnZlcnRpY2VzQ291bnQsIHRoaXMuaW5kaWNlc0NvdW50KTtcclxuXHJcbiAgICAgICAgLy8gYnVmZmVyIGRhdGEgbWF5IGJlIHJlYWxsb2MsIG5lZWQgZ2V0IHJlZmVyZW5jZSBhZnRlciByZXF1ZXN0LlxyXG5cclxuICAgICAgICAvLyBmaWxsIHZlcnRpY2VzXHJcbiAgICAgICAgbGV0IHZlcnRleE9mZnNldCA9IG9mZnNldEluZm8uYnl0ZU9mZnNldCA+PiAyLFxyXG4gICAgICAgICAgICB2YnVmID0gYnVmZmVyLl92RGF0YTtcclxuXHJcbiAgICAgICAgaWYgKHZEYXRhLmxlbmd0aCArIHZlcnRleE9mZnNldCA+IHZidWYubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHZidWYuc2V0KHZEYXRhLnN1YmFycmF5KDAsIHZidWYubGVuZ3RoIC0gdmVydGV4T2Zmc2V0KSwgdmVydGV4T2Zmc2V0KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YnVmLnNldCh2RGF0YSwgdmVydGV4T2Zmc2V0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGZpbGwgaW5kaWNlc1xyXG4gICAgICAgIGxldCBpYnVmID0gYnVmZmVyLl9pRGF0YSxcclxuICAgICAgICAgICAgaW5kaWNlT2Zmc2V0ID0gb2Zmc2V0SW5mby5pbmRpY2VPZmZzZXQsXHJcbiAgICAgICAgICAgIHZlcnRleElkID0gb2Zmc2V0SW5mby52ZXJ0ZXhPZmZzZXQ7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBpRGF0YS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcclxuICAgICAgICAgICAgaWJ1ZltpbmRpY2VPZmZzZXQrK10gPSB2ZXJ0ZXhJZCArIGlEYXRhW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwYWNrVG9EeW5hbWljQXRsYXMoY29tcCwgZnJhbWUpIHtcclxuICAgICAgICBpZiAoQ0NfVEVTVCkgcmV0dXJuO1xyXG5cclxuICAgICAgICBpZiAoIWZyYW1lLl9vcmlnaW5hbCAmJiBjYy5keW5hbWljQXRsYXNNYW5hZ2VyICYmIGZyYW1lLl90ZXh0dXJlLnBhY2thYmxlKSB7XHJcbiAgICAgICAgICAgIGxldCBwYWNrZWRGcmFtZSA9IGNjLmR5bmFtaWNBdGxhc01hbmFnZXIuaW5zZXJ0U3ByaXRlRnJhbWUoZnJhbWUpO1xyXG4gICAgICAgICAgICBpZiAocGFja2VkRnJhbWUpIHtcclxuICAgICAgICAgICAgICAgIGZyYW1lLl9zZXREeW5hbWljQXRsYXNGcmFtZShwYWNrZWRGcmFtZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1hdGVyaWFsID0gY29tcC5fbWF0ZXJpYWxzWzBdO1xyXG4gICAgICAgIGlmICghbWF0ZXJpYWwpIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKG1hdGVyaWFsLmdldFByb3BlcnR5KCd0ZXh0dXJlJykgIT09IGZyYW1lLl90ZXh0dXJlKSB7XHJcbiAgICAgICAgICAgIC8vIHRleHR1cmUgd2FzIHBhY2tlZCB0byBkeW5hbWljIGF0bGFzLCBzaG91bGQgdXBkYXRlIHV2c1xyXG4gICAgICAgICAgICBjb21wLl92ZXJ0c0RpcnR5ID0gdHJ1ZTtcclxuICAgICAgICAgICAgY29tcC5fdXBkYXRlTWF0ZXJpYWwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0= +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/shop/script/shop.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '48bfeZuYFZE2qmgxbW2IigB', 'shop'); +// shop/script/shop.ts + +"use strict"; +var __extends = (this && this.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var _a = cc._decorator, ccclass = _a.ccclass, property = _a.property; +var NewClass = /** @class */ (function (_super) { + __extends(NewClass, _super); + function NewClass() { + var _this = _super !== null && _super.apply(this, arguments) || this; + //商店界面 + _this.shop = null; + //商品列表 + _this.itemList = null; + return _this; + // update (dt) {} + } + // onLoad () {} + NewClass.prototype.start = function () { + this.openShop(); + }; + //打开商店界面 + NewClass.prototype.openShop = function () { + // 商品数据数组 + var products = [ + { product_id: "gold_pack_1", name: "金币包1", price: 600, title: "3x2六档金币" }, + { product_id: "gold_pack_2", name: "金币包2", price: 3600, title: "" }, + { product_id: "gold_pack_3", name: "金币包3", price: 6800, title: "" }, + { product_id: "gold_pack_4", name: "金币包4", price: 12800, title: "" }, + { product_id: "gold_pack_5", name: "金币包5", price: 32800, title: "" }, + { product_id: "gold_pack_6", name: "金币包6", price: 64800, title: "" }, + { product_id: "unlimited_health_bundle_1", name: "无限体力组合包1", price: 1800, title: "3个横版礼包" }, + { product_id: "unlimited_health_bundle_2", name: "无限体力组合包2", price: 6600, title: "" } + ]; + for (var i = 1; i <= 8 && i < this.itemList.children.length; i++) { + var spriteComp = this.itemList.children[i].children[0].getComponent(cc.Sprite); + var price = this.itemList.children[i].children[1].getComponent(cc.Label); + var title = this.itemList.children[i].children[2].getComponent(cc.Label); + var product = products[i - 1]; + if (spriteComp && product) { + // TODO: 根据 product_id 或 name 设置 spriteComp.spriteFrame + } + if (price && product) { + price.string = (product.price / 100).toString() + "元"; + } + if (title && product) { + title.string = product.name; + } + } + }; + //关闭商店界面 + NewClass.prototype.closeShop = function () { + //销毁预制体 + this.shop.destroy(); + }; + __decorate([ + property(cc.Node) + ], NewClass.prototype, "shop", void 0); + __decorate([ + property(cc.Node) + ], NewClass.prototype, "itemList", void 0); + NewClass = __decorate([ + ccclass + ], NewClass); + return NewClass; +}(cc.Component)); +exports.default = NewClass; + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcc2hvcFxcc2NyaXB0XFxzaG9wLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVNLElBQUEsS0FBd0IsRUFBRSxDQUFDLFVBQVUsRUFBbkMsT0FBTyxhQUFBLEVBQUUsUUFBUSxjQUFrQixDQUFDO0FBRzVDO0lBQXNDLDRCQUFZO0lBQWxEO1FBQUEscUVBa0RDO1FBakRHLE1BQU07UUFFTixVQUFJLEdBQVksSUFBSSxDQUFDO1FBQ3JCLE1BQU07UUFFTixjQUFRLEdBQVksSUFBSSxDQUFDOztRQTJDekIsaUJBQWlCO0lBQ3JCLENBQUM7SUEzQ0csZUFBZTtJQUVmLHdCQUFLLEdBQUw7UUFDSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVE7SUFDUiwyQkFBUSxHQUFSO1FBQ0ksU0FBUztRQUNULElBQU0sUUFBUSxHQUFHO1lBQ2IsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO1lBQ3pFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNuRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDbkUsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ3BFLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNwRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDcEUsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7WUFDM0YsRUFBRSxVQUFVLEVBQUUsMkJBQTJCLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7U0FDeEYsQ0FBQztRQUNGLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM5RCxJQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRixJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzRSxJQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLElBQUksVUFBVSxJQUFJLE9BQU8sRUFBRTtnQkFDdkIsdURBQXVEO2FBQzFEO1lBQ0QsSUFBSSxLQUFLLElBQUksT0FBTyxFQUFFO2dCQUNsQixLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxHQUFHLENBQUM7YUFDekQ7WUFDRCxJQUFJLEtBQUssSUFBSSxPQUFPLEVBQUU7Z0JBQ2xCLEtBQUssQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQzthQUMvQjtTQUNKO0lBQ0wsQ0FBQztJQUdELFFBQVE7SUFDUiw0QkFBUyxHQUFUO1FBQ0ksT0FBTztRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQTVDRDtRQURDLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDOzBDQUNHO0lBR3JCO1FBREMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7OENBQ087SUFOUixRQUFRO1FBRDVCLE9BQU87T0FDYSxRQUFRLENBa0Q1QjtJQUFELGVBQUM7Q0FsREQsQUFrREMsQ0FsRHFDLEVBQUUsQ0FBQyxTQUFTLEdBa0RqRDtrQkFsRG9CLFFBQVEiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTGlzdCBmcm9tIFwiLi4vLi4vU2NyaXB0L21vZHVsZS9SYW5rTGlzdC9MaXN0XCI7XHJcblxyXG5jb25zdCB7IGNjY2xhc3MsIHByb3BlcnR5IH0gPSBjYy5fZGVjb3JhdG9yO1xyXG5cclxuQGNjY2xhc3NcclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTmV3Q2xhc3MgZXh0ZW5kcyBjYy5Db21wb25lbnQge1xyXG4gICAgLy/llYblupfnlYzpnaJcclxuICAgIEBwcm9wZXJ0eShjYy5Ob2RlKVxyXG4gICAgc2hvcDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICAvL+WVhuWTgeWIl+ihqFxyXG4gICAgQHByb3BlcnR5KGNjLk5vZGUpXHJcbiAgICBpdGVtTGlzdDogY2MuTm9kZSA9IG51bGw7XHJcbiAgICAvLyBvbkxvYWQgKCkge31cclxuXHJcbiAgICBzdGFydCgpIHtcclxuICAgICAgICB0aGlzLm9wZW5TaG9wKCk7XHJcbiAgICB9XHJcbiAgICAvL+aJk+W8gOWVhuW6l+eVjOmdolxyXG4gICAgb3BlblNob3AoKSB7XHJcbiAgICAgICAgLy8g5ZWG5ZOB5pWw5o2u5pWw57uEXHJcbiAgICAgICAgY29uc3QgcHJvZHVjdHMgPSBbXHJcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfMVwiLCBuYW1lOiBcIumHkeW4geWMhTFcIiwgcHJpY2U6IDYwMCwgdGl0bGU6IFwiM3gy5YWt5qGj6YeR5biBXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja18yXCIsIG5hbWU6IFwi6YeR5biB5YyFMlwiLCBwcmljZTogMzYwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja18zXCIsIG5hbWU6IFwi6YeR5biB5YyFM1wiLCBwcmljZTogNjgwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcImdvbGRfcGFja180XCIsIG5hbWU6IFwi6YeR5biB5YyFNFwiLCBwcmljZTogMTI4MDAsIHRpdGxlOiBcIlwiIH0sXHJcbiAgICAgICAgICAgIHsgcHJvZHVjdF9pZDogXCJnb2xkX3BhY2tfNVwiLCBuYW1lOiBcIumHkeW4geWMhTVcIiwgcHJpY2U6IDMyODAwLCB0aXRsZTogXCJcIiB9LFxyXG4gICAgICAgICAgICB7IHByb2R1Y3RfaWQ6IFwiZ29sZF9wYWNrXzZcIiwgbmFtZTogXCLph5HluIHljIU2XCIsIHByaWNlOiA2NDgwMCwgdGl0bGU6IFwiXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzFcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUxXCIsIHByaWNlOiAxODAwLCB0aXRsZTogXCIz5Liq5qiq54mI56S85YyFXCIgfSxcclxuICAgICAgICAgICAgeyBwcm9kdWN0X2lkOiBcInVubGltaXRlZF9oZWFsdGhfYnVuZGxlXzJcIiwgbmFtZTogXCLml6DpmZDkvZPlipvnu4TlkIjljIUyXCIsIHByaWNlOiA2NjAwLCB0aXRsZTogXCJcIiB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA4ICYmIGkgPCB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNwcml0ZUNvbXAgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzBdLmdldENvbXBvbmVudChjYy5TcHJpdGUpO1xyXG4gICAgICAgICAgICBjb25zdCBwcmljZSA9IHRoaXMuaXRlbUxpc3QuY2hpbGRyZW5baV0uY2hpbGRyZW5bMV0uZ2V0Q29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLml0ZW1MaXN0LmNoaWxkcmVuW2ldLmNoaWxkcmVuWzJdLmdldENvbXBvbmVudChjYy5MYWJlbCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHByb2R1Y3QgPSBwcm9kdWN0c1tpIC0gMV07XHJcbiAgICAgICAgICAgIGlmIChzcHJpdGVDb21wICYmIHByb2R1Y3QpIHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE86IOagueaNriBwcm9kdWN0X2lkIOaIliBuYW1lIOiuvue9riBzcHJpdGVDb21wLnNwcml0ZUZyYW1lXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHByaWNlICYmIHByb2R1Y3QpIHtcclxuICAgICAgICAgICAgICAgIHByaWNlLnN0cmluZyA9IChwcm9kdWN0LnByaWNlIC8gMTAwKS50b1N0cmluZygpICsgXCLlhYNcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGl0bGUgJiYgcHJvZHVjdCkge1xyXG4gICAgICAgICAgICAgICAgdGl0bGUuc3RyaW5nID0gcHJvZHVjdC5uYW1lO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvL+WFs+mXreWVhuW6l+eVjOmdolxyXG4gICAgY2xvc2VTaG9wKCkge1xyXG4gICAgICAgIC8v6ZSA5q+B6aKE5Yi25L2TXHJcbiAgICAgICAgdGhpcy5zaG9wLmRlc3Ryb3koKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgKGR0KSB7fVxyXG59XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/assets/Script/module/Crypto/crypto-js.min.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'e64e1qXyT9CV6s0gDQdj/ed', 'crypto-js.min'); +// Script/module/Crypto/crypto-js.min.js + +"use strict"; + +!function (t, r) { + "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r(); +}(void 0, function () { + var t = t || function (t, r) { + var e = Object.create || function () { + function t() {} + return function (r) { + var e; + return t.prototype = r, e = new t(), t.prototype = null, e; + }; + }(), + i = {}, + n = i.lib = {}, + o = n.Base = function () { + return { + extend: function extend(t) { + var r = e(this); + return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { + r.$super.init.apply(this, arguments); + }), r.init.prototype = r, r.$super = this, r; + }, + create: function create() { + var t = this.extend(); + return t.init.apply(t, arguments), t; + }, + init: function init() {}, + mixIn: function mixIn(t) { + for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); + t.hasOwnProperty("toString") && (this.toString = t.toString); + }, + clone: function clone() { + return this.init.prototype.extend(this); + } + }; + }(), + s = n.WordArray = o.extend({ + init: function init(t, e) { + t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length; + }, + toString: function toString(t) { + return (t || c).stringify(this); + }, + concat: function concat(t) { + var r = this.words, + e = t.words, + i = this.sigBytes, + n = t.sigBytes; + if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { + var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; + r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8; + } else for (var o = 0; o < n; o += 4) r[i + o >>> 2] = e[o >>> 2]; + return this.sigBytes += n, this; + }, + clamp: function clamp() { + var r = this.words, + e = this.sigBytes; + r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4); + }, + clone: function clone() { + var t = o.clone.call(this); + return t.words = this.words.slice(0), t; + }, + random: function random(r) { + for (var e, i = [], n = function n(r) { + var r = r, + e = 987654321, + i = 4294967295; + return function () { + e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; + var n = (e << 16) + r & i; + return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1); + }; + }, o = 0; o < r; o += 4) { + var a = n(4294967296 * (e || t.random())); + e = 987654071 * a(), i.push(4294967296 * a() | 0); + } + return new s.init(i, r); + } + }), + a = i.enc = {}, + c = a.Hex = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { + var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; + i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i += 2) e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; + return new s.init(e, r / 2); + } + }, + h = a.Latin1 = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { + var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; + i.push(String.fromCharCode(o)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; + return new s.init(e, r); + } + }, + l = a.Utf8 = { + stringify: function stringify(t) { + try { + return decodeURIComponent(escape(h.stringify(t))); + } catch (t) { + throw new Error("Malformed UTF-8 data"); + } + }, + parse: function parse(t) { + return h.parse(unescape(encodeURIComponent(t))); + } + }, + f = n.BufferedBlockAlgorithm = o.extend({ + reset: function reset() { + this._data = new s.init(), this._nDataBytes = 0; + }, + _append: function _append(t) { + "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes; + }, + _process: function _process(r) { + var e = this._data, + i = e.words, + n = e.sigBytes, + o = this.blockSize, + a = 4 * o, + c = n / a; + c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); + var h = c * o, + l = t.min(4 * h, n); + if (h) { + for (var f = 0; f < h; f += o) this._doProcessBlock(i, f); + var u = i.splice(0, h); + e.sigBytes -= l; + } + return new s.init(u, l); + }, + clone: function clone() { + var t = o.clone.call(this); + return t._data = this._data.clone(), t; + }, + _minBufferSize: 0 + }), + u = (n.Hasher = f.extend({ + cfg: o.extend(), + init: function init(t) { + this.cfg = this.cfg.extend(t), this.reset(); + }, + reset: function reset() { + f.reset.call(this), this._doReset(); + }, + update: function update(t) { + return this._append(t), this._process(), this; + }, + finalize: function finalize(t) { + t && this._append(t); + var r = this._doFinalize(); + return r; + }, + blockSize: 16, + _createHelper: function _createHelper(t) { + return function (r, e) { + return new t.init(e).finalize(r); + }; + }, + _createHmacHelper: function _createHmacHelper(t) { + return function (r, e) { + return new u.HMAC.init(t, e).finalize(r); + }; + } + }), i.algo = {}); + return i; + }(Math); + return function () { + function r(t, r, e) { + for (var i = [], o = 0, s = 0; s < r; s++) if (s % 4) { + var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, + c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; + i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++; + } + return n.create(i, o); + } + var e = t, + i = e.lib, + n = i.WordArray, + o = e.enc; + o.Base64 = { + stringify: function stringify(t) { + var r = t.words, + e = t.sigBytes, + i = this._map; + t.clamp(); + for (var n = [], o = 0; o < e; o += 3) for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++) n.push(i.charAt(h >>> 6 * (3 - l) & 63)); + var f = i.charAt(64); + if (f) for (; n.length % 4;) n.push(f); + return n.join(""); + }, + parse: function parse(t) { + var e = t.length, + i = this._map, + n = this._reverseMap; + if (!n) { + n = this._reverseMap = []; + for (var o = 0; o < i.length; o++) n[i.charCodeAt(o)] = o; + } + var s = i.charAt(64); + if (s) { + var a = t.indexOf(s); + a !== -1 && (e = a); + } + return r(t, e, n); + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" + }; + }(), function (r) { + function e(t, r, e, i, n, o, s) { + var a = t + (r & e | ~r & i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function i(t, r, e, i, n, o, s) { + var a = t + (r & i | e & ~i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function n(t, r, e, i, n, o, s) { + var a = t + (r ^ e ^ i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function o(t, r, e, i, n, o, s) { + var a = t + (e ^ (r | ~i)) + n + s; + return (a << o | a >>> 32 - o) + r; + } + var s = t, + a = s.lib, + c = a.WordArray, + h = a.Hasher, + l = s.algo, + f = []; + !function () { + for (var t = 0; t < 64; t++) f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0; + }(); + var u = l.MD5 = h.extend({ + _doReset: function _doReset() { + this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var s = 0; s < 16; s++) { + var a = r + s, + c = t[a]; + t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8); + } + var h = this._hash.words, + l = t[r + 0], + u = t[r + 1], + d = t[r + 2], + v = t[r + 3], + p = t[r + 4], + _ = t[r + 5], + y = t[r + 6], + g = t[r + 7], + B = t[r + 8], + w = t[r + 9], + k = t[r + 10], + S = t[r + 11], + m = t[r + 12], + x = t[r + 13], + b = t[r + 14], + H = t[r + 15], + z = h[0], + A = h[1], + C = h[2], + D = h[3]; + z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + e[n >>> 5] |= 128 << 24 - n % 32; + var o = r.floor(i / 4294967296), + s = i; + e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); + for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { + var l = c[h]; + c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); + } + return a; + }, + clone: function clone() { + var t = h.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u); + }(Math), function () { + var r = t, + e = r.lib, + i = e.WordArray, + n = e.Hasher, + o = r.algo, + s = [], + a = o.SHA1 = n.extend({ + _doReset: function _doReset() { + this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { + if (h < 16) s[h] = 0 | t[r + h];else { + var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; + s[h] = l << 1 | l >>> 31; + } + var f = (i << 5 | i >>> 27) + c + s[h]; + f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f; + } + e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash; + }, + clone: function clone() { + var t = n.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a); + }(), function (r) { + var e = t, + i = e.lib, + n = i.WordArray, + o = i.Hasher, + s = e.algo, + a = [], + c = []; + !function () { + function t(t) { + for (var e = r.sqrt(t), i = 2; i <= e; i++) if (!(t % i)) return !1; + return !0; + } + function e(t) { + return 4294967296 * (t - (0 | t)) | 0; + } + for (var i = 2, n = 0; n < 64;) t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++; + }(); + var h = [], + l = s.SHA256 = o.extend({ + _doReset: function _doReset() { + this._hash = new n.init(a.slice(0)); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { + if (d < 16) h[d] = 0 | t[r + d];else { + var v = h[d - 15], + p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, + _ = h[d - 2], + y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; + h[d] = p + h[d - 7] + y + h[d - 16]; + } + var g = a & l ^ ~a & f, + B = i & n ^ i & o ^ n & o, + w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), + k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), + S = u + k + g + c[d] + h[d], + m = w + B; + u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0; + } + e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash; + }, + clone: function clone() { + var t = o.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l); + }(Math), function () { + function r(t) { + return t << 8 & 4278255360 | t >>> 8 & 16711935; + } + var e = t, + i = e.lib, + n = i.WordArray, + o = e.enc; + o.Utf16 = o.Utf16BE = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { + var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; + i.push(String.fromCharCode(o)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; + return n.create(e, 2 * r); + } + }; + o.Utf16LE = { + stringify: function stringify(t) { + for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { + var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); + n.push(String.fromCharCode(s)); + } + return n.join(""); + }, + parse: function parse(t) { + for (var e = t.length, i = [], o = 0; o < e; o++) i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); + return n.create(i, 2 * e); + } + }; + }(), function () { + if ("function" == typeof ArrayBuffer) { + var r = t, + e = r.lib, + i = e.WordArray, + n = i.init, + o = i.init = function (t) { + if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { + for (var r = t.byteLength, e = [], i = 0; i < r; i++) e[i >>> 2] |= t[i] << 24 - i % 4 * 8; + n.call(this, e, r); + } else n.apply(this, arguments); + }; + o.prototype = i; + } + }(), function (r) { + function e(t, r, e) { + return t ^ r ^ e; + } + function i(t, r, e) { + return t & r | ~t & e; + } + function n(t, r, e) { + return (t | ~r) ^ e; + } + function o(t, r, e) { + return t & e | r & ~e; + } + function s(t, r, e) { + return t ^ (r | ~e); + } + function a(t, r) { + return t << r | t >>> 32 - r; + } + var c = t, + h = c.lib, + l = h.WordArray, + f = h.Hasher, + u = c.algo, + d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), + v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), + p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), + _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), + y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), + g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), + B = u.RIPEMD160 = f.extend({ + _doReset: function _doReset() { + this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var c = 0; c < 16; c++) { + var h = r + c, + l = t[h]; + t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); + } + var f, + u, + B, + w, + k, + S, + m, + x, + b, + H, + z = this._hash.words, + A = y.words, + C = g.words, + D = d.words, + R = v.words, + E = p.words, + M = _.words; + S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; + for (var F, c = 0; c < 80; c += 1) F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; + F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); + for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { + var a = o[s]; + o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8); + } + return n; + }, + clone: function clone() { + var t = f.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B); + }(Math), function () { + var r = t, + e = r.lib, + i = e.Base, + n = r.enc, + o = n.Utf8, + s = r.algo; + s.HMAC = i.extend({ + init: function init(t, r) { + t = this._hasher = new t.init(), "string" == typeof r && (r = o.parse(r)); + var e = t.blockSize, + i = 4 * e; + r.sigBytes > i && (r = t.finalize(r)), r.clamp(); + for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++) a[h] ^= 1549556828, c[h] ^= 909522486; + n.sigBytes = s.sigBytes = i, this.reset(); + }, + reset: function reset() { + var t = this._hasher; + t.reset(), t.update(this._iKey); + }, + update: function update(t) { + return this._hasher.update(t), this; + }, + finalize: function finalize(t) { + var r = this._hasher, + e = r.finalize(t); + r.reset(); + var i = r.finalize(this._oKey.clone().concat(e)); + return i; + } + }); + }(), function () { + var r = t, + e = r.lib, + i = e.Base, + n = e.WordArray, + o = r.algo, + s = o.SHA1, + a = o.HMAC, + c = o.PBKDF2 = i.extend({ + cfg: i.extend({ + keySize: 4, + hasher: s, + iterations: 1 + }), + init: function init(t) { + this.cfg = this.cfg.extend(t); + }, + compute: function compute(t, r) { + for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { + var u = i.update(r).finalize(s); + i.reset(); + for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { + p = i.finalize(p), i.reset(); + for (var y = p.words, g = 0; g < v; g++) d[g] ^= y[g]; + } + o.concat(u), h[0]++; + } + return o.sigBytes = 4 * l, o; + } + }); + r.PBKDF2 = function (t, r, e) { + return c.create(e).compute(t, r); + }; + }(), function () { + var r = t, + e = r.lib, + i = e.Base, + n = e.WordArray, + o = r.algo, + s = o.MD5, + a = o.EvpKDF = i.extend({ + cfg: i.extend({ + keySize: 4, + hasher: s, + iterations: 1 + }), + init: function init(t) { + this.cfg = this.cfg.extend(t); + }, + compute: function compute(t, r) { + for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { + h && i.update(h); + var h = i.update(t).finalize(r); + i.reset(); + for (var l = 1; l < c; l++) h = i.finalize(h), i.reset(); + o.concat(h); + } + return o.sigBytes = 4 * a, o; + } + }); + r.EvpKDF = function (t, r, e) { + return a.create(e).compute(t, r); + }; + }(), function () { + var r = t, + e = r.lib, + i = e.WordArray, + n = r.algo, + o = n.SHA256, + s = n.SHA224 = o.extend({ + _doReset: function _doReset() { + this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); + }, + _doFinalize: function _doFinalize() { + var t = o._doFinalize.call(this); + return t.sigBytes -= 4, t; + } + }); + r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s); + }(), function (r) { + var e = t, + i = e.lib, + n = i.Base, + o = i.WordArray, + s = e.x64 = {}; + s.Word = n.extend({ + init: function init(t, r) { + this.high = t, this.low = r; + } + }), s.WordArray = n.extend({ + init: function init(t, e) { + t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length; + }, + toX32: function toX32() { + for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { + var n = t[i]; + e.push(n.high), e.push(n.low); + } + return o.create(e, this.sigBytes); + }, + clone: function clone() { + for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++) r[i] = r[i].clone(); + return t; + } + }); + }(), function (r) { + var e = t, + i = e.lib, + n = i.WordArray, + o = i.Hasher, + s = e.x64, + a = s.Word, + c = e.algo, + h = [], + l = [], + f = []; + !function () { + for (var t = 1, r = 0, e = 0; e < 24; e++) { + h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; + var i = r % 5, + n = (2 * t + 3 * r) % 5; + t = i, r = n; + } + for (var t = 0; t < 5; t++) for (var r = 0; r < 5; r++) l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; + for (var o = 1, s = 0; s < 24; s++) { + for (var c = 0, u = 0, d = 0; d < 7; d++) { + if (1 & o) { + var v = (1 << d) - 1; + v < 32 ? u ^= 1 << v : c ^= 1 << v - 32; + } + 128 & o ? o = o << 1 ^ 113 : o <<= 1; + } + f[s] = a.create(c, u); + } + }(); + var u = []; + !function () { + for (var t = 0; t < 25; t++) u[t] = a.create(); + }(); + var d = c.SHA3 = o.extend({ + cfg: o.cfg.extend({ + outputLength: 512 + }), + _doReset: function _doReset() { + for (var t = this._state = [], r = 0; r < 25; r++) t[r] = new a.init(); + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { + var o = t[r + 2 * n], + s = t[r + 2 * n + 1]; + o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); + var a = e[n]; + a.high ^= s, a.low ^= o; + } + for (var c = 0; c < 24; c++) { + for (var d = 0; d < 5; d++) { + for (var v = 0, p = 0, _ = 0; _ < 5; _++) { + var a = e[d + 5 * _]; + v ^= a.high, p ^= a.low; + } + var y = u[d]; + y.high = v, y.low = p; + } + for (var d = 0; d < 5; d++) for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { + var a = e[d + 5 * _]; + a.high ^= v, a.low ^= p; + } + for (var S = 1; S < 25; S++) { + var a = e[S], + m = a.high, + x = a.low, + b = h[S]; + if (b < 32) var v = m << b | x >>> 32 - b, + p = x << b | m >>> 32 - b;else var v = x << b - 32 | m >>> 64 - b, + p = m << b - 32 | x >>> 64 - b; + var H = u[l[S]]; + H.high = v, H.low = p; + } + var z = u[0], + A = e[0]; + z.high = A.high, z.low = A.low; + for (var d = 0; d < 5; d++) for (var _ = 0; _ < 5; _++) { + var S = d + 5 * _, + a = e[S], + C = u[S], + D = u[(d + 1) % 5 + 5 * _], + R = u[(d + 2) % 5 + 5 * _]; + a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low; + } + var a = e[0], + E = f[c]; + a.high ^= E.high, a.low ^= E.low; + } + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = (8 * this._nDataBytes, 8 * t.sigBytes), + o = 32 * this.blockSize; + e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); + for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { + var f = s[l], + u = f.high, + d = f.low; + u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u); + } + return new n.init(h, a); + }, + clone: function clone() { + for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++) r[e] = r[e].clone(); + return t; + } + }); + e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d); + }(Math), function () { + function r() { + return s.create.apply(s, arguments); + } + var e = t, + i = e.lib, + n = i.Hasher, + o = e.x64, + s = o.Word, + a = o.WordArray, + c = e.algo, + h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], + l = []; + !function () { + for (var t = 0; t < 80; t++) l[t] = r(); + }(); + var f = c.SHA512 = n.extend({ + _doReset: function _doReset() { + this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { + var Z = l[T]; + if (T < 16) var q = Z.high = 0 | t[r + 2 * T], + G = Z.low = 0 | t[r + 2 * T + 1];else { + var J = l[T - 15], + $ = J.high, + Q = J.low, + V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, + Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), + tt = l[T - 2], + rt = tt.high, + et = tt.low, + it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, + nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), + ot = l[T - 7], + st = ot.high, + at = ot.low, + ct = l[T - 16], + ht = ct.high, + lt = ct.low, + G = Y + at, + q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), + G = G + nt, + q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), + G = G + lt, + q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); + Z.high = q, Z.low = G; + } + var ft = O & I ^ ~O & X, + ut = U & K ^ ~U & L, + dt = C & R ^ C & M ^ R & M, + vt = D & E ^ D & F ^ E & F, + pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), + _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), + yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), + gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), + Bt = h[T], + wt = Bt.high, + kt = Bt.low, + St = N + gt, + mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), + St = St + ut, + mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), + St = St + kt, + mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), + St = St + G, + mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), + xt = _t + vt, + bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); + j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0; + } + v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0); + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); + var n = this._hash.toX32(); + return n; + }, + clone: function clone() { + var t = n.clone.call(this); + return t._hash = this._hash.clone(), t; + }, + blockSize: 32 + }); + e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f); + }(), function () { + var r = t, + e = r.x64, + i = e.Word, + n = e.WordArray, + o = r.algo, + s = o.SHA512, + a = o.SHA384 = s.extend({ + _doReset: function _doReset() { + this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]); + }, + _doFinalize: function _doFinalize() { + var t = s._doFinalize.call(this); + return t.sigBytes -= 16, t; + } + }); + r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a); + }(), t.lib.Cipher || function (r) { + var e = t, + i = e.lib, + n = i.Base, + o = i.WordArray, + s = i.BufferedBlockAlgorithm, + a = e.enc, + c = (a.Utf8, a.Base64), + h = e.algo, + l = h.EvpKDF, + f = i.Cipher = s.extend({ + cfg: n.extend(), + createEncryptor: function createEncryptor(t, r) { + return this.create(this._ENC_XFORM_MODE, t, r); + }, + createDecryptor: function createDecryptor(t, r) { + return this.create(this._DEC_XFORM_MODE, t, r); + }, + init: function init(t, r, e) { + this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset(); + }, + reset: function reset() { + s.reset.call(this), this._doReset(); + }, + process: function process(t) { + return this._append(t), this._process(); + }, + finalize: function finalize(t) { + t && this._append(t); + var r = this._doFinalize(); + return r; + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function t(t) { + return "string" == typeof t ? m : w; + } + return function (r) { + return { + encrypt: function encrypt(e, i, n) { + return t(i).encrypt(r, e, i, n); + }, + decrypt: function decrypt(e, i, n) { + return t(i).decrypt(r, e, i, n); + } + }; + }; + }() + }), + u = (i.StreamCipher = f.extend({ + _doFinalize: function _doFinalize() { + var t = this._process(!0); + return t; + }, + blockSize: 1 + }), e.mode = {}), + d = i.BlockCipherMode = n.extend({ + createEncryptor: function createEncryptor(t, r) { + return this.Encryptor.create(t, r); + }, + createDecryptor: function createDecryptor(t, r) { + return this.Decryptor.create(t, r); + }, + init: function init(t, r) { + this._cipher = t, this._iv = r; + } + }), + v = u.CBC = function () { + function t(t, e, i) { + var n = this._iv; + if (n) { + var o = n; + this._iv = r; + } else var o = this._prevBlock; + for (var s = 0; s < i; s++) t[e + s] ^= o[s]; + } + var e = d.extend(); + return e.Encryptor = e.extend({ + processBlock: function processBlock(r, e) { + var i = this._cipher, + n = i.blockSize; + t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n); + } + }), e.Decryptor = e.extend({ + processBlock: function processBlock(r, e) { + var i = this._cipher, + n = i.blockSize, + o = r.slice(e, e + n); + i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o; + } + }), e; + }(), + p = e.pad = {}, + _ = p.Pkcs7 = { + pad: function pad(t, r) { + for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4) s.push(n); + var c = o.create(s, i); + t.concat(c); + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, + y = (i.BlockCipher = f.extend({ + cfg: f.cfg.extend({ + mode: v, + padding: _ + }), + reset: function reset() { + f.reset.call(this); + var t = this.cfg, + r = t.iv, + e = t.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor;else { + var i = e.createDecryptor; + this._minBufferSize = 1; + } + this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + this._mode.processBlock(t, r); + }, + _doFinalize: function _doFinalize() { + var t = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + t.pad(this._data, this.blockSize); + var r = this._process(!0); + } else { + var r = this._process(!0); + t.unpad(r); + } + return r; + }, + blockSize: 4 + }), i.CipherParams = n.extend({ + init: function init(t) { + this.mixIn(t); + }, + toString: function toString(t) { + return (t || this.formatter).stringify(this); + } + })), + g = e.format = {}, + B = g.OpenSSL = { + stringify: function stringify(t) { + var r = t.ciphertext, + e = t.salt; + if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r);else var i = r; + return i.toString(c); + }, + parse: function parse(t) { + var r = c.parse(t), + e = r.words; + if (1398893684 == e[0] && 1701076831 == e[1]) { + var i = o.create(e.slice(2, 4)); + e.splice(0, 4), r.sigBytes -= 16; + } + return y.create({ + ciphertext: r, + salt: i + }); + } + }, + w = i.SerializableCipher = n.extend({ + cfg: n.extend({ + format: B + }), + encrypt: function encrypt(t, r, e, i) { + i = this.cfg.extend(i); + var n = t.createEncryptor(e, i), + o = n.finalize(r), + s = n.cfg; + return y.create({ + ciphertext: o, + key: e, + iv: s.iv, + algorithm: t, + mode: s.mode, + padding: s.padding, + blockSize: t.blockSize, + formatter: i.format + }); + }, + decrypt: function decrypt(t, r, e, i) { + i = this.cfg.extend(i), r = this._parse(r, i.format); + var n = t.createDecryptor(e, i).finalize(r.ciphertext); + return n; + }, + _parse: function _parse(t, r) { + return "string" == typeof t ? r.parse(t, this) : t; + } + }), + k = e.kdf = {}, + S = k.OpenSSL = { + execute: function execute(t, r, e, i) { + i || (i = o.random(8)); + var n = l.create({ + keySize: r + e + }).compute(t, i), + s = o.create(n.words.slice(r), 4 * e); + return n.sigBytes = 4 * r, y.create({ + key: n, + iv: s, + salt: i + }); + } + }, + m = i.PasswordBasedCipher = w.extend({ + cfg: w.cfg.extend({ + kdf: S + }), + encrypt: function encrypt(t, r, e, i) { + i = this.cfg.extend(i); + var n = i.kdf.execute(e, t.keySize, t.ivSize); + i.iv = n.iv; + var o = w.encrypt.call(this, t, r, n.key, i); + return o.mixIn(n), o; + }, + decrypt: function decrypt(t, r, e, i) { + i = this.cfg.extend(i), r = this._parse(r, i.format); + var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); + i.iv = n.iv; + var o = w.decrypt.call(this, t, r, n.key, i); + return o; + } + }); + }(), t.mode.CFB = function () { + function r(t, r, e, i) { + var n = this._iv; + if (n) { + var o = n.slice(0); + this._iv = void 0; + } else var o = this._prevBlock; + i.encryptBlock(o, 0); + for (var s = 0; s < e; s++) t[r + s] ^= o[s]; + } + var e = t.lib.BlockCipherMode.extend(); + return e.Encryptor = e.extend({ + processBlock: function processBlock(t, e) { + var i = this._cipher, + n = i.blockSize; + r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n); + } + }), e.Decryptor = e.extend({ + processBlock: function processBlock(t, e) { + var i = this._cipher, + n = i.blockSize, + o = t.slice(e, e + n); + r.call(this, t, e, n, i), this._prevBlock = o; + } + }), e; + }(), t.mode.ECB = function () { + var r = t.lib.BlockCipherMode.extend(); + return r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + this._cipher.encryptBlock(t, r); + } + }), r.Decryptor = r.extend({ + processBlock: function processBlock(t, r) { + this._cipher.decryptBlock(t, r); + } + }), r; + }(), t.pad.AnsiX923 = { + pad: function pad(t, r) { + var e = t.sigBytes, + i = 4 * r, + n = i - e % i, + o = e + n - 1; + t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n; + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, t.pad.Iso10126 = { + pad: function pad(r, e) { + var i = 4 * e, + n = i - r.sigBytes % i; + r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)); + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, t.pad.Iso97971 = { + pad: function pad(r, e) { + r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e); + }, + unpad: function unpad(r) { + t.pad.ZeroPadding.unpad(r), r.sigBytes--; + } + }, t.mode.OFB = function () { + var r = t.lib.BlockCipherMode.extend(), + e = r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + var e = this._cipher, + i = e.blockSize, + n = this._iv, + o = this._keystream; + n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); + for (var s = 0; s < i; s++) t[r + s] ^= o[s]; + } + }); + return r.Decryptor = e, r; + }(), t.pad.NoPadding = { + pad: function pad() {}, + unpad: function unpad() {} + }, function (r) { + var e = t, + i = e.lib, + n = i.CipherParams, + o = e.enc, + s = o.Hex, + a = e.format; + a.Hex = { + stringify: function stringify(t) { + return t.ciphertext.toString(s); + }, + parse: function parse(t) { + var r = s.parse(t); + return n.create({ + ciphertext: r + }); + } + }; + }(), function () { + var r = t, + e = r.lib, + i = e.BlockCipher, + n = r.algo, + o = [], + s = [], + a = [], + c = [], + h = [], + l = [], + f = [], + u = [], + d = [], + v = []; + !function () { + for (var t = [], r = 0; r < 256; r++) r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; + for (var e = 0, i = 0, r = 0; r < 256; r++) { + var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; + n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; + var p = t[e], + _ = t[p], + y = t[_], + g = 257 * t[n] ^ 16843008 * n; + a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; + var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; + f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1; + } + }(); + var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], + _ = n.AES = i.extend({ + _doReset: function _doReset() { + if (!this._nRounds || this._keyPriorReset !== this._key) { + for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++) if (a < e) s[a] = r[a];else { + var c = s[a - 1]; + a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c; + } + for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { + var a = n - l; + if (l % 4) var c = s[a];else var c = s[a - 4]; + l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]]; + } + } + }, + encryptBlock: function encryptBlock(t, r) { + this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o); + }, + decryptBlock: function decryptBlock(t, r) { + var e = t[r + 1]; + t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); + var e = t[r + 1]; + t[r + 1] = t[r + 3], t[r + 3] = e; + }, + _doCryptBlock: function _doCryptBlock(t, r, e, i, n, o, s, a) { + for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { + var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], + _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], + y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], + g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; + h = p, l = _, f = y, u = g; + } + var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], + _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], + y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], + g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; + t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g; + }, + keySize: 8 + }); + r.AES = i._createHelper(_); + }(), function () { + function r(t, r) { + var e = (this._lBlock >>> t ^ this._rBlock) & r; + this._rBlock ^= e, this._lBlock ^= e << t; + } + function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; + this._lBlock ^= e, this._rBlock ^= e << t; + } + var i = t, + n = i.lib, + o = n.WordArray, + s = n.BlockCipher, + a = i.algo, + c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], + h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], + l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], + f = [{ + 0: 8421888, + 268435456: 32768, + 536870912: 8421378, + 805306368: 2, + 1073741824: 512, + 1342177280: 8421890, + 1610612736: 8389122, + 1879048192: 8388608, + 2147483648: 514, + 2415919104: 8389120, + 2684354560: 33280, + 2952790016: 8421376, + 3221225472: 32770, + 3489660928: 8388610, + 3758096384: 0, + 4026531840: 33282, + 134217728: 0, + 402653184: 8421890, + 671088640: 33282, + 939524096: 32768, + 1207959552: 8421888, + 1476395008: 512, + 1744830464: 8421378, + 2013265920: 2, + 2281701376: 8389120, + 2550136832: 33280, + 2818572288: 8421376, + 3087007744: 8389122, + 3355443200: 8388610, + 3623878656: 32770, + 3892314112: 514, + 4160749568: 8388608, + 1: 32768, + 268435457: 2, + 536870913: 8421888, + 805306369: 8388608, + 1073741825: 8421378, + 1342177281: 33280, + 1610612737: 512, + 1879048193: 8389122, + 2147483649: 8421890, + 2415919105: 8421376, + 2684354561: 8388610, + 2952790017: 33282, + 3221225473: 514, + 3489660929: 8389120, + 3758096385: 32770, + 4026531841: 0, + 134217729: 8421890, + 402653185: 8421376, + 671088641: 8388608, + 939524097: 512, + 1207959553: 32768, + 1476395009: 8388610, + 1744830465: 2, + 2013265921: 33282, + 2281701377: 32770, + 2550136833: 8389122, + 2818572289: 514, + 3087007745: 8421888, + 3355443201: 8389120, + 3623878657: 0, + 3892314113: 33280, + 4160749569: 8421378 + }, { + 0: 1074282512, + 16777216: 16384, + 33554432: 524288, + 50331648: 1074266128, + 67108864: 1073741840, + 83886080: 1074282496, + 100663296: 1073758208, + 117440512: 16, + 134217728: 540672, + 150994944: 1073758224, + 167772160: 1073741824, + 184549376: 540688, + 201326592: 524304, + 218103808: 0, + 234881024: 16400, + 251658240: 1074266112, + 8388608: 1073758208, + 25165824: 540688, + 41943040: 16, + 58720256: 1073758224, + 75497472: 1074282512, + 92274688: 1073741824, + 109051904: 524288, + 125829120: 1074266128, + 142606336: 524304, + 159383552: 0, + 176160768: 16384, + 192937984: 1074266112, + 209715200: 1073741840, + 226492416: 540672, + 243269632: 1074282496, + 260046848: 16400, + 268435456: 0, + 285212672: 1074266128, + 301989888: 1073758224, + 318767104: 1074282496, + 335544320: 1074266112, + 352321536: 16, + 369098752: 540688, + 385875968: 16384, + 402653184: 16400, + 419430400: 524288, + 436207616: 524304, + 452984832: 1073741840, + 469762048: 540672, + 486539264: 1073758208, + 503316480: 1073741824, + 520093696: 1074282512, + 276824064: 540688, + 293601280: 524288, + 310378496: 1074266112, + 327155712: 16384, + 343932928: 1073758208, + 360710144: 1074282512, + 377487360: 16, + 394264576: 1073741824, + 411041792: 1074282496, + 427819008: 1073741840, + 444596224: 1073758224, + 461373440: 524304, + 478150656: 0, + 494927872: 16400, + 511705088: 1074266128, + 528482304: 540672 + }, { + 0: 260, + 1048576: 0, + 2097152: 67109120, + 3145728: 65796, + 4194304: 65540, + 5242880: 67108868, + 6291456: 67174660, + 7340032: 67174400, + 8388608: 67108864, + 9437184: 67174656, + 10485760: 65792, + 11534336: 67174404, + 12582912: 67109124, + 13631488: 65536, + 14680064: 4, + 15728640: 256, + 524288: 67174656, + 1572864: 67174404, + 2621440: 0, + 3670016: 67109120, + 4718592: 67108868, + 5767168: 65536, + 6815744: 65540, + 7864320: 260, + 8912896: 4, + 9961472: 256, + 11010048: 67174400, + 12058624: 65796, + 13107200: 65792, + 14155776: 67109124, + 15204352: 67174660, + 16252928: 67108864, + 16777216: 67174656, + 17825792: 65540, + 18874368: 65536, + 19922944: 67109120, + 20971520: 256, + 22020096: 67174660, + 23068672: 67108868, + 24117248: 0, + 25165824: 67109124, + 26214400: 67108864, + 27262976: 4, + 28311552: 65792, + 29360128: 67174400, + 30408704: 260, + 31457280: 65796, + 32505856: 67174404, + 17301504: 67108864, + 18350080: 260, + 19398656: 67174656, + 20447232: 0, + 21495808: 65540, + 22544384: 67109120, + 23592960: 256, + 24641536: 67174404, + 25690112: 65536, + 26738688: 67174660, + 27787264: 65796, + 28835840: 67108868, + 29884416: 67109124, + 30932992: 67174400, + 31981568: 4, + 33030144: 65792 + }, { + 0: 2151682048, + 65536: 2147487808, + 131072: 4198464, + 196608: 2151677952, + 262144: 0, + 327680: 4198400, + 393216: 2147483712, + 458752: 4194368, + 524288: 2147483648, + 589824: 4194304, + 655360: 64, + 720896: 2147487744, + 786432: 2151678016, + 851968: 4160, + 917504: 4096, + 983040: 2151682112, + 32768: 2147487808, + 98304: 64, + 163840: 2151678016, + 229376: 2147487744, + 294912: 4198400, + 360448: 2151682112, + 425984: 0, + 491520: 2151677952, + 557056: 4096, + 622592: 2151682048, + 688128: 4194304, + 753664: 4160, + 819200: 2147483648, + 884736: 4194368, + 950272: 4198464, + 1015808: 2147483712, + 1048576: 4194368, + 1114112: 4198400, + 1179648: 2147483712, + 1245184: 0, + 1310720: 4160, + 1376256: 2151678016, + 1441792: 2151682048, + 1507328: 2147487808, + 1572864: 2151682112, + 1638400: 2147483648, + 1703936: 2151677952, + 1769472: 4198464, + 1835008: 2147487744, + 1900544: 4194304, + 1966080: 64, + 2031616: 4096, + 1081344: 2151677952, + 1146880: 2151682112, + 1212416: 0, + 1277952: 4198400, + 1343488: 4194368, + 1409024: 2147483648, + 1474560: 2147487808, + 1540096: 64, + 1605632: 2147483712, + 1671168: 4096, + 1736704: 2147487744, + 1802240: 2151678016, + 1867776: 4160, + 1933312: 2151682048, + 1998848: 4194304, + 2064384: 4198464 + }, { + 0: 128, + 4096: 17039360, + 8192: 262144, + 12288: 536870912, + 16384: 537133184, + 20480: 16777344, + 24576: 553648256, + 28672: 262272, + 32768: 16777216, + 36864: 537133056, + 40960: 536871040, + 45056: 553910400, + 49152: 553910272, + 53248: 0, + 57344: 17039488, + 61440: 553648128, + 2048: 17039488, + 6144: 553648256, + 10240: 128, + 14336: 17039360, + 18432: 262144, + 22528: 537133184, + 26624: 553910272, + 30720: 536870912, + 34816: 537133056, + 38912: 0, + 43008: 553910400, + 47104: 16777344, + 51200: 536871040, + 55296: 553648128, + 59392: 16777216, + 63488: 262272, + 65536: 262144, + 69632: 128, + 73728: 536870912, + 77824: 553648256, + 81920: 16777344, + 86016: 553910272, + 90112: 537133184, + 94208: 16777216, + 98304: 553910400, + 102400: 553648128, + 106496: 17039360, + 110592: 537133056, + 114688: 262272, + 118784: 536871040, + 122880: 0, + 126976: 17039488, + 67584: 553648256, + 71680: 16777216, + 75776: 17039360, + 79872: 537133184, + 83968: 536870912, + 88064: 17039488, + 92160: 128, + 96256: 553910272, + 100352: 262272, + 104448: 553910400, + 108544: 0, + 112640: 553648128, + 116736: 16777344, + 120832: 262144, + 124928: 537133056, + 129024: 536871040 + }, { + 0: 268435464, + 256: 8192, + 512: 270532608, + 768: 270540808, + 1024: 268443648, + 1280: 2097152, + 1536: 2097160, + 1792: 268435456, + 2048: 0, + 2304: 268443656, + 2560: 2105344, + 2816: 8, + 3072: 270532616, + 3328: 2105352, + 3584: 8200, + 3840: 270540800, + 128: 270532608, + 384: 270540808, + 640: 8, + 896: 2097152, + 1152: 2105352, + 1408: 268435464, + 1664: 268443648, + 1920: 8200, + 2176: 2097160, + 2432: 8192, + 2688: 268443656, + 2944: 270532616, + 3200: 0, + 3456: 270540800, + 3712: 2105344, + 3968: 268435456, + 4096: 268443648, + 4352: 270532616, + 4608: 270540808, + 4864: 8200, + 5120: 2097152, + 5376: 268435456, + 5632: 268435464, + 5888: 2105344, + 6144: 2105352, + 6400: 0, + 6656: 8, + 6912: 270532608, + 7168: 8192, + 7424: 268443656, + 7680: 270540800, + 7936: 2097160, + 4224: 8, + 4480: 2105344, + 4736: 2097152, + 4992: 268435464, + 5248: 268443648, + 5504: 8200, + 5760: 270540808, + 6016: 270532608, + 6272: 270540800, + 6528: 270532616, + 6784: 8192, + 7040: 2105352, + 7296: 2097160, + 7552: 0, + 7808: 268435456, + 8064: 268443656 + }, { + 0: 1048576, + 16: 33555457, + 32: 1024, + 48: 1049601, + 64: 34604033, + 80: 0, + 96: 1, + 112: 34603009, + 128: 33555456, + 144: 1048577, + 160: 33554433, + 176: 34604032, + 192: 34603008, + 208: 1025, + 224: 1049600, + 240: 33554432, + 8: 34603009, + 24: 0, + 40: 33555457, + 56: 34604032, + 72: 1048576, + 88: 33554433, + 104: 33554432, + 120: 1025, + 136: 1049601, + 152: 33555456, + 168: 34603008, + 184: 1048577, + 200: 1024, + 216: 34604033, + 232: 1, + 248: 1049600, + 256: 33554432, + 272: 1048576, + 288: 33555457, + 304: 34603009, + 320: 1048577, + 336: 33555456, + 352: 34604032, + 368: 1049601, + 384: 1025, + 400: 34604033, + 416: 1049600, + 432: 1, + 448: 0, + 464: 34603008, + 480: 33554433, + 496: 1024, + 264: 1049600, + 280: 33555457, + 296: 34603009, + 312: 1, + 328: 33554432, + 344: 1048576, + 360: 1025, + 376: 34604032, + 392: 33554433, + 408: 34603008, + 424: 0, + 440: 34604033, + 456: 1049601, + 472: 1024, + 488: 33555456, + 504: 1048577 + }, { + 0: 134219808, + 1: 131072, + 2: 134217728, + 3: 32, + 4: 131104, + 5: 134350880, + 6: 134350848, + 7: 2048, + 8: 134348800, + 9: 134219776, + 10: 133120, + 11: 134348832, + 12: 2080, + 13: 0, + 14: 134217760, + 15: 133152, + 2147483648: 2048, + 2147483649: 134350880, + 2147483650: 134219808, + 2147483651: 134217728, + 2147483652: 134348800, + 2147483653: 133120, + 2147483654: 133152, + 2147483655: 32, + 2147483656: 134217760, + 2147483657: 2080, + 2147483658: 131104, + 2147483659: 134350848, + 2147483660: 0, + 2147483661: 134348832, + 2147483662: 134219776, + 2147483663: 131072, + 16: 133152, + 17: 134350848, + 18: 32, + 19: 2048, + 20: 134219776, + 21: 134217760, + 22: 134348832, + 23: 131072, + 24: 0, + 25: 131104, + 26: 134348800, + 27: 134219808, + 28: 134350880, + 29: 133120, + 30: 2080, + 31: 134217728, + 2147483664: 131072, + 2147483665: 2048, + 2147483666: 134348832, + 2147483667: 133152, + 2147483668: 32, + 2147483669: 134348800, + 2147483670: 134217728, + 2147483671: 134219808, + 2147483672: 134350880, + 2147483673: 134217760, + 2147483674: 134219776, + 2147483675: 0, + 2147483676: 133120, + 2147483677: 2080, + 2147483678: 131104, + 2147483679: 134350848 + }], + u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], + d = a.DES = s.extend({ + _doReset: function _doReset() { + for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { + var n = c[i] - 1; + e[i] = r[n >>> 5] >>> 31 - n % 32 & 1; + } + for (var o = this._subKeys = [], s = 0; s < 16; s++) { + for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++) a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; + a[0] = a[0] << 1 | a[0] >>> 31; + for (var i = 1; i < 7; i++) a[i] = a[i] >>> 4 * (i - 1) + 3; + a[7] = a[7] << 5 | a[7] >>> 27; + } + for (var u = this._invSubKeys = [], i = 0; i < 16; i++) u[i] = o[15 - i]; + }, + encryptBlock: function encryptBlock(t, r) { + this._doCryptBlock(t, r, this._subKeys); + }, + decryptBlock: function decryptBlock(t, r) { + this._doCryptBlock(t, r, this._invSubKeys); + }, + _doCryptBlock: function _doCryptBlock(t, i, n) { + this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); + for (var o = 0; o < 16; o++) { + for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++) h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; + this._lBlock = c, this._rBlock = a ^ h; + } + var d = this._lBlock; + this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock; + }, + keySize: 2, + ivSize: 2, + blockSize: 2 + }); + i.DES = s._createHelper(d); + var v = a.TripleDES = s.extend({ + _doReset: function _doReset() { + var t = this._key, + r = t.words; + this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))); + }, + encryptBlock: function encryptBlock(t, r) { + this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r); + }, + decryptBlock: function decryptBlock(t, r) { + this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r); + }, + keySize: 6, + ivSize: 2, + blockSize: 2 + }); + i.TripleDES = s._createHelper(v); + }(), function () { + function r() { + for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { + r = (r + 1) % 256, e = (e + t[r]) % 256; + var o = t[r]; + t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n; + } + return this._i = r, this._j = e, i; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = o.RC4 = n.extend({ + _doReset: function _doReset() { + for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) i[n] = n; + for (var n = 0, o = 0; n < 256; n++) { + var s = n % e, + a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; + o = (o + i[n] + a) % 256; + var c = i[n]; + i[n] = i[o], i[o] = c; + } + this._i = this._j = 0; + }, + _doProcessBlock: function _doProcessBlock(t, e) { + t[e] ^= r.call(this); + }, + keySize: 8, + ivSize: 0 + }); + e.RC4 = n._createHelper(s); + var a = o.RC4Drop = s.extend({ + cfg: s.cfg.extend({ + drop: 192 + }), + _doReset: function _doReset() { + s._doReset.call(this); + for (var t = this.cfg.drop; t > 0; t--) r.call(this); + } + }); + e.RC4Drop = n._createHelper(a); + }(), t.mode.CTRGladman = function () { + function r(t) { + if (255 === (t >> 24 & 255)) { + var r = t >> 16 & 255, + e = t >> 8 & 255, + i = 255 & t; + 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i; + } else t += 1 << 24; + return t; + } + function e(t) { + return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t; + } + var i = t.lib.BlockCipherMode.extend(), + n = i.Encryptor = i.extend({ + processBlock: function processBlock(t, r) { + var i = this._cipher, + n = i.blockSize, + o = this._iv, + s = this._counter; + o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); + var a = s.slice(0); + i.encryptBlock(a, 0); + for (var c = 0; c < n; c++) t[r + c] ^= a[c]; + } + }); + return i.Decryptor = n, i; + }(), function () { + function r() { + for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; + r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; + for (var e = 0; e < 8; e++) { + var i = t[e] + r[e], + n = 65535 & i, + o = i >>> 16, + s = ((n * n >>> 17) + n * o >>> 15) + o * o, + h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); + c[e] = s ^ h; + } + t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = [], + a = [], + c = [], + h = o.Rabbit = n.extend({ + _doReset: function _doReset() { + for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++) t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); + var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + this._b = 0; + for (var i = 0; i < 4; i++) r.call(this); + for (var i = 0; i < 8; i++) o[i] ^= n[i + 4 & 7]; + if (e) { + var s = e.words, + a = s[0], + c = s[1], + h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), + f = h >>> 16 | 4294901760 & l, + u = l << 16 | 65535 & h; + o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; + for (var i = 0; i < 4; i++) r.call(this); + } + }, + _doProcessBlock: function _doProcessBlock(t, e) { + var i = this._X; + r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; + for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; + }, + blockSize: 4, + ivSize: 2 + }); + e.Rabbit = n._createHelper(h); + }(), t.mode.CTR = function () { + var r = t.lib.BlockCipherMode.extend(), + e = r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + var e = this._cipher, + i = e.blockSize, + n = this._iv, + o = this._counter; + n && (o = this._counter = n.slice(0), this._iv = void 0); + var s = o.slice(0); + e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; + for (var a = 0; a < i; a++) t[r + a] ^= s[a]; + } + }); + return r.Decryptor = e, r; + }(), function () { + function r() { + for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; + r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; + for (var e = 0; e < 8; e++) { + var i = t[e] + r[e], + n = 65535 & i, + o = i >>> 16, + s = ((n * n >>> 17) + n * o >>> 15) + o * o, + h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); + c[e] = s ^ h; + } + t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = [], + a = [], + c = [], + h = o.RabbitLegacy = n.extend({ + _doReset: function _doReset() { + var t = this._key.words, + e = this.cfg.iv, + i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + this._b = 0; + for (var o = 0; o < 4; o++) r.call(this); + for (var o = 0; o < 8; o++) n[o] ^= i[o + 4 & 7]; + if (e) { + var s = e.words, + a = s[0], + c = s[1], + h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), + f = h >>> 16 | 4294901760 & l, + u = l << 16 | 65535 & h; + n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; + for (var o = 0; o < 4; o++) r.call(this); + } + }, + _doProcessBlock: function _doProcessBlock(t, e) { + var i = this._X; + r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; + for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; + }, + blockSize: 4, + ivSize: 2 + }); + e.RabbitLegacy = n._createHelper(h); + }(), t.pad.ZeroPadding = { + pad: function pad(t, r) { + var e = 4 * r; + t.clamp(), t.sigBytes += e - (t.sigBytes % e || e); + }, + unpad: function unpad(t) { + for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);) e--; + t.sigBytes = e + 1; + } + }, t; +}); + +cc._RF.pop(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcY3J5cHRvLWpzLm1pbi5qcyJdLCJuYW1lcyI6WyJ0IiwiciIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJDcnlwdG9KUyIsImUiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm90b3R5cGUiLCJpIiwibiIsImxpYiIsIm8iLCJCYXNlIiwiZXh0ZW5kIiwibWl4SW4iLCJoYXNPd25Qcm9wZXJ0eSIsImluaXQiLCIkc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsInRvU3RyaW5nIiwiY2xvbmUiLCJzIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsImxlbmd0aCIsImMiLCJzdHJpbmdpZnkiLCJjb25jYXQiLCJjbGFtcCIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJhIiwicHVzaCIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiaCIsIkxhdGluMSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJsIiwiVXRmOCIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkVycm9yIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJmIiwiQnVmZmVyZWRCbG9ja0FsZ29yaXRobSIsInJlc2V0IiwiX2RhdGEiLCJfbkRhdGFCeXRlcyIsIl9hcHBlbmQiLCJfcHJvY2VzcyIsImJsb2NrU2l6ZSIsIm1heCIsIl9taW5CdWZmZXJTaXplIiwibWluIiwiX2RvUHJvY2Vzc0Jsb2NrIiwidSIsInNwbGljZSIsIkhhc2hlciIsImNmZyIsIl9kb1Jlc2V0IiwidXBkYXRlIiwiZmluYWxpemUiLCJfZG9GaW5hbGl6ZSIsIl9jcmVhdGVIZWxwZXIiLCJfY3JlYXRlSG1hY0hlbHBlciIsIkhNQUMiLCJhbGdvIiwiTWF0aCIsIkJhc2U2NCIsIl9tYXAiLCJjaGFyQXQiLCJfcmV2ZXJzZU1hcCIsImluZGV4T2YiLCJhYnMiLCJzaW4iLCJNRDUiLCJfaGFzaCIsImQiLCJ2IiwicCIsIl8iLCJ5IiwiZyIsIkIiLCJ3IiwiayIsIlMiLCJtIiwieCIsImIiLCJIIiwieiIsIkEiLCJDIiwiRCIsImZsb29yIiwiSG1hY01ENSIsIlNIQTEiLCJIbWFjU0hBMSIsInNxcnQiLCJwb3ciLCJTSEEyNTYiLCJIbWFjU0hBMjU2IiwiVXRmMTYiLCJVdGYxNkJFIiwiVXRmMTZMRSIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJSSVBFTUQxNjAiLCJSIiwiRSIsIk0iLCJGIiwiSG1hY1JJUEVNRDE2MCIsIl9oYXNoZXIiLCJfb0tleSIsIl9pS2V5IiwiUEJLREYyIiwia2V5U2l6ZSIsImhhc2hlciIsIml0ZXJhdGlvbnMiLCJjb21wdXRlIiwiRXZwS0RGIiwiU0hBMjI0IiwiSG1hY1NIQTIyNCIsIng2NCIsIldvcmQiLCJoaWdoIiwibG93IiwidG9YMzIiLCJTSEEzIiwib3V0cHV0TGVuZ3RoIiwiX3N0YXRlIiwiSG1hY1NIQTMiLCJTSEE1MTIiLCJQIiwiVyIsIk8iLCJVIiwiSSIsIksiLCJYIiwiTCIsImoiLCJOIiwiVCIsIloiLCJxIiwiRyIsIkoiLCIkIiwiUSIsIlYiLCJZIiwidHQiLCJydCIsImV0IiwiaXQiLCJudCIsIm90Iiwic3QiLCJhdCIsImN0IiwiaHQiLCJsdCIsImZ0IiwidXQiLCJkdCIsInZ0IiwicHQiLCJfdCIsInl0IiwiZ3QiLCJCdCIsInd0Iiwia3QiLCJTdCIsIm10IiwieHQiLCJidCIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiQ2lwaGVyIiwiY3JlYXRlRW5jcnlwdG9yIiwiX0VOQ19YRk9STV9NT0RFIiwiY3JlYXRlRGVjcnlwdG9yIiwiX0RFQ19YRk9STV9NT0RFIiwiX3hmb3JtTW9kZSIsIl9rZXkiLCJwcm9jZXNzIiwiaXZTaXplIiwiZW5jcnlwdCIsImRlY3J5cHQiLCJTdHJlYW1DaXBoZXIiLCJtb2RlIiwiQmxvY2tDaXBoZXJNb2RlIiwiRW5jcnlwdG9yIiwiRGVjcnlwdG9yIiwiX2NpcGhlciIsIl9pdiIsIkNCQyIsIl9wcmV2QmxvY2siLCJwcm9jZXNzQmxvY2siLCJlbmNyeXB0QmxvY2siLCJkZWNyeXB0QmxvY2siLCJwYWQiLCJQa2NzNyIsInVucGFkIiwiQmxvY2tDaXBoZXIiLCJwYWRkaW5nIiwiaXYiLCJfbW9kZSIsIl9fY3JlYXRvciIsIkNpcGhlclBhcmFtcyIsImZvcm1hdHRlciIsImZvcm1hdCIsIk9wZW5TU0wiLCJjaXBoZXJ0ZXh0Iiwic2FsdCIsIlNlcmlhbGl6YWJsZUNpcGhlciIsImtleSIsImFsZ29yaXRobSIsIl9wYXJzZSIsImtkZiIsImV4ZWN1dGUiLCJQYXNzd29yZEJhc2VkQ2lwaGVyIiwiQ0ZCIiwiRUNCIiwiQW5zaVg5MjMiLCJJc28xMDEyNiIsIklzbzk3OTcxIiwiWmVyb1BhZGRpbmciLCJPRkIiLCJfa2V5c3RyZWFtIiwiTm9QYWRkaW5nIiwiQUVTIiwiX25Sb3VuZHMiLCJfa2V5UHJpb3JSZXNldCIsIl9rZXlTY2hlZHVsZSIsIl9pbnZLZXlTY2hlZHVsZSIsIl9kb0NyeXB0QmxvY2siLCJfbEJsb2NrIiwiX3JCbG9jayIsIkRFUyIsIl9zdWJLZXlzIiwiX2ludlN1YktleXMiLCJUcmlwbGVERVMiLCJfZGVzMSIsIl9kZXMyIiwiX2RlczMiLCJfUyIsIl9pIiwiX2oiLCJSQzQiLCJSQzREcm9wIiwiZHJvcCIsIkNUUkdsYWRtYW4iLCJfY291bnRlciIsIl9YIiwiX0MiLCJfYiIsIlJhYmJpdCIsIkNUUiIsIlJhYmJpdExlZ2FjeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQ0FBQyxVQUFTQSxDQUFDLEVBQUNDLENBQUMsRUFBQztFQUFDLFFBQVEsSUFBRSxP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Q2hCLENBQUMsQ0FBQ2pCLEdBQUc7TUFBQ3NDLENBQUMsR0FBQ0wsQ0FBQyxDQUFDcEIsU0FBUztNQUFDZ0MsQ0FBQyxHQUFDWixDQUFDLENBQUMwQixNQUFNO01BQUNGLENBQUMsR0FBQ3hDLENBQUMsQ0FBQ21ELElBQUk7TUFBQ1csQ0FBQyxHQUFDekMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUNvRixDQUFDLEdBQUMxQyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUM7TUFBQ3FGLENBQUMsR0FBQzNDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztNQUFDc0YsQ0FBQyxHQUFDNUMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUN1RixDQUFDLEdBQUM3QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLENBQUM7TUFBQ3dGLENBQUMsR0FBQzlDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQztNQUFDeUYsQ0FBQyxHQUFDNUIsQ0FBQyxDQUFDZ0UsU0FBUyxHQUFDNUUsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsSUFBSSxDQUFDaUIsS0FBSyxHQUFDeEMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUFDNEQsZUFBZSxFQUFDLFNBQUFBLGdCQUFTckUsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxLQUFJLElBQUk2QixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUlnQixDQUFDLEdBQUM3QyxDQUFDLEdBQUM2QixDQUFDO2NBQUNxQixDQUFDLEdBQUNuRCxDQUFDLENBQUM4QyxDQUFDLENBQUM7WUFBQzlDLENBQUMsQ0FBQzhDLENBQUMsQ0FBQyxHQUFDLFFBQVEsSUFBRUssQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsQ0FBQztVQUFBO1VBQUMsSUFBSU8sQ0FBQztZQUFDWSxDQUFDO1lBQUM0QixDQUFDO1lBQUNDLENBQUM7WUFBQ0MsQ0FBQztZQUFDQyxDQUFDO1lBQUNDLENBQUM7WUFBQ0MsQ0FBQztZQUFDQyxDQUFDO1lBQUNDLENBQUM7WUFBQ0MsQ0FBQyxHQUFDLElBQUksQ0FBQ2YsS0FBSyxDQUFDaEUsS0FBSztZQUFDZ0YsQ0FBQyxHQUFDWCxDQUFDLENBQUNyRSxLQUFLO1lBQUNpRixDQUFDLEdBQUNYLENBQUMsQ0FBQ3RFLEtBQUs7WUFBQ2tGLENBQUMsR0FBQ2pCLENBQUMsQ0FBQ2pFLEtBQUs7WUFBQzRHLENBQUMsR0FBQzFDLENBQUMsQ0FBQ2xFLEtBQUs7WUFBQzZHLENBQUMsR0FBQzFDLENBQUMsQ0FBQ25FLEtBQUs7WUFBQzhHLENBQUMsR0FBQzFDLENBQUMsQ0FBQ3BFLEtBQUs7VUFBQzBFLENBQUMsR0FBQzNDLENBQUMsR0FBQ2dELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0osQ0FBQyxHQUFDaEMsQ0FBQyxHQUFDb0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDSCxDQUFDLEdBQUNMLENBQUMsR0FBQ1EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDRixDQUFDLEdBQUNMLENBQUMsR0FBQ08sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDRCxDQUFDLEdBQUNMLENBQUMsR0FBQ00sQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDLEtBQUksSUFBSWdDLENBQUMsRUFBQzVHLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsSUFBRSxDQUFDLEVBQUM0RyxDQUFDLEdBQUNoRixDQUFDLEdBQUMxRCxDQUFDLENBQUNDLENBQUMsR0FBQzRHLENBQUMsQ0FBQy9FLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDNEcsQ0FBQyxJQUFFNUcsQ0FBQyxHQUFDLEVBQUUsR0FBQ3ZCLENBQUMsQ0FBQytELENBQUMsRUFBQzRCLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzdFLENBQUMsR0FBQyxFQUFFLEdBQUNuQixDQUFDLENBQUMyRCxDQUFDLEVBQUM0QixDQUFDLEVBQUNDLENBQUMsQ0FBQyxHQUFDUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM3RSxDQUFDLEdBQUMsRUFBRSxHQUFDbEIsQ0FBQyxDQUFDMEQsQ0FBQyxFQUFDNEIsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ1EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDN0UsQ0FBQyxHQUFDLEVBQUUsR0FBQ2hCLENBQUMsQ0FBQ3dELENBQUMsRUFBQzRCLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2xGLENBQUMsQ0FBQzZDLENBQUMsRUFBQzRCLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQytCLENBQUMsSUFBRSxDQUFDLEVBQUNBLENBQUMsR0FBQ3BHLENBQUMsQ0FBQ29HLENBQUMsRUFBQ0YsQ0FBQyxDQUFDMUcsQ0FBQyxDQUFDLENBQUMsRUFBQzRHLENBQUMsR0FBQ0EsQ0FBQyxHQUFDdEMsQ0FBQyxHQUFDLENBQUMsRUFBQzFDLENBQUMsR0FBQzBDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRCxDQUFDLEVBQUNBLENBQUMsR0FBQzdELENBQUMsQ0FBQzRELENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQ0EsQ0FBQyxHQUFDNUIsQ0FBQyxFQUFDQSxDQUFDLEdBQUNvRSxDQUFDLEVBQUNBLENBQUMsR0FBQ3JDLENBQUMsR0FBQ3JHLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDc0ksQ0FBQyxDQUFDekcsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM0RyxDQUFDLElBQUU1RyxDQUFDLEdBQUMsRUFBRSxHQUFDTCxDQUFDLENBQUM2RSxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzlFLENBQUMsR0FBQyxFQUFFLEdBQUNoQixDQUFDLENBQUN3RixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzlFLENBQUMsR0FBQyxFQUFFLEdBQUNsQixDQUFDLENBQUMwRixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzlFLENBQUMsR0FBQyxFQUFFLEdBQUNuQixDQUFDLENBQUMyRixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ3JHLENBQUMsQ0FBQytGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDOEIsQ0FBQyxJQUFFLENBQUMsRUFBQ0EsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBQyxFQUFDRCxDQUFDLENBQUMzRyxDQUFDLENBQUMsQ0FBQyxFQUFDNEcsQ0FBQyxHQUFDQSxDQUFDLEdBQUNqQyxDQUFDLEdBQUMsQ0FBQyxFQUFDSixDQUFDLEdBQUNJLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRCxDQUFDLEVBQUNBLENBQUMsR0FBQ2xFLENBQUMsQ0FBQ2lFLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRCxDQUFDLEVBQUNBLENBQUMsR0FBQ29DLENBQUM7VUFBQ0EsQ0FBQyxHQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDUixDQUFDLEdBQUNNLENBQUMsR0FBQyxDQUFDLEVBQUNFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDUCxDQUFDLEdBQUNNLENBQUMsR0FBQyxDQUFDLEVBQUNDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDTixDQUFDLEdBQUNDLENBQUMsR0FBQyxDQUFDLEVBQUNLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDaEQsQ0FBQyxHQUFDNEMsQ0FBQyxHQUFDLENBQUMsRUFBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNwQyxDQUFDLEdBQUNpQyxDQUFDLEdBQUMsQ0FBQyxFQUFDRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNnQyxDQUFDO1FBQUEsQ0FBQztRQUFDN0QsV0FBVyxFQUFDLFNBQUFBLFlBQUEsRUFBVTtVQUFDLElBQUk3RSxDQUFDLEdBQUMsSUFBSSxDQUFDNkQsS0FBSztZQUFDNUQsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFLO1lBQUNwQixDQUFDLEdBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQ3VELFdBQVc7WUFBQ25ELENBQUMsR0FBQyxDQUFDLEdBQUNYLENBQUMsQ0FBQzRCLFFBQVE7VUFBQzNCLENBQUMsQ0FBQ1UsQ0FBQyxLQUFHLENBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBRSxFQUFFLEdBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNWLENBQUMsQ0FBQyxDQUFDVSxDQUFDLEdBQUMsRUFBRSxLQUFHLENBQUMsSUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDLEdBQUMsUUFBUSxJQUFFSixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDLEVBQUNQLENBQUMsQ0FBQzRCLFFBQVEsR0FBQyxDQUFDLElBQUUzQixDQUFDLENBQUM0QixNQUFNLEdBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDbUMsUUFBUSxFQUFFO1VBQUMsS0FBSSxJQUFJcEQsQ0FBQyxHQUFDLElBQUksQ0FBQytFLEtBQUssRUFBQzdFLENBQUMsR0FBQ0YsQ0FBQyxDQUFDZSxLQUFLLEVBQUNGLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsSUFBSWEsQ0FBQyxHQUFDeEIsQ0FBQyxDQUFDVyxDQUFDLENBQUM7WUFBQ1gsQ0FBQyxDQUFDVyxDQUFDLENBQUMsR0FBQyxRQUFRLElBQUVhLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUM7VUFBQTtVQUFDLE9BQU8xQixDQUFDO1FBQUEsQ0FBQztRQUFDWSxLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVO1VBQUMsSUFBSXhCLENBQUMsR0FBQzBELENBQUMsQ0FBQ2xDLEtBQUssQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQztVQUFDLE9BQU9uQyxDQUFDLENBQUMyRixLQUFLLEdBQUMsSUFBSSxDQUFDQSxLQUFLLENBQUNuRSxLQUFLLEVBQUUsRUFBQ3hCLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDOEIsQ0FBQyxDQUFDd0csU0FBUyxHQUFDNUUsQ0FBQyxDQUFDb0IsYUFBYSxDQUFDb0IsQ0FBQyxDQUFDLEVBQUNwRSxDQUFDLENBQUM2RyxhQUFhLEdBQUNqRixDQUFDLENBQUNxQixpQkFBaUIsQ0FBQ21CLENBQUMsQ0FBQztFQUFBLENBQUMsQ0FBQ2hCLElBQUksQ0FBQyxFQUFDLFlBQVU7SUFBQyxJQUFJakYsQ0FBQyxHQUFDRCxDQUFDO01BQUNPLENBQUMsR0FBQ04sQ0FBQyxDQUFDWSxHQUFHO01BQUNGLENBQUMsR0FBQ0osQ0FBQyxDQUFDUSxJQUFJO01BQUNILENBQUMsR0FBQ1gsQ0FBQyxDQUFDdUMsR0FBRztNQUFDMUIsQ0FBQyxHQUFDRixDQUFDLENBQUN3QyxJQUFJO01BQUMzQixDQUFDLEdBQUN4QixDQUFDLENBQUNnRixJQUFJO0lBQUN4RCxDQUFDLENBQUN1RCxJQUFJLEdBQUNyRSxDQUFDLENBQUNLLE1BQU0sQ0FBQztNQUFDRyxJQUFJLEVBQUMsU0FBQUEsS0FBU25CLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1FBQUNELENBQUMsR0FBQyxJQUFJLENBQUM0SSxPQUFPLEdBQUMsSUFBSTVJLENBQUMsQ0FBQ21CLElBQUksSUFBQyxRQUFRLElBQUUsT0FBT2xCLENBQUMsS0FBR0EsQ0FBQyxHQUFDYSxDQUFDLENBQUM2QixLQUFLLENBQUMxQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUlNLENBQUMsR0FBQ1AsQ0FBQyxDQUFDaUUsU0FBUztVQUFDdEQsQ0FBQyxHQUFDLENBQUMsR0FBQ0osQ0FBQztRQUFDTixDQUFDLENBQUMyQixRQUFRLEdBQUNqQixDQUFDLEtBQUdWLENBQUMsR0FBQ0QsQ0FBQyxDQUFDNEUsUUFBUSxDQUFDM0UsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDZ0MsS0FBSyxFQUFFO1FBQUMsS0FBSSxJQUFJckIsQ0FBQyxHQUFDLElBQUksQ0FBQ2lJLEtBQUssR0FBQzVJLENBQUMsQ0FBQ3VCLEtBQUssRUFBRSxFQUFDQyxDQUFDLEdBQUMsSUFBSSxDQUFDcUgsS0FBSyxHQUFDN0ksQ0FBQyxDQUFDdUIsS0FBSyxFQUFFLEVBQUNjLENBQUMsR0FBQzFCLENBQUMsQ0FBQ2UsS0FBSyxFQUFDRyxDQUFDLEdBQUNMLENBQUMsQ0FBQ0UsS0FBSyxFQUFDbUIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDdkMsQ0FBQyxFQUFDdUMsQ0FBQyxFQUFFLEVBQUNSLENBQUMsQ0FBQ1EsQ0FBQyxDQUFDLElBQUUsVUFBVSxFQUFDaEIsQ0FBQyxDQUFDZ0IsQ0FBQyxDQUFDLElBQUUsU0FBUztRQUFDbEMsQ0FBQyxDQUFDZ0IsUUFBUSxHQUFDSCxDQUFDLENBQUNHLFFBQVEsR0FBQ2pCLENBQUMsRUFBQyxJQUFJLENBQUNpRCxLQUFLLEVBQUU7TUFBQSxDQUFDO01BQUNBLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7UUFBQyxJQUFJNUQsQ0FBQyxHQUFDLElBQUksQ0FBQzRJLE9BQU87UUFBQzVJLENBQUMsQ0FBQzRELEtBQUssRUFBRSxFQUFDNUQsQ0FBQyxDQUFDMkUsTUFBTSxDQUFDLElBQUksQ0FBQ21FLEtBQUssQ0FBQztNQUFBLENBQUM7TUFBQ25FLE1BQU0sRUFBQyxTQUFBQSxPQUFTM0UsQ0FBQyxFQUFDO1FBQUMsT0FBTyxJQUFJLENBQUM0SSxPQUFPLENBQUNqRSxNQUFNLENBQUMzRSxDQUFDLENBQUMsRUFBQyxJQUFJO01BQUEsQ0FBQztNQUFDNEUsUUFBUSxFQUFDLFNBQUFBLFNBQVM1RSxDQUFDLEVBQUM7UUFBQyxJQUFJQyxDQUFDLEdBQUMsSUFBSSxDQUFDMkksT0FBTztVQUFDckksQ0FBQyxHQUFDTixDQUFDLENBQUMyRSxRQUFRLENBQUM1RSxDQUFDLENBQUM7UUFBQ0MsQ0FBQyxDQUFDMkQsS0FBSyxFQUFFO1FBQUMsSUFBSWpELENBQUMsR0FBQ1YsQ0FBQyxDQUFDMkUsUUFBUSxDQUFDLElBQUksQ0FBQ2lFLEtBQUssQ0FBQ3JILEtBQUssRUFBRSxDQUFDUSxNQUFNLENBQUN6QixDQUFDLENBQUMsQ0FBQztRQUFDLE9BQU9JLENBQUM7TUFBQTtJQUFDLENBQUMsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxJQUFJVixDQUFDLEdBQUNELENBQUM7TUFBQ08sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQUc7TUFBQ0YsQ0FBQyxHQUFDSixDQUFDLENBQUNRLElBQUk7TUFBQ0gsQ0FBQyxHQUFDTCxDQUFDLENBQUNtQixTQUFTO01BQUNaLENBQUMsR0FBQ2IsQ0FBQyxDQUFDZ0YsSUFBSTtNQUFDeEQsQ0FBQyxHQUFDWCxDQUFDLENBQUNrRyxJQUFJO01BQUMxRSxDQUFDLEdBQUN4QixDQUFDLENBQUNrRSxJQUFJO01BQUNsRCxDQUFDLEdBQUNoQixDQUFDLENBQUNpSSxNQUFNLEdBQUNwSSxDQUFDLENBQUNLLE1BQU0sQ0FBQztRQUFDeUQsR0FBRyxFQUFDOUQsQ0FBQyxDQUFDSyxNQUFNLENBQUM7VUFBQ2dJLE9BQU8sRUFBQyxDQUFDO1VBQUNDLE1BQU0sRUFBQ3hILENBQUM7VUFBQ3lILFVBQVUsRUFBQztRQUFDLENBQUMsQ0FBQztRQUFDL0gsSUFBSSxFQUFDLFNBQUFBLEtBQVNuQixDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUN5RSxHQUFHLEdBQUMsSUFBSSxDQUFDQSxHQUFHLENBQUN6RCxNQUFNLENBQUNoQixDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUNtSixPQUFPLEVBQUMsU0FBQUEsUUFBU25KLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsS0FBSSxJQUFJTSxDQUFDLEdBQUMsSUFBSSxDQUFDa0UsR0FBRyxFQUFDOUQsQ0FBQyxHQUFDMkIsQ0FBQyxDQUFDN0IsTUFBTSxDQUFDRixDQUFDLENBQUMwSSxNQUFNLEVBQUNqSixDQUFDLENBQUMsRUFBQ2MsQ0FBQyxHQUFDRixDQUFDLENBQUNILE1BQU0sRUFBRSxFQUFDZ0IsQ0FBQyxHQUFDYixDQUFDLENBQUNILE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNxQixDQUFDLEdBQUNoQixDQUFDLENBQUNhLEtBQUssRUFBQ21CLENBQUMsR0FBQ3JCLENBQUMsQ0FBQ0UsS0FBSyxFQUFDd0IsQ0FBQyxHQUFDNUMsQ0FBQyxDQUFDeUksT0FBTyxFQUFDdEYsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDMkksVUFBVSxFQUFDcEgsQ0FBQyxDQUFDRCxNQUFNLEdBQUNzQixDQUFDLEdBQUU7WUFBQyxJQUFJbUIsQ0FBQyxHQUFDM0QsQ0FBQyxDQUFDZ0UsTUFBTSxDQUFDMUUsQ0FBQyxDQUFDLENBQUMyRSxRQUFRLENBQUNuRCxDQUFDLENBQUM7WUFBQ2QsQ0FBQyxDQUFDaUQsS0FBSyxFQUFFO1lBQUMsS0FBSSxJQUFJZ0MsQ0FBQyxHQUFDdEIsQ0FBQyxDQUFDM0MsS0FBSyxFQUFDa0UsQ0FBQyxHQUFDRCxDQUFDLENBQUMvRCxNQUFNLEVBQUNpRSxDQUFDLEdBQUN4QixDQUFDLEVBQUN5QixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNyQyxDQUFDLEVBQUNxQyxDQUFDLEVBQUUsRUFBQztjQUFDRCxDQUFDLEdBQUNuRixDQUFDLENBQUNpRSxRQUFRLENBQUNrQixDQUFDLENBQUMsRUFBQ25GLENBQUMsQ0FBQ2lELEtBQUssRUFBRTtjQUFDLEtBQUksSUFBSW9DLENBQUMsR0FBQ0YsQ0FBQyxDQUFDbkUsS0FBSyxFQUFDc0UsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDSixDQUFDLEVBQUNJLENBQUMsRUFBRSxFQUFDTCxDQUFDLENBQUNLLENBQUMsQ0FBQyxJQUFFRCxDQUFDLENBQUNDLENBQUMsQ0FBQztZQUFBO1lBQUNuRixDQUFDLENBQUNrQixNQUFNLENBQUNzQyxDQUFDLENBQUMsRUFBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtVQUFBO1VBQUMsT0FBT2hDLENBQUMsQ0FBQ2MsUUFBUSxHQUFDLENBQUMsR0FBQ3VCLENBQUMsRUFBQ3JDLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDYixDQUFDLENBQUM4SSxNQUFNLEdBQUMsVUFBUy9JLENBQUMsRUFBQ0MsQ0FBQyxFQUFDTSxDQUFDLEVBQUM7TUFBQyxPQUFPdUIsQ0FBQyxDQUFDckIsTUFBTSxDQUFDRixDQUFDLENBQUMsQ0FBQzRJLE9BQU8sQ0FBQ25KLENBQUMsRUFBQ0MsQ0FBQyxDQUFDO0lBQUEsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxJQUFJQSxDQUFDLEdBQUNELENBQUM7TUFBQ08sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQUc7TUFBQ0YsQ0FBQyxHQUFDSixDQUFDLENBQUNRLElBQUk7TUFBQ0gsQ0FBQyxHQUFDTCxDQUFDLENBQUNtQixTQUFTO01BQUNaLENBQUMsR0FBQ2IsQ0FBQyxDQUFDZ0YsSUFBSTtNQUFDeEQsQ0FBQyxHQUFDWCxDQUFDLENBQUM0RSxHQUFHO01BQUNwRCxDQUFDLEdBQUN4QixDQUFDLENBQUNzSSxNQUFNLEdBQUN6SSxDQUFDLENBQUNLLE1BQU0sQ0FBQztRQUFDeUQsR0FBRyxFQUFDOUQsQ0FBQyxDQUFDSyxNQUFNLENBQUM7VUFBQ2dJLE9BQU8sRUFBQyxDQUFDO1VBQUNDLE1BQU0sRUFBQ3hILENBQUM7VUFBQ3lILFVBQVUsRUFBQztRQUFDLENBQUMsQ0FBQztRQUFDL0gsSUFBSSxFQUFDLFNBQUFBLEtBQVNuQixDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUN5RSxHQUFHLEdBQUMsSUFBSSxDQUFDQSxHQUFHLENBQUN6RCxNQUFNLENBQUNoQixDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUNtSixPQUFPLEVBQUMsU0FBQUEsUUFBU25KLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsS0FBSSxJQUFJTSxDQUFDLEdBQUMsSUFBSSxDQUFDa0UsR0FBRyxFQUFDOUQsQ0FBQyxHQUFDSixDQUFDLENBQUMwSSxNQUFNLENBQUN4SSxNQUFNLEVBQUUsRUFBQ0ssQ0FBQyxHQUFDRixDQUFDLENBQUNILE1BQU0sRUFBRSxFQUFDZ0IsQ0FBQyxHQUFDWCxDQUFDLENBQUNhLEtBQUssRUFBQ1csQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDeUksT0FBTyxFQUFDbEgsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDMkksVUFBVSxFQUFDekgsQ0FBQyxDQUFDSSxNQUFNLEdBQUNTLENBQUMsR0FBRTtZQUFDUSxDQUFDLElBQUVuQyxDQUFDLENBQUNnRSxNQUFNLENBQUM3QixDQUFDLENBQUM7WUFBQyxJQUFJQSxDQUFDLEdBQUNuQyxDQUFDLENBQUNnRSxNQUFNLENBQUMzRSxDQUFDLENBQUMsQ0FBQzRFLFFBQVEsQ0FBQzNFLENBQUMsQ0FBQztZQUFDVSxDQUFDLENBQUNpRCxLQUFLLEVBQUU7WUFBQyxLQUFJLElBQUlULENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ3JCLENBQUMsRUFBQ3FCLENBQUMsRUFBRSxFQUFDTCxDQUFDLEdBQUNuQyxDQUFDLENBQUNpRSxRQUFRLENBQUM5QixDQUFDLENBQUMsRUFBQ25DLENBQUMsQ0FBQ2lELEtBQUssRUFBRTtZQUFDOUMsQ0FBQyxDQUFDa0IsTUFBTSxDQUFDYyxDQUFDLENBQUM7VUFBQTtVQUFDLE9BQU9oQyxDQUFDLENBQUNjLFFBQVEsR0FBQyxDQUFDLEdBQUNVLENBQUMsRUFBQ3hCLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDYixDQUFDLENBQUNtSixNQUFNLEdBQUMsVUFBU3BKLENBQUMsRUFBQ0MsQ0FBQyxFQUFDTSxDQUFDLEVBQUM7TUFBQyxPQUFPK0IsQ0FBQyxDQUFDN0IsTUFBTSxDQUFDRixDQUFDLENBQUMsQ0FBQzRJLE9BQU8sQ0FBQ25KLENBQUMsRUFBQ0MsQ0FBQyxDQUFDO0lBQUEsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxJQUFJQSxDQUFDLEdBQUNELENBQUM7TUFBQ08sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQUc7TUFBQ0YsQ0FBQyxHQUFDSixDQUFDLENBQUNtQixTQUFTO01BQUNkLENBQUMsR0FBQ1gsQ0FBQyxDQUFDZ0YsSUFBSTtNQUFDbkUsQ0FBQyxHQUFDRixDQUFDLENBQUN3RyxNQUFNO01BQUMzRixDQUFDLEdBQUNiLENBQUMsQ0FBQ3lJLE1BQU0sR0FBQ3ZJLENBQUMsQ0FBQ0UsTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsSUFBSSxDQUFDaUIsS0FBSyxHQUFDLElBQUloRixDQUFDLENBQUNRLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQzBELFdBQVcsRUFBQyxTQUFBQSxZQUFBLEVBQVU7VUFBQyxJQUFJN0UsQ0FBQyxHQUFDYyxDQUFDLENBQUMrRCxXQUFXLENBQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUMsT0FBT25DLENBQUMsQ0FBQzRCLFFBQVEsSUFBRSxDQUFDLEVBQUM1QixDQUFDO1FBQUE7TUFBQyxDQUFDLENBQUM7SUFBQ0MsQ0FBQyxDQUFDb0osTUFBTSxHQUFDdkksQ0FBQyxDQUFDZ0UsYUFBYSxDQUFDckQsQ0FBQyxDQUFDLEVBQUN4QixDQUFDLENBQUNxSixVQUFVLEdBQUN4SSxDQUFDLENBQUNpRSxpQkFBaUIsQ0FBQ3RELENBQUMsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFVBQVN4QixDQUFDLEVBQUM7SUFBQyxJQUFJTSxDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNJLElBQUk7TUFBQ0QsQ0FBQyxHQUFDSCxDQUFDLENBQUNlLFNBQVM7TUFBQ0QsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDZ0osR0FBRyxHQUFDLENBQUMsQ0FBQztJQUFDOUgsQ0FBQyxDQUFDK0gsSUFBSSxHQUFDNUksQ0FBQyxDQUFDSSxNQUFNLENBQUM7TUFBQ0csSUFBSSxFQUFDLFNBQUFBLEtBQVNuQixDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDLElBQUksQ0FBQ3dKLElBQUksR0FBQ3pKLENBQUMsRUFBQyxJQUFJLENBQUMwSixHQUFHLEdBQUN6SixDQUFDO01BQUE7SUFBQyxDQUFDLENBQUMsRUFBQ3dCLENBQUMsQ0FBQ0MsU0FBUyxHQUFDZCxDQUFDLENBQUNJLE1BQU0sQ0FBQztNQUFDRyxJQUFJLEVBQUMsU0FBQUEsS0FBU25CLENBQUMsRUFBQ08sQ0FBQyxFQUFDO1FBQUNQLENBQUMsR0FBQyxJQUFJLENBQUMyQixLQUFLLEdBQUMzQixDQUFDLElBQUUsRUFBRSxFQUFDTyxDQUFDLElBQUVOLENBQUMsR0FBQyxJQUFJLENBQUMyQixRQUFRLEdBQUNyQixDQUFDLEdBQUMsSUFBSSxDQUFDcUIsUUFBUSxHQUFDLENBQUMsR0FBQzVCLENBQUMsQ0FBQzZCLE1BQU07TUFBQSxDQUFDO01BQUM4SCxLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVO1FBQUMsS0FBSSxJQUFJM0osQ0FBQyxHQUFDLElBQUksQ0FBQzJCLEtBQUssRUFBQzFCLENBQUMsR0FBQ0QsQ0FBQyxDQUFDNkIsTUFBTSxFQUFDdEIsQ0FBQyxHQUFDLEVBQUUsRUFBQ0ksQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDVixDQUFDLEVBQUNVLENBQUMsRUFBRSxFQUFDO1VBQUMsSUFBSUMsQ0FBQyxHQUFDWixDQUFDLENBQUNXLENBQUMsQ0FBQztVQUFDSixDQUFDLENBQUNnQyxJQUFJLENBQUMzQixDQUFDLENBQUM2SSxJQUFJLENBQUMsRUFBQ2xKLENBQUMsQ0FBQ2dDLElBQUksQ0FBQzNCLENBQUMsQ0FBQzhJLEdBQUcsQ0FBQztRQUFBO1FBQUMsT0FBTzVJLENBQUMsQ0FBQ0wsTUFBTSxDQUFDRixDQUFDLEVBQUMsSUFBSSxDQUFDcUIsUUFBUSxDQUFDO01BQUEsQ0FBQztNQUFDSixLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVO1FBQUMsS0FBSSxJQUFJeEIsQ0FBQyxHQUFDWSxDQUFDLENBQUNZLEtBQUssQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDbEMsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFLLEdBQUMsSUFBSSxDQUFDQSxLQUFLLENBQUNTLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQzdCLENBQUMsR0FBQ04sQ0FBQyxDQUFDNEIsTUFBTSxFQUFDbEIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDSixDQUFDLEVBQUNJLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNVLENBQUMsQ0FBQyxHQUFDVixDQUFDLENBQUNVLENBQUMsQ0FBQyxDQUFDYSxLQUFLLEVBQUU7UUFBQyxPQUFPeEIsQ0FBQztNQUFBO0lBQUMsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUMsVUFBU0MsQ0FBQyxFQUFDO0lBQUMsSUFBSU0sQ0FBQyxHQUFDUCxDQUFDO01BQUNXLENBQUMsR0FBQ0osQ0FBQyxDQUFDTSxHQUFHO01BQUNELENBQUMsR0FBQ0QsQ0FBQyxDQUFDZSxTQUFTO01BQUNaLENBQUMsR0FBQ0gsQ0FBQyxDQUFDNkQsTUFBTTtNQUFDL0MsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDZ0osR0FBRztNQUFDakgsQ0FBQyxHQUFDYixDQUFDLENBQUMrSCxJQUFJO01BQUMxSCxDQUFDLEdBQUN2QixDQUFDLENBQUMwRSxJQUFJO01BQUNuQyxDQUFDLEdBQUMsRUFBRTtNQUFDSyxDQUFDLEdBQUMsRUFBRTtNQUFDTyxDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSTFELENBQUMsR0FBQyxDQUFDLEVBQUNDLENBQUMsR0FBQyxDQUFDLEVBQUNNLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDO1FBQUN1QyxDQUFDLENBQUM5QyxDQUFDLEdBQUMsQ0FBQyxHQUFDQyxDQUFDLENBQUMsR0FBQyxDQUFDTSxDQUFDLEdBQUMsQ0FBQyxLQUFHQSxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLEVBQUU7UUFBQyxJQUFJSSxDQUFDLEdBQUNWLENBQUMsR0FBQyxDQUFDO1VBQUNXLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQ1osQ0FBQyxHQUFDLENBQUMsR0FBQ0MsQ0FBQyxJQUFFLENBQUM7UUFBQ0QsQ0FBQyxHQUFDVyxDQUFDLEVBQUNWLENBQUMsR0FBQ1csQ0FBQztNQUFBO01BQUMsS0FBSSxJQUFJWixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQyxLQUFJLElBQUlDLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDa0QsQ0FBQyxDQUFDbkQsQ0FBQyxHQUFDLENBQUMsR0FBQ0MsQ0FBQyxDQUFDLEdBQUNBLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQ0QsQ0FBQyxHQUFDLENBQUMsR0FBQ0MsQ0FBQyxJQUFFLENBQUMsR0FBQyxDQUFDO01BQUMsS0FBSSxJQUFJYSxDQUFDLEdBQUMsQ0FBQyxFQUFDVyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDLEtBQUksSUFBSUssQ0FBQyxHQUFDLENBQUMsRUFBQ3dDLENBQUMsR0FBQyxDQUFDLEVBQUNzQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztVQUFDLElBQUcsQ0FBQyxHQUFDOUUsQ0FBQyxFQUFDO1lBQUMsSUFBSStFLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBRUQsQ0FBQyxJQUFFLENBQUM7WUFBQ0MsQ0FBQyxHQUFDLEVBQUUsR0FBQ3ZCLENBQUMsSUFBRSxDQUFDLElBQUV1QixDQUFDLEdBQUMvRCxDQUFDLElBQUUsQ0FBQyxJQUFFK0QsQ0FBQyxHQUFDLEVBQUU7VUFBQTtVQUFDLEdBQUcsR0FBQy9FLENBQUMsR0FBQ0EsQ0FBQyxHQUFDQSxDQUFDLElBQUUsQ0FBQyxHQUFDLEdBQUcsR0FBQ0EsQ0FBQyxLQUFHLENBQUM7UUFBQTtRQUFDNEMsQ0FBQyxDQUFDakMsQ0FBQyxDQUFDLEdBQUNhLENBQUMsQ0FBQzdCLE1BQU0sQ0FBQ3FCLENBQUMsRUFBQ3dDLENBQUMsQ0FBQztNQUFBO0lBQUMsQ0FBQyxFQUFFO0lBQUMsSUFBSUEsQ0FBQyxHQUFDLEVBQUU7SUFBQyxDQUFDLFlBQVU7TUFBQyxLQUFJLElBQUl0RSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQ3NFLENBQUMsQ0FBQ3RFLENBQUMsQ0FBQyxHQUFDc0MsQ0FBQyxDQUFDN0IsTUFBTSxFQUFFO0lBQUEsQ0FBQyxFQUFFO0lBQUMsSUFBSW1GLENBQUMsR0FBQzlELENBQUMsQ0FBQzhILElBQUksR0FBQzlJLENBQUMsQ0FBQ0UsTUFBTSxDQUFDO01BQUN5RCxHQUFHLEVBQUMzRCxDQUFDLENBQUMyRCxHQUFHLENBQUN6RCxNQUFNLENBQUM7UUFBQzZJLFlBQVksRUFBQztNQUFHLENBQUMsQ0FBQztNQUFDbkYsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtRQUFDLEtBQUksSUFBSTFFLENBQUMsR0FBQyxJQUFJLENBQUM4SixNQUFNLEdBQUMsRUFBRSxFQUFDN0osQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUMsSUFBSXFDLENBQUMsQ0FBQ25CLElBQUk7UUFBQyxJQUFJLENBQUM4QyxTQUFTLEdBQUMsQ0FBQyxJQUFJLEdBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQ1EsR0FBRyxDQUFDb0YsWUFBWSxJQUFFLEVBQUU7TUFBQSxDQUFDO01BQUN4RixlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDLEtBQUksSUFBSU0sQ0FBQyxHQUFDLElBQUksQ0FBQ3VKLE1BQU0sRUFBQ25KLENBQUMsR0FBQyxJQUFJLENBQUNzRCxTQUFTLEdBQUMsQ0FBQyxFQUFDckQsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRCxDQUFDLEVBQUNDLENBQUMsRUFBRSxFQUFDO1VBQUMsSUFBSUUsQ0FBQyxHQUFDZCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLEdBQUNXLENBQUMsQ0FBQztZQUFDYSxDQUFDLEdBQUN6QixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLEdBQUNXLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQ0UsQ0FBQyxHQUFDLFFBQVEsSUFBRUEsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFDVyxDQUFDLEdBQUMsUUFBUSxJQUFFQSxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO1VBQUMsSUFBSWEsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDSyxDQUFDLENBQUM7VUFBQzBCLENBQUMsQ0FBQ21ILElBQUksSUFBRWhJLENBQUMsRUFBQ2EsQ0FBQyxDQUFDb0gsR0FBRyxJQUFFNUksQ0FBQztRQUFBO1FBQUMsS0FBSSxJQUFJZ0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7VUFBQyxLQUFJLElBQUk4RCxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDLENBQUMsRUFBQ0MsQ0FBQyxHQUFDLENBQUMsRUFBQ0MsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7Y0FBQyxJQUFJekQsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDcUYsQ0FBQyxHQUFDLENBQUMsR0FBQ0csQ0FBQyxDQUFDO2NBQUNGLENBQUMsSUFBRXZELENBQUMsQ0FBQ21ILElBQUksRUFBQzNELENBQUMsSUFBRXhELENBQUMsQ0FBQ29ILEdBQUc7WUFBQTtZQUFDLElBQUkxRCxDQUFDLEdBQUMxQixDQUFDLENBQUNzQixDQUFDLENBQUM7WUFBQ0ksQ0FBQyxDQUFDeUQsSUFBSSxHQUFDNUQsQ0FBQyxFQUFDRyxDQUFDLENBQUMwRCxHQUFHLEdBQUM1RCxDQUFDO1VBQUE7VUFBQyxLQUFJLElBQUlGLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDLEtBQUksSUFBSUssQ0FBQyxHQUFDM0IsQ0FBQyxDQUFDLENBQUNzQixDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxFQUFDTSxDQUFDLEdBQUM1QixDQUFDLENBQUMsQ0FBQ3NCLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEVBQUNPLENBQUMsR0FBQ0QsQ0FBQyxDQUFDdUQsSUFBSSxFQUFDckQsQ0FBQyxHQUFDRixDQUFDLENBQUN3RCxHQUFHLEVBQUM3RCxDQUFDLEdBQUNJLENBQUMsQ0FBQ3dELElBQUksSUFBRXRELENBQUMsSUFBRSxDQUFDLEdBQUNDLENBQUMsS0FBRyxFQUFFLENBQUMsRUFBQ04sQ0FBQyxHQUFDRyxDQUFDLENBQUN5RCxHQUFHLElBQUV0RCxDQUFDLElBQUUsQ0FBQyxHQUFDRCxDQUFDLEtBQUcsRUFBRSxDQUFDLEVBQUNKLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsSUFBSXpELENBQUMsR0FBQy9CLENBQUMsQ0FBQ3FGLENBQUMsR0FBQyxDQUFDLEdBQUNHLENBQUMsQ0FBQztZQUFDekQsQ0FBQyxDQUFDbUgsSUFBSSxJQUFFNUQsQ0FBQyxFQUFDdkQsQ0FBQyxDQUFDb0gsR0FBRyxJQUFFNUQsQ0FBQztVQUFBO1VBQUMsS0FBSSxJQUFJTyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUkvRCxDQUFDLEdBQUMvQixDQUFDLENBQUM4RixDQUFDLENBQUM7Y0FBQ0MsQ0FBQyxHQUFDaEUsQ0FBQyxDQUFDbUgsSUFBSTtjQUFDbEQsQ0FBQyxHQUFDakUsQ0FBQyxDQUFDb0gsR0FBRztjQUFDbEQsQ0FBQyxHQUFDMUQsQ0FBQyxDQUFDdUQsQ0FBQyxDQUFDO1lBQUMsSUFBR0csQ0FBQyxHQUFDLEVBQUUsRUFBQyxJQUFJWCxDQUFDLEdBQUNTLENBQUMsSUFBRUUsQ0FBQyxHQUFDRCxDQUFDLEtBQUcsRUFBRSxHQUFDQyxDQUFDO2NBQUNWLENBQUMsR0FBQ1MsQ0FBQyxJQUFFQyxDQUFDLEdBQUNGLENBQUMsS0FBRyxFQUFFLEdBQUNFLENBQUMsQ0FBQyxLQUFLLElBQUlYLENBQUMsR0FBQ1UsQ0FBQyxJQUFFQyxDQUFDLEdBQUMsRUFBRSxHQUFDRixDQUFDLEtBQUcsRUFBRSxHQUFDRSxDQUFDO2NBQUNWLENBQUMsR0FBQ1EsQ0FBQyxJQUFFRSxDQUFDLEdBQUMsRUFBRSxHQUFDRCxDQUFDLEtBQUcsRUFBRSxHQUFDQyxDQUFDO1lBQUMsSUFBSUMsQ0FBQyxHQUFDbkMsQ0FBQyxDQUFDbkIsQ0FBQyxDQUFDa0QsQ0FBQyxDQUFDLENBQUM7WUFBQ0ksQ0FBQyxDQUFDZ0QsSUFBSSxHQUFDNUQsQ0FBQyxFQUFDWSxDQUFDLENBQUNpRCxHQUFHLEdBQUM1RCxDQUFDO1VBQUE7VUFBQyxJQUFJWSxDQUFDLEdBQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUNxQyxDQUFDLEdBQUNwRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUNtRyxDQUFDLENBQUMrQyxJQUFJLEdBQUM5QyxDQUFDLENBQUM4QyxJQUFJLEVBQUMvQyxDQUFDLENBQUNnRCxHQUFHLEdBQUMvQyxDQUFDLENBQUMrQyxHQUFHO1VBQUMsS0FBSSxJQUFJOUQsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUMsS0FBSSxJQUFJRyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUlNLENBQUMsR0FBQ1QsQ0FBQyxHQUFDLENBQUMsR0FBQ0csQ0FBQztjQUFDekQsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDOEYsQ0FBQyxDQUFDO2NBQUNPLENBQUMsR0FBQ3RDLENBQUMsQ0FBQytCLENBQUMsQ0FBQztjQUFDUSxDQUFDLEdBQUN2QyxDQUFDLENBQUMsQ0FBQ3NCLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDLENBQUMsR0FBQ0csQ0FBQyxDQUFDO2NBQUN3QyxDQUFDLEdBQUNqRSxDQUFDLENBQUMsQ0FBQ3NCLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDLENBQUMsR0FBQ0csQ0FBQyxDQUFDO1lBQUN6RCxDQUFDLENBQUNtSCxJQUFJLEdBQUM3QyxDQUFDLENBQUM2QyxJQUFJLEdBQUMsQ0FBQzVDLENBQUMsQ0FBQzRDLElBQUksR0FBQ2xCLENBQUMsQ0FBQ2tCLElBQUksRUFBQ25ILENBQUMsQ0FBQ29ILEdBQUcsR0FBQzlDLENBQUMsQ0FBQzhDLEdBQUcsR0FBQyxDQUFDN0MsQ0FBQyxDQUFDNkMsR0FBRyxHQUFDbkIsQ0FBQyxDQUFDbUIsR0FBRztVQUFBO1VBQUMsSUFBSXBILENBQUMsR0FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQ2lJLENBQUMsR0FBQzlFLENBQUMsQ0FBQzVCLENBQUMsQ0FBQztVQUFDUSxDQUFDLENBQUNtSCxJQUFJLElBQUVqQixDQUFDLENBQUNpQixJQUFJLEVBQUNuSCxDQUFDLENBQUNvSCxHQUFHLElBQUVsQixDQUFDLENBQUNrQixHQUFHO1FBQUE7TUFBQyxDQUFDO01BQUM3RSxXQUFXLEVBQUMsU0FBQUEsWUFBQSxFQUFVO1FBQUMsSUFBSTdFLENBQUMsR0FBQyxJQUFJLENBQUM2RCxLQUFLO1VBQUN0RCxDQUFDLEdBQUNQLENBQUMsQ0FBQzJCLEtBQUs7VUFBQ2hCLENBQUMsSUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDbUQsV0FBVyxFQUFDLENBQUMsR0FBQzlELENBQUMsQ0FBQzRCLFFBQVEsQ0FBQztVQUFDZCxDQUFDLEdBQUMsRUFBRSxHQUFDLElBQUksQ0FBQ21ELFNBQVM7UUFBQzFELENBQUMsQ0FBQ0ksQ0FBQyxLQUFHLENBQUMsQ0FBQyxJQUFFLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNKLENBQUMsQ0FBQyxDQUFDTixDQUFDLENBQUNpQyxJQUFJLENBQUMsQ0FBQ3ZCLENBQUMsR0FBQyxDQUFDLElBQUVHLENBQUMsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxJQUFFLENBQUMsQ0FBQyxJQUFFLEdBQUcsRUFBQ2QsQ0FBQyxDQUFDNEIsUUFBUSxHQUFDLENBQUMsR0FBQ3JCLENBQUMsQ0FBQ3NCLE1BQU0sRUFBQyxJQUFJLENBQUNtQyxRQUFRLEVBQUU7UUFBQyxLQUFJLElBQUl2QyxDQUFDLEdBQUMsSUFBSSxDQUFDcUksTUFBTSxFQUFDeEgsQ0FBQyxHQUFDLElBQUksQ0FBQ21DLEdBQUcsQ0FBQ29GLFlBQVksR0FBQyxDQUFDLEVBQUMvSCxDQUFDLEdBQUNRLENBQUMsR0FBQyxDQUFDLEVBQUNRLENBQUMsR0FBQyxFQUFFLEVBQUNLLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ3JCLENBQUMsRUFBQ3FCLENBQUMsRUFBRSxFQUFDO1VBQUMsSUFBSU8sQ0FBQyxHQUFDakMsQ0FBQyxDQUFDMEIsQ0FBQyxDQUFDO1lBQUNtQixDQUFDLEdBQUNaLENBQUMsQ0FBQytGLElBQUk7WUFBQzdELENBQUMsR0FBQ2xDLENBQUMsQ0FBQ2dHLEdBQUc7VUFBQ3BGLENBQUMsR0FBQyxRQUFRLElBQUVBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUMsRUFBQ3NCLENBQUMsR0FBQyxRQUFRLElBQUVBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUMsRUFBQzlDLENBQUMsQ0FBQ1AsSUFBSSxDQUFDcUQsQ0FBQyxDQUFDLEVBQUM5QyxDQUFDLENBQUNQLElBQUksQ0FBQytCLENBQUMsQ0FBQztRQUFBO1FBQUMsT0FBTyxJQUFJMUQsQ0FBQyxDQUFDTyxJQUFJLENBQUMyQixDQUFDLEVBQUNSLENBQUMsQ0FBQztNQUFBLENBQUM7TUFBQ2QsS0FBSyxFQUFDLFNBQUFBLE1BQUEsRUFBVTtRQUFDLEtBQUksSUFBSXhCLENBQUMsR0FBQ2MsQ0FBQyxDQUFDVSxLQUFLLENBQUNXLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQ2xDLENBQUMsR0FBQ0QsQ0FBQyxDQUFDOEosTUFBTSxHQUFDLElBQUksQ0FBQ0EsTUFBTSxDQUFDMUgsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDN0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDLEdBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDLENBQUNpQixLQUFLLEVBQUU7UUFBQyxPQUFPeEIsQ0FBQztNQUFBO0lBQUMsQ0FBQyxDQUFDO0lBQUNPLENBQUMsQ0FBQ3FKLElBQUksR0FBQzlJLENBQUMsQ0FBQ2dFLGFBQWEsQ0FBQ2MsQ0FBQyxDQUFDLEVBQUNyRixDQUFDLENBQUN3SixRQUFRLEdBQUNqSixDQUFDLENBQUNpRSxpQkFBaUIsQ0FBQ2EsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxDQUFDVixJQUFJLENBQUMsRUFBQyxZQUFVO0lBQUMsU0FBU2pGLENBQUNBLENBQUEsRUFBRTtNQUFDLE9BQU93QixDQUFDLENBQUNoQixNQUFNLENBQUNZLEtBQUssQ0FBQ0ksQ0FBQyxFQUFDSCxTQUFTLENBQUM7SUFBQTtJQUFDLElBQUlmLENBQUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQzZELE1BQU07TUFBQzFELENBQUMsR0FBQ1AsQ0FBQyxDQUFDZ0osR0FBRztNQUFDOUgsQ0FBQyxHQUFDWCxDQUFDLENBQUMwSSxJQUFJO01BQUNsSCxDQUFDLEdBQUN4QixDQUFDLENBQUNZLFNBQVM7TUFBQ0ksQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDMEUsSUFBSTtNQUFDbkMsQ0FBQyxHQUFDLENBQUM3QyxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxDQUFDO01BQUNrRCxDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSW5ELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDbUQsQ0FBQyxDQUFDbkQsQ0FBQyxDQUFDLEdBQUNDLENBQUMsRUFBRTtJQUFBLENBQUMsRUFBRTtJQUFDLElBQUl5RCxDQUFDLEdBQUM1QixDQUFDLENBQUNrSSxNQUFNLEdBQUNwSixDQUFDLENBQUNJLE1BQU0sQ0FBQztNQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtRQUFDLElBQUksQ0FBQ2lCLEtBQUssR0FBQyxJQUFJckQsQ0FBQyxDQUFDbkIsSUFBSSxDQUFDLENBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDa0QsZUFBZSxFQUFDLFNBQUFBLGdCQUFTckUsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7UUFBQyxLQUFJLElBQUlNLENBQUMsR0FBQyxJQUFJLENBQUNvRixLQUFLLENBQUNoRSxLQUFLLEVBQUNoQixDQUFDLEdBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0IsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDdUIsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDcUYsQ0FBQyxHQUFDakYsQ0FBQyxDQUFDOEksSUFBSSxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDK0ksR0FBRyxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDNkksSUFBSSxFQUFDMUQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDOEksR0FBRyxFQUFDMUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDMkksSUFBSSxFQUFDeEQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDNEksR0FBRyxFQUFDeEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDZ0ksSUFBSSxFQUFDdEQsQ0FBQyxHQUFDMUUsQ0FBQyxDQUFDaUksR0FBRyxFQUFDdEQsQ0FBQyxHQUFDOUQsQ0FBQyxDQUFDbUgsSUFBSSxFQUFDcEQsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDb0gsR0FBRyxFQUFDcEQsQ0FBQyxHQUFDeEUsQ0FBQyxDQUFDMkgsSUFBSSxFQUFDbEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDNEgsR0FBRyxFQUFDbEQsQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDK0YsSUFBSSxFQUFDaEQsQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDZ0csR0FBRyxFQUFDaEQsQ0FBQyxHQUFDcEMsQ0FBQyxDQUFDbUYsSUFBSSxFQUFDOUMsQ0FBQyxHQUFDckMsQ0FBQyxDQUFDb0YsR0FBRyxFQUFDOUMsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDaUIsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7VUFBQyxJQUFJQyxDQUFDLEdBQUN6SCxDQUFDLENBQUN3SCxDQUFDLENBQUM7VUFBQyxJQUFHQSxDQUFDLEdBQUMsRUFBRSxFQUFDLElB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QUN5QyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQ3ZDLENBQUMsR0FBQzFFLENBQUMsQ0FBQ2lJLEdBQUcsR0FBQ3ZELENBQUMsR0FBQytELENBQUMsRUFBQ3pJLENBQUMsQ0FBQ2dJLElBQUksR0FBQ3ZELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9ELENBQUMsQ0FBQ29ILEdBQUcsR0FBQ3JELENBQUMsR0FBQytELENBQUMsRUFBQzlILENBQUMsQ0FBQ21ILElBQUksR0FBQ3JELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3pFLENBQUMsQ0FBQzRILEdBQUcsR0FBQ25ELENBQUMsR0FBQytELENBQUMsRUFBQ3hJLENBQUMsQ0FBQzJILElBQUksR0FBQ25ELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9DLENBQUMsQ0FBQ2dHLEdBQUcsR0FBQ2pELENBQUMsR0FBQytELENBQUMsRUFBQzlHLENBQUMsQ0FBQytGLElBQUksR0FBQ2pELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3JDLENBQUMsQ0FBQ29GLEdBQUcsR0FBQy9DLENBQUMsR0FBQytELENBQUMsRUFBQ3BHLENBQUMsQ0FBQ21GLElBQUksR0FBQy9DLENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcs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QUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztNQUFDZ0IsQ0FBQyxHQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7TUFBQ0ssQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDO01BQUNPLENBQUMsR0FBQyxDQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLENBQUMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLEVBQUU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEVBQUU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDO01BQU0sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxPQUFPLEVBQUMsQ0FBQztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxNQUFNLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxHQUFHO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDO01BQUssQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsT0FBTztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsRUFBRTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsSUFBSTtRQUFDLE1BQU0sRUFBQyxJQUFJO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLEtBQUssRUFBQyxFQUFFO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxJQUFJO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsTUFBTTtRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsU0FBUztRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxDQUFDLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxPQUFPO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxDQUFDO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLElBQUk7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLEVBQUU7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsSUFBSTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLElBQUk7UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxFQUFFO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsRUFBRTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsSUFBSTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsRUFBRTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDO01BQVMsQ0FBQyxDQUFDO01BQUNZLENBQUMsR0FBQyxDQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsRUFBQyxVQUFVLENBQUM7TUFBQ3NCLENBQUMsR0FBQ3RELENBQUMsQ0FBQ3dPLEdBQUcsR0FBQ3JQLENBQUMsQ0FB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QUksQ0FBQzhSLEVBQUUsR0FBQyxDQUFDLEVBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDeVAsRUFBRSxHQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUM7TUFBQyxLQUFJLElBQUkvQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDLElBQUlJLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTyxDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7VUFBQ0ssQ0FBQyxHQUFDLEtBQUssR0FBQ0QsQ0FBQztVQUFDRyxDQUFDLEdBQUNILENBQUMsS0FBRyxFQUFFO1VBQUNjLENBQUMsR0FBQyxDQUFDLENBQUNiLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDRSxDQUFDLEtBQUcsRUFBRSxJQUFFQSxDQUFDLEdBQUNBLENBQUM7VUFBQ2dDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDbkMsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsS0FBSyxHQUFDQSxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLENBQUM7UUFBQ21CLENBQUMsQ0FBQ3ZCLENBQUMsQ0FBQyxHQUFDa0IsQ0FBQyxHQUFDcUIsQ0FBQztNQUFBO01BQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxD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QUFFLEdBQUMsQ0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxJQUFJLENBQUMrUixFQUFFLEdBQUMsQ0FBQztVQUFDLEtBQUksSUFBSXBSLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUMsS0FBSSxJQUFJeEIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNHLENBQUMsQ0FBQ0gsQ0FBQyxDQUFDLElBQUVDLENBQUMsQ0FBQ0QsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQyxJQUFHSixDQUFDLEVBQUM7WUFBQyxJQUFJa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDb0IsS0FBSztjQUFDVyxDQUFDLEdBQUNiLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQUNxQixDQUFDLEdBQUMsUUFBUSxJQUFFUixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUNhLENBQUMsR0FBQyxRQUFRLElBQUVyQixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUM0QixDQUFDLEdBQUNaLENBQUMsS0FBRyxFQUFFLEdBQUMsVUFBVSxHQUFDSyxDQUFDO2NBQUNtQixDQUFDLEdBQUNuQixDQUFDLElBQUUsRUFBRSxHQUFDLEtBQUssR0FBQ0wsQ0FBQztZQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQyxFQUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQztZQUFDLEtBQUksSUFBSTNELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUE7UUFBQyxDQUFDO1FBQUNrQyxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNPLENBQUMsRUFBQztVQUFDLElBQUlJLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFO1VBQUM1UixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxFQUFDYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsRUFBQ2MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEVBQUNjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRTtVQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLEdBQUMsUUFBUSxJQUFFYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ2EsQ0FBQyxDQUFDYixDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FB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ckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsU0FBUyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ3lQLEVBQUUsR0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDO01BQUMsS0FBSSxJQUFJL0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7UUFBQyxJQUFJSSxDQUFDLEdBQUNYLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLEdBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDO1VBQUNLLENBQUMsR0FBQyxLQUFLLEdBQUNELENBQUM7VUFBQ0csQ0FBQyxHQUFDSCxDQUFDLEtBQUcsRUFBRTtVQUFDYyxDQUFDLEdBQUMsQ0FBQyxDQUFDYixDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLElBQUVBLENBQUMsR0FBQ0UsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDQSxDQUFDO1VBQUNnQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBQ25DLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsS0FBRyxDQUFDLEtBQUssR0FBQ0EsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxDQUFDO1FBQUNtQixDQUFDLENBQUN2QixDQUFDLENBQUMsR0FBQ2tCLENBQUMsR0FBQ3FCLENBQUM7TUFBQTtNQUFDOUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUM7SUFBQTtJQUFDLElBQUl2QixDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNpTixZQUFZO01BQUM5TSxDQUFDLEdBQUNQLENBQUMsQ0FBQzBFLElBQUk7TUFBQ3hELENBQUMsR0FBQyxFQUFFO01BQUNhLENBQUMsR0FBQyxFQUFFO01BQUNSLENBQUMsR0FBQyxFQUFFO01BQUNnQixDQUFDLEdBQUNoQyxDQUFDLENBQUNvUixZQUFZLEdBQUN0UixDQUFDLENBQUNJLE1BQU0sQ0FBQztRQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtVQUFDLElBQUkxRSxDQUFDLEdBQUMsSUFBSSxDQUFDdU4sSUFBSSxDQUFDNUwsS0FBSztZQUFDcEIsQ0FBQyxHQUFDLElBQUksQ0FBQ2tFLEdBQUcsQ0FBQ29LLEVBQUU7WUFBQ2xPLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFLEdBQUMsQ0FBQzdSLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQztZQUFDWSxDQUFDLEdBQUMsSUFBSSxDQUFDa1IsRUFBRSxHQUFDLENBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUMsSUFBSSxDQUFDK1IsRUFBRSxHQUFDLENBQUM7VUFBQyxLQUFJLElBQUlqUixDQUFD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QUUsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsR0FBRyxDQUFDLEdBQUVBLENBQUMsRUFBRTtNQUFDUCxDQUFDLENBQUM0QixRQUFRLEdBQUNyQixDQUFDLEdBQUMsQ0FBQztJQUFBO0VBQUMsQ0FBQyxFQUFDUCxDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBQ25oZiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKHQscil7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZXhwb3J0cz1yKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSxyKTp0LkNyeXB0b0pTPXIoKX0odGhpcyxmdW5jdGlvbigpe3ZhciB0PXR8fGZ1bmN0aW9uKHQscil7dmFyIGU9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihyKXt2YXIgZTtyZXR1cm4gdC5wcm90b3R5cGU9cixlPW5ldyB0LHQucHJvdG90eXBlPW51bGwsZX19KCksaT17fSxuPWkubGliPXt9LG89bi5CYXNlPWZ1bmN0aW9uKCl7cmV0dXJue2V4dGVuZDpmdW5jdGlvbih0KXt2YXIgcj1lKHRoaXMpO3JldHVybiB0JiZyLm1peEluKHQpLHIuaGFzT3duUHJvcGVydHkoXCJpbml0XCIpJiZ0aGlzLmluaXQhPT1yLmluaXR8fChyLmluaXQ9ZnVuY3Rpb24oKXtyLiRzdXBlci5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHIuaW5pdC5wcm90b3R5cGU9cixyLiRzdXBlcj10aGlzLHJ9LGNyZWF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZXh0ZW5kKCk7cmV0dXJuIHQuaW5pdC5hcHBseSh0LGFyZ3VtZW50cyksdH0saW5pdDpmdW5jdGlvbigpe30sbWl4SW46ZnVuY3Rpb24odCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKHRoaXNbcl09dFtyXSk7dC5oYXNPd25Qcm9wZXJ0eShcInRvU3RyaW5nXCIpJiYodGhpcy50b1N0cmluZz10LnRvU3RyaW5nKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0LnByb3RvdHlwZS5leHRlbmQodGhpcyl9fX0oKSxzPW4uV29yZEFycmF5PW8uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dD10aGlzLndvcmRzPXR8fFtdLGUhPXI/dGhpcy5zaWdCeXRlcz1lOnRoaXMuc2lnQnl0ZXM9NCp0Lmxlbmd0aH0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuKHR8fGMpLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKHQpe3ZhciByPXRoaXMud29yZHMsZT10LndvcmRzLGk9dGhpcy5zaWdCeXRlcyxuPXQuc2lnQnl0ZXM7aWYodGhpcy5jbGFtcCgpLGklNClmb3IodmFyIG89MDtvPG47bysrKXt2YXIgcz1lW28+Pj4yXT4+PjI0LW8lNCo4JjI1NTtyW2krbz4+PjJdfD1zPDwyNC0oaStvKSU0Kjh9ZWxzZSBmb3IodmFyIG89MDtvPG47bys9NClyW2krbz4+PjJdPWVbbz4+PjJdO3JldHVybiB0aGlzLnNpZ0J5dGVzKz1uLHRoaXN9LGNsYW1wOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy53b3JkcyxlPXRoaXMuc2lnQnl0ZXM7cltlPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLWUlNCo4LHIubGVuZ3RoPXQuY2VpbChlLzQpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLHR9LHJhbmRvbTpmdW5jdGlvbihyKXtmb3IodmFyIGUsaT1bXSxuPWZ1bmN0aW9uKHIpe3ZhciByPXIsZT05ODc2NTQzMjEsaT00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe2U9MzY5NjkqKDY1NTM1JmUpKyhlPj4xNikmaSxyPTE4ZTMqKDY1NTM1JnIpKyhyPj4xNikmaTt2YXIgbj0oZTw8MTYpK3ImaTtyZXR1cm4gbi89NDI5NDk2NzI5NixuKz0uNSxuKih0LnJhbmRvbSgpPi41PzE6LTEpfX0sbz0wO288cjtvKz00KXt2YXIgYT1uKDQyOTQ5NjcyOTYqKGV8fHQucmFuZG9tKCkpKTtlPTk4NzY1NDA3MSphKCksaS5wdXNoKDQyOTQ5NjcyOTYqYSgpfDApfXJldHVybiBuZXcgcy5pbml0KGkscil9fSksYT1pLmVuYz17fSxjPWEuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9W10sbj0wO248ZTtuKyspe3ZhciBvPXJbbj4+PjJdPj4+MjQtbiU0KjgmMjU1O2kucHVzaCgobz4+PjQpLnRvU3RyaW5nKDE2KSksaS5wdXNoKCgxNSZvKS50b1N0cmluZygxNikpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSs9MillW2k+Pj4zXXw9cGFyc2VJbnQodC5zdWJzdHIoaSwyKSwxNik8PDI0LWklOCo0O3JldHVybiBuZXcgcy5pbml0KGUsci8yKX19LGg9YS5MYXRpbjE9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rKyl7dmFyIG89cltuPj4+Ml0+Pj4yNC1uJTQqOCYyNTU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD0oMjU1JnQuY2hhckNvZGVBdChpKSk8PDI0LWklNCo4O3JldHVybiBuZXcgcy5pbml0KGUscil9fSxsPWEuVXRmOD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShoLnN0cmluZ2lmeSh0KSkpfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcihcIk1hbGZvcm1lZCBVVEYtOCBkYXRhXCIpfX0scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIGgucGFyc2UodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQpKSl9fSxmPW4uQnVmZmVyZWRCbG9ja0FsZ29yaXRobT1vLmV4dGVuZCh7cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9kYXRhPW5ldyBzLmluaXQsdGhpcy5fbkRhdGFCeXRlcz0wfSxfYXBwZW5kOmZ1bmN0aW9uKHQpe1wic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1sLnBhcnNlKHQpKSx0aGlzLl9kYXRhLmNvbmNhdCh0KSx0aGlzLl9uRGF0YUJ5dGVzKz10LnNpZ0J5dGVzfSxfcHJvY2VzczpmdW5jdGlvbihyKXt2YXIgZT10aGlzLl9kYXRhLGk9ZS53b3JkcyxuPWUuc2lnQnl0ZXMsbz10aGlzLmJsb2NrU2l6ZSxhPTQqbyxjPW4vYTtjPXI/dC5jZWlsKGMpOnQubWF4KCgwfGMpLXRoaXMuX21pbkJ1ZmZlclNpemUsMCk7dmFyIGg9YypvLGw9dC5taW4oNCpoLG4pO2lmKGgpe2Zvcih2YXIgZj0wO2Y8aDtmKz1vKXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKGksZik7dmFyIHU9aS5zcGxpY2UoMCxoKTtlLnNpZ0J5dGVzLT1sfXJldHVybiBuZXcgcy5pbml0KHUsbCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSx0fSxfbWluQnVmZmVyU2l6ZTowfSksdT0obi5IYXNoZXI9Zi5leHRlbmQoe2NmZzpvLmV4dGVuZCgpLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dCYmdGhpcy5fYXBwZW5kKHQpO3ZhciByPXRoaXMuX2RvRmluYWxpemUoKTtyZXR1cm4gcn0sYmxvY2tTaXplOjE2LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSl7cmV0dXJuIG5ldyB0LmluaXQoZSkuZmluYWxpemUocil9fSxfY3JlYXRlSG1hY0hlbHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbmV3IHUuSE1BQy5pbml0KHQsZSkuZmluYWxpemUocil9fX0pLGkuYWxnbz17fSk7cmV0dXJuIGl9KE1hdGgpO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyLGUpe2Zvcih2YXIgaT1bXSxvPTAscz0wO3M8cjtzKyspaWYocyU0KXt2YXIgYT1lW3QuY2hhckNvZGVBdChzLTEpXTw8cyU0KjIsYz1lW3QuY2hhckNvZGVBdChzKV0+Pj42LXMlNCoyO2lbbz4+PjJdfD0oYXxjKTw8MjQtbyU0KjgsbysrfXJldHVybiBuLmNyZWF0ZShpLG8pfXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5CYXNlNjQ9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPXRoaXMuX21hcDt0LmNsYW1wKCk7Zm9yKHZhciBuPVtdLG89MDtvPGU7bys9Mylmb3IodmFyIHM9cltvPj4+Ml0+Pj4yNC1vJTQqOCYyNTUsYT1yW28rMT4+PjJdPj4+MjQtKG8rMSklNCo4JjI1NSxjPXJbbysyPj4+Ml0+Pj4yNC0obysyKSU0KjgmMjU1LGg9czw8MTZ8YTw8OHxjLGw9MDtsPDQmJm8rLjc1Kmw8ZTtsKyspbi5wdXNoKGkuY2hhckF0KGg+Pj42KigzLWwpJjYzKSk7dmFyIGY9aS5jaGFyQXQoNjQpO2lmKGYpZm9yKDtuLmxlbmd0aCU0OyluLnB1c2goZik7cmV0dXJuIG4uam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsaT10aGlzLl9tYXAsbj10aGlzLl9yZXZlcnNlTWFwO2lmKCFuKXtuPXRoaXMuX3JldmVyc2VNYXA9W107Zm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspbltpLmNoYXJDb2RlQXQobyldPW99dmFyIHM9aS5jaGFyQXQoNjQpO2lmKHMpe3ZhciBhPXQuaW5kZXhPZihzKTthIT09LTEmJihlPWEpfXJldHVybiByKHQsZSxuKX0sX21hcDpcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCJ9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUsaSxuLG8scyl7dmFyIGE9dCsociZlfH5yJmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBpKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHImaXxlJn5pKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gbih0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyXmVeaSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIG8odCxyLGUsaSxuLG8scyl7dmFyIGE9dCsoZV4ocnx+aSkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn12YXIgcz10LGE9cy5saWIsYz1hLldvcmRBcnJheSxoPWEuSGFzaGVyLGw9cy5hbGdvLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw2NDt0KyspZlt0XT00Mjk0OTY3Mjk2KnIuYWJzKHIuc2luKHQrMSkpfDB9KCk7dmFyIHU9bC5NRDU9aC5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYy5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBzPTA7czwxNjtzKyspe3ZhciBhPXIrcyxjPXRbYV07dFthXT0xNjcxMTkzNSYoYzw8OHxjPj4+MjQpfDQyNzgyNTUzNjAmKGM8PDI0fGM+Pj44KX12YXIgaD10aGlzLl9oYXNoLndvcmRzLGw9dFtyKzBdLHU9dFtyKzFdLGQ9dFtyKzJdLHY9dFtyKzNdLHA9dFtyKzRdLF89dFtyKzVdLHk9dFtyKzZdLGc9dFtyKzddLEI9dFtyKzhdLHc9dFtyKzldLGs9dFtyKzEwXSxTPXRbcisxMV0sbT10W3IrMTJdLHg9dFtyKzEzXSxiPXRbcisxNF0sSD10W3IrMTVdLHo9aFswXSxBPWhbMV0sQz1oWzJdLEQ9aFszXTt6PWUoeixBLEMsRCxsLDcsZlswXSksRD1lKEQseixBLEMsdSwxMixmWzFdKSxDPWUoQyxELHosQSxkLDE3LGZbMl0pLEE9ZShBLEMsRCx6LHYsMjIsZlszXSksej1lKHosQSxDLEQscCw3LGZbNF0pLEQ9ZShELHosQSxDLF8sMTIsZls1XSksQz1lKEMsRCx6LEEseSwxNyxmWzZdKSxBPWUoQSxDLEQseixnLDIyLGZbN10pLHo9ZSh6LEEsQyxELEIsNyxmWzhdKSxEPWUoRCx6LEEsQyx3LDEyLGZbOV0pLEM9ZShDLEQseixBLGssMTcsZlsxMF0pLEE9ZShBLEMsRCx6LFMsMjIsZlsxMV0pLHo9ZSh6LEEsQyxELG0sNyxmWzEyXSksRD1lKEQseixBLEMseCwxMixmWzEzXSksQz1lKEMsRCx6LEEsYiwxNyxmWzE0XSksQT1lKEEsQyxELHosSCwyMixmWzE1XSksej1pKHosQSxDLEQsdSw1LGZbMTZdKSxEPWkoRCx6LEEsQyx5LDksZlsxN10pLEM9aShDLEQseixBLFMsMTQsZlsxOF0pLEE9aShBLEMsRCx6LGwsMjAsZlsxOV0pLHo9aSh6LEEsQyxELF8sNSxmWzIwXSksRD1pKEQseixBLEMsayw5LGZbMjFdKSxDPWkoQyxELHosQSxILDE0LGZbMjJdKSxBPWkoQSxDLEQseixwLDIwLGZbMjNdKSx6PWkoeixBLEMsRCx3LDUsZlsyNF0pLEQ9aShELHosQSxDLGIsOSxmWzI1XSksQz1pKEMsRCx6LEEsdiwxNCxmWzI2XSksQT1pKEEsQyxELHosQiwyMCxmWzI3XSksej1pKHosQSxDLEQseCw1LGZbMjhdKSxEPWkoRCx6LEEsQyxkLDksZlsyOV0pLEM9aShDLEQseixBLGcsMTQsZlszMF0pLEE9aShBLEMsRCx6LG0sMjAsZlszMV0pLHo9bih6LEEsQyxELF8sNCxmWzMyXSksRD1uKEQseixBLEMsQiwxMSxmWzMzXSksQz1uKEMsRCx6LEEsUywxNixmWzM0XSksQT1uKEEsQyxELHosYiwyMyxmWzM1XSksej1uKHosQSxDLEQsdSw0LGZbMzZdKSxEPW4oRCx6LEEsQyxwLDExLGZbMzddKSxDPW4oQyxELHosQSxnLDE2LGZbMzhdKSxBPW4oQSxDLEQseixrLDIzLGZbMzldKSx6PW4oeixBLEMsRCx4LDQsZls0MF0pLEQ9bihELHosQSxDLGwsMTEsZls0MV0pLEM9bihDLEQseixBLHYsMTYsZls0Ml0pLEE9bihBLEMsRCx6LHksMjMsZls0M10pLHo9bih6LEEsQyxELHcsNCxmWzQ0XSksRD1uKEQseixBLEMsbSwxMSxmWzQ1XSksQz1uKEMsRCx6LEEsSCwxNixmWzQ2XSksQT1uKEEsQyxELHosZCwyMyxmWzQ3XSksej1vKHosQSxDLEQsbCw2LGZbNDhdKSxEPW8oRCx6LEEsQyxnLDEwLGZbNDldKSxDPW8oQyxELHosQSxiLDE1LGZbNTBdKSxBPW8oQSxDLEQseixfLDIxLGZbNTFdKSx6PW8oeixBLEMsRCxtLDYsZls1Ml0pLEQ9byhELHosQSxDLHYsMTAsZls1M10pLEM9byhDLEQseixBLGssMTUsZls1NF0pLEE9byhBLEMsRCx6LHUsMjEsZls1NV0pLHo9byh6LEEsQyxELEIsNixmWzU2XSksRD1vKEQseixBLEMsSCwxMCxmWzU3XSksQz1vKEMsRCx6LEEseSwxNSxmWzU4XSksQT1vKEEsQyxELHoseCwyMSxmWzU5XSksej1vKHosQSxDLEQscCw2LGZbNjBdKSxEPW8oRCx6LEEsQyxTLDEwLGZbNjFdKSxDPW8oQyxELHosQSxkLDE1LGZbNjJdKSxBPW8oQSxDLEQseix3LDIxLGZbNjNdKSxoWzBdPWhbMF0renwwLGhbMV09aFsxXStBfDAsaFsyXT1oWzJdK0N8MCxoWzNdPWhbM10rRHwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9OCp0aGlzLl9uRGF0YUJ5dGVzLG49OCp0LnNpZ0J5dGVzO2Vbbj4+PjVdfD0xMjg8PDI0LW4lMzI7dmFyIG89ci5mbG9vcihpLzQyOTQ5NjcyOTYpLHM9aTtlWyhuKzY0Pj4+OTw8NCkrMTVdPTE2NzExOTM1JihvPDw4fG8+Pj4yNCl8NDI3ODI1NTM2MCYobzw8MjR8bz4+PjgpLGVbKG4rNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKHM8PDh8cz4+PjI0KXw0Mjc4MjU1MzYwJihzPDwyNHxzPj4+OCksdC5zaWdCeXRlcz00KihlLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBhPXRoaXMuX2hhc2gsYz1hLndvcmRzLGg9MDtoPDQ7aCsrKXt2YXIgbD1jW2hdO2NbaF09MTY3MTE5MzUmKGw8PDh8bD4+PjI0KXw0Mjc4MjU1MzYwJihsPDwyNHxsPj4+OCl9cmV0dXJuIGF9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9aC5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO3MuTUQ1PWguX2NyZWF0ZUhlbHBlcih1KSxzLkhtYWNNRDU9aC5fY3JlYXRlSG1hY0hlbHBlcih1KX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPWUuSGFzaGVyLG89ci5hbGdvLHM9W10sYT1vLlNIQTE9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxhPWVbM10sYz1lWzRdLGg9MDtoPDgwO2grKyl7aWYoaDwxNilzW2hdPTB8dFtyK2hdO2Vsc2V7dmFyIGw9c1toLTNdXnNbaC04XV5zW2gtMTRdXnNbaC0xNl07c1toXT1sPDwxfGw+Pj4zMX12YXIgZj0oaTw8NXxpPj4+MjcpK2Mrc1toXTtmKz1oPDIwPyhuJm98fm4mYSkrMTUxODUwMDI0OTpoPDQwPyhuXm9eYSkrMTg1OTc3NTM5MzpoPDYwPyhuJm98biZhfG8mYSktMTg5NDAwNzU4ODoobl5vXmEpLTg5OTQ5NzUxNCxjPWEsYT1vLG89bjw8MzB8bj4+PjIsbj1pLGk9Zn1lWzBdPWVbMF0raXwwLGVbMV09ZVsxXStufDAsZVsyXT1lWzJdK298MCxlWzNdPWVbM10rYXwwLGVbNF09ZVs0XStjfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxyPXQud29yZHMsZT04KnRoaXMuX25EYXRhQnl0ZXMsaT04KnQuc2lnQnl0ZXM7cmV0dXJuIHJbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSs2ND4+Pjk8PDQpKzE0XT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSs2ND4+Pjk8PDQpKzE1XT1lLHQuc2lnQnl0ZXM9NCpyLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCksdGhpcy5faGFzaH0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1uLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7ci5TSEExPW4uX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEExPW4uX2NyZWF0ZUhtYWNIZWxwZXIoYSl9KCksZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1pLkhhc2hlcixzPWUuYWxnbyxhPVtdLGM9W107IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGU9ci5zcXJ0KHQpLGk9MjtpPD1lO2krKylpZighKHQlaSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gNDI5NDk2NzI5NioodC0oMHx0KSl8MH1mb3IodmFyIGk9MixuPTA7bjw2NDspdChpKSYmKG48OCYmKGFbbl09ZShyLnBvdyhpLC41KSkpLGNbbl09ZShyLnBvdyhpLDEvMykpLG4rKyksaSsrfSgpO3ZhciBoPVtdLGw9cy5TSEEyNTY9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KGEuc2xpY2UoMCkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxzPWVbM10sYT1lWzRdLGw9ZVs1XSxmPWVbNl0sdT1lWzddLGQ9MDtkPDY0O2QrKyl7aWYoZDwxNiloW2RdPTB8dFtyK2RdO2Vsc2V7dmFyIHY9aFtkLTE1XSxwPSh2PDwyNXx2Pj4+NyleKHY8PDE0fHY+Pj4xOCledj4+PjMsXz1oW2QtMl0seT0oXzw8MTV8Xz4+PjE3KV4oXzw8MTN8Xz4+PjE5KV5fPj4+MTA7aFtkXT1wK2hbZC03XSt5K2hbZC0xNl19dmFyIGc9YSZsXn5hJmYsQj1pJm5eaSZvXm4mbyx3PShpPDwzMHxpPj4+MileKGk8PDE5fGk+Pj4xMyleKGk8PDEwfGk+Pj4yMiksaz0oYTw8MjZ8YT4+PjYpXihhPDwyMXxhPj4+MTEpXihhPDw3fGE+Pj4yNSksUz11K2srZytjW2RdK2hbZF0sbT13K0I7dT1mLGY9bCxsPWEsYT1zK1N8MCxzPW8sbz1uLG49aSxpPVMrbXwwfWVbMF09ZVswXStpfDAsZVsxXT1lWzFdK258MCxlWzJdPWVbMl0rb3wwLGVbM109ZVszXStzfDAsZVs0XT1lWzRdK2F8MCxlWzVdPWVbNV0rbHwwLGVbNl09ZVs2XStmfDAsZVs3XT1lWzddK3V8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLGU9dC53b3JkcyxpPTgqdGhpcy5fbkRhdGFCeXRlcyxuPTgqdC5zaWdCeXRlcztyZXR1cm4gZVtuPj4+NV18PTEyODw8MjQtbiUzMixlWyhuKzY0Pj4+OTw8NCkrMTRdPXIuZmxvb3IoaS80Mjk0OTY3Mjk2KSxlWyhuKzY0Pj4+OTw8NCkrMTVdPWksdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtlLlNIQTI1Nj1vLl9jcmVhdGVIZWxwZXIobCksZS5IbWFjU0hBMjU2PW8uX2NyZWF0ZUhtYWNIZWxwZXIobCl9KE1hdGgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdDw8OCY0Mjc4MjU1MzYwfHQ+Pj44JjE2NzExOTM1fXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5VdGYxNj1vLlV0ZjE2QkU9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rPTIpe3ZhciBvPXJbbj4+PjJdPj4+MTYtbiU0KjgmNjU1MzU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjFdfD10LmNoYXJDb2RlQXQoaSk8PDE2LWklMioxNjtyZXR1cm4gbi5jcmVhdGUoZSwyKnIpfX07by5VdGYxNkxFPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQud29yZHMsaT10LnNpZ0J5dGVzLG49W10sbz0wO288aTtvKz0yKXt2YXIgcz1yKGVbbz4+PjJdPj4+MTYtbyU0KjgmNjU1MzUpO24ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1yZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgsaT1bXSxvPTA7bzxlO28rKylpW28+Pj4xXXw9cih0LmNoYXJDb2RlQXQobyk8PDE2LW8lMioxNik7cmV0dXJuIG4uY3JlYXRlKGksMiplKX19fSgpLGZ1bmN0aW9uKCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49aS5pbml0LG89aS5pbml0PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKHQ9bmV3IFVpbnQ4QXJyYXkodCkpLCh0IGluc3RhbmNlb2YgSW50OEFycmF5fHxcInVuZGVmaW5lZFwiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkmJnQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8dCBpbnN0YW5jZW9mIEludDE2QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIEludDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkmJih0PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpKSx0IGluc3RhbmNlb2YgVWludDhBcnJheSl7Zm9yKHZhciByPXQuYnl0ZUxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD10W2ldPDwyNC1pJTQqODtuLmNhbGwodGhpcyxlLHIpfWVsc2Ugbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O28ucHJvdG90eXBlPWl9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUpe3JldHVybiB0XnJeZX1mdW5jdGlvbiBpKHQscixlKXtyZXR1cm4gdCZyfH50JmV9ZnVuY3Rpb24gbih0LHIsZSl7cmV0dXJuKHR8fnIpXmV9ZnVuY3Rpb24gbyh0LHIsZSl7cmV0dXJuIHQmZXxyJn5lfWZ1bmN0aW9uIHModCxyLGUpe3JldHVybiB0XihyfH5lKX1mdW5jdGlvbiBhKHQscil7cmV0dXJuIHQ8PHJ8dD4+PjMyLXJ9dmFyIGM9dCxoPWMubGliLGw9aC5Xb3JkQXJyYXksZj1oLkhhc2hlcix1PWMuYWxnbyxkPWwuY3JlYXRlKFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdKSx2PWwuY3JlYXRlKFs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdKSxwPWwuY3JlYXRlKFsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSksXz1sLmNyZWF0ZShbOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0pLHk9bC5jcmVhdGUoWzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0pLGc9bC5jcmVhdGUoWzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF0pLEI9dS5SSVBFTUQxNjA9Zi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1sLmNyZWF0ZShbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBjPTA7YzwxNjtjKyspe3ZhciBoPXIrYyxsPXRbaF07dFtoXT0xNjcxMTkzNSYobDw8OHxsPj4+MjQpfDQyNzgyNTUzNjAmKGw8PDI0fGw+Pj44KX12YXIgZix1LEIsdyxrLFMsbSx4LGIsSCx6PXRoaXMuX2hhc2gud29yZHMsQT15LndvcmRzLEM9Zy53b3JkcyxEPWQud29yZHMsUj12LndvcmRzLEU9cC53b3JkcyxNPV8ud29yZHM7Uz1mPXpbMF0sbT11PXpbMV0seD1CPXpbMl0sYj13PXpbM10sSD1rPXpbNF07Zm9yKHZhciBGLGM9MDtjPDgwO2MrPTEpRj1mK3RbcitEW2NdXXwwLEYrPWM8MTY/ZSh1LEIsdykrQVswXTpjPDMyP2kodSxCLHcpK0FbMV06Yzw0OD9uKHUsQix3KStBWzJdOmM8NjQ/byh1LEIsdykrQVszXTpzKHUsQix3KStBWzRdLEZ8PTAsRj1hKEYsRVtjXSksRj1GK2t8MCxmPWssaz13LHc9YShCLDEwKSxCPXUsdT1GLEY9Uyt0W3IrUltjXV18MCxGKz1jPDE2P3MobSx4LGIpK0NbMF06YzwzMj9vKG0seCxiKStDWzFdOmM8NDg/bihtLHgsYikrQ1syXTpjPDY0P2kobSx4LGIpK0NbM106ZShtLHgsYikrQ1s0XSxGfD0wLEY9YShGLE1bY10pLEY9RitIfDAsUz1ILEg9YixiPWEoeCwxMCkseD1tLG09RjtGPXpbMV0rQitifDAselsxXT16WzJdK3crSHwwLHpbMl09elszXStrK1N8MCx6WzNdPXpbNF0rZittfDAsels0XT16WzBdK3UreHwwLHpbMF09Rn0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKGU8PDh8ZT4+PjI0KXw0Mjc4MjU1MzYwJihlPDwyNHxlPj4+OCksdC5zaWdCeXRlcz00KihyLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBuPXRoaXMuX2hhc2gsbz1uLndvcmRzLHM9MDtzPDU7cysrKXt2YXIgYT1vW3NdO29bc109MTY3MTE5MzUmKGE8PDh8YT4+PjI0KXw0Mjc4MjU1MzYwJihhPDwyNHxhPj4+OCl9cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9Zi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO2MuUklQRU1EMTYwPWYuX2NyZWF0ZUhlbHBlcihCKSxjLkhtYWNSSVBFTUQxNjA9Zi5fY3JlYXRlSG1hY0hlbHBlcihCKX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1yLmVuYyxvPW4uVXRmOCxzPXIuYWxnbztzLkhNQUM9aS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxyKXt0PXRoaXMuX2hhc2hlcj1uZXcgdC5pbml0LFwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1vLnBhcnNlKHIpKTt2YXIgZT10LmJsb2NrU2l6ZSxpPTQqZTtyLnNpZ0J5dGVzPmkmJihyPXQuZmluYWxpemUocikpLHIuY2xhbXAoKTtmb3IodmFyIG49dGhpcy5fb0tleT1yLmNsb25lKCkscz10aGlzLl9pS2V5PXIuY2xvbmUoKSxhPW4ud29yZHMsYz1zLndvcmRzLGg9MDtoPGU7aCsrKWFbaF1ePTE1NDk1NTY4MjgsY1toXV49OTA5NTIyNDg2O24uc2lnQnl0ZXM9cy5zaWdCeXRlcz1pLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9oYXNoZXI7dC5yZXNldCgpLHQudXBkYXRlKHRoaXMuX2lLZXkpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2hhc2hlci51cGRhdGUodCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5faGFzaGVyLGU9ci5maW5hbGl6ZSh0KTtyLnJlc2V0KCk7dmFyIGk9ci5maW5hbGl6ZSh0aGlzLl9vS2V5LmNsb25lKCkuY29uY2F0KGUpKTtyZXR1cm4gaX19KX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5TSEExLGE9by5ITUFDLGM9by5QQktERjI9aS5leHRlbmQoe2NmZzppLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjpzLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpfSxjb21wdXRlOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuY2ZnLGk9YS5jcmVhdGUoZS5oYXNoZXIsdCksbz1uLmNyZWF0ZSgpLHM9bi5jcmVhdGUoWzFdKSxjPW8ud29yZHMsaD1zLndvcmRzLGw9ZS5rZXlTaXplLGY9ZS5pdGVyYXRpb25zO2MubGVuZ3RoPGw7KXt2YXIgdT1pLnVwZGF0ZShyKS5maW5hbGl6ZShzKTtpLnJlc2V0KCk7Zm9yKHZhciBkPXUud29yZHMsdj1kLmxlbmd0aCxwPXUsXz0xO188ZjtfKyspe3A9aS5maW5hbGl6ZShwKSxpLnJlc2V0KCk7Zm9yKHZhciB5PXAud29yZHMsZz0wO2c8djtnKyspZFtnXV49eVtnXX1vLmNvbmNhdCh1KSxoWzBdKyt9cmV0dXJuIG8uc2lnQnl0ZXM9NCpsLG99fSk7ci5QQktERjI9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBjLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLk1ENSxhPW8uRXZwS0RGPWkuZXh0ZW5kKHtjZmc6aS5leHRlbmQoe2tleVNpemU6NCxoYXNoZXI6cyxpdGVyYXRpb25zOjF9KSxpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZCh0KX0sY29tcHV0ZTpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLmNmZyxpPWUuaGFzaGVyLmNyZWF0ZSgpLG89bi5jcmVhdGUoKSxzPW8ud29yZHMsYT1lLmtleVNpemUsYz1lLml0ZXJhdGlvbnM7cy5sZW5ndGg8YTspe2gmJmkudXBkYXRlKGgpO3ZhciBoPWkudXBkYXRlKHQpLmZpbmFsaXplKHIpO2kucmVzZXQoKTtmb3IodmFyIGw9MTtsPGM7bCsrKWg9aS5maW5hbGl6ZShoKSxpLnJlc2V0KCk7by5jb25jYXQoaCl9cmV0dXJuIG8uc2lnQnl0ZXM9NCphLG99fSk7ci5FdnBLREY9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBhLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1yLmFsZ28sbz1uLlNIQTI1NixzPW4uU0hBMjI0PW8uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGkuaW5pdChbMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF0pfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PW8uX2RvRmluYWxpemUuY2FsbCh0aGlzKTtyZXR1cm4gdC5zaWdCeXRlcy09NCx0fX0pO3IuU0hBMjI0PW8uX2NyZWF0ZUhlbHBlcihzKSxyLkhtYWNTSEEyMjQ9by5fY3JlYXRlSG1hY0hlbHBlcihzKX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLkJhc2Usbz1pLldvcmRBcnJheSxzPWUueDY0PXt9O3MuV29yZD1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LHIpe3RoaXMuaGlnaD10LHRoaXMubG93PXJ9fSkscy5Xb3JkQXJyYXk9bi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMud29yZHM9dHx8W10sZSE9cj90aGlzLnNpZ0J5dGVzPWU6dGhpcy5zaWdCeXRlcz04KnQubGVuZ3RofSx0b1gzMjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLndvcmRzLHI9dC5sZW5ndGgsZT1bXSxpPTA7aTxyO2krKyl7dmFyIG49dFtpXTtlLnB1c2gobi5oaWdoKSxlLnB1c2gobi5sb3cpfXJldHVybiBvLmNyZWF0ZShlLHRoaXMuc2lnQnl0ZXMpfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1uLmNsb25lLmNhbGwodGhpcykscj10LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksZT1yLmxlbmd0aCxpPTA7aTxlO2krKylyW2ldPXJbaV0uY2xvbmUoKTtyZXR1cm4gdH19KX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWkuSGFzaGVyLHM9ZS54NjQsYT1zLldvcmQsYz1lLmFsZ28saD1bXSxsPVtdLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTEscj0wLGU9MDtlPDI0O2UrKyl7aFt0KzUqcl09KGUrMSkqKGUrMikvMiU2NDt2YXIgaT1yJTUsbj0oMip0KzMqciklNTt0PWkscj1ufWZvcih2YXIgdD0wO3Q8NTt0KyspZm9yKHZhciByPTA7cjw1O3IrKylsW3QrNSpyXT1yKygyKnQrMypyKSU1KjU7Zm9yKHZhciBvPTEscz0wO3M8MjQ7cysrKXtmb3IodmFyIGM9MCx1PTAsZD0wO2Q8NztkKyspe2lmKDEmbyl7dmFyIHY9KDE8PGQpLTE7djwzMj91Xj0xPDx2OmNePTE8PHYtMzJ9MTI4Jm8/bz1vPDwxXjExMzpvPDw9MX1mW3NdPWEuY3JlYXRlKGMsdSl9fSgpO3ZhciB1PVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8MjU7dCsrKXVbdF09YS5jcmVhdGUoKX0oKTt2YXIgZD1jLlNIQTM9by5leHRlbmQoe2NmZzpvLmNmZy5leHRlbmQoe291dHB1dExlbmd0aDo1MTJ9KSxfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9zdGF0ZT1bXSxyPTA7cjwyNTtyKyspdFtyXT1uZXcgYS5pbml0O3RoaXMuYmxvY2tTaXplPSgxNjAwLTIqdGhpcy5jZmcub3V0cHV0TGVuZ3RoKS8zMn0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX3N0YXRlLGk9dGhpcy5ibG9ja1NpemUvMixuPTA7bjxpO24rKyl7dmFyIG89dFtyKzIqbl0scz10W3IrMipuKzFdO289MTY3MTE5MzUmKG88PDh8bz4+PjI0KXw0Mjc4MjU1MzYwJihvPDwyNHxvPj4+OCkscz0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KTt2YXIgYT1lW25dO2EuaGlnaF49cyxhLmxvd149b31mb3IodmFyIGM9MDtjPDI0O2MrKyl7Zm9yKHZhciBkPTA7ZDw1O2QrKyl7Zm9yKHZhciB2PTAscD0wLF89MDtfPDU7XysrKXt2YXIgYT1lW2QrNSpfXTt2Xj1hLmhpZ2gscF49YS5sb3d9dmFyIHk9dVtkXTt5LmhpZ2g9dix5Lmxvdz1wfWZvcih2YXIgZD0wO2Q8NTtkKyspZm9yKHZhciBnPXVbKGQrNCklNV0sQj11WyhkKzEpJTVdLHc9Qi5oaWdoLGs9Qi5sb3csdj1nLmhpZ2heKHc8PDF8az4+PjMxKSxwPWcubG93XihrPDwxfHc+Pj4zMSksXz0wO188NTtfKyspe3ZhciBhPWVbZCs1Kl9dO2EuaGlnaF49dixhLmxvd149cH1mb3IodmFyIFM9MTtTPDI1O1MrKyl7dmFyIGE9ZVtTXSxtPWEuaGlnaCx4PWEubG93LGI9aFtTXTtpZihiPDMyKXZhciB2PW08PGJ8eD4+PjMyLWIscD14PDxifG0+Pj4zMi1iO2Vsc2UgdmFyIHY9eDw8Yi0zMnxtPj4+NjQtYixwPW08PGItMzJ8eD4+PjY0LWI7dmFyIEg9dVtsW1NdXTtILmhpZ2g9dixILmxvdz1wfXZhciB6PXVbMF0sQT1lWzBdO3ouaGlnaD1BLmhpZ2gsei5sb3c9QS5sb3c7Zm9yKHZhciBkPTA7ZDw1O2QrKylmb3IodmFyIF89MDtfPDU7XysrKXt2YXIgUz1kKzUqXyxhPWVbU10sQz11W1NdLEQ9dVsoZCsxKSU1KzUqX10sUj11WyhkKzIpJTUrNSpfXTthLmhpZ2g9Qy5oaWdoXn5ELmhpZ2gmUi5oaWdoLGEubG93PUMubG93Xn5ELmxvdyZSLmxvd312YXIgYT1lWzBdLEU9ZltjXTthLmhpZ2hePUUuaGlnaCxhLmxvd149RS5sb3d9fSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9KDgqdGhpcy5fbkRhdGFCeXRlcyw4KnQuc2lnQnl0ZXMpLG89MzIqdGhpcy5ibG9ja1NpemU7ZVtpPj4+NV18PTE8PDI0LWklMzIsZVsoci5jZWlsKChpKzEpL28pKm8+Pj41KS0xXXw9MTI4LHQuc2lnQnl0ZXM9NCplLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBzPXRoaXMuX3N0YXRlLGE9dGhpcy5jZmcub3V0cHV0TGVuZ3RoLzgsYz1hLzgsaD1bXSxsPTA7bDxjO2wrKyl7dmFyIGY9c1tsXSx1PWYuaGlnaCxkPWYubG93O3U9MTY3MTE5MzUmKHU8PDh8dT4+PjI0KXw0Mjc4MjU1MzYwJih1PDwyNHx1Pj4+OCksZD0xNjcxMTkzNSYoZDw8OHxkPj4+MjQpfDQyNzgyNTUzNjAmKGQ8PDI0fGQ+Pj44KSxoLnB1c2goZCksaC5wdXNoKHUpfXJldHVybiBuZXcgbi5pbml0KGgsYSl9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKSxyPXQuX3N0YXRlPXRoaXMuX3N0YXRlLnNsaWNlKDApLGU9MDtlPDI1O2UrKylyW2VdPXJbZV0uY2xvbmUoKTtyZXR1cm4gdH19KTtlLlNIQTM9by5fY3JlYXRlSGVscGVyKGQpLGUuSG1hY1NIQTM9by5fY3JlYXRlSG1hY0hlbHBlcihkKX0oTWF0aCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7cmV0dXJuIHMuY3JlYXRlLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgZT10LGk9ZS5saWIsbj1pLkhhc2hlcixvPWUueDY0LHM9by5Xb3JkLGE9by5Xb3JkQXJyYXksYz1lLmFsZ28saD1bcigxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLHIoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLHIoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxyKDM5MjEwMDk1NzMsMjE3MzI5NTU0OCkscig5NjE5ODcxNjMsNDA4MTYyODQ3MikscigxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLHIoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxyKDI4NzA3NjMyMjEsMzY2NDYwOTU2MCkscigzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLHIoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLHIoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLHIoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxyKDE5MjUwNzgzODgsNDA2ODE4MjM4MykscigyMTYyMDc4MjA2LDk5MTMzNjExMykscigyNjE0ODg4MTAzLDYzMzgwMzMxNykscigzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLHIoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxyKDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxyKDI2NDM0NzA3OCwyMzQxMjYyNzczKSxyKDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxyKDc3MDI1NTk4MywxNDk1OTkwOTAxKSxyKDEyNDkxNTAxMjIsMTg1NjQzMTIzNSkscigxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLHIoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxyKDI1NTQyMjA4ODIsMzk5OTcxOTMzOSkscigyODIxODM0MzQ5LDc2Njc4NDAxNikscigyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLHIoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxyKDMzMzY1NzE4OTEsMTAzNDQ1NzAyNikscigzNTg0NTI4NzExLDI0NjY5NDg5MDEpLHIoMTEzOTI2OTkzLDM3NTgzMjYzODMpLHIoMzM4MjQxODk1LDE2ODcxNzkzNikscig2NjYzMDcyMDUsMTE4ODE3OTk2NCkscig3NzM1Mjk5MTIsMTU0NjA0NTczNCkscigxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLHIoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxyKDE2OTUxODM3MDAsMjM0MzUyNzM5MCkscigxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLHIoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxyKDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxyKDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCkscigyODIwMzAyNDExLDMxNTg0NTQyNzMpLHIoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxyKDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxyKDM1MTYwNjU4MTcsMzYwNjAwODM0NCkscigzNjAwMzUyODA0LDE0MzI3MjU3NzYpLHIoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxyKDI3NTQyMzM0NCw4NTExNjk3MjApLHIoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLHIoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLHIoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLHIoODgzOTk3ODc3LDM3ODUwNTAyODApLHIoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLHIoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxyKDE1MzcwMDIwNjMsMjAwMzAzNDk5NSkscigxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLHIoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxyKDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCkscigyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLHIoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLHIoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLHIoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxyKDMyMDQwMzE0NzksMjk5OTM1MTU3MykscigzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLHIoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxyKDM1MTUyNjcyNzEsNTY2MjgwNzExKSxyKDM5NDAxODc2MDYsMzQ1NDA2OTUzNCkscig0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLHIoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLHIoMTc0MjkyNDIxLDI3MzEwNTUyNzApLHIoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLHIoNDYwMzkzMjY5LDMyMDYyMDMxNSkscig2ODU0NzE3MzMsNTg3NDk2ODM2KSxyKDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxyKDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxyKDExMjYwMDA1ODAsMjYxODI5NzY3NikscigxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLHIoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxyKDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxyKDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldLGw9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw4MDt0KyspbFt0XT1yKCl9KCk7dmFyIGY9Yy5TSEE1MTI9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYS5pbml0KFtuZXcgcy5pbml0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCksbmV3IHMuaW5pdCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpLG5ldyBzLmluaXQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKSxuZXcgcy5pbml0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSksbmV3IHMuaW5pdCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpLG5ldyBzLmluaXQoMjYwMDgyMjkyNCw3MjU1MTExOTkpLG5ldyBzLmluaXQoNTI4NzM0NjM1LDQyMTUzODk1NDcpLG5ldyBzLmluaXQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLHM9ZVszXSxhPWVbNF0sYz1lWzVdLGY9ZVs2XSx1PWVbN10sZD1pLmhpZ2gsdj1pLmxvdyxwPW4uaGlnaCxfPW4ubG93LHk9by5oaWdoLGc9by5sb3csQj1zLmhpZ2gsdz1zLmxvdyxrPWEuaGlnaCxTPWEubG93LG09Yy5oaWdoLHg9Yy5sb3csYj1mLmhpZ2gsSD1mLmxvdyx6PXUuaGlnaCxBPXUubG93LEM9ZCxEPXYsUj1wLEU9XyxNPXksRj1nLFA9QixXPXcsTz1rLFU9UyxJPW0sSz14LFg9YixMPUgsaj16LE49QSxUPTA7VDw4MDtUKyspe3ZhciBaPWxbVF07aWYoVDwxNil2YXIgcT1aLmhpZ2g9MHx0W3IrMipUXSxHPVoubG93PTB8dFtyKzIqVCsxXTtlbHNle3ZhciBKPWxbVC0xNV0sJD1KLmhpZ2gsUT1KLmxvdyxWPSgkPj4+MXxRPDwzMSleKCQ+Pj44fFE8PDI0KV4kPj4+NyxZPShRPj4+MXwkPDwzMSleKFE+Pj44fCQ8PDI0KV4oUT4+Pjd8JDw8MjUpLHR0PWxbVC0yXSxydD10dC5oaWdoLGV0PXR0LmxvdyxpdD0ocnQ+Pj4xOXxldDw8MTMpXihydDw8M3xldD4+PjI5KV5ydD4+PjYsbnQ9KGV0Pj4+MTl8cnQ8PDEzKV4oZXQ8PDN8cnQ+Pj4yOSleKGV0Pj4+NnxydDw8MjYpLG90PWxbVC03XSxzdD1vdC5oaWdoLGF0PW90LmxvdyxjdD1sW1QtMTZdLGh0PWN0LmhpZ2gsbHQ9Y3QubG93LEc9WSthdCxxPVYrc3QrKEc+Pj4wPFk+Pj4wPzE6MCksRz1HK250LHE9cStpdCsoRz4+PjA8bnQ+Pj4wPzE6MCksRz1HK2x0LHE9cStodCsoRz4+PjA8bHQ+Pj4wPzE6MCk7Wi5oaWdoPXEsWi5sb3c9R312YXIgZnQ9TyZJXn5PJlgsdXQ9VSZLXn5VJkwsZHQ9QyZSXkMmTV5SJk0sdnQ9RCZFXkQmRl5FJkYscHQ9KEM+Pj4yOHxEPDw0KV4oQzw8MzB8RD4+PjIpXihDPDwyNXxEPj4+NyksX3Q9KEQ+Pj4yOHxDPDw0KV4oRDw8MzB8Qz4+PjIpXihEPDwyNXxDPj4+NykseXQ9KE8+Pj4xNHxVPDwxOCleKE8+Pj4xOHxVPDwxNCleKE88PDIzfFU+Pj45KSxndD0oVT4+PjE0fE88PDE4KV4oVT4+PjE4fE88PDE0KV4oVTw8MjN8Tz4+PjkpLEJ0PWhbVF0sd3Q9QnQuaGlnaCxrdD1CdC5sb3csU3Q9TitndCxtdD1qK3l0KyhTdD4+PjA8Tj4+PjA/MTowKSxTdD1TdCt1dCxtdD1tdCtmdCsoU3Q+Pj4wPHV0Pj4+MD8xOjApLFN0PVN0K2t0LG10PW10K3d0KyhTdD4+PjA8a3Q+Pj4wPzE6MCksU3Q9U3QrRyxtdD1tdCtxKyhTdD4+PjA8Rz4+PjA/MTowKSx4dD1fdCt2dCxidD1wdCtkdCsoeHQ+Pj4wPF90Pj4+MD8xOjApO2o9WCxOPUwsWD1JLEw9SyxJPU8sSz1VLFU9VytTdHwwLE89UCttdCsoVT4+PjA8Vz4+PjA/MTowKXwwLFA9TSxXPUYsTT1SLEY9RSxSPUMsRT1ELEQ9U3QreHR8MCxDPW10K2J0KyhEPj4+MDxTdD4+PjA/MTowKXwwfXY9aS5sb3c9ditELGkuaGlnaD1kK0MrKHY+Pj4wPEQ+Pj4wPzE6MCksXz1uLmxvdz1fK0Usbi5oaWdoPXArUisoXz4+PjA8RT4+PjA/MTowKSxnPW8ubG93PWcrRixvLmhpZ2g9eStNKyhnPj4+MDxGPj4+MD8xOjApLHc9cy5sb3c9dytXLHMuaGlnaD1CK1ArKHc+Pj4wPFc+Pj4wPzE6MCksUz1hLmxvdz1TK1UsYS5oaWdoPWsrTysoUz4+PjA8VT4+PjA/MTowKSx4PWMubG93PXgrSyxjLmhpZ2g9bStJKyh4Pj4+MDxLPj4+MD8xOjApLEg9Zi5sb3c9SCtMLGYuaGlnaD1iK1grKEg+Pj4wPEw+Pj4wPzE6MCksQT11Lmxvdz1BK04sdS5oaWdoPXoraisoQT4+PjA8Tj4+PjA/MTowKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrMTI4Pj4+MTA8PDUpKzMwXT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSsxMjg+Pj4xMDw8NSkrMzFdPWUsdC5zaWdCeXRlcz00KnIubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKTt2YXIgbj10aGlzLl9oYXNoLnRvWDMyKCk7cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9bi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fSxibG9ja1NpemU6MzJ9KTtlLlNIQTUxMj1uLl9jcmVhdGVIZWxwZXIoZiksZS5IbWFjU0hBNTEyPW4uX2NyZWF0ZUhtYWNIZWxwZXIoZil9KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci54NjQsaT1lLldvcmQsbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uU0hBNTEyLGE9by5TSEEzODQ9cy5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KFtuZXcgaS5pbml0KDM0MTgwNzAzNjUsMzIzODM3MTAzMiksbmV3IGkuaW5pdCgxNjU0MjcwMjUwLDkxNDE1MDY2MyksbmV3IGkuaW5pdCgyNDM4NTI5MzcwLDgxMjcwMjk5OSksbmV3IGkuaW5pdCgzNTU0NjIzNjAsNDE0NDkxMjY5NyksbmV3IGkuaW5pdCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpLG5ldyBpLmluaXQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KSxuZXcgaS5pbml0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSksbmV3IGkuaW5pdCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpXSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9cy5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO3JldHVybiB0LnNpZ0J5dGVzLT0xNix0fX0pO3IuU0hBMzg0PXMuX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEEzODQ9cy5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSx0LmxpYi5DaXBoZXJ8fGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQmFzZSxvPWkuV29yZEFycmF5LHM9aS5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtLGE9ZS5lbmMsYz0oYS5VdGY4LGEuQmFzZTY0KSxoPWUuYWxnbyxsPWguRXZwS0RGLGY9aS5DaXBoZXI9cy5leHRlbmQoe2NmZzpuLmV4dGVuZCgpLGNyZWF0ZUVuY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9FTkNfWEZPUk1fTU9ERSx0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5fREVDX1hGT1JNX01PREUsdCxyKX0saW5pdDpmdW5jdGlvbih0LHIsZSl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKGUpLHRoaXMuX3hmb3JtTW9kZT10LHRoaXMuX2tleT1yLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtzLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSxwcm9jZXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBlbmQodCksdGhpcy5fcHJvY2VzcygpfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLl9hcHBlbmQodCk7dmFyIHI9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiByfSxrZXlTaXplOjQsaXZTaXplOjQsX0VOQ19YRk9STV9NT0RFOjEsX0RFQ19YRk9STV9NT0RFOjIsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/bTp3fXJldHVybiBmdW5jdGlvbihyKXtyZXR1cm57ZW5jcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZW5jcnlwdChyLGUsaSxuKX0sZGVjcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZGVjcnlwdChyLGUsaSxuKX19fX0oKX0pLHU9KGkuU3RyZWFtQ2lwaGVyPWYuZXh0ZW5kKHtfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Byb2Nlc3MoITApO3JldHVybiB0fSxibG9ja1NpemU6MX0pLGUubW9kZT17fSksZD1pLkJsb2NrQ2lwaGVyTW9kZT1uLmV4dGVuZCh7Y3JlYXRlRW5jcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuRW5jcnlwdG9yLmNyZWF0ZSh0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5EZWNyeXB0b3IuY3JlYXRlKHQscil9LGluaXQ6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXI9dCx0aGlzLl9pdj1yfX0pLHY9dS5DQkM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxpKXt2YXIgbj10aGlzLl9pdjtpZihuKXt2YXIgbz1uO3RoaXMuX2l2PXJ9ZWxzZSB2YXIgbz10aGlzLl9wcmV2QmxvY2s7Zm9yKHZhciBzPTA7czxpO3MrKyl0W2Urc11ePW9bc119dmFyIGU9ZC5leHRlbmQoKTtyZXR1cm4gZS5FbmNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihyLGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplO3QuY2FsbCh0aGlzLHIsZSxuKSxpLmVuY3J5cHRCbG9jayhyLGUpLHRoaXMuX3ByZXZCbG9jaz1yLnNsaWNlKGUsZStuKX19KSxlLkRlY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHIsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemUsbz1yLnNsaWNlKGUsZStuKTtpLmRlY3J5cHRCbG9jayhyLGUpLHQuY2FsbCh0aGlzLHIsZSxuKSx0aGlzLl9wcmV2QmxvY2s9b319KSxlfSgpLHA9ZS5wYWQ9e30sXz1wLlBrY3M3PXtwYWQ6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9NCpyLGk9ZS10LnNpZ0J5dGVzJWUsbj1pPDwyNHxpPDwxNnxpPDw4fGkscz1bXSxhPTA7YTxpO2ErPTQpcy5wdXNoKG4pO3ZhciBjPW8uY3JlYXRlKHMsaSk7dC5jb25jYXQoYyl9LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx5PShpLkJsb2NrQ2lwaGVyPWYuZXh0ZW5kKHtjZmc6Zi5jZmcuZXh0ZW5kKHttb2RlOnYscGFkZGluZzpffSkscmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyk7dmFyIHQ9dGhpcy5jZmcscj10Lml2LGU9dC5tb2RlO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpdmFyIGk9ZS5jcmVhdGVFbmNyeXB0b3I7ZWxzZXt2YXIgaT1lLmNyZWF0ZURlY3J5cHRvcjt0aGlzLl9taW5CdWZmZXJTaXplPTF9dGhpcy5fbW9kZSYmdGhpcy5fbW9kZS5fX2NyZWF0b3I9PWk/dGhpcy5fbW9kZS5pbml0KHRoaXMsciYmci53b3Jkcyk6KHRoaXMuX21vZGU9aS5jYWxsKGUsdGhpcyxyJiZyLndvcmRzKSx0aGlzLl9tb2RlLl9fY3JlYXRvcj1pKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fbW9kZS5wcm9jZXNzQmxvY2sodCxyKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNmZy5wYWRkaW5nO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpe3QucGFkKHRoaXMuX2RhdGEsdGhpcy5ibG9ja1NpemUpO3ZhciByPXRoaXMuX3Byb2Nlc3MoITApfWVsc2V7dmFyIHI9dGhpcy5fcHJvY2VzcyghMCk7dC51bnBhZChyKX1yZXR1cm4gcn0sYmxvY2tTaXplOjR9KSxpLkNpcGhlclBhcmFtcz1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLm1peEluKHQpfSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4odHx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19KSksZz1lLmZvcm1hdD17fSxCPWcuT3BlblNTTD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciByPXQuY2lwaGVydGV4dCxlPXQuc2FsdDtpZihlKXZhciBpPW8uY3JlYXRlKFsxMzk4ODkzNjg0LDE3MDEwNzY4MzFdKS5jb25jYXQoZSkuY29uY2F0KHIpO2Vsc2UgdmFyIGk9cjtyZXR1cm4gaS50b1N0cmluZyhjKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9Yy5wYXJzZSh0KSxlPXIud29yZHM7aWYoMTM5ODg5MzY4ND09ZVswXSYmMTcwMTA3NjgzMT09ZVsxXSl7dmFyIGk9by5jcmVhdGUoZS5zbGljZSgyLDQpKTtlLnNwbGljZSgwLDQpLHIuc2lnQnl0ZXMtPTE2fXJldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDpyLHNhbHQ6aX0pfX0sdz1pLlNlcmlhbGl6YWJsZUNpcGhlcj1uLmV4dGVuZCh7Y2ZnOm4uZXh0ZW5kKHtmb3JtYXQ6Qn0pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49dC5jcmVhdGVFbmNyeXB0b3IoZSxpKSxvPW4uZmluYWxpemUocikscz1uLmNmZztyZXR1cm4geS5jcmVhdGUoe2NpcGhlcnRleHQ6byxrZXk6ZSxpdjpzLml2LGFsZ29yaXRobTp0LG1vZGU6cy5tb2RlLHBhZGRpbmc6cy5wYWRkaW5nLGJsb2NrU2l6ZTp0LmJsb2NrU2l6ZSxmb3JtYXR0ZXI6aS5mb3JtYXR9KX0sZGVjcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKSxyPXRoaXMuX3BhcnNlKHIsaS5mb3JtYXQpO3ZhciBuPXQuY3JlYXRlRGVjcnlwdG9yKGUsaSkuZmluYWxpemUoci5jaXBoZXJ0ZXh0KTtyZXR1cm4gbn0sX3BhcnNlOmZ1bmN0aW9uKHQscil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/ci5wYXJzZSh0LHRoaXMpOnR9fSksaz1lLmtkZj17fSxTPWsuT3BlblNTTD17ZXhlY3V0ZTpmdW5jdGlvbih0LHIsZSxpKXtpfHwoaT1vLnJhbmRvbSg4KSk7dmFyIG49bC5jcmVhdGUoe2tleVNpemU6citlfSkuY29tcHV0ZSh0LGkpLHM9by5jcmVhdGUobi53b3Jkcy5zbGljZShyKSw0KmUpO3JldHVybiBuLnNpZ0J5dGVzPTQqcix5LmNyZWF0ZSh7a2V5Om4saXY6cyxzYWx0Oml9KX19LG09aS5QYXNzd29yZEJhc2VkQ2lwaGVyPXcuZXh0ZW5kKHtjZmc6dy5jZmcuZXh0ZW5kKHtrZGY6U30pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49aS5rZGYuZXhlY3V0ZShlLHQua2V5U2l6ZSx0Lml2U2l6ZSk7aS5pdj1uLml2O3ZhciBvPXcuZW5jcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvLm1peEluKG4pLG99LGRlY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSkscj10aGlzLl9wYXJzZShyLGkuZm9ybWF0KTt2YXIgbj1pLmtkZi5leGVjdXRlKGUsdC5rZXlTaXplLHQuaXZTaXplLHIuc2FsdCk7aS5pdj1uLml2O3ZhciBvPXcuZGVjcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvfX0pfSgpLHQubW9kZS5DRkI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscixlLGkpe3ZhciBuPXRoaXMuX2l2O2lmKG4pe3ZhciBvPW4uc2xpY2UoMCk7dGhpcy5faXY9dm9pZCAwfWVsc2UgdmFyIG89dGhpcy5fcHJldkJsb2NrO2kuZW5jcnlwdEJsb2NrKG8sMCk7Zm9yKHZhciBzPTA7czxlO3MrKyl0W3Irc11ePW9bc119dmFyIGU9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO3JldHVybiBlLkVuY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemU7ci5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fcHJldkJsb2NrPXQuc2xpY2UoZSxlK24pfX0pLGUuRGVjcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZSxvPXQuc2xpY2UoZSxlK24pO3IuY2FsbCh0aGlzLHQsZSxuLGkpLHRoaXMuX3ByZXZCbG9jaz1vfX0pLGV9KCksdC5tb2RlLkVDQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtyZXR1cm4gci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodCxyKX19KSxyLkRlY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyLmRlY3J5cHRCbG9jayh0LHIpfX0pLHJ9KCksdC5wYWQuQW5zaVg5MjM9e3BhZDpmdW5jdGlvbih0LHIpe3ZhciBlPXQuc2lnQnl0ZXMsaT00KnIsbj1pLWUlaSxvPWUrbi0xO3QuY2xhbXAoKSx0LndvcmRzW28+Pj4yXXw9bjw8MjQtbyU0KjgsdC5zaWdCeXRlcys9bn0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHQucGFkLklzbzEwMTI2PXtwYWQ6ZnVuY3Rpb24ocixlKXt2YXIgaT00KmUsbj1pLXIuc2lnQnl0ZXMlaTtyLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKG4tMSkpLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFtuPDwyNF0sMSkpfSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0sdC5wYWQuSXNvOTc5NzE9e3BhZDpmdW5jdGlvbihyLGUpe3IuY29uY2F0KHQubGliLldvcmRBcnJheS5jcmVhdGUoWzIxNDc0ODM2NDhdLDEpKSx0LnBhZC5aZXJvUGFkZGluZy5wYWQocixlKX0sdW5wYWQ6ZnVuY3Rpb24ocil7dC5wYWQuWmVyb1BhZGRpbmcudW5wYWQociksci5zaWdCeXRlcy0tfX0sdC5tb2RlLk9GQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKSxlPXIuRW5jcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9jaXBoZXIsaT1lLmJsb2NrU2l6ZSxuPXRoaXMuX2l2LG89dGhpcy5fa2V5c3RyZWFtO24mJihvPXRoaXMuX2tleXN0cmVhbT1uLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCksZS5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIHM9MDtzPGk7cysrKXRbcitzXV49b1tzXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLHQucGFkLk5vUGFkZGluZz17cGFkOmZ1bmN0aW9uKCl7fSx1bnBhZDpmdW5jdGlvbigpe319LGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQ2lwaGVyUGFyYW1zLG89ZS5lbmMscz1vLkhleCxhPWUuZm9ybWF0O2EuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2lwaGVydGV4dC50b1N0cmluZyhzKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9cy5wYXJzZSh0KTtyZXR1cm4gbi5jcmVhdGUoe2NpcGhlcnRleHQ6cn0pfX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJsb2NrQ2lwaGVyLG49ci5hbGdvLG89W10scz1bXSxhPVtdLGM9W10saD1bXSxsPVtdLGY9W10sdT1bXSxkPVtdLHY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLHI9MDtyPDI1NjtyKyspcjwxMjg/dFtyXT1yPDwxOnRbcl09cjw8MV4yODM7Zm9yKHZhciBlPTAsaT0wLHI9MDtyPDI1NjtyKyspe3ZhciBuPWleaTw8MV5pPDwyXmk8PDNeaTw8NDtuPW4+Pj44XjI1NSZuXjk5LG9bZV09bixzW25dPWU7dmFyIHA9dFtlXSxfPXRbcF0seT10W19dLGc9MjU3KnRbbl1eMTY4NDMwMDgqbjthW2VdPWc8PDI0fGc+Pj44LGNbZV09Zzw8MTZ8Zz4+PjE2LGhbZV09Zzw8OHxnPj4+MjQsbFtlXT1nO3ZhciBnPTE2ODQzMDA5KnleNjU1MzcqX14yNTcqcF4xNjg0MzAwOCplO2Zbbl09Zzw8MjR8Zz4+PjgsdVtuXT1nPDwxNnxnPj4+MTYsZFtuXT1nPDw4fGc+Pj4yNCx2W25dPWcsZT8oZT1wXnRbdFt0W3lecF1dXSxpXj10W3RbaV1dKTplPWk9MX19KCk7dmFyIHA9WzAsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTRdLF89bi5BRVM9aS5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX25Sb3VuZHN8fHRoaXMuX2tleVByaW9yUmVzZXQhPT10aGlzLl9rZXkpe2Zvcih2YXIgdD10aGlzLl9rZXlQcmlvclJlc2V0PXRoaXMuX2tleSxyPXQud29yZHMsZT10LnNpZ0J5dGVzLzQsaT10aGlzLl9uUm91bmRzPWUrNixuPTQqKGkrMSkscz10aGlzLl9rZXlTY2hlZHVsZT1bXSxhPTA7YTxuO2ErKylpZihhPGUpc1thXT1yW2FdO2Vsc2V7dmFyIGM9c1thLTFdO2ElZT9lPjYmJmElZT09NCYmKGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10pOihjPWM8PDh8Yz4+PjI0LGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10sY149cFthL2V8MF08PDI0KSxzW2FdPXNbYS1lXV5jfWZvcih2YXIgaD10aGlzLl9pbnZLZXlTY2hlZHVsZT1bXSxsPTA7bDxuO2wrKyl7dmFyIGE9bi1sO2lmKGwlNCl2YXIgYz1zW2FdO2Vsc2UgdmFyIGM9c1thLTRdO2w8NHx8YTw9ND9oW2xdPWM6aFtsXT1mW29bYz4+PjI0XV1edVtvW2M+Pj4xNiYyNTVdXV5kW29bYz4+PjgmMjU1XV1edltvWzI1NSZjXV19fX0sZW5jcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9rZXlTY2hlZHVsZSxhLGMsaCxsLG8pfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10W3IrMV07dFtyKzFdPXRbciszXSx0W3IrM109ZSx0aGlzLl9kb0NyeXB0QmxvY2sodCxyLHRoaXMuX2ludktleVNjaGVkdWxlLGYsdSxkLHYscyk7dmFyIGU9dFtyKzFdO3RbcisxXT10W3IrM10sdFtyKzNdPWV9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxyLGUsaSxuLG8scyxhKXtmb3IodmFyIGM9dGhpcy5fblJvdW5kcyxoPXRbcl1eZVswXSxsPXRbcisxXV5lWzFdLGY9dFtyKzJdXmVbMl0sdT10W3IrM11eZVszXSxkPTQsdj0xO3Y8Yzt2Kyspe3ZhciBwPWlbaD4+PjI0XV5uW2w+Pj4xNiYyNTVdXm9bZj4+PjgmMjU1XV5zWzI1NSZ1XV5lW2QrK10sXz1pW2w+Pj4yNF1ebltmPj4+MTYmMjU1XV5vW3U+Pj44JjI1NV1ec1syNTUmaF1eZVtkKytdLHk9aVtmPj4+MjRdXm5bdT4+PjE2JjI1NV1eb1toPj4+OCYyNTVdXnNbMjU1JmxdXmVbZCsrXSxnPWlbdT4+PjI0XV5uW2g+Pj4xNiYyNTVdXm9bbD4+PjgmMjU1XV5zWzI1NSZmXV5lW2QrK107aD1wLGw9XyxmPXksdT1nfXZhciBwPShhW2g+Pj4yNF08PDI0fGFbbD4+PjE2JjI1NV08PDE2fGFbZj4+PjgmMjU1XTw8OHxhWzI1NSZ1XSleZVtkKytdLF89KGFbbD4+PjI0XTw8MjR8YVtmPj4+MTYmMjU1XTw8MTZ8YVt1Pj4+OCYyNTVdPDw4fGFbMjU1JmhdKV5lW2QrK10seT0oYVtmPj4+MjRdPDwyNHxhW3U+Pj4xNiYyNTVdPDwxNnxhW2g+Pj44JjI1NV08PDh8YVsyNTUmbF0pXmVbZCsrXSxnPShhW3U+Pj4yNF08PDI0fGFbaD4+PjE2JjI1NV08PDE2fGFbbD4+PjgmMjU1XTw8OHxhWzI1NSZmXSleZVtkKytdO3Rbcl09cCx0W3IrMV09Xyx0W3IrMl09eSx0W3IrM109Z30sa2V5U2l6ZTo4fSk7ci5BRVM9aS5fY3JlYXRlSGVscGVyKF8pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIpe3ZhciBlPSh0aGlzLl9sQmxvY2s+Pj50XnRoaXMuX3JCbG9jaykmcjt0aGlzLl9yQmxvY2tePWUsdGhpcy5fbEJsb2NrXj1lPDx0fWZ1bmN0aW9uIGUodCxyKXt2YXIgZT0odGhpcy5fckJsb2NrPj4+dF50aGlzLl9sQmxvY2spJnI7dGhpcy5fbEJsb2NrXj1lLHRoaXMuX3JCbG9ja149ZTw8dDtcclxufXZhciBpPXQsbj1pLmxpYixvPW4uV29yZEFycmF5LHM9bi5CbG9ja0NpcGhlcixhPWkuYWxnbyxjPVs1Nyw0OSw0MSwzMywyNSwxNyw5LDEsNTgsNTAsNDIsMzQsMjYsMTgsMTAsMiw1OSw1MSw0MywzNSwyNywxOSwxMSwzLDYwLDUyLDQ0LDM2LDYzLDU1LDQ3LDM5LDMxLDIzLDE1LDcsNjIsNTQsNDYsMzgsMzAsMjIsMTQsNiw2MSw1Myw0NSwzNywyOSwyMSwxMyw1LDI4LDIwLDEyLDRdLGg9WzE0LDE3LDExLDI0LDEsNSwzLDI4LDE1LDYsMjEsMTAsMjMsMTksMTIsNCwyNiw4LDE2LDcsMjcsMjAsMTMsMiw0MSw1MiwzMSwzNyw0Nyw1NSwzMCw0MCw1MSw0NSwzMyw0OCw0NCw0OSwzOSw1NiwzNCw1Myw0Niw0Miw1MCwzNiwyOSwzMl0sbD1bMSwyLDQsNiw4LDEwLDEyLDE0LDE1LDE3LDE5LDIxLDIzLDI1LDI3LDI4XSxmPVt7MDo4NDIxODg4LDI2ODQzNTQ1NjozMjc2OCw1MzY4NzA5MTI6ODQyMTM3OCw4MDUzMDYzNjg6MiwxMDczNzQxODI0OjUxMiwxMzQyMTc3MjgwOjg0MjE4OTAsMTYxMDYxMjczNjo4Mzg5MTIyLDE4NzkwNDgxOTI6ODM4ODYwOCwyMTQ3NDgzNjQ4OjUxNCwyNDE1OTE5MTA0OjgzODkxMjAsMjY4NDM1NDU2MDozMzI4MCwyOTUyNzkwMDE2Ojg0MjEzNzYsMzIyMTIyNTQ3MjozMjc3MCwzNDg5NjYwOTI4OjgzODg2MTAsMzc1ODA5NjM4NDowLDQwMjY1MzE4NDA6MzMyODIsMTM0MjE3NzI4OjAsNDAyNjUzMTg0Ojg0MjE4OTAsNjcxMDg4NjQwOjMzMjgyLDkzOTUyNDA5NjozMjc2OCwxMjA3OTU5NTUyOjg0MjE4ODgsMTQ3NjM5NTAwODo1MTIsMTc0NDgzMDQ2NDo4NDIxMzc4LDIwMTMyNjU5MjA6MiwyMjgxNzAxMzc2OjgzODkxMjAsMjU1MDEzNjgzMjozMzI4MCwyODE4NTcyMjg4Ojg0MjEzNzYsMzA4NzAwNzc0NDo4Mzg5MTIyLDMzNTU0NDMyMDA6ODM4ODYxMCwzNjIzODc4NjU2OjMyNzcwLDM4OTIzMTQxMTI6NTE0LDQxNjA3NDk1Njg6ODM4ODYwOCwxOjMyNzY4LDI2ODQzNTQ1NzoyLDUzNjg3MDkxMzo4NDIxODg4LDgwNTMwNjM2OTo4Mzg4NjA4LDEwNzM3NDE4MjU6ODQyMTM3OCwxMzQyMTc3MjgxOjMzMjgwLDE2MTA2MTI3Mzc6NTEyLDE4NzkwNDgxOTM6ODM4OTEyMiwyMTQ3NDgzNjQ5Ojg0MjE4OTAsMjQxNTkxOTEwNTo4NDIxMzc2LDI2ODQzNTQ1NjE6ODM4ODYxMCwyOTUyNzkwMDE3OjMzMjgyLDMyMjEyMjU0NzM6NTE0LDM0ODk2NjA5Mjk6ODM4OTEyMCwzNzU4MDk2Mzg1OjMyNzcwLDQwMjY1MzE4NDE6MCwxMzQyMTc3Mjk6ODQyMTg5MCw0MDI2NTMxODU6ODQyMTM3Niw2NzEwODg2NDE6ODM4ODYwOCw5Mzk1MjQwOTc6NTEyLDEyMDc5NTk1NTM6MzI3NjgsMTQ3NjM5NTAwOTo4Mzg4NjEwLDE3NDQ4MzA0NjU6MiwyMDEzMjY1OTIxOjMzMjgyLDIyODE3MDEzNzc6MzI3NzAsMjU1MDEzNjgzMzo4Mzg5MTIyLDI4MTg1NzIyODk6NTE0LDMwODcwMDc3NDU6ODQyMTg4OCwzMzU1NDQzMjAxOjgzODkxMjAsMzYyMzg3ODY1NzowLDM4OTIzMTQxMTM6MzMyODAsNDE2MDc0OTU2OTo4NDIxMzc4fSx7MDoxMDc0MjgyNTEyLDE2Nzc3MjE2OjE2Mzg0LDMzNTU0NDMyOjUyNDI4OCw1MDMzMTY0ODoxMDc0MjY2MTI4LDY3MTA4ODY0OjEwNzM3NDE4NDAsODM4ODYwODA6MTA3NDI4MjQ5NiwxMDA2NjMyOTY6MTA3Mzc1ODIwOCwxMTc0NDA1MTI6MTYsMTM0MjE3NzI4OjU0MDY3MiwxNTA5OTQ5NDQ6MTA3Mzc1ODIyNCwxNjc3NzIxNjA6MTA3Mzc0MTgyNCwxODQ1NDkzNzY6NTQwNjg4LDIwMTMyNjU5Mjo1MjQzMDQsMjE4MTAzODA4OjAsMjM0ODgxMDI0OjE2NDAwLDI1MTY1ODI0MDoxMDc0MjY2MTEyLDgzODg2MDg6MTA3Mzc1ODIwOCwyNTE2NTgyNDo1NDA2ODgsNDE5NDMwNDA6MTYsNTg3MjAyNTY6MTA3Mzc1ODIyNCw3NTQ5NzQ3MjoxMDc0MjgyNTEyLDkyMjc0Njg4OjEwNzM3NDE4MjQsMTA5MDUxOTA0OjUyNDI4OCwxMjU4MjkxMjA6MTA3NDI2NjEyOCwxNDI2MDYzMzY6NTI0MzA0LDE1OTM4MzU1MjowLDE3NjE2MDc2ODoxNjM4NCwxOTI5Mzc5ODQ6MTA3NDI2NjExMiwyMDk3MTUyMDA6MTA3Mzc0MTg0MCwyMjY0OTI0MTY6NTQwNjcyLDI0MzI2OTYzMjoxMDc0MjgyNDk2LDI2MDA0Njg0ODoxNjQwMCwyNjg0MzU0NTY6MCwyODUyMTI2NzI6MTA3NDI2NjEyOCwzMDE5ODk4ODg6MTA3Mzc1ODIyNCwzMTg3NjcxMDQ6MTA3NDI4MjQ5NiwzMzU1NDQzMjA6MTA3NDI2NjExMiwzNTIzMjE1MzY6MTYsMzY5MDk4NzUyOjU0MDY4OCwzODU4NzU5Njg6MTYzODQsNDAyNjUzMTg0OjE2NDAwLDQxOTQzMDQwMDo1MjQyODgsNDM2MjA3NjE2OjUyNDMwNCw0NTI5ODQ4MzI6MTA3Mzc0MTg0MCw0Njk3NjIwNDg6NTQwNjcyLDQ4NjUzOTI2NDoxMDczNzU4MjA4LDUwMzMxNjQ4MDoxMDczNzQxODI0LDUyMDA5MzY5NjoxMDc0MjgyNTEyLDI3NjgyNDA2NDo1NDA2ODgsMjkzNjAxMjgwOjUyNDI4OCwzMTAzNzg0OTY6MTA3NDI2NjExMiwzMjcxNTU3MTI6MTYzODQsMzQzOTMyOTI4OjEwNzM3NTgyMDgsMzYwNzEwMTQ0OjEwNzQyODI1MTIsMzc3NDg3MzYwOjE2LDM5NDI2NDU3NjoxMDczNzQxODI0LDQxMTA0MTc5MjoxMDc0MjgyNDk2LDQyNzgxOTAwODoxMDczNzQxODQwLDQ0NDU5NjIyNDoxMDczNzU4MjI0LDQ2MTM3MzQ0MDo1MjQzMDQsNDc4MTUwNjU2OjAsNDk0OTI3ODcyOjE2NDAwLDUxMTcwNTA4ODoxMDc0MjY2MTI4LDUyODQ4MjMwNDo1NDA2NzJ9LHswOjI2MCwxMDQ4NTc2OjAsMjA5NzE1Mjo2NzEwOTEyMCwzMTQ1NzI4OjY1Nzk2LDQxOTQzMDQ6NjU1NDAsNTI0Mjg4MDo2NzEwODg2OCw2MjkxNDU2OjY3MTc0NjYwLDczNDAwMzI6NjcxNzQ0MDAsODM4ODYwODo2NzEwODg2NCw5NDM3MTg0OjY3MTc0NjU2LDEwNDg1NzYwOjY1NzkyLDExNTM0MzM2OjY3MTc0NDA0LDEyNTgyOTEyOjY3MTA5MTI0LDEzNjMxNDg4OjY1NTM2LDE0NjgwMDY0OjQsMTU3Mjg2NDA6MjU2LDUyNDI4ODo2NzE3NDY1NiwxNTcyODY0OjY3MTc0NDA0LDI2MjE0NDA6MCwzNjcwMDE2OjY3MTA5MTIwLDQ3MTg1OTI6NjcxMDg4NjgsNTc2NzE2ODo2NTUzNiw2ODE1NzQ0OjY1NTQwLDc4NjQzMjA6MjYwLDg5MTI4OTY6NCw5OTYxNDcyOjI1NiwxMTAxMDA0ODo2NzE3NDQwMCwxMjA1ODYyNDo2NTc5NiwxMzEwNzIwMDo2NTc5MiwxNDE1NTc3Njo2NzEwOTEyNCwxNTIwNDM1Mjo2NzE3NDY2MCwxNjI1MjkyODo2NzEwODg2NCwxNjc3NzIxNjo2NzE3NDY1NiwxNzgyNTc5Mjo2NTU0MCwxODg3NDM2ODo2NTUzNiwxOTkyMjk0NDo2NzEwOTEyMCwyMDk3MTUyMDoyNTYsMjIwMjAwOTY6NjcxNzQ2NjAsMjMwNjg2NzI6NjcxMDg4NjgsMjQxMTcyNDg6MCwyNTE2NTgyNDo2NzEwOTEyNCwyNjIxNDQwMDo2NzEwODg2NCwyNzI2Mjk3Njo0LDI4MzExNTUyOjY1NzkyLDI5MzYwMTI4OjY3MTc0NDAwLDMwNDA4NzA0OjI2MCwzMTQ1NzI4MDo2NTc5NiwzMjUwNTg1Njo2NzE3NDQwNCwxNzMwMTUwNDo2NzEwODg2NCwxODM1MDA4MDoyNjAsMTkzOTg2NTY6NjcxNzQ2NTYsMjA0NDcyMzI6MCwyMTQ5NTgwODo2NTU0MCwyMjU0NDM4NDo2NzEwOTEyMCwyMzU5Mjk2MDoyNTYsMjQ2NDE1MzY6NjcxNzQ0MDQsMjU2OTAxMTI6NjU1MzYsMjY3Mzg2ODg6NjcxNzQ2NjAsMjc3ODcyNjQ6NjU3OTYsMjg4MzU4NDA6NjcxMDg4NjgsMjk4ODQ0MTY6NjcxMDkxMjQsMzA5MzI5OTI6NjcxNzQ0MDAsMzE5ODE1Njg6NCwzMzAzMDE0NDo2NTc5Mn0sezA6MjE1MTY4MjA0OCw2NTUzNjoyMTQ3NDg3ODA4LDEzMTA3Mjo0MTk4NDY0LDE5NjYwODoyMTUxNjc3OTUyLDI2MjE0NDowLDMyNzY4MDo0MTk4NDAwLDM5MzIxNjoyMTQ3NDgzNzEyLDQ1ODc1Mjo0MTk0MzY4LDUyNDI4ODoyMTQ3NDgzNjQ4LDU4OTgyNDo0MTk0MzA0LDY1NTM2MDo2NCw3MjA4OTY6MjE0NzQ4Nzc0NCw3ODY0MzI6MjE1MTY3ODAxNiw4NTE5Njg6NDE2MCw5MTc1MDQ6NDA5Niw5ODMwNDA6MjE1MTY4MjExMiwzMjc2ODoyMTQ3NDg3ODA4LDk4MzA0OjY0LDE2Mzg0MDoyMTUxNjc4MDE2LDIyOTM3NjoyMTQ3NDg3NzQ0LDI5NDkxMjo0MTk4NDAwLDM2MDQ0ODoyMTUxNjgyMTEyLDQyNTk4NDowLDQ5MTUyMDoyMTUxNjc3OTUyLDU1NzA1Njo0MDk2LDYyMjU5MjoyMTUxNjgyMDQ4LDY4ODEyODo0MTk0MzA0LDc1MzY2NDo0MTYwLDgxOTIwMDoyMTQ3NDgzNjQ4LDg4NDczNjo0MTk0MzY4LDk1MDI3Mjo0MTk4NDY0LDEwMTU4MDg6MjE0NzQ4MzcxMiwxMDQ4NTc2OjQxOTQzNjgsMTExNDExMjo0MTk4NDAwLDExNzk2NDg6MjE0NzQ4MzcxMiwxMjQ1MTg0OjAsMTMxMDcyMDo0MTYwLDEzNzYyNTY6MjE1MTY3ODAxNiwxNDQxNzkyOjIxNTE2ODIwNDgsMTUwNzMyODoyMTQ3NDg3ODA4LDE1NzI4NjQ6MjE1MTY4MjExMiwxNjM4NDAwOjIxNDc0ODM2NDgsMTcwMzkzNjoyMTUxNjc3OTUyLDE3Njk0NzI6NDE5ODQ2NCwxODM1MDA4OjIxNDc0ODc3NDQsMTkwMDU0NDo0MTk0MzA0LDE5NjYwODA6NjQsMjAzMTYxNjo0MDk2LDEwODEzNDQ6MjE1MTY3Nzk1MiwxMTQ2ODgwOjIxNTE2ODIxMTIsMTIxMjQxNjowLDEyNzc5NTI6NDE5ODQwMCwxMzQzNDg4OjQxOTQzNjgsMTQwOTAyNDoyMTQ3NDgzNjQ4LDE0NzQ1NjA6MjE0NzQ4NzgwOCwxNTQwMDk2OjY0LDE2MDU2MzI6MjE0NzQ4MzcxMiwxNjcxMTY4OjQwOTYsMTczNjcwNDoyMTQ3NDg3NzQ0LDE4MDIyNDA6MjE1MTY3ODAxNiwxODY3Nzc2OjQxNjAsMTkzMzMxMjoyMTUxNjgyMDQ4LDE5OTg4NDg6NDE5NDMwNCwyMDY0Mzg0OjQxOTg0NjR9LHswOjEyOCw0MDk2OjE3MDM5MzYwLDgxOTI6MjYyMTQ0LDEyMjg4OjUzNjg3MDkxMiwxNjM4NDo1MzcxMzMxODQsMjA0ODA6MTY3NzczNDQsMjQ1NzY6NTUzNjQ4MjU2LDI4NjcyOjI2MjI3MiwzMjc2ODoxNjc3NzIxNiwzNjg2NDo1MzcxMzMwNTYsNDA5NjA6NTM2ODcxMDQwLDQ1MDU2OjU1MzkxMDQwMCw0OTE1Mjo1NTM5MTAyNzIsNTMyNDg6MCw1NzM0NDoxNzAzOTQ4OCw2MTQ0MDo1NTM2NDgxMjgsMjA0ODoxNzAzOTQ4OCw2MTQ0OjU1MzY0ODI1NiwxMDI0MDoxMjgsMTQzMzY6MTcwMzkzNjAsMTg0MzI6MjYyMTQ0LDIyNTI4OjUzNzEzMzE4NCwyNjYyNDo1NTM5MTAyNzIsMzA3MjA6NTM2ODcwOTEyLDM0ODE2OjUzNzEzMzA1NiwzODkxMjowLDQzMDA4OjU1MzkxMDQwMCw0NzEwNDoxNjc3NzM0NCw1MTIwMDo1MzY4NzEwNDAsNTUyOTY6NTUzNjQ4MTI4LDU5MzkyOjE2Nzc3MjE2LDYzNDg4OjI2MjI3Miw2NTUzNjoyNjIxNDQsNjk2MzI6MTI4LDczNzI4OjUzNjg3MDkxMiw3NzgyNDo1NTM2NDgyNTYsODE5MjA6MTY3NzczNDQsODYwMTY6NTUzOTEwMjcyLDkwMTEyOjUzNzEzMzE4NCw5NDIwODoxNjc3NzIxNiw5ODMwNDo1NTM5MTA0MDAsMTAyNDAwOjU1MzY0ODEyOCwxMDY0OTY6MTcwMzkzNjAsMTEwNTkyOjUzNzEzMzA1NiwxMTQ2ODg6MjYyMjcyLDExODc4NDo1MzY4NzEwNDAsMTIyODgwOjAsMTI2OTc2OjE3MDM5NDg4LDY3NTg0OjU1MzY0ODI1Niw3MTY4MDoxNjc3NzIxNiw3NTc3NjoxNzAzOTM2MCw3OTg3Mjo1MzcxMzMxODQsODM5Njg6NTM2ODcwOTEyLDg4MDY0OjE3MDM5NDg4LDkyMTYwOjEyOCw5NjI1Njo1NTM5MTAyNzIsMTAwMzUyOjI2MjI3MiwxMDQ0NDg6NTUzOTEwNDAwLDEwODU0NDowLDExMjY0MDo1NTM2NDgxMjgsMTE2NzM2OjE2Nzc3MzQ0LDEyMDgzMjoyNjIxNDQsMTI0OTI4OjUzNzEzMzA1NiwxMjkwMjQ6NTM2ODcxMDQwfSx7MDoyNjg0MzU0NjQsMjU2OjgxOTIsNTEyOjI3MDUzMjYwOCw3Njg6MjcwNTQwODA4LDEwMjQ6MjY4NDQzNjQ4LDEyODA6MjA5NzE1MiwxNTM2OjIwOTcxNjAsMTc5MjoyNjg0MzU0NTYsMjA0ODowLDIzMDQ6MjY4NDQzNjU2LDI1NjA6MjEwNTM0NCwyODE2OjgsMzA3MjoyNzA1MzI2MTYsMzMyODoyMTA1MzUyLDM1ODQ6ODIwMCwzODQwOjI3MDU0MDgwMCwxMjg6MjcwNTMyNjA4LDM4NDoyNzA1NDA4MDgsNjQwOjgsODk2OjIwOTcxNTIsMTE1MjoyMTA1MzUyLDE0MDg6MjY4NDM1NDY0LDE2NjQ6MjY4NDQzNjQ4LDE5MjA6ODIwMCwyMTc2OjIwOTcxNjAsMjQzMjo4MTkyLDI2ODg6MjY4NDQzNjU2LDI5NDQ6MjcwNTMyNjE2LDMyMDA6MCwzNDU2OjI3MDU0MDgwMCwzNzEyOjIxMDUzNDQsMzk2ODoyNjg0MzU0NTYsNDA5NjoyNjg0NDM2NDgsNDM1MjoyNzA1MzI2MTYsNDYwODoyNzA1NDA4MDgsNDg2NDo4MjAwLDUxMjA6MjA5NzE1Miw1Mzc2OjI2ODQzNTQ1Niw1NjMyOjI2ODQzNTQ2NCw1ODg4OjIxMDUzNDQsNjE0NDoyMTA1MzUyLDY0MDA6MCw2NjU2OjgsNjkxMjoyNzA1MzI2MDgsNzE2ODo4MTkyLDc0MjQ6MjY4NDQzNjU2LDc2ODA6MjcwNTQwODAwLDc5MzY6MjA5NzE2MCw0MjI0OjgsNDQ4MDoyMTA1MzQ0LDQ3MzY6MjA5NzE1Miw0OTkyOjI2ODQzNTQ2NCw1MjQ4OjI2ODQ0MzY0OCw1NTA0OjgyMDAsNTc2MDoyNzA1NDA4MDgsNjAxNjoyNzA1MzI2MDgsNjI3MjoyNzA1NDA4MDAsNjUyODoyNzA1MzI2MTYsNjc4NDo4MTkyLDcwNDA6MjEwNTM1Miw3Mjk2OjIwOTcxNjAsNzU1MjowLDc4MDg6MjY4NDM1NDU2LDgwNjQ6MjY4NDQzNjU2fSx7MDoxMDQ4NTc2LDE2OjMzNTU1NDU3LDMyOjEwMjQsNDg6MTA0OTYwMSw2NDozNDYwNDAzMyw4MDowLDk2OjEsMTEyOjM0NjAzMDA5LDEyODozMzU1NTQ1NiwxNDQ6MTA0ODU3NywxNjA6MzM1NTQ0MzMsMTc2OjM0NjA0MDMyLDE5MjozNDYwMzAwOCwyMDg6MTAyNSwyMjQ6MTA0OTYwMCwyNDA6MzM1NTQ0MzIsODozNDYwMzAwOSwyNDowLDQwOjMzNTU1NDU3LDU2OjM0NjA0MDMyLDcyOjEwNDg1NzYsODg6MzM1NTQ0MzMsMTA0OjMzNTU0NDMyLDEyMDoxMDI1LDEzNjoxMDQ5NjAxLDE1MjozMzU1NTQ1NiwxNjg6MzQ2MDMwMDgsMTg0OjEwNDg1NzcsMjAwOjEwMjQsMjE2OjM0NjA0MDMzLDIzMjoxLDI0ODoxMDQ5NjAwLDI1NjozMzU1NDQzMiwyNzI6MTA0ODU3NiwyODg6MzM1NTU0NTcsMzA0OjM0NjAzMDA5LDMyMDoxMDQ4NTc3LDMzNjozMzU1NTQ1NiwzNTI6MzQ2MDQwMzIsMzY4OjEwNDk2MDEsMzg0OjEwMjUsNDAwOjM0NjA0MDMzLDQxNjoxMDQ5NjAwLDQzMjoxLDQ0ODowLDQ2NDozNDYwMzAwOCw0ODA6MzM1NTQ0MzMsNDk2OjEwMjQsMjY0OjEwNDk2MDAsMjgwOjMzNTU1NDU3LDI5NjozNDYwMzAwOSwzMTI6MSwzMjg6MzM1NTQ0MzIsMzQ0OjEwNDg1NzYsMzYwOjEwMjUsMzc2OjM0NjA0MDMyLDM5MjozMzU1NDQzMyw0MDg6MzQ2MDMwMDgsNDI0OjAsNDQwOjM0NjA0MDMzLDQ1NjoxMDQ5NjAxLDQ3MjoxMDI0LDQ4ODozMzU1NTQ1Niw1MDQ6MTA0ODU3N30sezA6MTM0MjE5ODA4LDE6MTMxMDcyLDI6MTM0MjE3NzI4LDM6MzIsNDoxMzExMDQsNToxMzQzNTA4ODAsNjoxMzQzNTA4NDgsNzoyMDQ4LDg6MTM0MzQ4ODAwLDk6MTM0MjE5Nzc2LDEwOjEzMzEyMCwxMToxMzQzNDg4MzIsMTI6MjA4MCwxMzowLDE0OjEzNDIxNzc2MCwxNToxMzMxNTIsMjE0NzQ4MzY0ODoyMDQ4LDIxNDc0ODM2NDk6MTM0MzUwODgwLDIxNDc0ODM2NTA6MTM0MjE5ODA4LDIxNDc0ODM2NTE6MTM0MjE3NzI4LDIxNDc0ODM2NTI6MTM0MzQ4ODAwLDIxNDc0ODM2NTM6MTMzMTIwLDIxNDc0ODM2NTQ6MTMzMTUyLDIxNDc0ODM2NTU6MzIsMjE0NzQ4MzY1NjoxMzQyMTc3NjAsMjE0NzQ4MzY1NzoyMDgwLDIxNDc0ODM2NTg6MTMxMTA0LDIxNDc0ODM2NTk6MTM0MzUwODQ4LDIxNDc0ODM2NjA6MCwyMTQ3NDgzNjYxOjEzNDM0ODgzMiwyMTQ3NDgzNjYyOjEzNDIxOTc3NiwyMTQ3NDgzNjYzOjEzMTA3MiwxNjoxMzMxNTIsMTc6MTM0MzUwODQ4LDE4OjMyLDE5OjIwNDgsMjA6MTM0MjE5Nzc2LDIxOjEzNDIxNzc2MCwyMjoxMzQzNDg4MzIsMjM6MTMxMDcyLDI0OjAsMjU6MTMxMTA0LDI2OjEzNDM0ODgwMCwyNzoxMzQyMTk4MDgsMjg6MTM0MzUwODgwLDI5OjEzMzEyMCwzMDoyMDgwLDMxOjEzNDIxNzcyOCwyMTQ3NDgzNjY0OjEzMTA3MiwyMTQ3NDgzNjY1OjIwNDgsMjE0NzQ4MzY2NjoxMzQzNDg4MzIsMjE0NzQ4MzY2NzoxMzMxNTIsMjE0NzQ4MzY2ODozMiwyMTQ3NDgzNjY5OjEzNDM0ODgwMCwyMTQ3NDgzNjcwOjEzNDIxNzcyOCwyMTQ3NDgzNjcxOjEzNDIxOTgwOCwyMTQ3NDgzNjcyOjEzNDM1MDg4MCwyMTQ3NDgzNjczOjEzNDIxNzc2MCwyMTQ3NDgzNjc0OjEzNDIxOTc3NiwyMTQ3NDgzNjc1OjAsMjE0NzQ4MzY3NjoxMzMxMjAsMjE0NzQ4MzY3NzoyMDgwLDIxNDc0ODM2Nzg6MTMxMTA0LDIxNDc0ODM2Nzk6MTM0MzUwODQ4fV0sdT1bNDE2MDc0OTU2OSw1Mjg0ODIzMDQsMzMwMzAxNDQsMjA2NDM4NCwxMjkwMjQsODA2NCw1MDQsMjE0NzQ4MzY3OV0sZD1hLkRFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPVtdLGk9MDtpPDU2O2krKyl7dmFyIG49Y1tpXS0xO2VbaV09cltuPj4+NV0+Pj4zMS1uJTMyJjF9Zm9yKHZhciBvPXRoaXMuX3N1YktleXM9W10scz0wO3M8MTY7cysrKXtmb3IodmFyIGE9b1tzXT1bXSxmPWxbc10saT0wO2k8MjQ7aSsrKWFbaS82fDBdfD1lWyhoW2ldLTErZiklMjhdPDwzMS1pJTYsYVs0KyhpLzZ8MCldfD1lWzI4KyhoW2krMjRdLTErZiklMjhdPDwzMS1pJTY7YVswXT1hWzBdPDwxfGFbMF0+Pj4zMTtmb3IodmFyIGk9MTtpPDc7aSsrKWFbaV09YVtpXT4+PjQqKGktMSkrMzthWzddPWFbN108PDV8YVs3XT4+PjI3fWZvcih2YXIgdT10aGlzLl9pbnZTdWJLZXlzPVtdLGk9MDtpPDE2O2krKyl1W2ldPW9bMTUtaV19LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5fc3ViS2V5cyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52U3ViS2V5cyl9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxpLG4pe3RoaXMuX2xCbG9jaz10W2ldLHRoaXMuX3JCbG9jaz10W2krMV0sci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxlLmNhbGwodGhpcywyLDg1ODk5MzQ1OSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksci5jYWxsKHRoaXMsMSwxNDMxNjU1NzY1KTtmb3IodmFyIG89MDtvPDE2O28rKyl7Zm9yKHZhciBzPW5bb10sYT10aGlzLl9sQmxvY2ssYz10aGlzLl9yQmxvY2ssaD0wLGw9MDtsPDg7bCsrKWh8PWZbbF1bKChjXnNbbF0pJnVbbF0pPj4+MF07dGhpcy5fbEJsb2NrPWMsdGhpcy5fckJsb2NrPWFeaH12YXIgZD10aGlzLl9sQmxvY2s7dGhpcy5fbEJsb2NrPXRoaXMuX3JCbG9jayx0aGlzLl9yQmxvY2s9ZCxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpLGUuY2FsbCh0aGlzLDgsMTY3MTE5MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxyLmNhbGwodGhpcywxNiw2NTUzNSksci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHRbaV09dGhpcy5fbEJsb2NrLHRbaSsxXT10aGlzLl9yQmxvY2t9LGtleVNpemU6MixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuREVTPXMuX2NyZWF0ZUhlbHBlcihkKTt2YXIgdj1hLlRyaXBsZURFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9rZXkscj10LndvcmRzO3RoaXMuX2RlczE9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSgwLDIpKSksdGhpcy5fZGVzMj1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDIsNCkpKSx0aGlzLl9kZXMzPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoNCw2KSkpfSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMxLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZGVjcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMy5lbmNyeXB0QmxvY2sodCxyKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZGVzMy5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMyLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczEuZGVjcnlwdEJsb2NrKHQscil9LGtleVNpemU6NixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuVHJpcGxlREVTPXMuX2NyZWF0ZUhlbHBlcih2KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fUyxyPXRoaXMuX2ksZT10aGlzLl9qLGk9MCxuPTA7bjw0O24rKyl7cj0ocisxKSUyNTYsZT0oZSt0W3JdKSUyNTY7dmFyIG89dFtyXTt0W3JdPXRbZV0sdFtlXT1vLGl8PXRbKHRbcl0rdFtlXSklMjU2XTw8MjQtOCpufXJldHVybiB0aGlzLl9pPXIsdGhpcy5faj1lLGl9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1vLlJDND1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT10aGlzLl9TPVtdLG49MDtuPDI1NjtuKyspaVtuXT1uO2Zvcih2YXIgbj0wLG89MDtuPDI1NjtuKyspe3ZhciBzPW4lZSxhPXJbcz4+PjJdPj4+MjQtcyU0KjgmMjU1O289KG8raVtuXSthKSUyNTY7dmFyIGM9aVtuXTtpW25dPWlbb10saVtvXT1jfXRoaXMuX2k9dGhpcy5faj0wfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt0W2VdXj1yLmNhbGwodGhpcyl9LGtleVNpemU6OCxpdlNpemU6MH0pO2UuUkM0PW4uX2NyZWF0ZUhlbHBlcihzKTt2YXIgYT1vLlJDNERyb3A9cy5leHRlbmQoe2NmZzpzLmNmZy5leHRlbmQoe2Ryb3A6MTkyfSksX2RvUmVzZXQ6ZnVuY3Rpb24oKXtzLl9kb1Jlc2V0LmNhbGwodGhpcyk7Zm9yKHZhciB0PXRoaXMuY2ZnLmRyb3A7dD4wO3QtLSlyLmNhbGwodGhpcyl9fSk7ZS5SQzREcm9wPW4uX2NyZWF0ZUhlbHBlcihhKX0oKSx0Lm1vZGUuQ1RSR2xhZG1hbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7aWYoMjU1PT09KHQ+PjI0JjI1NSkpe3ZhciByPXQ+PjE2JjI1NSxlPXQ+PjgmMjU1LGk9MjU1JnQ7MjU1PT09cj8ocj0wLDI1NT09PWU/KGU9MCwyNTU9PT1pP2k9MDorK2kpOisrZSk6KytyLHQ9MCx0Kz1yPDwxNix0Kz1lPDw4LHQrPWl9ZWxzZSB0Kz0xPDwyNDtyZXR1cm4gdH1mdW5jdGlvbiBlKHQpe3JldHVybiAwPT09KHRbMF09cih0WzBdKSkmJih0WzFdPXIodFsxXSkpLHR9dmFyIGk9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLG49aS5FbmNyeXB0b3I9aS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dGhpcy5faXYscz10aGlzLl9jb3VudGVyO28mJihzPXRoaXMuX2NvdW50ZXI9by5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApLGUocyk7dmFyIGE9cy5zbGljZSgwKTtpLmVuY3J5cHRCbG9jayhhLDApO2Zvcih2YXIgYz0wO2M8bjtjKyspdFtyK2NdXj1hW2NdfX0pO3JldHVybiBpLkRlY3J5cHRvcj1uLGl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+Pj4wPGFbMF0+Pj4wPzE6MCl8MCxyWzJdPXJbMl0rODg2MjYzMDkyKyhyWzFdPj4+MDxhWzFdPj4+MD8xOjApfDAsclszXT1yWzNdKzEyOTUzMDc1OTcrKHJbMl0+Pj4wPGFbMl0+Pj4wPzE6MCl8MCxyWzRdPXJbNF0rMzU0NTA1MjM3MSsoclszXT4+PjA8YVszXT4+PjA/MTowKXwwLHJbNV09cls1XSs4ODYyNjMwOTIrKHJbNF0+Pj4wPGFbNF0+Pj4wPzE6MCl8MCxyWzZdPXJbNl0rMTI5NTMwNzU5Nysocls1XT4+PjA8YVs1XT4+PjA/MTowKXwwLHJbN109cls3XSszNTQ1MDUyMzcxKyhyWzZdPj4+MDxhWzZdPj4+MD8xOjApfDAsdGhpcy5fYj1yWzddPj4+MDxhWzddPj4+MD8xOjA7Zm9yKHZhciBlPTA7ZTw4O2UrKyl7dmFyIGk9dFtlXStyW2VdLG49NjU1MzUmaSxvPWk+Pj4xNixzPSgobipuPj4+MTcpK24qbz4+PjE1KStvKm8saD0oKDQyOTQ5MDE3NjAmaSkqaXwwKSsoKDY1NTM1JmkpKml8MCk7Y1tlXT1zXmh9dFswXT1jWzBdKyhjWzddPDwxNnxjWzddPj4+MTYpKyhjWzZdPDwxNnxjWzZdPj4+MTYpfDAsdFsxXT1jWzFdKyhjWzBdPDw4fGNbMF0+Pj4yNCkrY1s3XXwwLHRbMl09Y1syXSsoY1sxXTw8MTZ8Y1sxXT4+PjE2KSsoY1swXTw8MTZ8Y1swXT4+PjE2KXwwLHRbM109Y1szXSsoY1syXTw8OHxjWzJdPj4+MjQpK2NbMV18MCx0WzRdPWNbNF0rKGNbM108PDE2fGNbM10+Pj4xNikrKGNbMl08PDE2fGNbMl0+Pj4xNil8MCx0WzVdPWNbNV0rKGNbNF08PDh8Y1s0XT4+PjI0KStjWzNdfDAsdFs2XT1jWzZdKyhjWzVdPDwxNnxjWzVdPj4+MTYpKyhjWzRdPDwxNnxjWzRdPj4+MTYpfDAsdFs3XT1jWzddKyhjWzZdPDw4fGNbNl0+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXQ9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9MDtpPDQ7aSsrKXRbaV09MTY3MTE5MzUmKHRbaV08PDh8dFtpXT4+PjI0KXw0Mjc4MjU1MzYwJih0W2ldPDwyNHx0W2ldPj4+OCk7dmFyIG49dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG89dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyk7Zm9yKHZhciBpPTA7aTw4O2krKylvW2ldXj1uW2krNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7b1swXV49aCxvWzFdXj1mLG9bMl1ePWwsb1szXV49dSxvWzRdXj1oLG9bNV1ePWYsb1s2XV49bCxvWzddXj11O2Zvcih2YXIgaT0wO2k8NDtpKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0Lm1vZGUuQ1RSPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9jb3VudGVyO24mJihvPXRoaXMuX2NvdW50ZXI9bi5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApO3ZhciBzPW8uc2xpY2UoMCk7ZS5lbmNyeXB0QmxvY2socywwKSxvW2ktMV09b1tpLTFdKzF8MDtmb3IodmFyIGE9MDthPGk7YSsrKXRbcithXV49c1thXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9YLHI9dGhpcy5fQyxlPTA7ZTw4O2UrKylhW2VdPXJbZV07clswXT1yWzBdKzEyOTUzMDc1OTcrdGhpcy5fYnwwLHJbMV09clsxXSszNTQ1MDUyMzcxKyhyWzBdPj4+MDxhWzBdPj4+MD8xOjApfDAsclsyXT1yWzJdKzg4NjI2MzA5MisoclsxXT4+PjA8YVsxXT4+PjA/MTowKXwwLHJbM109clszXSsxMjk1MzA3NTk3KyhyWzJdPj4+MDxhWzJdPj4+MD8xOjApfDAscls0XT1yWzRdKzM1NDUwNTIzNzErKHJbM10+Pj4wPGFbM10+Pj4wPzE6MCl8MCxyWzVdPXJbNV0rODg2MjYzMDkyKyhyWzRdPj4+MDxhWzRdPj4+MD8xOjApfDAscls2XT1yWzZdKzEyOTUzMDc1OTcrKHJbNV0+Pj4wPGFbNV0+Pj4wPzE6MCl8MCxyWzddPXJbN10rMzU0NTA1MjM3MSsocls2XT4+PjA8YVs2XT4+PjA/MTowKXwwLHRoaXMuX2I9cls3XT4+PjA8YVs3XT4+PjA/MTowO2Zvcih2YXIgZT0wO2U8ODtlKyspe3ZhciBpPXRbZV0rcltlXSxuPTY1NTM1Jmksbz1pPj4+MTYscz0oKG4qbj4+PjE3KStuKm8+Pj4xNSkrbypvLGg9KCg0Mjk0OTAxNzYwJmkpKml8MCkrKCg2NTUzNSZpKSppfDApO2NbZV09c15ofXRbMF09Y1swXSsoY1s3XTw8MTZ8Y1s3XT4+PjE2KSsoY1s2XTw8MTZ8Y1s2XT4+PjE2KXwwLHRbMV09Y1sxXSsoY1swXTw8OHxjWzBdPj4+MjQpK2NbN118MCx0WzJdPWNbMl0rKGNbMV08PDE2fGNbMV0+Pj4xNikrKGNbMF08PDE2fGNbMF0+Pj4xNil8MCx0WzNdPWNbM10rKGNbMl08PDh8Y1syXT4+PjI0KStjWzFdfDAsdFs0XT1jWzRdKyhjWzNdPDwxNnxjWzNdPj4+MTYpKyhjWzJdPDwxNnxjWzJdPj4+MTYpfDAsdFs1XT1jWzVdKyhjWzRdPDw4fGNbNF0+Pj4yNCkrY1szXXwwLHRbNl09Y1s2XSsoY1s1XTw8MTZ8Y1s1XT4+PjE2KSsoY1s0XTw8MTZ8Y1s0XT4+PjE2KXwwLHRbN109Y1s3XSsoY1s2XTw8OHxjWzZdPj4+MjQpK2NbNV18MH12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPVtdLGE9W10sYz1bXSxoPW8uUmFiYml0TGVnYWN5PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG49dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyk7Zm9yKHZhciBvPTA7bzw4O28rKyluW29dXj1pW28rNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7blswXV49aCxuWzFdXj1mLG5bMl1ePWwsblszXV49dSxuWzRdXj1oLG5bNV1ePWYsbls2XV49bCxuWzddXj11O2Zvcih2YXIgbz0wO288NDtvKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0TGVnYWN5PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0LnBhZC5aZXJvUGFkZGluZz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9NCpyO3QuY2xhbXAoKSx0LnNpZ0J5dGVzKz1lLSh0LnNpZ0J5dGVzJWV8fGUpfSx1bnBhZDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMtMTshKHJbZT4+PjJdPj4+MjQtZSU0KjgmMjU1KTspZS0tO3Quc2lnQnl0ZXM9ZSsxfX0sdH0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcnlwdG8tanMubWluLmpzLm1hcCJdfQ== + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcY3J5cHRvLWpzLm1pbi5qcyJdLCJuYW1lcyI6WyJ0IiwiciIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJDcnlwdG9KUyIsImUiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm90b3R5cGUiLCJpIiwibiIsImxpYiIsIm8iLCJCYXNlIiwiZXh0ZW5kIiwibWl4SW4iLCJoYXNPd25Qcm9wZXJ0eSIsImluaXQiLCIkc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsInRvU3RyaW5nIiwiY2xvbmUiLCJzIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsImxlbmd0aCIsImMiLCJzdHJpbmdpZnkiLCJjb25jYXQiLCJjbGFtcCIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJhIiwicHVzaCIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiaCIsIkxhdGluMSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJsIiwiVXRmOCIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkVycm9yIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJmIiwiQnVmZmVyZWRCbG9ja0FsZ29yaXRobSIsInJlc2V0IiwiX2RhdGEiLCJfbkRhdGFCeXRlcyIsIl9hcHBlbmQiLCJfcHJvY2VzcyIsImJsb2NrU2l6ZSIsIm1heCIsIl9taW5CdWZmZXJTaXplIiwibWluIiwiX2RvUHJvY2Vzc0Jsb2NrIiwidSIsInNwbGljZSIsIkhhc2hlciIsImNmZyIsIl9kb1Jlc2V0IiwidXBkYXRlIiwiZmluYWxpemUiLCJfZG9GaW5hbGl6ZSIsIl9jcmVhdGVIZWxwZXIiLCJfY3JlYXRlSG1hY0hlbHBlciIsIkhNQUMiLCJhbGdvIiwiTWF0aCIsIkJhc2U2NCIsIl9tYXAiLCJjaGFyQXQiLCJfcmV2ZXJzZU1hcCIsImluZGV4T2YiLCJhYnMiLCJzaW4iLCJNRDUiLCJfaGFzaCIsImQiLCJ2IiwicCIsIl8iLCJ5IiwiZyIsIkIiLCJ3IiwiayIsIlMiLCJtIiwieCIsImIiLCJIIiwieiIsIkEiLCJDIiwiRCIsImZsb29yIiwiSG1hY01ENSIsIlNIQTEiLCJIbWFjU0hBMSIsInNxcnQiLCJwb3ciLCJTSEEyNTYiLCJIbWFjU0hBMjU2IiwiVXRmMTYiLCJVdGYxNkJFIiwiVXRmMTZMRSIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJSSVBFTUQxNjAiLCJSIiwiRSIsIk0iLCJGIiwiSG1hY1JJUEVNRDE2MCIsIl9oYXNoZXIiLCJfb0tleSIsIl9pS2V5IiwiUEJLREYyIiwia2V5U2l6ZSIsImhhc2hlciIsIml0ZXJhdGlvbnMiLCJjb21wdXRlIiwiRXZwS0RGIiwiU0hBMjI0IiwiSG1hY1NIQTIyNCIsIng2NCIsIldvcmQiLCJoaWdoIiwibG93IiwidG9YMzIiLCJTSEEzIiwib3V0cHV0TGVuZ3RoIiwiX3N0YXRlIiwiSG1hY1NIQTMiLCJTSEE1MTIiLCJQIiwiVyIsIk8iLCJVIiwiSSIsIksiLCJYIiwiTCIsImoiLCJOIiwiVCIsIloiLCJxIiwiRyIsIkoiLCIkIiwiUSIsIlYiLCJZIiwidHQiLCJydCIsImV0IiwiaXQiLCJudCIsIm90Iiwic3QiLCJhdCIsImN0IiwiaHQiLCJsdCIsImZ0IiwidXQiLCJkdCIsInZ0IiwicHQiLCJfdCIsInl0IiwiZ3QiLCJCdCIsInd0Iiwia3QiLCJTdCIsIm10IiwieHQiLCJidCIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiQ2lwaGVyIiwiY3JlYXRlRW5jcnlwdG9yIiwiX0VOQ19YRk9STV9NT0RFIiwiY3JlYXRlRGVjcnlwdG9yIiwiX0RFQ19YRk9STV9NT0RFIiwiX3hmb3JtTW9kZSIsIl9rZXkiLCJwcm9jZXNzIiwiaXZTaXplIiwiZW5jcnlwdCIsImRlY3J5cHQiLCJTdHJlYW1DaXBoZXIiLCJtb2RlIiwiQmxvY2tDaXBoZXJNb2RlIiwiRW5jcnlwdG9yIiwiRGVjcnlwdG9yIiwiX2NpcGhlciIsIl9pdiIsIkNCQyIsIl9wcmV2QmxvY2siLCJwcm9jZXNzQmxvY2siLCJlbmNyeXB0QmxvY2siLCJkZWNyeXB0QmxvY2siLCJwYWQiLCJQa2NzNyIsInVucGFkIiwiQmxvY2tDaXBoZXIiLCJwYWRkaW5nIiwiaXYiLCJfbW9kZSIsIl9fY3JlYXRvciIsIkNpcGhlclBhcmFtcyIsImZvcm1hdHRlciIsImZvcm1hdCIsIk9wZW5TU0wiLCJjaXBoZXJ0ZXh0Iiwic2FsdCIsIlNlcmlhbGl6YWJsZUNpcGhlciIsImtleSIsImFsZ29yaXRobSIsIl9wYXJzZSIsImtkZiIsImV4ZWN1dGUiLCJQYXNzd29yZEJhc2VkQ2lwaGVyIiwiQ0ZCIiwiRUNCIiwiQW5zaVg5MjMiLCJJc28xMDEyNiIsIklzbzk3OTcxIiwiWmVyb1BhZGRpbmciLCJPRkIiLCJfa2V5c3RyZWFtIiwiTm9QYWRkaW5nIiwiQUVTIiwiX25Sb3VuZHMiLCJfa2V5UHJpb3JSZXNldCIsIl9rZXlTY2hlZHVsZSIsIl9pbnZLZXlTY2hlZHVsZSIsIl9kb0NyeXB0QmxvY2siLCJfbEJsb2NrIiwiX3JCbG9jayIsIkRFUyIsIl9zdWJLZXlzIiwiX2ludlN1YktleXMiLCJUcmlwbGVERVMiLCJfZGVzMSIsIl9kZXMyIiwiX2RlczMiLCJfUyIsIl9pIiwiX2oiLCJSQzQiLCJSQzREcm9wIiwiZHJvcCIsIkNUUkdsYWRtYW4iLCJfY291bnRlciIsIl9YIiwiX0MiLCJfYiIsIlJhYmJpdCIsIkNUUiIsIlJhYmJpdExlZ2FjeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxDQUFDLFVBQVNBLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO0VBQUMs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OEMsQ0FBQyxHQUFDaEIsQ0FBQyxDQUFDakIsR0FBRztNQUFDc0MsQ0FBQyxHQUFDTCxDQUFDLENBQUNwQixTQUFTO01BQUNnQyxDQUFDLEdBQUNaLENBQUMsQ0FBQzBCLE1BQU07TUFBQ0YsQ0FBQyxHQUFDeEMsQ0FBQyxDQUFDbUQsSUFBSTtNQUFDVyxDQUFDLEdBQUN6QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7TUFBQ29GLENBQUMsR0FBQzFDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQztNQUFDcUYsQ0FBQyxHQUFDM0MsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQyxDQUFDO01BQUNzRixDQUFDLEdBQUM1QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDLENBQUM7TUFBQ3VGLENBQUMsR0FBQzdDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBQyxVQUFV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QUFDUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM3RSxDQUFDLEdBQUMsRUFBRSxHQUFDaEIsQ0FBQyxDQUFDd0QsQ0FBQyxFQUFDNEIsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ1EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDNkMsQ0FBQyxFQUFDNEIsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ1EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0IsQ0FBQyxJQUFFLENBQUMsRUFBQ0EsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBQyxFQUFDRixDQUFDLENBQUMxRyxDQUFDLENBQUMsQ0FBQyxFQUFDNEcsQ0FBQyxHQUFDQSxDQUFDLEdBQUN0QyxDQUFDLEdBQUMsQ0FBQyxFQUFDMUMsQ0FBQyxHQUFDMEMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNELENBQUMsRUFBQ0EsQ0FBQyxHQUFDN0QsQ0FBQyxDQUFDNEQsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDQSxDQUFDLEdBQUM1QixDQUFDLEVBQUNBLENBQUMsR0FBQ29FLENBQUMsRUFBQ0EsQ0FBQyxHQUFDckMsQ0FBQyxHQUFDckcsQ0FBQyxDQUFDQyxDQUFDLEdBQUNzSSxDQUFDLENBQUN6RyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzRHLENBQUMsSUFBRTVHLENBQUMsR0FBQyxFQUFFLEdBQUNMLENBQUMsQ0FBQzZFLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOUUsQ0FBQyxHQUFDLEVBQUUsR0FBQ2hCLENBQUMsQ0FBQ3dGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOUUsQ0FBQyxHQUFDLEVBQUUsR0FBQ2xCLENBQUMsQ0FBQzBGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOUUsQ0FBQyxHQUFDLEVBQUUsR0FBQ25CLENBQUMsQ0FBQzJGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDckcsQ0FBQyxDQUFDK0YsQ0FBQyxFQUFDQyxDQUFDLEVBQUNDLENBQUMsQ0FBQyxHQUFDSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUM4QixDQUFDLElBQUUsQ0FBQyxFQUFDQSxDQUFDLEdBQUNwRyxDQUFDLENBQUNvRyxDQUFDLEVBQUNELENBQUMsQ0FBQzNHLENBQUMsQ0FBQyxDQUFDLEVBQUM0RyxDQUFDLEdBQUNBLENBQUMsR0FBQ2pDLENBQUMsR0FBQyxDQUFDLEVBQUNKLENBQUMsR0FBQ0ksQ0FBQyxFQUFDQSxDQUFDLEdBQUNELENBQUMsRUFBQ0EsQ0FBQyxHQUFDbEUsQ0FBQyxDQUFDaUUsQ0FBQyxFQUFDLEVBQUUsQ0FBQyxFQUFDQSxDQUFDLEdBQUNELENBQUMsRUFBQ0EsQ0FBQyxHQUFDb0MsQ0FBQztVQUFDQSxDQUFDLEdBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNSLENBQUMsR0FBQ00sQ0FBQyxHQUFDLENBQUMsRUFBQ0UsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNQLENBQUMsR0FBQ00sQ0FBQyxHQUFDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNOLENBQUMsR0FBQ0MsQ0FBQyxHQUFDLENBQUMsRUFBQ0ssQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNoRCxDQUFDLEdBQUM0QyxDQUFDLEdBQUMsQ0FBQyxFQUFDSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ3BDLENBQUMsR0FBQ2lDLENBQUMsR0FBQyxDQUFDLEVBQUNHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2dDLENBQUM7UUFBQSxDQUFDO1FBQUM3RCxXQUFXLEVBQUMsU0FBQUEsWUFBQSxFQUFVO1VBQUMsSUFBSTdFLENBQUMsR0FBQyxJQUFJLENBQUM2RCxLQUFLO1lBQUM1RCxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQUs7WUFBQ3BCLENBQUMsR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDdUQsV0FBVztZQUFDbkQsQ0FBQyxHQUFDLENBQUMsR0FBQ1gsQ0FBQyxDQUFDNEIsUUFBUTtVQUFDM0IsQ0FBQyxDQUFDVSxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUUsR0FBRyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ1YsQ0FBQyxDQUFDLENBQUNVLENBQUMsR0FBQyxFQUFFLEtBQUcsQ0FBQyxJQUFFLENBQUMsSUFBRSxFQUFFLENBQUMsR0FBQyxRQUFRLElBQUVKLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUMsRUFBQ1AsQ0FBQyxDQUFDNEIsUUFBUSxHQUFDLENBQUMsSUFBRTNCLENBQUMsQ0FBQzRCLE1BQU0sR0FBQyxDQUFDLENBQUMsRUFBQyxJQUFJLENBQUNtQyxRQUFRLEVBQUU7VUFBQyxLQUFJLElBQUlwRCxDQUFDLEdBQUMsSUFBSSxDQUFDK0UsS0FBSyxFQUFDN0UsQ0FBQyxHQUFDRixDQUFDLENBQUNlLEtBQUssRUFBQ0YsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7WUFBQyxJQUFJYSxDQUFDLEdBQUN4QixDQUFDLENBQUNXLENBQUMsQ0FBQztZQUFDWCxDQUFDLENBQUNXLENBQUMsQ0FBQyxHQUFDLFFBQVEsSUFBRWEsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsQ0FBQztVQUFBO1VBQUMsT0FBTzFCLENBQUM7UUFBQSxDQUFDO1FBQUNZLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7VUFBQyxJQUFJeEIsQ0FBQyxHQUFDMEQsQ0FBQyxDQUFDbEMsS0FBSyxDQUFDVyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUMsT0FBT25DLENBQUMsQ0FBQzJGLEtBQUssR0FBQyxJQUFJLENBQUNBLEtBQUssQ0FBQ25FLEtBQUssRUFBRSxFQUFDeEIsQ0FBQztRQUFBO01BQUMsQ0FBQyxDQUFDO0lBQUM4QixDQUFDLENBQUN3RyxTQUFTLEdBQUM1RSxDQUFDLENBQUNvQixhQUFhLENBQUNvQixDQUFDLENBQUMsRUFBQ3BFLENBQUMsQ0FBQzZHLGFBQWEsR0FBQ2pGLENBQUMsQ0FBQ3FCLGlCQUFpQixDQUFDbUIsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxDQUFDaEIsSUFBSSxDQUFDLEVBQUMsWUFBVTtJQUFDLElBQUlqRixDQUFDLEdBQUNELENBQUM7TUFBQ08sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQUc7TUFBQ0YsQ0FBQyxHQUFDSixDQUFDLENBQUNRLElBQUk7TUFBQ0gsQ0FBQyxHQUFDWCxDQUFDLENBQUN1QyxHQUFHO01BQUMxQixDQUFDLEdBQUNGLENBQUMsQ0FBQ3dDLElBQUk7TUFBQzNCLENBQUMsR0FBQ3hCLENBQUMsQ0FBQ2dGLElBQUk7SUFBQ3hELENBQUMsQ0FBQ3VELElBQUksR0FBQ3JFLENBQUMsQ0FBQ0ssTUFBTSxDQUFDO01BQUNHLElBQUksRUFBQyxTQUFBQSxLQUFTbkIsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7UUFBQ0QsQ0FBQyxHQUFDLElBQUksQ0FBQzRJLE9BQU8sR0FBQyxJQUFJNUksQ0FBQyxDQUFDbUIsSUFBSSxJQUFDLFFBQVEsSUFBRSxPQUFPbEIsQ0FBQyxLQUFHQSxDQUFDLEdBQUNhLENBQUMsQ0FBQzZCLEtBQUssQ0FBQzFDLENBQUMsQ0FBQyxDQUFDO1FBQUMsSUFBSU0sQ0FBQyxHQUFDUCxDQUFDLENBQUNpRSxTQUFTO1VBQUN0RCxDQUFDLEdBQUMsQ0FBQyxHQUFDSixDQUFDO1FBQUNOLENBQUMsQ0FBQzJCLFFBQVEsR0FBQ2pCLENBQUMsS0FBR1YsQ0FBQyxHQUFDRCxDQUFDLENBQUM0RSxRQUFRLENBQUMzRSxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUNnQyxLQUFLLEVBQUU7UUFBQyxLQUFJLElBQUlyQixDQUFDLEdBQUMsSUFBSSxDQUFDaUksS0FBSyxHQUFDNUksQ0FBQyxDQUFDdUIsS0FBSyxFQUFFLEVBQUNDLENBQUMsR0FBQyxJQUFJLENBQUNxSCxLQUFLLEdBQUM3SSxDQUFDLENBQUN1QixLQUFLLEVBQUUsRUFBQ2MsQ0FBQyxHQUFDMUIsQ0FBQyxDQUFDZSxLQUFLLEVBQUNHLENBQUMsR0FBQ0wsQ0FBQyxDQUFDRSxLQUFLLEVBQUNtQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUN2QyxDQUFDLEVBQUN1QyxDQUFDLEVBQUUsRUFBQ1IsQ0FBQyxDQUFDUSxDQUFDLENBQUMsSUFBRSxVQUFVLEVBQUNoQixDQUFDLENBQUNnQixDQUFDLENBQUMsSUFBRSxTQUFTO1FBQUNsQyxDQUFDLENBQUNnQixRQUFRLEdBQUNILENBQUMsQ0FBQ0csUUFBUSxHQUFDakIsQ0FBQyxFQUFDLElBQUksQ0FBQ2lELEtBQUssRUFBRTtNQUFBLENBQUM7TUFBQ0EsS0FBSyxFQUFDLFNBQUFBLE1BQUEsRUFBVTtRQUFDLElBQUk1RCxDQUFDLEdBQUMsSUFBSSxDQUFDNEksT0FBTztRQUFDNUksQ0FBQyxDQUFDNEQsS0FBSyxFQUFFLEVBQUM1RCxDQUFDLENBQUMyRSxNQUFNLENBQUMsSUFBSSxDQUFDbUUsS0FBSyxDQUFDO01BQUEsQ0FBQztNQUFDbkUsTUFBTSxFQUFDLFNBQUFBLE9BQVMzRSxDQUFDLEVBQUM7UUFBQyxPQUFPLElBQUksQ0FBQzRJLE9BQU8sQ0FBQ2pFLE1BQU0sQ0FBQzNFLENBQUMsQ0FBQyxFQUFDLElBQUk7TUFBQSxDQUFDO01BQUM0RSxRQUFRLEVBQUMsU0FBQUEsU0FBUzVFLENBQUMsRUFBQztRQUFDLElBQUlDLENBQUMsR0FBQyxJQUFJLENBQUMySSxPQUFPO1VBQUNySSxDQUFDLEdBQUNOLENBQUMsQ0FBQzJFLFFBQVEsQ0FBQzVFLENBQUMsQ0FBQztRQUFDQyxDQUFDLENBQUMyRCxLQUFLLEVBQUU7UUFBQyxJQUFJakQsQ0FBQyxHQUFDVixDQUFDLENBQUMyRSxRQUFRLENBQUMsSUFBSSxDQUFDaUUsS0FBSyxDQUFDckgsS0FBSyxFQUFFLENBQUNRLE1BQU0sQ0FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBQUMsT0FBT0ksQ0FBQztNQUFBO0lBQUMsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUMsWUFBVTtJQUFDLElBQUlWLENBQUMsR0FBQ0QsQ0FBQztNQUFDTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBRztNQUFDRixDQUFDLEdBQUNKLENBQUMsQ0FBQ1EsSUFBSTtNQUFDSCxDQUFDLEdBQUNMLENBQUMsQ0FBQ21CLFNBQVM7TUFBQ1osQ0FBQyxHQUFDYixDQUFDLENBQUNnRixJQUFJO01BQUN4RCxDQUFDLEdBQUNYLENBQUMsQ0FBQ2tHLElBQUk7TUFBQzFFLENBQUMsR0FBQ3hCLENBQUMsQ0FBQ2tFLElBQUk7TUFBQ2xELENBQUMsR0FBQ2hCLENBQUMsQ0FBQ2lJLE1BQU0sR0FBQ3BJLENBQUMsQ0FBQ0ssTUFBTSxDQUFDO1FBQUN5RCxHQUFHLEVBQUM5RCxDQUFDLENBQUNLLE1BQU0sQ0FBQztVQUFDZ0ksT0FBTyxFQUFDLENBQUM7VUFBQ0MsTUFBTSxFQUFDeEgsQ0FBQztVQUFDeUgsVUFBVSxFQUFDO1FBQUMsQ0FBQyxDQUFDO1FBQUMvSCxJQUFJLEVBQUMsU0FBQUEsS0FBU25CLENBQUMsRUFBQztVQUFDLElBQUksQ0FBQ3lFLEdBQUcsR0FBQyxJQUFJLENBQUNBLEdBQUcsQ0FBQ3pELE1BQU0sQ0FBQ2hCLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQ21KLE9BQU8sRUFBQyxTQUFBQSxRQUFTbkosQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxLQUFJLElBQUlNLENBQUMsR0FBQyxJQUFJLENBQUNrRSxHQUFHLEVBQUM5RCxDQUFDLEdBQUMyQixDQUFDLENBQUM3QixNQUFNLENBQUNGLENBQUMsQ0FBQzBJLE1BQU0sRUFBQ2pKLENBQUMsQ0FBQyxFQUFDYyxDQUFDLEdBQUNGLENBQUMsQ0FBQ0gsTUFBTSxFQUFFLEVBQUNnQixDQUFDLEdBQUNiLENBQUMsQ0FBQ0gsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ3FCLENBQUMsR0FBQ2hCLENBQUMsQ0FBQ2EsS0FBSyxFQUFDbUIsQ0FBQyxHQUFDckIsQ0FBQyxDQUFDRSxLQUFLLEVBQUN3QixDQUFDLEdBQUM1QyxDQUFDLENBQUN5SSxPQUFPLEVBQUN0RixDQUFDLEdBQUNuRCxDQUFDLENBQUMySSxVQUFVLEVBQUNwSCxDQUFDLENBQUNELE1BQU0sR0FBQ3NCLENBQUMsR0FBRTtZQUFDLElBQUltQixDQUFDLEdBQUMzRCxDQUFDLENBQUNnRSxNQUFNLENBQUMxRSxDQUFDLENBQUMsQ0FBQzJFLFFBQVEsQ0FBQ25ELENBQUMsQ0FBQztZQUFDZCxDQUFDLENBQUNpRCxLQUFLLEVBQUU7WUFBQyxLQUFJLElBQUlnQyxDQUFDLEdBQUN0QixDQUFDLENBQUMzQyxLQUFLLEVBQUNrRSxDQUFDLEdBQUNELENBQUMsQ0FBQy9ELE1BQU0sRUFBQ2lFLENBQUMsR0FBQ3hCLENBQUMsRUFBQ3lCLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ3JDLENBQUMsRUFBQ3FDLENBQUMsRUFBRSxFQUFDO2NBQUNELENBQUMsR0FBQ25GLENBQUMsQ0FBQ2lFLFFBQVEsQ0FBQ2tCLENBQUMsQ0FBQyxFQUFDbkYsQ0FBQyxDQUFDaUQsS0FBSyxFQUFFO2NBQUMsS0FBSSxJQUFJb0MsQ0FBQyxHQUFDRixDQUFDLENBQUNuRSxLQUFLLEVBQUNzRSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNKLENBQUMsRUFBQ0ksQ0FBQyxFQUFFLEVBQUNMLENBQUMsQ0FBQ0ssQ0FBQyxDQUFDLElBQUVELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDO1lBQUE7WUFBQ25GLENBQUMsQ0FBQ2tCLE1BQU0sQ0FBQ3NDLENBQUMsQ0FBQyxFQUFDeEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1VBQUE7VUFBQyxPQUFPaEMsQ0FBQyxDQUFDYyxRQUFRLEdBQUMsQ0FBQyxHQUFDdUIsQ0FBQyxFQUFDckMsQ0FBQztRQUFBO01BQUMsQ0FBQyxDQUFDO0lBQUNiLENBQUMsQ0FBQzhJLE1BQU0sR0FBQyxVQUFTL0ksQ0FBQyxFQUFDQyxDQUFDLEVBQUNNLENBQUMsRUFBQztNQUFDLE9BQU91QixDQUFDLENBQUNyQixNQUFNLENBQUNGLENBQUMsQ0FBQyxDQUFDNEksT0FBTyxDQUFDbkosQ0FBQyxFQUFDQyxDQUFDLENBQUM7SUFBQSxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUMsWUFBVTtJQUFDLElBQUlBLENBQUMsR0FBQ0QsQ0FBQztNQUFDTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBRztNQUFDRixDQUFDLEdBQUNKLENBQUMsQ0FBQ1EsSUFBSTtNQUFDSCxDQUFDLEdBQUNMLENBQUMsQ0FBQ21CLFNBQVM7TUFBQ1osQ0FBQyxHQUFDYixDQUFDLENBQUNnRixJQUFJO01BQUN4RCxDQUFDLEdBQUNYLENBQUMsQ0FBQzRFLEdBQUc7TUFBQ3BELENBQUMsR0FBQ3hCLENBQUMsQ0FBQ3NJLE1BQU0sR0FBQ3pJLENBQUMsQ0FBQ0ssTUFBTSxDQUFDO1FBQUN5RCxHQUFHLEVBQUM5RCxDQUFDLENBQUNLLE1BQU0sQ0FBQztVQUFDZ0ksT0FBTyxFQUFDLENBQUM7VUFBQ0MsTUFBTSxFQUFDeEgsQ0FBQztVQUFDeUgsVUFBVSxFQUFDO1FBQUMsQ0FBQyxDQUFDO1FBQUMvSCxJQUFJLEVBQUMsU0FBQUEsS0FBU25CLENBQUMsRUFBQztVQUFDLElBQUksQ0FBQ3lFLEdBQUcsR0FBQyxJQUFJLENBQUNBLEdBQUcsQ0FBQ3pELE1BQU0sQ0FBQ2hCLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQ21KLE9BQU8sRUFBQyxTQUFBQSxRQUFTbkosQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxLQUFJLElBQUlNLENBQUMsR0FBQyxJQUFJLENBQUNrRSxHQUFHLEVBQUM5RCxDQUFDLEdBQUNKLENBQUMsQ0FBQzBJLE1BQU0sQ0FBQ3hJLE1BQU0sRUFBRSxFQUFDSyxDQUFDLEdBQUNGLENBQUMsQ0FBQ0gsTUFBTSxFQUFFLEVBQUNnQixDQUFDLEdBQUNYLENBQUMsQ0FBQ2EsS0FBSyxFQUFDVyxDQUFDLEdBQUMvQixDQUFDLENBQUN5SSxPQUFPLEVBQUNsSCxDQUFDLEdBQUN2QixDQUFDLENBQUMySSxVQUFVLEVBQUN6SCxDQUFDLENBQUNJLE1BQU0sR0FBQ1MsQ0FBQyxHQUFFO1lBQUNRLENBQUMsSUFBRW5DLENBQUMsQ0FBQ2dFLE1BQU0sQ0FBQzdCLENBQUMsQ0FBQztZQUFDLElBQUlBLENBQUMsR0FBQ25DLENBQUMsQ0FBQ2dFLE1BQU0sQ0FBQzNFLENBQUMsQ0FBQyxDQUFDNEUsUUFBUSxDQUFDM0UsQ0FBQyxDQUFDO1lBQUNVLENBQUMsQ0FBQ2lELEtBQUssRUFBRTtZQUFDLEtBQUksSUFBSVQsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDckIsQ0FBQyxFQUFDcUIsQ0FBQyxFQUFFLEVBQUNMLENBQUMsR0FBQ25DLENBQUMsQ0FBQ2lFLFFBQVEsQ0FBQzlCLENBQUMsQ0FBQyxFQUFDbkMsQ0FBQyxDQUFDaUQsS0FBSyxFQUFFO1lBQUM5QyxDQUFDLENBQUNrQixNQUFNLENBQUNjLENBQUMsQ0FBQztVQUFBO1VBQUMsT0FBT2hDLENBQUMsQ0FBQ2MsUUFBUSxHQUFDLENBQUMsR0FBQ1UsQ0FBQyxFQUFDeEIsQ0FBQztRQUFBO01BQUMsQ0FBQyxDQUFDO0lBQUNiLENBQUMsQ0FBQ21KLE1BQU0sR0FBQyxVQUFTcEosQ0FBQyxFQUFDQyxDQUFDLEVBQUNNLENBQUMsRUFBQztNQUFDLE9BQU8rQixDQUFDLENBQUM3QixNQUFNLENBQUNGLENBQUMsQ0FBQyxDQUFDNEksT0FBTyxDQUFDbkosQ0FBQyxFQUFDQyxDQUFDLENBQUM7SUFBQSxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUMsWUFBVTtJQUFDLElBQUlBLENBQUMsR0FBQ0QsQ0FBQztNQUFDTyxDQUFDLEdBQUNOLENBQUMsQ0FBQ1ksR0FBRztNQUFDRixDQUFDLEdBQUNKLENBQUMsQ0FBQ21CLFNBQVM7TUFBQ2QsQ0FBQyxHQUFDWCxDQUFDLENBQUNnRixJQUFJO01BQUNuRSxDQUFDLEdBQUNGLENBQUMsQ0FBQ3dHLE1BQU07TUFBQzNGLENBQUMsR0FBQ2IsQ0FBQyxDQUFDeUksTUFBTSxHQUFDdkksQ0FBQyxDQUFDRSxNQUFNLENBQUM7UUFBQzBELFFBQVEsRUFBQyxTQUFBQSxTQUFBLEVBQVU7VUFBQyxJQUFJLENBQUNpQixLQUFLLEdBQUMsSUFBSWhGLENBQUMsQ0FBQ1EsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUFDMEQsV0FBVyxFQUFDLFNBQUFBLFlBQUEsRUFBVTtVQUFDLElBQUk3RSxDQUFDLEdBQUNjLENBQUMsQ0FBQytELFdBQVcsQ0FBQzFDLElBQUksQ0FBQyxJQUFJLENBQUM7VUFBQyxPQUFPbkMsQ0FBQyxDQUFDNEIsUUFBUSxJQUFFLENBQUMsRUFBQzVCLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDQyxDQUFDLENBQUNvSixNQUFNLEdBQUN2SSxDQUFDLENBQUNnRSxhQUFhLENBQUNyRCxDQUFDLENBQUMsRUFBQ3hCLENBQUMsQ0FBQ3FKLFVBQVUsR0FBQ3hJLENBQUMsQ0FBQ2lFLGlCQUFpQixDQUFDdEQsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUMsVUFBU3hCLENBQUMsRUFBQztJQUFDLElBQUlNLENBQUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQ0ksSUFBSTtNQUFDRCxDQUFDLEdBQUNILENBQUMsQ0FBQ2UsU0FBUztNQUFDRCxDQUFDLEdBQUNsQixDQUFDLENBQUNnSixHQUFHLEdBQUMsQ0FBQyxDQUFDO0lBQUM5SCxDQUFDLENBQUMrSCxJQUFJLEdBQUM1SSxDQUFDLENBQUNJLE1BQU0sQ0FBQztNQUFDRyxJQUFJLEVBQUMsU0FBQUEsS0FBU25CLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1FBQUMsSUFBSSxDQUFDd0osSUFBSSxHQUFDekosQ0FBQyxFQUFDLElBQUksQ0FBQzBKLEdBQUcsR0FBQ3pKLENBQUM7TUFBQTtJQUFDLENBQUMsQ0FBQyxFQUFDd0IsQ0FBQyxDQUFDQyxTQUFTLEdBQUNkLENBQUMsQ0FBQ0ksTUFBTSxDQUFDO01BQUNHLElBQUksRUFBQyxTQUFBQSxLQUFTbkIsQ0FBQyxFQUFDTyxDQUFDLEVBQUM7UUFBQ1AsQ0FBQyxHQUFDLElBQUksQ0FBQzJCLEtBQUssR0FBQzNCLENBQUMsSUFBRSxFQUFFLEVBQUNPLENBQUMsSUFBRU4sQ0FBQyxHQUFDLElBQUksQ0FBQzJCLFFBQVEsR0FBQ3JCLENBQUMsR0FBQyxJQUFJLENBQUNxQixRQUFRLEdBQUMsQ0FBQyxHQUFDNUIsQ0FBQyxDQUFDNkIsTUFBTTtNQUFBLENBQUM7TUFBQzhILEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7UUFBQyxLQUFJLElBQUkzSixDQUFDLEdBQUMsSUFBSSxDQUFDMkIsS0FBSyxFQUFDMUIsQ0FBQyxHQUFDRCxDQUFDLENBQUM2QixNQUFNLEVBQUN0QixDQUFDLEdBQUMsRUFBRSxFQUFDSSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNWLENBQUMsRUFBQ1UsQ0FBQyxFQUFFLEVBQUM7VUFBQyxJQUFJQyxDQUFDLEdBQUNaLENBQUMsQ0FBQ1csQ0FBQyxDQUFDO1VBQUNKLENBQUMsQ0FBQ2dDLElBQUksQ0FBQzNCLENBQUMsQ0FBQzZJLElBQUksQ0FBQyxFQUFDbEosQ0FBQyxDQUFDZ0MsSUFBSSxDQUFDM0IsQ0FBQyxDQUFDOEksR0FBRyxDQUFDO1FBQUE7UUFBQyxPQUFPNUksQ0FBQyxDQUFDTCxNQUFNLENBQUNGLENBQUMsRUFBQyxJQUFJLENBQUNxQixRQUFRLENBQUM7TUFBQSxDQUFDO01BQUNKLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7UUFBQyxLQUFJLElBQUl4QixDQUFDLEdBQUNZLENBQUMsQ0FBQ1ksS0FBSyxDQUFDVyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUNsQyxDQUFDLEdBQUNELENBQUMsQ0FBQzJCLEtBQUssR0FBQyxJQUFJLENBQUNBLEtBQUssQ0FBQ1MsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDN0IsQ0FBQyxHQUFDTixDQUFDLENBQUM0QixNQUFNLEVBQUNsQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNKLENBQUMsRUFBQ0ksQ0FBQyxFQUFFLEVBQUNWLENBQUMsQ0FBQ1UsQ0FBQyxDQUFDLEdBQUNWLENBQUMsQ0FBQ1UsQ0FBQyxDQUFDLENBQUNhLEtBQUssRUFBRTtRQUFDLE9BQU94QixDQUFDO01BQUE7SUFBQyxDQUFDLENBQUM7RUFBQSxDQUFDLEVBQUUsRUFBQyxVQUFTQyxDQUFDLEVBQUM7SUFBQyxJQUFJTSxDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNlLFNBQVM7TUFBQ1osQ0FBQyxHQUFDSCxDQUFDLENBQUM2RCxNQUFNO01BQUMvQyxDQUFDLEdBQUNsQixDQUFDLENBQUNnSixHQUFHO01BQUNqSCxDQUFDLEdBQUNiLENBQUMsQ0FBQytILElBQUk7TUFBQzFILENBQUMsR0FBQ3ZCLENBQUMsQ0FBQzBFLElBQUk7TUFBQ25DLENBQUMsR0FBQyxFQUFFO01BQUNLLENBQUMsR0FBQyxFQUFFO01BQUNPLENBQUMsR0FBQyxFQUFFO0lBQUMsQ0FBQyxZQUFVO01BQUMsS0FBSSxJQUFJMUQsQ0FBQyxHQUFDLENBQUMsRUFBQ0MsQ0FBQyxHQUFDLENBQUMsRUFBQ00sQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7UUFBQ3VDLENBQUMsQ0FBQzlDLENBQUMsR0FBQyxDQUFDLEdBQUNDLENBQUMsQ0FBQyxHQUFDLENBQUNNLENBQUMsR0FBQyxDQUFDLEtBQUdBLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsRUFBRTtRQUFDLElBQUlJLENBQUMsR0FBQ1YsQ0FBQyxHQUFDLENBQUM7VUFBQ1csQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDWixDQUFDLEdBQUMsQ0FBQyxHQUFDQyxDQUFDLElBQUUsQ0FBQztRQUFDRCxDQUFDLEdBQUNXLENBQUMsRUFBQ1YsQ0FBQyxHQUFDVyxDQUFDO01BQUE7TUFBQyxLQUFJLElBQUlaLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNrRCxDQUFDLENBQUNuRCxDQUFDLEdBQUMsQ0FBQyxHQUFDQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDRCxDQUFDLEdBQUMsQ0FBQyxHQUFDQyxDQUFDLElBQUUsQ0FBQyxHQUFDLENBQUM7TUFBQyxLQUFJLElBQUlhLENBQUMsR0FBQyxDQUFDLEVBQUNXLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDO1FBQUMsS0FBSSxJQUFJSyxDQUFDLEdBQUMsQ0FBQyxFQUFDd0MsQ0FBQyxHQUFDLENBQUMsRUFBQ3NCLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1VBQUMsSUFBRyxDQUFDLEdBQUM5RSxDQUFDLEVBQUM7WUFBQyxJQUFJK0UsQ0FBQyxHQUFDLENBQUMsQ0FBQyxJQUFFRCxDQUFDLElBQUUsQ0FBQztZQUFDQyxDQUFDLEdBQUMsRUFBRSxHQUFDdkIsQ0FBQyxJQUFFLENBQUMsSUFBRXVCLENBQUMsR0FBQy9ELENBQUMsSUFBRSxDQUFDLElBQUUrRCxDQUFDLEdBQUMsRUFBRTtVQUFBO1VBQUMsR0FBRyxHQUFDL0UsQ0FBQyxHQUFDQSxDQUFDLEdBQUNBLENBQUMsSUFBRSxDQUFDLEdBQUMsR0FBRyxHQUFDQSxDQUFDLEtBQUcsQ0FBQztRQUFBO1FBQUM0QyxDQUFDLENBQUNqQyxDQUFDLENBQUMsR0FBQ2EsQ0FBQyxDQUFDN0IsTUFBTSxDQUFDcUIsQ0FBQyxFQUFDd0MsQ0FBQyxDQUFDO01BQUE7SUFBQyxDQUFDLEVBQUU7SUFBQyxJQUFJQSxDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSXRFLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDc0UsQ0FBQyxDQUFDdEUsQ0FBQyxDQUFDLEdBQUNzQyxDQUFDLENBQUM3QixNQUFNLEVBQUU7SUFBQSxDQUFDLEVBQUU7SUFBQyxJQUFJbUYsQ0FBQyxHQUFDOUQsQ0FBQyxDQUFDOEgsSUFBSSxHQUFDOUksQ0FBQyxDQUFDRSxNQUFNLENBQUM7TUFBQ3lELEdBQUcsRUFBQzNELENBQUMsQ0FBQzJELEdBQUcsQ0FBQ3pELE1BQU0sQ0FBQztRQUFDNkksWUFBWSxFQUFDO01BQUcsQ0FBQyxDQUFDO01BQUNuRixRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1FBQUMsS0FBSSxJQUFJMUUsQ0FBQyxHQUFDLElBQUksQ0FBQzhKLE1BQU0sR0FBQyxFQUFFLEVBQUM3SixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQ0QsQ0FBQyxDQUFDQyxDQUFDLENBQUMsR0FBQyxJQUFJcUMsQ0FBQyxDQUFDbkIsSUFBSTtRQUFDLElBQUksQ0FBQzhDLFNBQVMsR0FBQyxDQUFDLElBQUksR0FBQyxDQUFDLEdBQUMsSUFBSSxDQUFDUSxHQUFHLENBQUNvRixZQUFZLElBQUUsRUFBRTtNQUFBLENBQUM7TUFBQ3hGLGVBQWUsRUFBQyxTQUFBQSxnQkFBU3JFLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1FBQUMsS0FBSSxJQUFJTSxDQUFDLEdBQUMsSUFBSSxDQUFDdUosTUFBTSxFQUFDbkosQ0FBQyxHQUFDLElBQUksQ0FBQ3NELFNBQVMsR0FBQyxDQUFDLEVBQUNyRCxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNELENBQUMsRUFBQ0MsQ0FBQyxFQUFFLEVBQUM7VUFBQyxJQUFJRSxDQUFDLEdBQUNkLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsR0FBQ1csQ0FBQyxDQUFDO1lBQUNhLENBQUMsR0FBQ3pCLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDLENBQUMsR0FBQ1csQ0FBQyxHQUFDLENBQUMsQ0FBQztVQUFDRSxDQUFDLEdBQUMsUUFBUSxJQUFFQSxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDLEVBQUNXLENBQUMsR0FBQyxRQUFRLElBQUVBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUM7VUFBQyxJQUFJYSxDQUFDLEdBQUMvQixDQUFDLENBQUNLLENBQUMsQ0FBQztVQUFDMEIsQ0FBQyxDQUFDbUgsSUFBSSxJQUFFaEksQ0FBQyxFQUFDYSxDQUFDLENBQUNvSCxHQUFHLElBQUU1SSxDQUFDO1FBQUE7UUFBQyxLQUFJLElBQUlnQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztVQUFDLEtBQUksSUFBSThELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsS0FBSSxJQUFJQyxDQUFDLEdBQUMsQ0FBQyxFQUFDQyxDQUFDLEdBQUMsQ0FBQyxFQUFDQyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztjQUFDLElBQUl6RCxDQUFDLEdBQUMvQixDQUFDLENBQUNxRixDQUFDLEdBQUMsQ0FBQyxHQUFDRyxDQUFDLENBQUM7Y0FBQ0YsQ0FBQyxJQUFFdkQsQ0FBQyxDQUFDbUgsSUFBSSxFQUFDM0QsQ0FBQyxJQUFFeEQsQ0FBQyxDQUFDb0gsR0FBRztZQUFBO1lBQUMsSUFBSTFELENBQUMsR0FBQzFCLENBQUMsQ0FBQ3NCLENBQUMsQ0FBQztZQUFDSSxDQUFDLENBQUN5RCxJQUFJLEdBQUM1RCxDQUFDLEVBQUNHLENBQUMsQ0FBQzBELEdBQUcsR0FBQzVELENBQUM7VUFBQTtVQUFDLEtBQUksSUFBSUYsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUMsS0FBSSxJQUFJSyxDQUFDLEdBQUMzQixDQUFDLENBQUMsQ0FBQ3NCLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEVBQUNNLENBQUMsR0FBQzVCLENBQUMsQ0FBQyxDQUFDc0IsQ0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLENBQUMsRUFBQ08sQ0FBQyxHQUFDRCxDQUFDLENBQUN1RCxJQUFJLEVBQUNyRCxDQUFDLEdBQUNGLENBQUMsQ0FBQ3dELEdBQUcsRUFBQzdELENBQUMsR0FBQ0ksQ0FBQyxDQUFDd0QsSUFBSSxJQUFFdEQsQ0FBQyxJQUFFLENBQUMsR0FBQ0MsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxFQUFDTixDQUFDLEdBQUNHLENBQUMsQ0FBQ3lELEdBQUcsSUFBRXRELENBQUMsSUFBRSxDQUFDLEdBQUNELENBQUMsS0FBRyxFQUFFLENBQUMsRUFBQ0osQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7WUFBQyxJQUFJekQsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDcUYsQ0FBQyxHQUFDLENBQUMsR0FBQ0csQ0FBQyxDQUFDO1lBQUN6RCxDQUFDLENBQUNtSCxJQUFJLElBQUU1RCxDQUFDLEVBQUN2RCxDQUFDLENBQUNvSCxHQUFHLElBQUU1RCxDQUFDO1VBQUE7VUFBQyxLQUFJLElBQUlPLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsSUFBSS9ELENBQUMsR0FBQy9CLENBQUMsQ0FBQzhGLENBQUMsQ0FBQztjQUFDQyxDQUFDLEdBQUNoRSxDQUFDLENBQUNtSCxJQUFJO2NBQUNsRCxDQUFDLEdBQUNqRSxDQUFDLENBQUNvSCxHQUFHO2NBQUNsRCxDQUFDLEdBQUMxRCxDQUFDLENBQUN1RCxDQUFDLENBQUM7WUFBQyxJQUFHRyxDQUFDLEdBQUMsRUFBRSxFQUFDLElBQUlYLENBQUMsR0FBQ1MsQ0FBQyxJQUFFRSxDQUFDLEdBQUNELENBQUMsS0FBRyxFQUFFLEdBQUNDLENBQUM7Y0FBQ1YsQ0FBQyxHQUFDUyxDQUFDLElBQUVDLENBQUMsR0FBQ0YsQ0FBQyxLQUFHLEVBQUUsR0FBQ0UsQ0FBQyxDQUFDLEtBQUssSUFBSVgsQ0FBQyxHQUFDVSxDQUFDLElBQUVDLENBQUMsR0FBQyxFQUFFLEdBQUNGLENBQUMsS0FBRyxFQUFFLEdBQUNFLENBQUM7Y0FBQ1YsQ0FBQyxHQUFDUSxDQUFDLElBQUVFLENBQUMsR0FBQyxFQUFFLEdBQUNELENBQUMsS0FBRyxFQUFFLEdBQUNDLENBQUM7WUFBQyxJQUFJQyxDQUFDLEdBQUNuQyxDQUFDLENBQUNuQixDQUFDLENBQUNrRCxDQUFDLENBQUMsQ0FBQztZQUFDSSxDQUFDLENBQUNnRCxJQUFJLEdBQUM1RCxDQUFDLEVBQUNZLENBQUMsQ0FBQ2lELEdBQUcsR0FBQzVELENBQUM7VUFBQTtVQUFDLElBQUlZLENBQUMsR0FBQ3BDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQ3FDLENBQUMsR0FBQ3BHLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQ21HLENBQUMsQ0FBQytDLElBQUksR0FBQzlDLENBQUMsQ0FBQzhDLElBQUksRUFBQy9DLENBQUMsQ0FBQ2dELEdBQUcsR0FBQy9DLENBQUMsQ0FBQytDLEdBQUc7VUFBQyxLQUFJLElBQUk5RCxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQyxLQUFJLElBQUlHLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsSUFBSU0sQ0FBQyxHQUFDVCxDQUFDLEdBQUMsQ0FBQyxHQUFDRyxDQUFDO2NBQUN6RCxDQUFDLEdBQUMvQixDQUFDLENBQUM4RixDQUFDLENBQUM7Y0FBQ08sQ0FBQyxHQUFDdEMsQ0FBQyxDQUFDK0IsQ0FBQyxDQUFDO2NBQUNRLENBQUMsR0FBQ3ZDLENBQUMsQ0FBQyxDQUFDc0IsQ0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLEdBQUMsQ0FBQyxHQUFDRyxDQUFDLENBQUM7Y0FBQ3dDLENBQUMsR0FBQ2pFLENBQUMsQ0FBQyxDQUFDc0IsQ0FBQyxHQUFDLENBQUMsSUFBRSxDQUFDLEdBQUMsQ0FBQyxHQUFDRyxDQUFDLENBQUM7WUFBQ3pELENBQUMsQ0FBQ21ILElBQUksR0FBQzdDLENBQUMsQ0FBQzZDLElBQUksR0FBQyxDQUFDNUMsQ0FBQyxDQUFDNEMsSUFBSSxHQUFDbEIsQ0FBQyxDQUFDa0IsSUFBSSxFQUFDbkgsQ0FBQyxDQUFDb0gsR0FBRyxHQUFDOUMsQ0FBQyxDQUFDOEMsR0FBRyxHQUFDLENBQUM3QyxDQUFDLENBQUM2QyxHQUFHLEdBQUNuQixDQUFDLENBQUNtQixHQUFHO1VBQUE7VUFBQyxJQUFJcEgsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUFDaUksQ0FBQyxHQUFDOUUsQ0FBQyxDQUFDNUIsQ0FBQyxDQUFDO1VBQUNRLENBQUMsQ0FBQ21ILElBQUksSUFBRWpCLENBQUMsQ0FBQ2lCLElBQUksRUFBQ25ILENBQUMsQ0FBQ29ILEdBQUcsSUFBRWxCLENBQUMsQ0FBQ2tCLEdBQUc7UUFBQTtNQUFDLENBQUM7TUFBQzdFLFdBQVcsRUFBQyxTQUFBQSxZQUFBLEVBQVU7UUFBQyxJQUFJN0UsQ0FBQyxHQUFDLElBQUksQ0FBQzZELEtBQUs7VUFBQ3RELENBQUMsR0FBQ1AsQ0FBQyxDQUFDMkIsS0FBSztVQUFDaEIsQ0FBQyxJQUFFLENBQUMsR0FBQyxJQUFJLENBQUNtRCxXQUFXLEVBQUMsQ0FBQyxHQUFDOUQsQ0FBQyxDQUFDNEIsUUFBUSxDQUFDO1VBQUNkLENBQUMsR0FBQyxFQUFFLEdBQUMsSUFBSSxDQUFDbUQsU0FBUztRQUFDMUQsQ0FBQyxDQUFDSSxDQUFDLEtBQUcsQ0FBQyxDQUFDLElBQUUsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0osQ0FBQyxDQUFDLENBQUNOLENBQUMsQ0FBQ2lDLElBQUksQ0FBQyxDQUFDdkIsQ0FBQyxHQUFDLENBQUMsSUFBRUcsQ0FBQyxDQUFDLEdBQUNBLENBQUMsS0FBRyxDQUFDLElBQUUsQ0FBQyxDQUFDLElBQUUsR0FBRyxFQUFDZCxDQUFDLENBQUM0QixRQUFRLEdBQUMsQ0FBQyxHQUFDckIsQ0FBQyxDQUFDc0IsTUFBTSxFQUFDLElBQUksQ0FBQ21DLFFBQVEsRUFBRTtRQUFDLEtBQUksSUFBSXZDLENBQUMsR0FBQyxJQUFJLENBQUNxSSxNQUFNLEVBQUN4SCxDQUFDLEdBQUMsSUFBSSxDQUFDbUMsR0FBRyxDQUFDb0YsWUFBWSxHQUFDLENBQUMsRUFBQy9ILENBQUMsR0FBQ1EsQ0FBQyxHQUFDLENBQUMsRUFBQ1EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0ssQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDckIsQ0FBQyxFQUFDcUIsQ0FBQyxFQUFFLEVBQUM7VUFBQyxJQUFJTyxDQUFDLEdBQUNqQyxDQUFDLENBQUMwQixDQUFDLENBQUM7WUFBQ21CLENBQUMsR0FBQ1osQ0FBQyxDQUFDK0YsSUFBSTtZQUFDN0QsQ0FBQyxHQUFDbEMsQ0FBQyxDQUFDZ0csR0FBRztVQUFDcEYsQ0FBQyxHQUFDLFFBQVEsSUFBRUEsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFDc0IsQ0FBQyxHQUFDLFFBQVEsSUFBRUEsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFDOUMsQ0FBQyxDQUFDUCxJQUFJLENBQUNxRCxDQUFDLENBQUMsRUFBQzlDLENBQUMsQ0FBQ1AsSUFBSSxDQUFDK0IsQ0FBQyxDQUFDO1FBQUE7UUFBQyxPQUFPLElBQUkxRCxDQUFDLENBQUNPLElBQUksQ0FBQzJCLENBQUMsRUFBQ1IsQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDZCxLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVO1FBQUMsS0FBSSxJQUFJeEIsQ0FBQyxHQUFDYyxDQUFDLENBQUNVLEtBQUssQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDbEMsQ0FBQyxHQUFDRCxDQUFDLENBQUM4SixNQUFNLEdBQUMsSUFBSSxDQUFDQSxNQUFNLENBQUMxSCxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUM3QixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUMsQ0FBQ2lCLEtBQUssRUFBRTtRQUFDLE9BQU94QixDQUFDO01BQUE7SUFBQyxDQUFDLENBQUM7SUFBQ08sQ0FBQyxDQUFDcUosSUFBSSxHQUFDOUksQ0FBQyxDQUFDZ0UsYUFBYSxDQUFDYyxDQUFDLENBQUMsRUFBQ3JGLENBQUMsQ0FBQ3dKLFFBQVEsR0FBQ2pKLENBQUMsQ0FBQ2lFLGlCQUFpQixDQUFDYSxDQUFDLENBQUM7RUFBQSxDQUFDLENBQUNWLElBQUksQ0FBQyxFQUFDLFlBQVU7SUFBQyxTQUFTakYsQ0FBQ0EsQ0FBQSxFQUFFO01BQUMsT0FBT3dCLENBQUMsQ0FBQ2hCLE1BQU0sQ0FBQ1ksS0FBSyxDQUFDSSxDQUFDLEVBQUNILFNBQVMsQ0FBQztJQUFBO0lBQUMsSUFBSWYsQ0FBQyxHQUFDUCxDQUFDO01BQUNXLENBQUMsR0FBQ0osQ0FBQyxDQUFDTSxHQUFHO01BQUNELENBQUMsR0FBQ0QsQ0FBQyxDQUFDNkQsTUFBTTtNQUFDMUQsQ0FBQyxHQUFDUCxDQUFDLENBQUNnSixHQUFHO01BQUM5SCxDQUFDLEdBQUNYLENBQUMsQ0FBQzBJLElBQUk7TUFBQ2xILENBQUMsR0FBQ3hCLENBQUMsQ0FBQ1ksU0FBUztNQUFDSSxDQUFDLEdBQUN2QixDQUFDLENBQUMwRSxJQUFJO01BQUNuQyxDQUFDLEdBQUMsQ0FBQzdDLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLENBQUM7TUFBQ2tELENBQUMsR0FBQyxFQUFFO0lBQUMsQ0FBQyxZQUFVO01BQUMsS0FBSSxJQUFJbkQsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNtRCxDQUFDLENBQUNuRCxDQUFDLENBQUMsR0FBQ0MsQ0FBQyxFQUFFO0lBQUEsQ0FBQyxFQUFFO0lBQUMsSUFBSXlELENBQUMsR0FBQzVCLENBQUMsQ0FBQ2tJLE1BQU0sR0FBQ3BKLENBQUMsQ0FBQ0ksTUFBTSxDQUFDO01BQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1FBQUMsSUFBSSxDQUFDaUIsS0FBSyxHQUFDLElBQUlyRCxDQUFDLENBQUNuQixJQUFJLENBQUMsQ0FBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxTQUFTLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7TUFBQSxDQUFDO01BQUNrRCxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDLEtBQUksSUFBSU0sQ0FBQyxHQUFDLElBQUksQ0FBQ29GLEtBQUssQ0FBQ2hFLEtBQUssRUFBQ2hCLENBQUMsR0FBQ0osQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDSyxDQUFDLEdBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ08sQ0FBQyxHQUFDUCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNrQixDQUFDLEdBQUNsQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMrQixDQUFDLEdBQUMvQixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUN1QixDQUFDLEdBQUN2QixDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNtRCxDQUFDLEdBQUNuRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUMrRCxDQUFDLEdBQUMvRCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNxRixDQUFDLEdBQUNqRixDQUFDLENBQUM4SSxJQUFJLEVBQUM1RCxDQUFDLEdBQUNsRixDQUFDLENBQUMrSSxHQUFHLEVBQUM1RCxDQUFDLEdBQUNsRixDQUFDLENBQUM2SSxJQUFJLEVBQUMxRCxDQUFDLEdBQUNuRixDQUFDLENBQUM4SSxHQUFHLEVBQUMxRCxDQUFDLEdBQUNsRixDQUFDLENBQUMySSxJQUFJLEVBQUN4RCxDQUFDLEdBQUNuRixDQUFDLENBQUM0SSxHQUFHLEVBQUN4RCxDQUFDLEdBQUN6RSxDQUFDLENBQUNnSSxJQUFJLEVBQUN0RCxDQUFDLEdBQUMxRSxDQUFDLENBQUNpSSxHQUFHLEVBQUN0RCxDQUFDLEdBQUM5RCxDQUFDLENBQUNtSCxJQUFJLEVBQUNwRCxDQUFDLEdBQUMvRCxDQUFDLENBQUNvSCxHQUFHLEVBQUNwRCxDQUFDLEdBQUN4RSxDQUFDLENBQUMySCxJQUFJLEVBQUNsRCxDQUFDLEdBQUN6RSxDQUFDLENBQUM0SCxHQUFHLEVBQUNsRCxDQUFDLEdBQUM5QyxDQUFDLENBQUMrRixJQUFJLEVBQUNoRCxDQUFDLEdBQUMvQyxDQUFDLENBQUNnRyxHQUFHLEVBQUNoRCxDQUFDLEdBQUNwQyxDQUFDLENBQUNtRixJQUFJLEVBQUM5QyxDQUFDLEdBQUNyQyxDQUFDLENBQUNvRixHQUFHLEVBQUM5QyxDQUFDLEdBQUNoQixDQUFDLEVBQUNpQixDQUFDLEdBQUNoQixDQUFDLEVBQUMwQyxDQUFDLEdBQUN6QyxDQUFDLEVBQUMwQyxDQUFDLEdBQUN6QyxDQUFDLEVBQUMwQyxDQUFDLEdBQUN6QyxDQUFDLEVBQUMwQyxDQUFDLEdBQUN6QyxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMvRCxDQUFDLEVBQUNnRSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztVQUFDLElBQUlDLENBQUMsR0FBQ3pILENBQUMsQ0FBQ3dILENBQUMsQ0FBQztVQUFDLElBQUdBLENBQUMsR0FBQyxF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QUFHLENBQUMsR0FBQ3lDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDdkMsQ0FBQyxHQUFDMUUsQ0FBQyxDQUFDaUksR0FBRyxHQUFDdkQsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDekksQ0FBQyxDQUFDZ0ksSUFBSSxHQUFDdkQsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytELENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDN0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDb0gsR0FBRyxHQUFDckQsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDOUgsQ0FBQyxDQUFDbUgsSUFBSSxHQUFDckQsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytELENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDN0QsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDNEgsR0FBRyxHQUFDbkQsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDeEksQ0FBQyxDQUFDMkgsSUFBSSxHQUFDbkQsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytELENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDN0QsQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDZ0csR0FBRyxHQUFDakQsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDOUcsQ0FBQyxDQUFDK0YsSUFBSSxHQUFDakQsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytELENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDN0QsQ0FBQyxHQUFDckMsQ0FBQyxDQUFDb0YsR0FBRyxHQUFDL0MsQ0FBQyxHQUFDK0QsQ0FBQyxFQUFDcEcsQ0FBQyxDQUFDbUYsSUFBSSxHQUFDL0MsQ0FBQyxHQUFDK0QsQ0FBQyxJQUFFOUQsQ0FBQyxLQUFHLENBQUMsR0FBQytE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RUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxDQUFDO01BQUNnQixDQUFDLEdBQUMsQ0FBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQztNQUFDSyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7TUFBQ08sQ0FBQyxHQUFDLENBQUM7UUFBQyxDQUFDLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsQ0FBQyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUM7TUFBTyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLE1BQU07UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxFQUFFO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLE1BQU07UUFBQyxRQUFRLEVBQUMsRUFBRTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxFQUFFO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUM7TUFBTSxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsR0FBRztRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxLQUFLO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLE1BQU0sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsQ0FBQztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxLQUFLO1FBQUMsT0FBTyxFQUFDLEdBQUc7UUFBQyxPQUFPLEVBQUMsQ0FBQztRQUFDLE9BQU8sRUFBQyxHQUFHO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsQ0FBQztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsQ0FBQztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxHQUFHO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsQ0FBQztRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUM7TUFBSyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsVUFBVTtRQUFDLEtBQUssRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxDQUFDO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsT0FBTztRQUFDLE1BQU0sRUFBQyxFQUFFO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxJQUFJO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLEtBQUssRUFBQyxVQUFVO1FBQUMsS0FBSyxFQUFDLEVBQUU7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxDQUFDO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsSUFBSTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsSUFBSTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsSUFBSTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxFQUFFO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxFQUFFO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsSUFBSTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsSUFBSTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUM7TUFBTyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsR0FBRztRQUFDLElBQUksRUFBQyxRQUFRO1FBQUMsSUFBSSxFQUFDLE1BQU07UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxDQUFDO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxRQUFRO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsR0FBRztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLE1BQU07UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxDQUFDO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLE1BQU07UUFBQyxLQUFLLEVBQUMsR0FBRztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsUUFBUTtRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLE1BQU07UUFBQyxNQUFNLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxDQUFDO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsR0FBRztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLE1BQU07UUFBQyxNQUFNLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxDQUFDO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsUUFBUTtRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUM7TUFBUyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsU0FBUztRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLElBQUk7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUM7TUFBUyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsT0FBTztRQUFDLEVBQUUsRUFBQyxRQUFRO1FBQUMsRUFBRSxFQUFDLElBQUk7UUFBQyxFQUFFLEVBQUMsT0FBTztRQUFDLEVBQUUsRUFBQyxRQUFRO1FBQUMsRUFBRSxFQUFDLENBQUM7UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLENBQUMsRUFBQyxRQUFRO1FBQUMsRUFBRSxFQUFDLENBQUM7UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxRQUFRO1FBQUMsRUFBRSxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLElBQUk7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxDQUFDO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLElBQUk7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxDQUFDO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUM7TUFBTyxDQUFDLEVBQUM7UUFBQyxDQUFDLEVBQUMsU0FBUztRQUFDLENBQUMsRUFBQyxNQUFNO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsRUFBRTtRQUFDLENBQUMsRUFBQyxNQUFNO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsU0FBUztRQUFDLENBQUMsRUFBQyxJQUFJO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsSUFBSTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxJQUFJO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDLEVBQUU7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxJQUFJO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxFQUFFO1FBQUMsRUFBRSxFQUFDLElBQUk7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxJQUFJO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxFQUFFO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxJQUFJO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUM7TUFBUyxDQUFDLENBQUM7TUFBQ1ksQ0FBQyxHQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsRUFBQyxRQUFRLEVBQUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxJQUFJLEVBQUMsR0FBRyxFQUFDLFVBQVUsQ0FBQztNQUFDc0IsQ0FBQyxHQUFDdEQsQ0FBQyxDQUFDd08sR0FBRyxHQUFD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QUFVLEdBQUMsSUFBSSxDQUFDOFIsRUFBRSxHQUFDLENBQUMsRUFBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFNBQVMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFNBQVMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQ3JDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQyxJQUFJLENBQUN5UCxFQUFFLEdBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQztNQUFDLEtBQUksSUFBSS9CLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1FBQUMsSUFBSUksQ0FBQyxHQUFDWCxDQUFDLENBQUNPLENBQUMsQ0FBQyxHQUFDTixDQUFDLENBQUNNLENBQUMsQ0FBQztVQUFDSyxDQUFDLEdBQUMsS0FBSyxHQUFDRCxDQUFDO1VBQUNHLENBQUMsR0FBQ0gsQ0FBQyxLQUFHLEVBQUU7VUFBQ2MsQ0FBQyxHQUFDLENBQUMsQ0FBQ2IsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxJQUFFQSxDQUFDLEdBQUNFLENBQUMsS0FBRyxFQUFFLElBQUVBLENBQUMsR0FBQ0EsQ0FBQztVQUFDZ0MsQ0FBQyxHQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUNuQyxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLEtBQUcsQ0FBQyxLQUFLLEdBQUNBLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsQ0FBQztRQUFDbUIsQ0FBQyxDQUFDdkIsQ0FBQyxDQUFDLEdBQUNrQixDQUFDLEdBQUNxQixDQUFDO01BQUE7TUFBQzlDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxH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QUksQ0FBQ2dSLEVBQUUsR0FBQyxDQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQyxVQUFVLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxLQUFLLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQyxVQUFVLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxLQUFLLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQyxVQUFVLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxLQUFLLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQyxVQUFVLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxLQUFLLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDLElBQUksQ0FBQytSLEVBQUUsR0FBQyxDQUFDO1VBQUMsS0FBSSxJQUFJcFIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNWLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLENBQUM7VUFBQyxLQUFJLElBQUl4QixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQ0csQ0FBQyxDQUFDSCxDQUFDLENBQUMsSUFBRUMsQ0FBQyxDQUFDRCxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsQ0FBQztVQUFDLElBQUdKLENBQUMsRUFBQztZQUFDLElBQUlrQixDQUFDLEdBQUNsQixDQUFDLENBQUNvQixLQUFLO2NBQUNXLENBQUMsR0FBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQztjQUFDSyxDQUFDLEdBQUNMLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FBQ3FCLENBQUMsR0FBQyxRQUFRLElBQUVSLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUM7Y0FBQ2EsQ0FBQyxHQUFDLFFBQVEsSUFBRXJCLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUM7Y0FBQzRCLENBQUMsR0FBQ1osQ0FBQyxLQUFHLEVBQUUsR0FBQyxVQUFVLEdBQUNLLENBQUM7Y0FBQ21CLENBQUMsR0FBQ25CLENBQUMsSUFBRSxFQUFFLEdBQUMsS0FBSyxHQUFDTCxDQUFDO1lBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVnQyxDQUFDLEVBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUU0QyxDQUFDLEVBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVxQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUV3RCxDQUFDLEVBQUN4RCxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVnQyxDQUFDLEVBQUNoQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUU0QyxDQUFDLEVBQUM1QyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVxQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUV3RCxDQUFDO1lBQUMsS0FBSSxJQUFJM0QsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNWLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLENBQUM7VUFBQTtRQUFDLENBQUM7UUFBQ2tDLGVBQWUsRUFBQyxTQUFBQSxnQkFBU3JFLENBQUMsRUFBQ08sQ0FBQyxFQUFDO1VBQUMsSUFBSUksQ0FBQyxHQUFDLElBQUksQ0FBQ2tSLEVBQUU7VUFBQzVSLENBQUMsQ0FBQ2tDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQ1YsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEVBQUNjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxFQUFDYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsRUFBQ2MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFO1VBQUMsS0FBSSxJQUFJQyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQ2EsQ0FBQyxDQUFDYixDQUFDLENBQUMsR0FBQyxRQUFRLElBQUVhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRWEsQ0FBQyxDQUFDYixDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDLEVBQUNaLENBQUMsQ0FBQ08sQ0FBQyxHQUFDSyxDQUFDLENBQUMsSUFBRWEsQ0FBQyxDQUFDYixDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUNxRCxTQUFTLEVBQUMsQ0FBQztRQUFDd0osTUFBTSxFQUFDO01BQUMsQ0FBQyxDQUFDO0lBQUNsTixDQUFDLENBQUN5UixNQUFNLEdBQUNwUixDQUFDLENBQUNrRSxhQUFhLENBQUNoQyxDQUFDLENBQUM7RUFBQSxDQUFDLEVBQUUsRUFBQzlDLENBQUMsQ0FBQzZOLElBQUksQ0FBQ29FLEdBQUcsR0FBQyxZQUFVO0lBQUMsSUFBSWhTLENBQUMsR0FBQ0QsQ0FBQyxDQUFDYSxHQUFHLENBQUNpTixlQUFlLENBQUM5TSxNQUFNLEVBQUU7TUFBQ1QsQ0FBQyxHQUFDTixDQUFDLENBQUM4TixTQUFTLEdBQUM5TixDQUFDLENBQUNlLE1BQU0sQ0FBQztRQUFDcU4sWUFBWSxFQUFDLFNBQUFBLGFBQVNyTyxDQUFDLEVBQUNDLENBQUMsRUFBQztVQUFDLElBQUlNLENBQUMsR0FBQyxJQUFJLENBQUMwTixPQUFPO1lBQUN0TixDQUFDLEdBQUNKLENBQUMsQ0FBQzBELFNBQVM7WUFBQ3JELENBQUMsR0FBQyxJQUFJLENBQUNzTixHQUFHO1lBQUNwTixDQUFDLEdBQUMsSUFBSSxDQUFDOFEsUUFBUTtVQUFDaFIsQ0FBQyxLQUFHRSxDQUFDLEdBQUMsSUFBSSxDQUFDOFEsUUFBUSxHQUFDaFIsQ0FBQyxDQUFDd0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQzhMLEdBQUcsR0FBQyxLQUFLLENBQUMsQ0FBQztVQUFDLElBQUl6TSxDQUFDLEdBQUNYLENBQUMsQ0FBQ3NCLEtBQUssQ0FBQyxDQUFDLENBQUM7VUFBQzdCLENBQUMsQ0FBQytOLFlBQVksQ0FBQzdNLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQ1gsQ0FBQyxDQUFDSCxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUNHLENBQUMsQ0FBQ0gsQ0FBQyxHQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDO1VBQUMsS0FBSSxJQUFJMkIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDM0IsQ0FBQyxFQUFDMkIsQ0FBQyxFQUFFLEVBQUN0QyxDQUFDLENBQUNDLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxJQUFFYixDQUFDLENBQUNhLENBQUMsQ0FBQztRQUFBO01BQUMsQ0FBQyxDQUFDO0lBQUMsT0FBT3JDLENBQUMsQ0FBQytOLFNBQVMsR0FBQ3pOLENBQUMsRUFBQ04sQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxTQUFTQSxDQUFDQSxDQUFBLEVBQUU7TUFBQyxLQUFJLElBQUlELENBQUMsR0FBQyxJQUFJLENBQUM2UixFQUFFLEVBQUM1UixDQUFDLEdBQUMsSUFBSSxDQUFDNlIsRUFBRSxFQUFDdlIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUMrQixDQUFDLENBQUMvQixDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7TUFBQ04sQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxHQUFDLElBQUksQ0FBQzhSLEVBQUUsR0FBQyxDQUFDLEVBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDeVAsRUFBRSxHQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUM7TUFBQyxLQUFJLElBQUkvQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDLElBQUlJLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTyxDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7VUFBQ0ssQ0FBQyxHQUFDLEtBQUssR0FBQ0QsQ0FBQztVQUFDRyxDQUFDLEdBQUNILENBQUMsS0FBRyxFQUFFO1VBQUNjLENBQUMsR0FBQyxDQUFDLENBQUNiLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDRSxDQUFDLEtBQUcsRUFBRSxJQUFFQSxDQUFDLEdBQUNBLENBQUM7VUFBQ2dDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDbkMsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsS0FBSyxHQUFDQSxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLENBQUM7UUFBQ21CLENBQUMsQ0FBQ3ZCLENBQUMsQ0FBQyxHQUFDa0IsQ0FBQyxHQUFDcUIsQ0FBQztNQUFBO01BQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQztJQUFBO0lBQUMsSUFBSXZCLENBQUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQ2lOLFlBQVk7TUFBQzlNLENBQUMsR0FBQ1AsQ0FBQyxDQUFDMEUsSUFBSTtNQUFDeEQsQ0FBQyxHQUFDLEVBQUU7TUFBQ2EsQ0FBQyxHQUFDLEVBQUU7TUFBQ1IsQ0FBQyxHQUFDLEVBQUU7TUFBQ2dCLENBQUMsR0FBQ2hDLENBQUMsQ0FBQ29SLFlBQVksR0FBQ3RSLENBQUMsQ0FBQ0ksTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsSUFBSTFFLENBQUMsR0FBQyxJQUFJLENBQUN1TixJQUFJLENBQUM1TCxLQUFLO1lBQUNwQixDQUFDLEdBQUMsSUFBSSxDQUFDa0UsR0FBRyxDQUFDb0ssRUFBRTtZQUFDbE8sQ0FBQyxHQUFDLElBQUksQ0FBQ2tSLEVBQUUsR0FBQyxDQUFDN1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDO1lBQUNZLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFLEdBQUMsQ0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxJQUFJLENBQUMrUixFQUFFLEdBQUMsQ0FBQztVQUFDLEtBQUks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QUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUMsR0FBQyxHQUFHLENBQUMsR0FBRUEsQ0FBQyxFQUFFO01BQUNQLENBQUMsQ0FBQzRCLFFBQVEsR0FBQ3JCLENBQUMsR0FBQyxDQUFDO0lBQUE7RUFBQyxDQUFDLEVBQUNQLENBQUM7QUFBQSxDQUFDLENBQUM7QUFDbmhmIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIhZnVuY3Rpb24odCxyKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1leHBvcnRzPXIoKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKFtdLHIpOnQuQ3J5cHRvSlM9cigpfSh0aGlzLGZ1bmN0aW9uKCl7dmFyIHQ9dHx8ZnVuY3Rpb24odCxyKXt2YXIgZT1PYmplY3QuY3JlYXRlfHxmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt9cmV0dXJuIGZ1bmN0aW9uKHIpe3ZhciBlO3JldHVybiB0LnByb3RvdHlwZT1yLGU9bmV3IHQsdC5wcm90b3R5cGU9bnVsbCxlfX0oKSxpPXt9LG49aS5saWI9e30sbz1uLkJhc2U9ZnVuY3Rpb24oKXtyZXR1cm57ZXh0ZW5kOmZ1bmN0aW9uKHQpe3ZhciByPWUodGhpcyk7cmV0dXJuIHQmJnIubWl4SW4odCksci5oYXNPd25Qcm9wZXJ0eShcImluaXRcIikmJnRoaXMuaW5pdCE9PXIuaW5pdHx8KHIuaW5pdD1mdW5jdGlvbigpe3IuJHN1cGVyLmluaXQuYXBwbHkodGhpcyxhcmd1bWVudHMpfSksci5pbml0LnByb3RvdHlwZT1yLHIuJHN1cGVyPXRoaXMscn0sY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5leHRlbmQoKTtyZXR1cm4gdC5pbml0LmFwcGx5KHQsYXJndW1lbnRzKSx0fSxpbml0OmZ1bmN0aW9uKCl7fSxtaXhJbjpmdW5jdGlvbih0KXtmb3IodmFyIHIgaW4gdCl0Lmhhc093blByb3BlcnR5KHIpJiYodGhpc1tyXT10W3JdKTt0Lmhhc093blByb3BlcnR5KFwidG9TdHJpbmdcIikmJih0aGlzLnRvU3RyaW5nPXQudG9TdHJpbmcpfSxjbG9uZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmluaXQucHJvdG90eXBlLmV4dGVuZCh0aGlzKX19fSgpLHM9bi5Xb3JkQXJyYXk9by5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMud29yZHM9dHx8W10sZSE9cj90aGlzLnNpZ0J5dGVzPWU6dGhpcy5zaWdCeXRlcz00KnQubGVuZ3RofSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4odHx8Yykuc3RyaW5naWZ5KHRoaXMpfSxjb25jYXQ6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy53b3JkcyxlPXQud29yZHMsaT10aGlzLnNpZ0J5dGVzLG49dC5zaWdCeXRlcztpZih0aGlzLmNsYW1wKCksaSU0KWZvcih2YXIgbz0wO288bjtvKyspe3ZhciBzPWVbbz4+PjJdPj4+MjQtbyU0KjgmMjU1O3JbaStvPj4+Ml18PXM8PDI0LShpK28pJTQqOH1lbHNlIGZvcih2YXIgbz0wO288bjtvKz00KXJbaStvPj4+Ml09ZVtvPj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPW4sdGhpc30sY2xhbXA6ZnVuY3Rpb24oKXt2YXIgcj10aGlzLndvcmRzLGU9dGhpcy5zaWdCeXRlcztyW2U+Pj4yXSY9NDI5NDk2NzI5NTw8MzItZSU0Kjgsci5sZW5ndGg9dC5jZWlsKGUvNCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksdH0scmFuZG9tOmZ1bmN0aW9uKHIpe2Zvcih2YXIgZSxpPVtdLG49ZnVuY3Rpb24ocil7dmFyIHI9cixlPTk4NzY1NDMyMSxpPTQyOTQ5NjcyOTU7cmV0dXJuIGZ1bmN0aW9uKCl7ZT0zNjk2OSooNjU1MzUmZSkrKGU+PjE2KSZpLHI9MThlMyooNjU1MzUmcikrKHI+PjE2KSZpO3ZhciBuPShlPDwxNikrciZpO3JldHVybiBuLz00Mjk0OTY3Mjk2LG4rPS41LG4qKHQucmFuZG9tKCk+LjU/MTotMSl9fSxvPTA7bzxyO28rPTQpe3ZhciBhPW4oNDI5NDk2NzI5NiooZXx8dC5yYW5kb20oKSkpO2U9OTg3NjU0MDcxKmEoKSxpLnB1c2goNDI5NDk2NzI5NiphKCl8MCl9cmV0dXJuIG5ldyBzLmluaXQoaSxyKX19KSxhPWkuZW5jPXt9LGM9YS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rKyl7dmFyIG89cltuPj4+Ml0+Pj4yNC1uJTQqOCYyNTU7aS5wdXNoKChvPj4+NCkudG9TdHJpbmcoMTYpKSxpLnB1c2goKDE1Jm8pLnRvU3RyaW5nKDE2KSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKz0yKWVbaT4+PjNdfD1wYXJzZUludCh0LnN1YnN0cihpLDIpLDE2KTw8MjQtaSU4KjQ7cmV0dXJuIG5ldyBzLmluaXQoZSxyLzIpfX0saD1hLkxhdGluMT17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPVtdLG49MDtuPGU7bisrKXt2YXIgbz1yW24+Pj4yXT4+PjI0LW4lNCo4JjI1NTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShvKSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+Ml18PSgyNTUmdC5jaGFyQ29kZUF0KGkpKTw8MjQtaSU0Kjg7cmV0dXJuIG5ldyBzLmluaXQoZSxyKX19LGw9YS5VdGY4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dHJ5e3JldHVybiBkZWNvZGVVUklDb21wb25lbnQoZXNjYXBlKGguc3RyaW5naWZ5KHQpKSl9Y2F0Y2godCl7dGhyb3cgbmV3IEVycm9yKFwiTWFsZm9ybWVkIFVURi04IGRhdGFcIil9fSxwYXJzZTpmdW5jdGlvbih0KXtyZXR1cm4gaC5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpKX19LGY9bi5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtPW8uZXh0ZW5kKHtyZXNldDpmdW5jdGlvbigpe3RoaXMuX2RhdGE9bmV3IHMuaW5pdCx0aGlzLl9uRGF0YUJ5dGVzPTB9LF9hcHBlbmQ6ZnVuY3Rpb24odCl7XCJzdHJpbmdcIj09dHlwZW9mIHQmJih0PWwucGFyc2UodCkpLHRoaXMuX2RhdGEuY29uY2F0KHQpLHRoaXMuX25EYXRhQnl0ZXMrPXQuc2lnQnl0ZXN9LF9wcm9jZXNzOmZ1bmN0aW9uKHIpe3ZhciBlPXRoaXMuX2RhdGEsaT1lLndvcmRzLG49ZS5zaWdCeXRlcyxvPXRoaXMuYmxvY2tTaXplLGE9NCpvLGM9bi9hO2M9cj90LmNlaWwoYyk6dC5tYXgoKDB8YyktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKTt2YXIgaD1jKm8sbD10Lm1pbig0Kmgsbik7aWYoaCl7Zm9yKHZhciBmPTA7ZjxoO2YrPW8pdGhpcy5fZG9Qcm9jZXNzQmxvY2soaSxmKTt2YXIgdT1pLnNwbGljZSgwLGgpO2Uuc2lnQnl0ZXMtPWx9cmV0dXJuIG5ldyBzLmluaXQodSxsKX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1vLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2RhdGE9dGhpcy5fZGF0YS5jbG9uZSgpLHR9LF9taW5CdWZmZXJTaXplOjB9KSx1PShuLkhhc2hlcj1mLmV4dGVuZCh7Y2ZnOm8uZXh0ZW5kKCksaW5pdDpmdW5jdGlvbih0KXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQodCksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe2YucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fYXBwZW5kKHQpLHRoaXMuX3Byb2Nlc3MoKSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLl9hcHBlbmQodCk7dmFyIHI9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiByfSxibG9ja1NpemU6MTYsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbmV3IHQuaW5pdChlKS5maW5hbGl6ZShyKX19LF9jcmVhdGVIbWFjSGVscGVyOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihyLGUpe3JldHVybiBuZXcgdS5ITUFDLmluaXQodCxlKS5maW5hbGl6ZShyKX19fSksaS5hbGdvPXt9KTtyZXR1cm4gaX0oTWF0aCk7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIsZSl7Zm9yKHZhciBpPVtdLG89MCxzPTA7czxyO3MrKylpZihzJTQpe3ZhciBhPWVbdC5jaGFyQ29kZUF0KHMtMSldPDxzJTQqMixjPWVbdC5jaGFyQ29kZUF0KHMpXT4+PjYtcyU0KjI7aVtvPj4+Ml18PShhfGMpPDwyNC1vJTQqOCxvKyt9cmV0dXJuIG4uY3JlYXRlKGksbyl9dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1lLmVuYztvLkJhc2U2ND17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9dGhpcy5fbWFwO3QuY2xhbXAoKTtmb3IodmFyIG49W10sbz0wO288ZTtvKz0zKWZvcih2YXIgcz1yW28+Pj4yXT4+PjI0LW8lNCo4JjI1NSxhPXJbbysxPj4+Ml0+Pj4yNC0obysxKSU0KjgmMjU1LGM9cltvKzI+Pj4yXT4+PjI0LShvKzIpJTQqOCYyNTUsaD1zPDwxNnxhPDw4fGMsbD0wO2w8NCYmbysuNzUqbDxlO2wrKyluLnB1c2goaS5jaGFyQXQoaD4+PjYqKDMtbCkmNjMpKTt2YXIgZj1pLmNoYXJBdCg2NCk7aWYoZilmb3IoO24ubGVuZ3RoJTQ7KW4ucHVzaChmKTtyZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxpPXRoaXMuX21hcCxuPXRoaXMuX3JldmVyc2VNYXA7aWYoIW4pe249dGhpcy5fcmV2ZXJzZU1hcD1bXTtmb3IodmFyIG89MDtvPGkubGVuZ3RoO28rKyluW2kuY2hhckNvZGVBdChvKV09b312YXIgcz1pLmNoYXJBdCg2NCk7aWYocyl7dmFyIGE9dC5pbmRleE9mKHMpO2EhPT0tMSYmKGU9YSl9cmV0dXJuIHIodCxlLG4pfSxfbWFwOlwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz1cIn19KCksZnVuY3Rpb24ocil7ZnVuY3Rpb24gZSh0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyJmV8fnImaSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIGkodCxyLGUsaSxuLG8scyl7dmFyIGE9dCsociZpfGUmfmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBuKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHJeZV5pKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gbyh0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhlXihyfH5pKSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfXZhciBzPXQsYT1zLmxpYixjPWEuV29yZEFycmF5LGg9YS5IYXNoZXIsbD1zLmFsZ28sZj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDY0O3QrKylmW3RdPTQyOTQ5NjcyOTYqci5hYnMoci5zaW4odCsxKSl8MH0oKTt2YXIgdT1sLk1ENT1oLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBjLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIHM9MDtzPDE2O3MrKyl7dmFyIGE9citzLGM9dFthXTt0W2FdPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpfXZhciBoPXRoaXMuX2hhc2gud29yZHMsbD10W3IrMF0sdT10W3IrMV0sZD10W3IrMl0sdj10W3IrM10scD10W3IrNF0sXz10W3IrNV0seT10W3IrNl0sZz10W3IrN10sQj10W3IrOF0sdz10W3IrOV0saz10W3IrMTBdLFM9dFtyKzExXSxtPXRbcisxMl0seD10W3IrMTNdLGI9dFtyKzE0XSxIPXRbcisxNV0sej1oWzBdLEE9aFsxXSxDPWhbMl0sRD1oWzNdO3o9ZSh6LEEsQyxELGwsNyxmWzBdKSxEPWUoRCx6LEEsQyx1LDEyLGZbMV0pLEM9ZShDLEQseixBLGQsMTcsZlsyXSksQT1lKEEsQyxELHosdiwyMixmWzNdKSx6PWUoeixBLEMsRCxwLDcsZls0XSksRD1lKEQseixBLEMsXywxMixmWzVdKSxDPWUoQyxELHosQSx5LDE3LGZbNl0pLEE9ZShBLEMsRCx6LGcsMjIsZls3XSksej1lKHosQSxDLEQsQiw3LGZbOF0pLEQ9ZShELHosQSxDLHcsMTIsZls5XSksQz1lKEMsRCx6LEEsaywxNyxmWzEwXSksQT1lKEEsQyxELHosUywyMixmWzExXSksej1lKHosQSxDLEQsbSw3LGZbMTJdKSxEPWUoRCx6LEEsQyx4LDEyLGZbMTNdKSxDPWUoQyxELHosQSxiLDE3LGZbMTRdKSxBPWUoQSxDLEQseixILDIyLGZbMTVdKSx6PWkoeixBLEMsRCx1LDUsZlsxNl0pLEQ9aShELHosQSxDLHksOSxmWzE3XSksQz1pKEMsRCx6LEEsUywxNCxmWzE4XSksQT1pKEEsQyxELHosbCwyMCxmWzE5XSksej1pKHosQSxDLEQsXyw1LGZbMjBdKSxEPWkoRCx6LEEsQyxrLDksZlsyMV0pLEM9aShDLEQseixBLEgsMTQsZlsyMl0pLEE9aShBLEMsRCx6LHAsMjAsZlsyM10pLHo9aSh6LEEsQyxELHcsNSxmWzI0XSksRD1pKEQseixBLEMsYiw5LGZbMjVdKSxDPWkoQyxELHosQSx2LDE0LGZbMjZdKSxBPWkoQSxDLEQseixCLDIwLGZbMjddKSx6PWkoeixBLEMsRCx4LDUsZlsyOF0pLEQ9aShELHosQSxDLGQsOSxmWzI5XSksQz1pKEMsRCx6LEEsZywxNCxmWzMwXSksQT1pKEEsQyxELHosbSwyMCxmWzMxXSksej1uKHosQSxDLEQsXyw0LGZbMzJdKSxEPW4oRCx6LEEsQyxCLDExLGZbMzNdKSxDPW4oQyxELHosQSxTLDE2LGZbMzRdKSxBPW4oQSxDLEQseixiLDIzLGZbMzVdKSx6PW4oeixBLEMsRCx1LDQsZlszNl0pLEQ9bihELHosQSxDLHAsMTEsZlszN10pLEM9bihDLEQseixBLGcsMTYsZlszOF0pLEE9bihBLEMsRCx6LGssMjMsZlszOV0pLHo9bih6LEEsQyxELHgsNCxmWzQwXSksRD1uKEQseixBLEMsbCwxMSxmWzQxXSksQz1uKEMsRCx6LEEsdiwxNixmWzQyXSksQT1uKEEsQyxELHoseSwyMyxmWzQzXSksej1uKHosQSxDLEQsdyw0LGZbNDRdKSxEPW4oRCx6LEEsQyxtLDExLGZbNDVdKSxDPW4oQyxELHosQSxILDE2LGZbNDZdKSxBPW4oQSxDLEQseixkLDIzLGZbNDddKSx6PW8oeixBLEMsRCxsLDYsZls0OF0pLEQ9byhELHosQSxDLGcsMTAsZls0OV0pLEM9byhDLEQseixBLGIsMTUsZls1MF0pLEE9byhBLEMsRCx6LF8sMjEsZls1MV0pLHo9byh6LEEsQyxELG0sNixmWzUyXSksRD1vKEQseixBLEMsdiwxMCxmWzUzXSksQz1vKEMsRCx6LEEsaywxNSxmWzU0XSksQT1vKEEsQyxELHosdSwyMSxmWzU1XSksej1vKHosQSxDLEQsQiw2LGZbNTZdKSxEPW8oRCx6LEEsQyxILDEwLGZbNTddKSxDPW8oQyxELHosQSx5LDE1LGZbNThdKSxBPW8oQSxDLEQseix4LDIxLGZbNTldKSx6PW8oeixBLEMsRCxwLDYsZls2MF0pLEQ9byhELHosQSxDLFMsMTAsZls2MV0pLEM9byhDLEQseixBLGQsMTUsZls2Ml0pLEE9byhBLEMsRCx6LHcsMjEsZls2M10pLGhbMF09aFswXSt6fDAsaFsxXT1oWzFdK0F8MCxoWzJdPWhbMl0rQ3wwLGhbM109aFszXStEfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsaT04KnRoaXMuX25EYXRhQnl0ZXMsbj04KnQuc2lnQnl0ZXM7ZVtuPj4+NV18PTEyODw8MjQtbiUzMjt2YXIgbz1yLmZsb29yKGkvNDI5NDk2NzI5Nikscz1pO2VbKG4rNjQ+Pj45PDw0KSsxNV09MTY3MTE5MzUmKG88PDh8bz4+PjI0KXw0Mjc4MjU1MzYwJihvPDwyNHxvPj4+OCksZVsobis2ND4+Pjk8PDQpKzE0XT0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KSx0LnNpZ0J5dGVzPTQqKGUubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIGE9dGhpcy5faGFzaCxjPWEud29yZHMsaD0wO2g8NDtoKyspe3ZhciBsPWNbaF07Y1toXT0xNjcxMTkzNSYobDw8OHxsPj4+MjQpfDQyNzgyNTUzNjAmKGw8PDI0fGw+Pj44KX1yZXR1cm4gYX0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1oLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7cy5NRDU9aC5fY3JlYXRlSGVscGVyKHUpLHMuSG1hY01ENT1oLl9jcmVhdGVIbWFjSGVscGVyKHUpfShNYXRoKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49ZS5IYXNoZXIsbz1yLmFsZ28scz1bXSxhPW8uU0hBMT1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBpLmluaXQoWzE3MzI1ODQxOTMsNDAyMzIzMzQxNywyNTYyMzgzMTAyLDI3MTczMzg3OCwzMjg1Mzc3NTIwXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLGE9ZVszXSxjPWVbNF0saD0wO2g8ODA7aCsrKXtpZihoPDE2KXNbaF09MHx0W3IraF07ZWxzZXt2YXIgbD1zW2gtM11ec1toLThdXnNbaC0xNF1ec1toLTE2XTtzW2hdPWw8PDF8bD4+PjMxfXZhciBmPShpPDw1fGk+Pj4yNykrYytzW2hdO2YrPWg8MjA/KG4mb3x+biZhKSsxNTE4NTAwMjQ5Omg8NDA/KG5eb15hKSsxODU5Nzc1MzkzOmg8NjA/KG4mb3xuJmF8byZhKS0xODk0MDA3NTg4OihuXm9eYSktODk5NDk3NTE0LGM9YSxhPW8sbz1uPDwzMHxuPj4+MixuPWksaT1mfWVbMF09ZVswXStpfDAsZVsxXT1lWzFdK258MCxlWzJdPWVbMl0rb3wwLGVbM109ZVszXSthfDAsZVs0XT1lWzRdK2N8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyZXR1cm4gcltpPj4+NV18PTEyODw8MjQtaSUzMixyWyhpKzY0Pj4+OTw8NCkrMTRdPU1hdGguZmxvb3IoZS80Mjk0OTY3Mjk2KSxyWyhpKzY0Pj4+OTw8NCkrMTVdPWUsdC5zaWdCeXRlcz00KnIubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW4uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtyLlNIQTE9bi5fY3JlYXRlSGVscGVyKGEpLHIuSG1hY1NIQTE9bi5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWkuSGFzaGVyLHM9ZS5hbGdvLGE9W10sYz1bXTshZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe2Zvcih2YXIgZT1yLnNxcnQodCksaT0yO2k8PWU7aSsrKWlmKCEodCVpKSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBlKHQpe3JldHVybiA0Mjk0OTY3Mjk2Kih0LSgwfHQpKXwwfWZvcih2YXIgaT0yLG49MDtuPDY0Oyl0KGkpJiYobjw4JiYoYVtuXT1lKHIucG93KGksLjUpKSksY1tuXT1lKHIucG93KGksMS8zKSksbisrKSxpKyt9KCk7dmFyIGg9W10sbD1zLlNIQTI1Nj1vLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBuLmluaXQoYS5zbGljZSgwKSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLHM9ZVszXSxhPWVbNF0sbD1lWzVdLGY9ZVs2XSx1PWVbN10sZD0wO2Q8NjQ7ZCsrKXtpZihkPDE2KWhbZF09MHx0W3IrZF07ZWxzZXt2YXIgdj1oW2QtMTVdLHA9KHY8PDI1fHY+Pj43KV4odjw8MTR8dj4+PjE4KV52Pj4+MyxfPWhbZC0yXSx5PShfPDwxNXxfPj4+MTcpXihfPDwxM3xfPj4+MTkpXl8+Pj4xMDtoW2RdPXAraFtkLTddK3kraFtkLTE2XX12YXIgZz1hJmxefmEmZixCPWkmbl5pJm9ebiZvLHc9KGk8PDMwfGk+Pj4yKV4oaTw8MTl8aT4+PjEzKV4oaTw8MTB8aT4+PjIyKSxrPShhPDwyNnxhPj4+NileKGE8PDIxfGE+Pj4xMSleKGE8PDd8YT4+PjI1KSxTPXUraytnK2NbZF0raFtkXSxtPXcrQjt1PWYsZj1sLGw9YSxhPXMrU3wwLHM9byxvPW4sbj1pLGk9UyttfDB9ZVswXT1lWzBdK2l8MCxlWzFdPWVbMV0rbnwwLGVbMl09ZVsyXStvfDAsZVszXT1lWzNdK3N8MCxlWzRdPWVbNF0rYXwwLGVbNV09ZVs1XStsfDAsZVs2XT1lWzZdK2Z8MCxlWzddPWVbN10rdXwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9OCp0aGlzLl9uRGF0YUJ5dGVzLG49OCp0LnNpZ0J5dGVzO3JldHVybiBlW24+Pj41XXw9MTI4PDwyNC1uJTMyLGVbKG4rNjQ+Pj45PDw0KSsxNF09ci5mbG9vcihpLzQyOTQ5NjcyOTYpLGVbKG4rNjQ+Pj45PDw0KSsxNV09aSx0LnNpZ0J5dGVzPTQqZS5sZW5ndGgsdGhpcy5fcHJvY2VzcygpLHRoaXMuX2hhc2h9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO2UuU0hBMjU2PW8uX2NyZWF0ZUhlbHBlcihsKSxlLkhtYWNTSEEyNTY9by5fY3JlYXRlSG1hY0hlbHBlcihsKX0oTWF0aCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQpe3JldHVybiB0PDw4JjQyNzgyNTUzNjB8dD4+PjgmMTY3MTE5MzV9dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1lLmVuYztvLlV0ZjE2PW8uVXRmMTZCRT17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPVtdLG49MDtuPGU7bis9Mil7dmFyIG89cltuPj4+Ml0+Pj4xNi1uJTQqOCY2NTUzNTtpLnB1c2goU3RyaW5nLmZyb21DaGFyQ29kZShvKSl9cmV0dXJuIGkuam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQubGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+MV18PXQuY2hhckNvZGVBdChpKTw8MTYtaSUyKjE2O3JldHVybiBuLmNyZWF0ZShlLDIqcil9fTtvLlV0ZjE2TEU9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC53b3JkcyxpPXQuc2lnQnl0ZXMsbj1bXSxvPTA7bzxpO28rPTIpe3ZhciBzPXIoZVtvPj4+Ml0+Pj4xNi1vJTQqOCY2NTUzNSk7bi5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUocykpfXJldHVybiBuLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxpPVtdLG89MDtvPGU7bysrKWlbbz4+PjFdfD1yKHQuY2hhckNvZGVBdChvKTw8MTYtbyUyKjE2KTtyZXR1cm4gbi5jcmVhdGUoaSwyKmUpfX19KCksZnVuY3Rpb24oKXtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBBcnJheUJ1ZmZlcil7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1pLmluaXQsbz1pLmluaXQ9ZnVuY3Rpb24odCl7aWYodCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyJiYodD1uZXcgVWludDhBcnJheSh0KSksKHQgaW5zdGFuY2VvZiBJbnQ4QXJyYXl8fFwidW5kZWZpbmVkXCIhPXR5cGVvZiBVaW50OENsYW1wZWRBcnJheSYmdCBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHx0IGluc3RhbmNlb2YgSW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHx0IGluc3RhbmNlb2YgSW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIFVpbnQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQzMkFycmF5fHx0IGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSYmKHQ9bmV3IFVpbnQ4QXJyYXkodC5idWZmZXIsdC5ieXRlT2Zmc2V0LHQuYnl0ZUxlbmd0aCkpLHQgaW5zdGFuY2VvZiBVaW50OEFycmF5KXtmb3IodmFyIHI9dC5ieXRlTGVuZ3RoLGU9W10saT0wO2k8cjtpKyspZVtpPj4+Ml18PXRbaV08PDI0LWklNCo4O24uY2FsbCh0aGlzLGUscil9ZWxzZSBuLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07by5wcm90b3R5cGU9aX19KCksZnVuY3Rpb24ocil7ZnVuY3Rpb24gZSh0LHIsZSl7cmV0dXJuIHRecl5lfWZ1bmN0aW9uIGkodCxyLGUpe3JldHVybiB0JnJ8fnQmZX1mdW5jdGlvbiBuKHQscixlKXtyZXR1cm4odHx+cileZX1mdW5jdGlvbiBvKHQscixlKXtyZXR1cm4gdCZlfHImfmV9ZnVuY3Rpb24gcyh0LHIsZSl7cmV0dXJuIHReKHJ8fmUpfWZ1bmN0aW9uIGEodCxyKXtyZXR1cm4gdDw8cnx0Pj4+MzItcn12YXIgYz10LGg9Yy5saWIsbD1oLldvcmRBcnJheSxmPWguSGFzaGVyLHU9Yy5hbGdvLGQ9bC5jcmVhdGUoWzAsMSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsNyw0LDEzLDEsMTAsNiwxNSwzLDEyLDAsOSw1LDIsMTQsMTEsOCwzLDEwLDE0LDQsOSwxNSw4LDEsMiw3LDAsNiwxMywxMSw1LDEyLDEsOSwxMSwxMCwwLDgsMTIsNCwxMywzLDcsMTUsMTQsNSw2LDIsNCwwLDUsOSw3LDEyLDIsMTAsMTQsMSwzLDgsMTEsNiwxNSwxM10pLHY9bC5jcmVhdGUoWzUsMTQsNywwLDksMiwxMSw0LDEzLDYsMTUsOCwxLDEwLDMsMTIsNiwxMSwzLDcsMCwxMyw1LDEwLDE0LDE1LDgsMTIsNCw5LDEsMiwxNSw1LDEsMyw3LDE0LDYsOSwxMSw4LDEyLDIsMTAsMCw0LDEzLDgsNiw0LDEsMywxMSwxNSwwLDUsMTIsMiwxMyw5LDcsMTAsMTQsMTIsMTUsMTAsNCwxLDUsOCw3LDYsMiwxMywxNCwwLDMsOSwxMV0pLHA9bC5jcmVhdGUoWzExLDE0LDE1LDEyLDUsOCw3LDksMTEsMTMsMTQsMTUsNiw3LDksOCw3LDYsOCwxMywxMSw5LDcsMTUsNywxMiwxNSw5LDExLDcsMTMsMTIsMTEsMTMsNiw3LDE0LDksMTMsMTUsMTQsOCwxMyw2LDUsMTIsNyw1LDExLDEyLDE0LDE1LDE0LDE1LDksOCw5LDE0LDUsNiw4LDYsNSwxMiw5LDE1LDUsMTEsNiw4LDEzLDEyLDUsMTIsMTMsMTQsMTEsOCw1LDZdKSxfPWwuY3JlYXRlKFs4LDksOSwxMSwxMywxNSwxNSw1LDcsNyw4LDExLDE0LDE0LDEyLDYsOSwxMywxNSw3LDEyLDgsOSwxMSw3LDcsMTIsNyw2LDE1LDEzLDExLDksNywxNSwxMSw4LDYsNiwxNCwxMiwxMyw1LDE0LDEzLDEzLDcsNSwxNSw1LDgsMTEsMTQsMTQsNiwxNCw2LDksMTIsOSwxMiw1LDE1LDgsOCw1LDEyLDksMTIsNSwxNCw2LDgsMTMsNiw1LDE1LDEzLDExLDExXSkseT1sLmNyZWF0ZShbMCwxNTE4NTAwMjQ5LDE4NTk3NzUzOTMsMjQwMDk1OTcwOCwyODQwODUzODM4XSksZz1sLmNyZWF0ZShbMTM1MjgyOTkyNiwxNTQ4NjAzNjg0LDE4MzYwNzI2OTEsMjA1Mzk5NDIxNywwXSksQj11LlJJUEVNRDE2MD1mLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPWwuY3JlYXRlKFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGM9MDtjPDE2O2MrKyl7dmFyIGg9citjLGw9dFtoXTt0W2hdPTE2NzExOTM1JihsPDw4fGw+Pj4yNCl8NDI3ODI1NTM2MCYobDw8MjR8bD4+PjgpfXZhciBmLHUsQix3LGssUyxtLHgsYixILHo9dGhpcy5faGFzaC53b3JkcyxBPXkud29yZHMsQz1nLndvcmRzLEQ9ZC53b3JkcyxSPXYud29yZHMsRT1wLndvcmRzLE09Xy53b3JkcztTPWY9elswXSxtPXU9elsxXSx4PUI9elsyXSxiPXc9elszXSxIPWs9els0XTtmb3IodmFyIEYsYz0wO2M8ODA7Yys9MSlGPWYrdFtyK0RbY11dfDAsRis9YzwxNj9lKHUsQix3KStBWzBdOmM8MzI/aSh1LEIsdykrQVsxXTpjPDQ4P24odSxCLHcpK0FbMl06Yzw2ND9vKHUsQix3KStBWzNdOnModSxCLHcpK0FbNF0sRnw9MCxGPWEoRixFW2NdKSxGPUYra3wwLGY9ayxrPXcsdz1hKEIsMTApLEI9dSx1PUYsRj1TK3RbcitSW2NdXXwwLEYrPWM8MTY/cyhtLHgsYikrQ1swXTpjPDMyP28obSx4LGIpK0NbMV06Yzw0OD9uKG0seCxiKStDWzJdOmM8NjQ/aShtLHgsYikrQ1szXTplKG0seCxiKStDWzRdLEZ8PTAsRj1hKEYsTVtjXSksRj1GK0h8MCxTPUgsSD1iLGI9YSh4LDEwKSx4PW0sbT1GO0Y9elsxXStCK2J8MCx6WzFdPXpbMl0rdytIfDAselsyXT16WzNdK2srU3wwLHpbM109els0XStmK218MCx6WzRdPXpbMF0rdSt4fDAselswXT1GfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj10LndvcmRzLGU9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCp0LnNpZ0J5dGVzO3JbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSs2ND4+Pjk8PDQpKzE0XT0xNjcxMTkzNSYoZTw8OHxlPj4+MjQpfDQyNzgyNTUzNjAmKGU8PDI0fGU+Pj44KSx0LnNpZ0J5dGVzPTQqKHIubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIG49dGhpcy5faGFzaCxvPW4ud29yZHMscz0wO3M8NTtzKyspe3ZhciBhPW9bc107b1tzXT0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KX1yZXR1cm4gbn0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1mLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7Yy5SSVBFTUQxNjA9Zi5fY3JlYXRlSGVscGVyKEIpLGMuSG1hY1JJUEVNRDE2MD1mLl9jcmVhdGVIbWFjSGVscGVyKEIpfShNYXRoKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPXIuZW5jLG89bi5VdGY4LHM9ci5hbGdvO3MuSE1BQz1pLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LHIpe3Q9dGhpcy5faGFzaGVyPW5ldyB0LmluaXQsXCJzdHJpbmdcIj09dHlwZW9mIHImJihyPW8ucGFyc2UocikpO3ZhciBlPXQuYmxvY2tTaXplLGk9NCplO3Iuc2lnQnl0ZXM+aSYmKHI9dC5maW5hbGl6ZShyKSksci5jbGFtcCgpO2Zvcih2YXIgbj10aGlzLl9vS2V5PXIuY2xvbmUoKSxzPXRoaXMuX2lLZXk9ci5jbG9uZSgpLGE9bi53b3JkcyxjPXMud29yZHMsaD0wO2g8ZTtoKyspYVtoXV49MTU0OTU1NjgyOCxjW2hdXj05MDk1MjI0ODY7bi5zaWdCeXRlcz1zLnNpZ0J5dGVzPWksdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2hhc2hlcjt0LnJlc2V0KCksdC51cGRhdGUodGhpcy5faUtleSl9LHVwZGF0ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5faGFzaGVyLnVwZGF0ZSh0KSx0aGlzfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt2YXIgcj10aGlzLl9oYXNoZXIsZT1yLmZpbmFsaXplKHQpO3IucmVzZXQoKTt2YXIgaT1yLmZpbmFsaXplKHRoaXMuX29LZXkuY2xvbmUoKS5jb25jYXQoZSkpO3JldHVybiBpfX0pfSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLlNIQTEsYT1vLkhNQUMsYz1vLlBCS0RGMj1pLmV4dGVuZCh7Y2ZnOmkuZXh0ZW5kKHtrZXlTaXplOjQsaGFzaGVyOnMsaXRlcmF0aW9uczoxfSksaW5pdDpmdW5jdGlvbih0KXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQodCl9LGNvbXB1dGU6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5jZmcsaT1hLmNyZWF0ZShlLmhhc2hlcix0KSxvPW4uY3JlYXRlKCkscz1uLmNyZWF0ZShbMV0pLGM9by53b3JkcyxoPXMud29yZHMsbD1lLmtleVNpemUsZj1lLml0ZXJhdGlvbnM7Yy5sZW5ndGg8bDspe3ZhciB1PWkudXBkYXRlKHIpLmZpbmFsaXplKHMpO2kucmVzZXQoKTtmb3IodmFyIGQ9dS53b3Jkcyx2PWQubGVuZ3RoLHA9dSxfPTE7XzxmO18rKyl7cD1pLmZpbmFsaXplKHApLGkucmVzZXQoKTtmb3IodmFyIHk9cC53b3JkcyxnPTA7Zzx2O2crKylkW2ddXj15W2ddfW8uY29uY2F0KHUpLGhbMF0rK31yZXR1cm4gby5zaWdCeXRlcz00Kmwsb319KTtyLlBCS0RGMj1mdW5jdGlvbih0LHIsZSl7cmV0dXJuIGMuY3JlYXRlKGUpLmNvbXB1dGUodCxyKX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uTUQ1LGE9by5FdnBLREY9aS5leHRlbmQoe2NmZzppLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjpzLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpfSxjb21wdXRlOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuY2ZnLGk9ZS5oYXNoZXIuY3JlYXRlKCksbz1uLmNyZWF0ZSgpLHM9by53b3JkcyxhPWUua2V5U2l6ZSxjPWUuaXRlcmF0aW9ucztzLmxlbmd0aDxhOyl7aCYmaS51cGRhdGUoaCk7dmFyIGg9aS51cGRhdGUodCkuZmluYWxpemUocik7aS5yZXNldCgpO2Zvcih2YXIgbD0xO2w8YztsKyspaD1pLmZpbmFsaXplKGgpLGkucmVzZXQoKTtvLmNvbmNhdChoKX1yZXR1cm4gby5zaWdCeXRlcz00KmEsb319KTtyLkV2cEtERj1mdW5jdGlvbih0LHIsZSl7cmV0dXJuIGEuY3JlYXRlKGUpLmNvbXB1dGUodCxyKX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPXIuYWxnbyxvPW4uU0hBMjU2LHM9bi5TSEEyMjQ9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFszMjM4MzcxMDMyLDkxNDE1MDY2Myw4MTI3MDI5OTksNDE0NDkxMjY5Nyw0MjkwNzc1ODU3LDE3NTA2MDMwMjUsMTY5NDA3NjgzOSwzMjA0MDc1NDI4XSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9by5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO3JldHVybiB0LnNpZ0J5dGVzLT00LHR9fSk7ci5TSEEyMjQ9by5fY3JlYXRlSGVscGVyKHMpLHIuSG1hY1NIQTIyND1vLl9jcmVhdGVIbWFjSGVscGVyKHMpfSgpLGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQmFzZSxvPWkuV29yZEFycmF5LHM9ZS54NjQ9e307cy5Xb3JkPW4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQscil7dGhpcy5oaWdoPXQsdGhpcy5sb3c9cn19KSxzLldvcmRBcnJheT1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LGUpe3Q9dGhpcy53b3Jkcz10fHxbXSxlIT1yP3RoaXMuc2lnQnl0ZXM9ZTp0aGlzLnNpZ0J5dGVzPTgqdC5sZW5ndGh9LHRvWDMyOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMud29yZHMscj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKXt2YXIgbj10W2ldO2UucHVzaChuLmhpZ2gpLGUucHVzaChuLmxvdyl9cmV0dXJuIG8uY3JlYXRlKGUsdGhpcy5zaWdCeXRlcyl9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW4uY2xvbmUuY2FsbCh0aGlzKSxyPXQud29yZHM9dGhpcy53b3Jkcy5zbGljZSgwKSxlPXIubGVuZ3RoLGk9MDtpPGU7aSsrKXJbaV09cltpXS5jbG9uZSgpO3JldHVybiB0fX0pfSgpLGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89aS5IYXNoZXIscz1lLng2NCxhPXMuV29yZCxjPWUuYWxnbyxoPVtdLGw9W10sZj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MSxyPTAsZT0wO2U8MjQ7ZSsrKXtoW3QrNSpyXT0oZSsxKSooZSsyKS8yJTY0O3ZhciBpPXIlNSxuPSgyKnQrMypyKSU1O3Q9aSxyPW59Zm9yKHZhciB0PTA7dDw1O3QrKylmb3IodmFyIHI9MDtyPDU7cisrKWxbdCs1KnJdPXIrKDIqdCszKnIpJTUqNTtmb3IodmFyIG89MSxzPTA7czwyNDtzKyspe2Zvcih2YXIgYz0wLHU9MCxkPTA7ZDw3O2QrKyl7aWYoMSZvKXt2YXIgdj0oMTw8ZCktMTt2PDMyP3VePTE8PHY6Y149MTw8di0zMn0xMjgmbz9vPW88PDFeMTEzOm88PD0xfWZbc109YS5jcmVhdGUoYyx1KX19KCk7dmFyIHU9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDwyNTt0KyspdVt0XT1hLmNyZWF0ZSgpfSgpO3ZhciBkPWMuU0hBMz1vLmV4dGVuZCh7Y2ZnOm8uY2ZnLmV4dGVuZCh7b3V0cHV0TGVuZ3RoOjUxMn0pLF9kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX3N0YXRlPVtdLHI9MDtyPDI1O3IrKyl0W3JdPW5ldyBhLmluaXQ7dGhpcy5ibG9ja1NpemU9KDE2MDAtMip0aGlzLmNmZy5vdXRwdXRMZW5ndGgpLzMyfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5fc3RhdGUsaT10aGlzLmJsb2NrU2l6ZS8yLG49MDtuPGk7bisrKXt2YXIgbz10W3IrMipuXSxzPXRbcisyKm4rMV07bz0xNjcxMTkzNSYobzw8OHxvPj4+MjQpfDQyNzgyNTUzNjAmKG88PDI0fG8+Pj44KSxzPTE2NzExOTM1JihzPDw4fHM+Pj4yNCl8NDI3ODI1NTM2MCYoczw8MjR8cz4+PjgpO3ZhciBhPWVbbl07YS5oaWdoXj1zLGEubG93Xj1vfWZvcih2YXIgYz0wO2M8MjQ7YysrKXtmb3IodmFyIGQ9MDtkPDU7ZCsrKXtmb3IodmFyIHY9MCxwPTAsXz0wO188NTtfKyspe3ZhciBhPWVbZCs1Kl9dO3ZePWEuaGlnaCxwXj1hLmxvd312YXIgeT11W2RdO3kuaGlnaD12LHkubG93PXB9Zm9yKHZhciBkPTA7ZDw1O2QrKylmb3IodmFyIGc9dVsoZCs0KSU1XSxCPXVbKGQrMSklNV0sdz1CLmhpZ2gsaz1CLmxvdyx2PWcuaGlnaF4odzw8MXxrPj4+MzEpLHA9Zy5sb3deKGs8PDF8dz4+PjMxKSxfPTA7Xzw1O18rKyl7dmFyIGE9ZVtkKzUqX107YS5oaWdoXj12LGEubG93Xj1wfWZvcih2YXIgUz0xO1M8MjU7UysrKXt2YXIgYT1lW1NdLG09YS5oaWdoLHg9YS5sb3csYj1oW1NdO2lmKGI8MzIpdmFyIHY9bTw8Ynx4Pj4+MzItYixwPXg8PGJ8bT4+PjMyLWI7ZWxzZSB2YXIgdj14PDxiLTMyfG0+Pj42NC1iLHA9bTw8Yi0zMnx4Pj4+NjQtYjt2YXIgSD11W2xbU11dO0guaGlnaD12LEgubG93PXB9dmFyIHo9dVswXSxBPWVbMF07ei5oaWdoPUEuaGlnaCx6Lmxvdz1BLmxvdztmb3IodmFyIGQ9MDtkPDU7ZCsrKWZvcih2YXIgXz0wO188NTtfKyspe3ZhciBTPWQrNSpfLGE9ZVtTXSxDPXVbU10sRD11WyhkKzEpJTUrNSpfXSxSPXVbKGQrMiklNSs1Kl9dO2EuaGlnaD1DLmhpZ2hefkQuaGlnaCZSLmhpZ2gsYS5sb3c9Qy5sb3defkQubG93JlIubG93fXZhciBhPWVbMF0sRT1mW2NdO2EuaGlnaF49RS5oaWdoLGEubG93Xj1FLmxvd319LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMsaT0oOCp0aGlzLl9uRGF0YUJ5dGVzLDgqdC5zaWdCeXRlcyksbz0zMip0aGlzLmJsb2NrU2l6ZTtlW2k+Pj41XXw9MTw8MjQtaSUzMixlWyhyLmNlaWwoKGkrMSkvbykqbz4+PjUpLTFdfD0xMjgsdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIHM9dGhpcy5fc3RhdGUsYT10aGlzLmNmZy5vdXRwdXRMZW5ndGgvOCxjPWEvOCxoPVtdLGw9MDtsPGM7bCsrKXt2YXIgZj1zW2xdLHU9Zi5oaWdoLGQ9Zi5sb3c7dT0xNjcxMTkzNSYodTw8OHx1Pj4+MjQpfDQyNzgyNTUzNjAmKHU8PDI0fHU+Pj44KSxkPTE2NzExOTM1JihkPDw4fGQ+Pj4yNCl8NDI3ODI1NTM2MCYoZDw8MjR8ZD4+PjgpLGgucHVzaChkKSxoLnB1c2godSl9cmV0dXJuIG5ldyBuLmluaXQoaCxhKX0sY2xvbmU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpLHI9dC5fc3RhdGU9dGhpcy5fc3RhdGUuc2xpY2UoMCksZT0wO2U8MjU7ZSsrKXJbZV09cltlXS5jbG9uZSgpO3JldHVybiB0fX0pO2UuU0hBMz1vLl9jcmVhdGVIZWxwZXIoZCksZS5IbWFjU0hBMz1vLl9jcmVhdGVIbWFjSGVscGVyKGQpfShNYXRoKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtyZXR1cm4gcy5jcmVhdGUuYXBwbHkocyxhcmd1bWVudHMpfXZhciBlPXQsaT1lLmxpYixuPWkuSGFzaGVyLG89ZS54NjQscz1vLldvcmQsYT1vLldvcmRBcnJheSxjPWUuYWxnbyxoPVtyKDExMTYzNTI0MDgsMzYwOTc2NzQ1OCkscigxODk5NDQ3NDQxLDYwMjg5MTcyNSkscigzMDQ5MzIzNDcxLDM5NjQ0ODQzOTkpLHIoMzkyMTAwOTU3MywyMTczMjk1NTQ4KSxyKDk2MTk4NzE2Myw0MDgxNjI4NDcyKSxyKDE1MDg5NzA5OTMsMzA1MzgzNDI2NSkscigyNDUzNjM1NzQ4LDI5Mzc2NzE1NzkpLHIoMjg3MDc2MzIyMSwzNjY0NjA5NTYwKSxyKDM2MjQzODEwODAsMjczNDg4MzM5NCkscigzMTA1OTg0MDEsMTE2NDk5NjU0Mikscig2MDcyMjUyNzgsMTMyMzYxMDc2NCkscigxNDI2ODgxOTg3LDM1OTAzMDQ5OTQpLHIoMTkyNTA3ODM4OCw0MDY4MTgyMzgzKSxyKDIxNjIwNzgyMDYsOTkxMzM2MTEzKSxyKDI2MTQ4ODgxMDMsNjMzODAzMzE3KSxyKDMyNDgyMjI1ODAsMzQ3OTc3NDg2OCkscigzODM1MzkwNDAxLDI2NjY2MTM0NTgpLHIoNDAyMjIyNDc3NCw5NDQ3MTExMzkpLHIoMjY0MzQ3MDc4LDIzNDEyNjI3NzMpLHIoNjA0ODA3NjI4LDIwMDc4MDA5MzMpLHIoNzcwMjU1OTgzLDE0OTU5OTA5MDEpLHIoMTI0OTE1MDEyMiwxODU2NDMxMjM1KSxyKDE1NTUwODE2OTIsMzE3NTIxODEzMikscigxOTk2MDY0OTg2LDIxOTg5NTA4MzcpLHIoMjU1NDIyMDg4MiwzOTk5NzE5MzM5KSxyKDI4MjE4MzQzNDksNzY2Nzg0MDE2KSxyKDI5NTI5OTY4MDgsMjU2NjU5NDg3OSkscigzMjEwMzEzNjcxLDMyMDMzMzc5NTYpLHIoMzMzNjU3MTg5MSwxMDM0NDU3MDI2KSxyKDM1ODQ1Mjg3MTEsMjQ2Njk0ODkwMSkscigxMTM5MjY5OTMsMzc1ODMyNjM4MykscigzMzgyNDE4OTUsMTY4NzE3OTM2KSxyKDY2NjMwNzIwNSwxMTg4MTc5OTY0KSxyKDc3MzUyOTkxMiwxNTQ2MDQ1NzM0KSxyKDEyOTQ3NTczNzIsMTUyMjgwNTQ4NSkscigxMzk2MTgyMjkxLDI2NDM4MzM4MjMpLHIoMTY5NTE4MzcwMCwyMzQzNTI3MzkwKSxyKDE5ODY2NjEwNTEsMTAxNDQ3NzQ4MCkscigyMTc3MDI2MzUwLDEyMDY3NTkxNDIpLHIoMjQ1Njk1NjAzNywzNDQwNzc2MjcpLHIoMjczMDQ4NTkyMSwxMjkwODYzNDYwKSxyKDI4MjAzMDI0MTEsMzE1ODQ1NDI3MykscigzMjU5NzMwODAwLDM1MDU5NTI2NTcpLHIoMzM0NTc2NDc3MSwxMDYyMTcwMDgpLHIoMzUxNjA2NTgxNywzNjA2MDA4MzQ0KSxyKDM2MDAzNTI4MDQsMTQzMjcyNTc3Nikscig0MDk0NTcxOTA5LDE0NjcwMzE1OTQpLHIoMjc1NDIzMzQ0LDg1MTE2OTcyMCkscig0MzAyMjc3MzQsMzEwMDgyMzc1Mikscig1MDY5NDg2MTYsMTM2MzI1ODE5NSkscig2NTkwNjA1NTYsMzc1MDY4NTU5Mykscig4ODM5OTc4NzcsMzc4NTA1MDI4MCkscig5NTgxMzk1NzEsMzMxODMwNzQyNykscigxMzIyODIyMjE4LDM4MTI3MjM0MDMpLHIoMTUzNzAwMjA2MywyMDAzMDM0OTk1KSxyKDE3NDc4NzM3NzksMzYwMjAzNjg5OSkscigxOTU1NTYyMjIyLDE1NzU5OTAwMTIpLHIoMjAyNDEwNDgxNSwxMTI1NTkyOTI4KSxyKDIyMjc3MzA0NTIsMjcxNjkwNDMwNikscigyMzYxODUyNDI0LDQ0Mjc3NjA0NCkscigyNDI4NDM2NDc0LDU5MzY5ODM0NCkscigyNzU2NzM0MTg3LDM3MzMxMTAyNDkpLHIoMzIwNDAzMTQ3OSwyOTk5MzUxNTczKSxyKDMzMjkzMjUyOTgsMzgxNTkyMDQyNykscigzMzkxNTY5NjE0LDM5MjgzODM5MDApLHIoMzUxNTI2NzI3MSw1NjYyODA3MTEpLHIoMzk0MDE4NzYwNiwzNDU0MDY5NTM0KSxyKDQxMTg2MzAyNzEsNDAwMDIzOTk5MikscigxMTY0MTg0NzQsMTkxNDEzODU1NCkscigxNzQyOTI0MjEsMjczMTA1NTI3MCkscigyODkzODAzNTYsMzIwMzk5MzAwNikscig0NjAzOTMyNjksMzIwNjIwMzE1KSxyKDY4NTQ3MTczMyw1ODc0OTY4MzYpLHIoODUyMTQyOTcxLDEwODY3OTI4NTEpLHIoMTAxNzAzNjI5OCwzNjU1NDMxMDApLHIoMTEyNjAwMDU4MCwyNjE4Mjk3Njc2KSxyKDEyODgwMzM0NzAsMzQwOTg1NTE1OCkscigxNTAxNTA1OTQ4LDQyMzQ1MDk4NjYpLHIoMTYwNzE2NzkxNSw5ODcxNjc0NjgpLHIoMTgxNjQwMjMxNiwxMjQ2MTg5NTkxKV0sbD1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9MDt0PDgwO3QrKylsW3RdPXIoKX0oKTt2YXIgZj1jLlNIQTUxMj1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBhLmluaXQoW25ldyBzLmluaXQoMTc3OTAzMzcwMyw0MDg5MjM1NzIwKSxuZXcgcy5pbml0KDMxNDQxMzQyNzcsMjIyNzg3MzU5NSksbmV3IHMuaW5pdCgxMDEzOTA0MjQyLDQyNzExNzU3MjMpLG5ldyBzLmluaXQoMjc3MzQ4MDc2MiwxNTk1NzUwMTI5KSxuZXcgcy5pbml0KDEzNTk4OTMxMTksMjkxNzU2NTEzNyksbmV3IHMuaW5pdCgyNjAwODIyOTI0LDcyNTUxMTE5OSksbmV3IHMuaW5pdCg1Mjg3MzQ2MzUsNDIxNTM4OTU0NyksbmV3IHMuaW5pdCgxNTQxNDU5MjI1LDMyNzAzMzIwOSldKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX2hhc2gud29yZHMsaT1lWzBdLG49ZVsxXSxvPWVbMl0scz1lWzNdLGE9ZVs0XSxjPWVbNV0sZj1lWzZdLHU9ZVs3XSxkPWkuaGlnaCx2PWkubG93LHA9bi5oaWdoLF89bi5sb3cseT1vLmhpZ2gsZz1vLmxvdyxCPXMuaGlnaCx3PXMubG93LGs9YS5oaWdoLFM9YS5sb3csbT1jLmhpZ2gseD1jLmxvdyxiPWYuaGlnaCxIPWYubG93LHo9dS5oaWdoLEE9dS5sb3csQz1kLEQ9dixSPXAsRT1fLE09eSxGPWcsUD1CLFc9dyxPPWssVT1TLEk9bSxLPXgsWD1iLEw9SCxqPXosTj1BLFQ9MDtUPDgwO1QrKyl7dmFyIFo9bFtUXTtpZihUPDE2KXZhciBxPVouaGlnaD0wfHRbcisyKlRdLEc9Wi5sb3c9MHx0W3IrMipUKzFdO2Vsc2V7dmFyIEo9bFtULTE1XSwkPUouaGlnaCxRPUoubG93LFY9KCQ+Pj4xfFE8PDMxKV4oJD4+Pjh8UTw8MjQpXiQ+Pj43LFk9KFE+Pj4xfCQ8PDMxKV4oUT4+Pjh8JDw8MjQpXihRPj4+N3wkPDwyNSksdHQ9bFtULTJdLHJ0PXR0LmhpZ2gsZXQ9dHQubG93LGl0PShydD4+PjE5fGV0PDwxMyleKHJ0PDwzfGV0Pj4+MjkpXnJ0Pj4+NixudD0oZXQ+Pj4xOXxydDw8MTMpXihldDw8M3xydD4+PjI5KV4oZXQ+Pj42fHJ0PDwyNiksb3Q9bFtULTddLHN0PW90LmhpZ2gsYXQ9b3QubG93LGN0PWxbVC0xNl0saHQ9Y3QuaGlnaCxsdD1jdC5sb3csRz1ZK2F0LHE9VitzdCsoRz4+PjA8WT4+PjA/MTowKSxHPUcrbnQscT1xK2l0KyhHPj4+MDxudD4+PjA/MTowKSxHPUcrbHQscT1xK2h0KyhHPj4+MDxsdD4+PjA/MTowKTtaLmhpZ2g9cSxaLmxvdz1HfXZhciBmdD1PJklefk8mWCx1dD1VJkteflUmTCxkdD1DJlJeQyZNXlImTSx2dD1EJkVeRCZGXkUmRixwdD0oQz4+PjI4fEQ8PDQpXihDPDwzMHxEPj4+MileKEM8PDI1fEQ+Pj43KSxfdD0oRD4+PjI4fEM8PDQpXihEPDwzMHxDPj4+MileKEQ8PDI1fEM+Pj43KSx5dD0oTz4+PjE0fFU8PDE4KV4oTz4+PjE4fFU8PDE0KV4oTzw8MjN8VT4+PjkpLGd0PShVPj4+MTR8Tzw8MTgpXihVPj4+MTh8Tzw8MTQpXihVPDwyM3xPPj4+OSksQnQ9aFtUXSx3dD1CdC5oaWdoLGt0PUJ0LmxvdyxTdD1OK2d0LG10PWoreXQrKFN0Pj4+MDxOPj4+MD8xOjApLFN0PVN0K3V0LG10PW10K2Z0KyhTdD4+PjA8dXQ+Pj4wPzE6MCksU3Q9U3Qra3QsbXQ9bXQrd3QrKFN0Pj4+MDxrdD4+PjA/MTowKSxTdD1TdCtHLG10PW10K3ErKFN0Pj4+MDxHPj4+MD8xOjApLHh0PV90K3Z0LGJ0PXB0K2R0Kyh4dD4+PjA8X3Q+Pj4wPzE6MCk7aj1YLE49TCxYPUksTD1LLEk9TyxLPVUsVT1XK1N0fDAsTz1QK210KyhVPj4+MDxXPj4+MD8xOjApfDAsUD1NLFc9RixNPVIsRj1FLFI9QyxFPUQsRD1TdCt4dHwwLEM9bXQrYnQrKEQ+Pj4wPFN0Pj4+MD8xOjApfDB9dj1pLmxvdz12K0QsaS5oaWdoPWQrQysodj4+PjA8RD4+PjA/MTowKSxfPW4ubG93PV8rRSxuLmhpZ2g9cCtSKyhfPj4+MDxFPj4+MD8xOjApLGc9by5sb3c9ZytGLG8uaGlnaD15K00rKGc+Pj4wPEY+Pj4wPzE6MCksdz1zLmxvdz13K1cscy5oaWdoPUIrUCsodz4+PjA8Vz4+PjA/MTowKSxTPWEubG93PVMrVSxhLmhpZ2g9aytPKyhTPj4+MDxVPj4+MD8xOjApLHg9Yy5sb3c9eCtLLGMuaGlnaD1tK0krKHg+Pj4wPEs+Pj4wPzE6MCksSD1mLmxvdz1IK0wsZi5oaWdoPWIrWCsoSD4+PjA8TD4+PjA/MTowKSxBPXUubG93PUErTix1LmhpZ2g9eitqKyhBPj4+MDxOPj4+MD8xOjApfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEscj10LndvcmRzLGU9OCp0aGlzLl9uRGF0YUJ5dGVzLGk9OCp0LnNpZ0J5dGVzO3JbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSsxMjg+Pj4xMDw8NSkrMzBdPU1hdGguZmxvb3IoZS80Mjk0OTY3Mjk2KSxyWyhpKzEyOD4+PjEwPDw1KSszMV09ZSx0LnNpZ0J5dGVzPTQqci5sZW5ndGgsdGhpcy5fcHJvY2VzcygpO3ZhciBuPXRoaXMuX2hhc2gudG9YMzIoKTtyZXR1cm4gbn0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1uLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9LGJsb2NrU2l6ZTozMn0pO2UuU0hBNTEyPW4uX2NyZWF0ZUhlbHBlcihmKSxlLkhtYWNTSEE1MTI9bi5fY3JlYXRlSG1hY0hlbHBlcihmKX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLng2NCxpPWUuV29yZCxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5TSEE1MTIsYT1vLlNIQTM4ND1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9oYXNoPW5ldyBuLmluaXQoW25ldyBpLmluaXQoMzQxODA3MDM2NSwzMjM4MzcxMDMyKSxuZXcgaS5pbml0KDE2NTQyNzAyNTAsOTE0MTUwNjYzKSxuZXcgaS5pbml0KDI0Mzg1MjkzNzAsODEyNzAyOTk5KSxuZXcgaS5pbml0KDM1NTQ2MjM2MCw0MTQ0OTEyNjk3KSxuZXcgaS5pbml0KDE3MzE0MDU0MTUsNDI5MDc3NTg1NyksbmV3IGkuaW5pdCgyMzk0MTgwMjMxLDE3NTA2MDMwMjUpLG5ldyBpLmluaXQoMzY3NTAwODUyNSwxNjk0MDc2ODM5KSxuZXcgaS5pbml0KDEyMDMwNjI4MTMsMzIwNDA3NTQyOCldKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD1zLl9kb0ZpbmFsaXplLmNhbGwodGhpcyk7cmV0dXJuIHQuc2lnQnl0ZXMtPTE2LHR9fSk7ci5TSEEzODQ9cy5fY3JlYXRlSGVscGVyKGEpLHIuSG1hY1NIQTM4ND1zLl9jcmVhdGVIbWFjSGVscGVyKGEpfSgpLHQubGliLkNpcGhlcnx8ZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5CYXNlLG89aS5Xb3JkQXJyYXkscz1pLkJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0sYT1lLmVuYyxjPShhLlV0ZjgsYS5CYXNlNjQpLGg9ZS5hbGdvLGw9aC5FdnBLREYsZj1pLkNpcGhlcj1zLmV4dGVuZCh7Y2ZnOm4uZXh0ZW5kKCksY3JlYXRlRW5jcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0VOQ19YRk9STV9NT0RFLHQscil9LGNyZWF0ZURlY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9ERUNfWEZPUk1fTU9ERSx0LHIpfSxpbml0OmZ1bmN0aW9uKHQscixlKXt0aGlzLmNmZz10aGlzLmNmZy5leHRlbmQoZSksdGhpcy5feGZvcm1Nb2RlPXQsdGhpcy5fa2V5PXIsdGhpcy5yZXNldCgpfSxyZXNldDpmdW5jdGlvbigpe3MucmVzZXQuY2FsbCh0aGlzKSx0aGlzLl9kb1Jlc2V0KCl9LHByb2Nlc3M6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCl9LGZpbmFsaXplOmZ1bmN0aW9uKHQpe3QmJnRoaXMuX2FwcGVuZCh0KTt2YXIgcj10aGlzLl9kb0ZpbmFsaXplKCk7cmV0dXJuIHJ9LGtleVNpemU6NCxpdlNpemU6NCxfRU5DX1hGT1JNX01PREU6MSxfREVDX1hGT1JNX01PREU6MixfY3JlYXRlSGVscGVyOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9tOnd9cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybntlbmNyeXB0OmZ1bmN0aW9uKGUsaSxuKXtyZXR1cm4gdChpKS5lbmNyeXB0KHIsZSxpLG4pfSxkZWNyeXB0OmZ1bmN0aW9uKGUsaSxuKXtyZXR1cm4gdChpKS5kZWNyeXB0KHIsZSxpLG4pfX19fSgpfSksdT0oaS5TdHJlYW1DaXBoZXI9Zi5leHRlbmQoe19kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fcHJvY2VzcyghMCk7cmV0dXJuIHR9LGJsb2NrU2l6ZToxfSksZS5tb2RlPXt9KSxkPWkuQmxvY2tDaXBoZXJNb2RlPW4uZXh0ZW5kKHtjcmVhdGVFbmNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKHQscil9LGNyZWF0ZURlY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLkRlY3J5cHRvci5jcmVhdGUodCxyKX0saW5pdDpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlcj10LHRoaXMuX2l2PXJ9fSksdj11LkNCQz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLGkpe3ZhciBuPXRoaXMuX2l2O2lmKG4pe3ZhciBvPW47dGhpcy5faXY9cn1lbHNlIHZhciBvPXRoaXMuX3ByZXZCbG9jaztmb3IodmFyIHM9MDtzPGk7cysrKXRbZStzXV49b1tzXX12YXIgZT1kLmV4dGVuZCgpO3JldHVybiBlLkVuY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHIsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemU7dC5jYWxsKHRoaXMscixlLG4pLGkuZW5jcnlwdEJsb2NrKHIsZSksdGhpcy5fcHJldkJsb2NrPXIuc2xpY2UoZSxlK24pfX0pLGUuRGVjcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24ocixlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZSxvPXIuc2xpY2UoZSxlK24pO2kuZGVjcnlwdEJsb2NrKHIsZSksdC5jYWxsKHRoaXMscixlLG4pLHRoaXMuX3ByZXZCbG9jaz1vfX0pLGV9KCkscD1lLnBhZD17fSxfPXAuUGtjczc9e3BhZDpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT00KnIsaT1lLXQuc2lnQnl0ZXMlZSxuPWk8PDI0fGk8PDE2fGk8PDh8aSxzPVtdLGE9MDthPGk7YSs9NClzLnB1c2gobik7dmFyIGM9by5jcmVhdGUocyxpKTt0LmNvbmNhdChjKX0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHk9KGkuQmxvY2tDaXBoZXI9Zi5leHRlbmQoe2NmZzpmLmNmZy5leHRlbmQoe21vZGU6dixwYWRkaW5nOl99KSxyZXNldDpmdW5jdGlvbigpe2YucmVzZXQuY2FsbCh0aGlzKTt2YXIgdD10aGlzLmNmZyxyPXQuaXYsZT10Lm1vZGU7aWYodGhpcy5feGZvcm1Nb2RlPT10aGlzLl9FTkNfWEZPUk1fTU9ERSl2YXIgaT1lLmNyZWF0ZUVuY3J5cHRvcjtlbHNle3ZhciBpPWUuY3JlYXRlRGVjcnlwdG9yO3RoaXMuX21pbkJ1ZmZlclNpemU9MX10aGlzLl9tb2RlJiZ0aGlzLl9tb2RlLl9fY3JlYXRvcj09aT90aGlzLl9tb2RlLmluaXQodGhpcyxyJiZyLndvcmRzKToodGhpcy5fbW9kZT1pLmNhbGwoZSx0aGlzLHImJnIud29yZHMpLHRoaXMuX21vZGUuX19jcmVhdG9yPWkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9tb2RlLnByb2Nlc3NCbG9jayh0LHIpfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuY2ZnLnBhZGRpbmc7aWYodGhpcy5feGZvcm1Nb2RlPT10aGlzLl9FTkNfWEZPUk1fTU9ERSl7dC5wYWQodGhpcy5fZGF0YSx0aGlzLmJsb2NrU2l6ZSk7dmFyIHI9dGhpcy5fcHJvY2VzcyghMCl9ZWxzZXt2YXIgcj10aGlzLl9wcm9jZXNzKCEwKTt0LnVucGFkKHIpfXJldHVybiByfSxibG9ja1NpemU6NH0pLGkuQ2lwaGVyUGFyYW1zPW4uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQpe3RoaXMubWl4SW4odCl9LHRvU3RyaW5nOmZ1bmN0aW9uKHQpe3JldHVybih0fHx0aGlzLmZvcm1hdHRlcikuc3RyaW5naWZ5KHRoaXMpfX0pKSxnPWUuZm9ybWF0PXt9LEI9Zy5PcGVuU1NMPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIHI9dC5jaXBoZXJ0ZXh0LGU9dC5zYWx0O2lmKGUpdmFyIGk9by5jcmVhdGUoWzEzOTg4OTM2ODQsMTcwMTA3NjgzMV0pLmNvbmNhdChlKS5jb25jYXQocik7ZWxzZSB2YXIgaT1yO3JldHVybiBpLnRvU3RyaW5nKGMpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgcj1jLnBhcnNlKHQpLGU9ci53b3JkcztpZigxMzk4ODkzNjg0PT1lWzBdJiYxNzAxMDc2ODMxPT1lWzFdKXt2YXIgaT1vLmNyZWF0ZShlLnNsaWNlKDIsNCkpO2Uuc3BsaWNlKDAsNCksci5zaWdCeXRlcy09MTZ9cmV0dXJuIHkuY3JlYXRlKHtjaXBoZXJ0ZXh0OnIsc2FsdDppfSl9fSx3PWkuU2VyaWFsaXphYmxlQ2lwaGVyPW4uZXh0ZW5kKHtjZmc6bi5leHRlbmQoe2Zvcm1hdDpCfSksZW5jcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKTt2YXIgbj10LmNyZWF0ZUVuY3J5cHRvcihlLGkpLG89bi5maW5hbGl6ZShyKSxzPW4uY2ZnO3JldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDpvLGtleTplLGl2OnMuaXYsYWxnb3JpdGhtOnQsbW9kZTpzLm1vZGUscGFkZGluZzpzLnBhZGRpbmcsYmxvY2tTaXplOnQuYmxvY2tTaXplLGZvcm1hdHRlcjppLmZvcm1hdH0pfSxkZWNyeXB0OmZ1bmN0aW9uKHQscixlLGkpe2k9dGhpcy5jZmcuZXh0ZW5kKGkpLHI9dGhpcy5fcGFyc2UocixpLmZvcm1hdCk7dmFyIG49dC5jcmVhdGVEZWNyeXB0b3IoZSxpKS5maW5hbGl6ZShyLmNpcGhlcnRleHQpO3JldHVybiBufSxfcGFyc2U6ZnVuY3Rpb24odCxyKXtyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD9yLnBhcnNlKHQsdGhpcyk6dH19KSxrPWUua2RmPXt9LFM9ay5PcGVuU1NMPXtleGVjdXRlOmZ1bmN0aW9uKHQscixlLGkpe2l8fChpPW8ucmFuZG9tKDgpKTt2YXIgbj1sLmNyZWF0ZSh7a2V5U2l6ZTpyK2V9KS5jb21wdXRlKHQsaSkscz1vLmNyZWF0ZShuLndvcmRzLnNsaWNlKHIpLDQqZSk7cmV0dXJuIG4uc2lnQnl0ZXM9NCpyLHkuY3JlYXRlKHtrZXk6bixpdjpzLHNhbHQ6aX0pfX0sbT1pLlBhc3N3b3JkQmFzZWRDaXBoZXI9dy5leHRlbmQoe2NmZzp3LmNmZy5leHRlbmQoe2tkZjpTfSksZW5jcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKTt2YXIgbj1pLmtkZi5leGVjdXRlKGUsdC5rZXlTaXplLHQuaXZTaXplKTtpLml2PW4uaXY7dmFyIG89dy5lbmNyeXB0LmNhbGwodGhpcyx0LHIsbi5rZXksaSk7cmV0dXJuIG8ubWl4SW4obiksb30sZGVjcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKSxyPXRoaXMuX3BhcnNlKHIsaS5mb3JtYXQpO3ZhciBuPWkua2RmLmV4ZWN1dGUoZSx0LmtleVNpemUsdC5pdlNpemUsci5zYWx0KTtpLml2PW4uaXY7dmFyIG89dy5kZWNyeXB0LmNhbGwodGhpcyx0LHIsbi5rZXksaSk7cmV0dXJuIG99fSl9KCksdC5tb2RlLkNGQj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyLGUsaSl7dmFyIG49dGhpcy5faXY7aWYobil7dmFyIG89bi5zbGljZSgwKTt0aGlzLl9pdj12b2lkIDB9ZWxzZSB2YXIgbz10aGlzLl9wcmV2QmxvY2s7aS5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIHM9MDtzPGU7cysrKXRbcitzXV49b1tzXX12YXIgZT10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCk7cmV0dXJuIGUuRW5jcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZTtyLmNhbGwodGhpcyx0LGUsbixpKSx0aGlzLl9wcmV2QmxvY2s9dC5zbGljZShlLGUrbil9fSksZS5EZWNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dC5zbGljZShlLGUrbik7ci5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fcHJldkJsb2NrPW99fSksZX0oKSx0Lm1vZGUuRUNCPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO3JldHVybiByLkVuY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyLmVuY3J5cHRCbG9jayh0LHIpfX0pLHIuRGVjcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXIuZGVjcnlwdEJsb2NrKHQscil9fSkscn0oKSx0LnBhZC5BbnNpWDkyMz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9dC5zaWdCeXRlcyxpPTQqcixuPWktZSVpLG89ZStuLTE7dC5jbGFtcCgpLHQud29yZHNbbz4+PjJdfD1uPDwyNC1vJTQqOCx0LnNpZ0J5dGVzKz1ufSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0sdC5wYWQuSXNvMTAxMjY9e3BhZDpmdW5jdGlvbihyLGUpe3ZhciBpPTQqZSxuPWktci5zaWdCeXRlcyVpO3IuY29uY2F0KHQubGliLldvcmRBcnJheS5yYW5kb20obi0xKSkuY29uY2F0KHQubGliLldvcmRBcnJheS5jcmVhdGUoW248PDI0XSwxKSl9LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx0LnBhZC5Jc285Nzk3MT17cGFkOmZ1bmN0aW9uKHIsZSl7ci5jb25jYXQodC5saWIuV29yZEFycmF5LmNyZWF0ZShbMjE0NzQ4MzY0OF0sMSkpLHQucGFkLlplcm9QYWRkaW5nLnBhZChyLGUpfSx1bnBhZDpmdW5jdGlvbihyKXt0LnBhZC5aZXJvUGFkZGluZy51bnBhZChyKSxyLnNpZ0J5dGVzLS19fSx0Lm1vZGUuT0ZCPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9rZXlzdHJlYW07biYmKG89dGhpcy5fa2V5c3RyZWFtPW4uc2xpY2UoMCksdGhpcy5faXY9dm9pZCAwKSxlLmVuY3J5cHRCbG9jayhvLDApO2Zvcih2YXIgcz0wO3M8aTtzKyspdFtyK3NdXj1vW3NdfX0pO3JldHVybiByLkRlY3J5cHRvcj1lLHJ9KCksdC5wYWQuTm9QYWRkaW5nPXtwYWQ6ZnVuY3Rpb24oKXt9LHVucGFkOmZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5DaXBoZXJQYXJhbXMsbz1lLmVuYyxzPW8uSGV4LGE9ZS5mb3JtYXQ7YS5IZXg9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jaXBoZXJ0ZXh0LnRvU3RyaW5nKHMpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgcj1zLnBhcnNlKHQpO3JldHVybiBuLmNyZWF0ZSh7Y2lwaGVydGV4dDpyfSl9fX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmxvY2tDaXBoZXIsbj1yLmFsZ28sbz1bXSxzPVtdLGE9W10sYz1bXSxoPVtdLGw9W10sZj1bXSx1PVtdLGQ9W10sdj1bXTshZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10scj0wO3I8MjU2O3IrKylyPDEyOD90W3JdPXI8PDE6dFtyXT1yPDwxXjI4Mztmb3IodmFyIGU9MCxpPTAscj0wO3I8MjU2O3IrKyl7dmFyIG49aV5pPDwxXmk8PDJeaTw8M15pPDw0O249bj4+PjheMjU1Jm5eOTksb1tlXT1uLHNbbl09ZTt2YXIgcD10W2VdLF89dFtwXSx5PXRbX10sZz0yNTcqdFtuXV4xNjg0MzAwOCpuO2FbZV09Zzw8MjR8Zz4+PjgsY1tlXT1nPDwxNnxnPj4+MTYsaFtlXT1nPDw4fGc+Pj4yNCxsW2VdPWc7dmFyIGc9MTY4NDMwMDkqeV42NTUzNypfXjI1NypwXjE2ODQzMDA4KmU7ZltuXT1nPDwyNHxnPj4+OCx1W25dPWc8PDE2fGc+Pj4xNixkW25dPWc8PDh8Zz4+PjI0LHZbbl09ZyxlPyhlPXBedFt0W3RbeV5wXV1dLGlePXRbdFtpXV0pOmU9aT0xfX0oKTt2YXIgcD1bMCwxLDIsNCw4LDE2LDMyLDY0LDEyOCwyNyw1NF0sXz1uLkFFUz1pLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7Zm9yKHZhciB0PXRoaXMuX2tleVByaW9yUmVzZXQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMvNCxpPXRoaXMuX25Sb3VuZHM9ZSs2LG49NCooaSsxKSxzPXRoaXMuX2tleVNjaGVkdWxlPVtdLGE9MDthPG47YSsrKWlmKGE8ZSlzW2FdPXJbYV07ZWxzZXt2YXIgYz1zW2EtMV07YSVlP2U+NiYmYSVlPT00JiYoYz1vW2M+Pj4yNF08PDI0fG9bYz4+PjE2JjI1NV08PDE2fG9bYz4+PjgmMjU1XTw8OHxvWzI1NSZjXSk6KGM9Yzw8OHxjPj4+MjQsYz1vW2M+Pj4yNF08PDI0fG9bYz4+PjE2JjI1NV08PDE2fG9bYz4+PjgmMjU1XTw8OHxvWzI1NSZjXSxjXj1wW2EvZXwwXTw8MjQpLHNbYV09c1thLWVdXmN9Zm9yKHZhciBoPXRoaXMuX2ludktleVNjaGVkdWxlPVtdLGw9MDtsPG47bCsrKXt2YXIgYT1uLWw7aWYobCU0KXZhciBjPXNbYV07ZWxzZSB2YXIgYz1zW2EtNF07bDw0fHxhPD00P2hbbF09YzpoW2xdPWZbb1tjPj4+MjRdXV51W29bYz4+PjE2JjI1NV1dXmRbb1tjPj4+OCYyNTVdXV52W29bMjU1JmNdXX19fSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kb0NyeXB0QmxvY2sodCxyLHRoaXMuX2tleVNjaGVkdWxlLGEsYyxoLGwsbyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRbcisxXTt0W3IrMV09dFtyKzNdLHRbciszXT1lLHRoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52S2V5U2NoZWR1bGUsZix1LGQsdixzKTt2YXIgZT10W3IrMV07dFtyKzFdPXRbciszXSx0W3IrM109ZX0sX2RvQ3J5cHRCbG9jazpmdW5jdGlvbih0LHIsZSxpLG4sbyxzLGEpe2Zvcih2YXIgYz10aGlzLl9uUm91bmRzLGg9dFtyXV5lWzBdLGw9dFtyKzFdXmVbMV0sZj10W3IrMl1eZVsyXSx1PXRbciszXV5lWzNdLGQ9NCx2PTE7djxjO3YrKyl7dmFyIHA9aVtoPj4+MjRdXm5bbD4+PjE2JjI1NV1eb1tmPj4+OCYyNTVdXnNbMjU1JnVdXmVbZCsrXSxfPWlbbD4+PjI0XV5uW2Y+Pj4xNiYyNTVdXm9bdT4+PjgmMjU1XV5zWzI1NSZoXV5lW2QrK10seT1pW2Y+Pj4yNF1eblt1Pj4+MTYmMjU1XV5vW2g+Pj44JjI1NV1ec1syNTUmbF1eZVtkKytdLGc9aVt1Pj4+MjRdXm5baD4+PjE2JjI1NV1eb1tsPj4+OCYyNTVdXnNbMjU1JmZdXmVbZCsrXTtoPXAsbD1fLGY9eSx1PWd9dmFyIHA9KGFbaD4+PjI0XTw8MjR8YVtsPj4+MTYmMjU1XTw8MTZ8YVtmPj4+OCYyNTVdPDw4fGFbMjU1JnVdKV5lW2QrK10sXz0oYVtsPj4+MjRdPDwyNHxhW2Y+Pj4xNiYyNTVdPDwxNnxhW3U+Pj44JjI1NV08PDh8YVsyNTUmaF0pXmVbZCsrXSx5PShhW2Y+Pj4yNF08PDI0fGFbdT4+PjE2JjI1NV08PDE2fGFbaD4+PjgmMjU1XTw8OHxhWzI1NSZsXSleZVtkKytdLGc9KGFbdT4+PjI0XTw8MjR8YVtoPj4+MTYmMjU1XTw8MTZ8YVtsPj4+OCYyNTVdPDw4fGFbMjU1JmZdKV5lW2QrK107dFtyXT1wLHRbcisxXT1fLHRbcisyXT15LHRbciszXT1nfSxrZXlTaXplOjh9KTtyLkFFUz1pLl9jcmVhdGVIZWxwZXIoXyl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscil7dmFyIGU9KHRoaXMuX2xCbG9jaz4+PnRedGhpcy5fckJsb2NrKSZyO3RoaXMuX3JCbG9ja149ZSx0aGlzLl9sQmxvY2tePWU8PHR9ZnVuY3Rpb24gZSh0LHIpe3ZhciBlPSh0aGlzLl9yQmxvY2s+Pj50XnRoaXMuX2xCbG9jaykmcjt0aGlzLl9sQmxvY2tePWUsdGhpcy5fckJsb2NrXj1lPDx0O1xyXG59dmFyIGk9dCxuPWkubGliLG89bi5Xb3JkQXJyYXkscz1uLkJsb2NrQ2lwaGVyLGE9aS5hbGdvLGM9WzU3LDQ5LDQxLDMzLDI1LDE3LDksMSw1OCw1MCw0MiwzNCwyNiwxOCwxMCwyLDU5LDUxLDQzLDM1LDI3LDE5LDExLDMsNjAsNTIsNDQsMzYsNjMsNTUsNDcsMzksMzEsMjMsMTUsNyw2Miw1NCw0NiwzOCwzMCwyMiwxNCw2LDYxLDUzLDQ1LDM3LDI5LDIxLDEzLDUsMjgsMjAsMTIsNF0saD1bMTQsMTcsMTEsMjQsMSw1LDMsMjgsMTUsNiwyMSwxMCwyMywxOSwxMiw0LDI2LDgsMTYsNywyNywyMCwxMywyLDQxLDUyLDMxLDM3LDQ3LDU1LDMwLDQwLDUxLDQ1LDMzLDQ4LDQ0LDQ5LDM5LDU2LDM0LDUzLDQ2LDQyLDUwLDM2LDI5LDMyXSxsPVsxLDIsNCw2LDgsMTAsMTIsMTQsMTUsMTcsMTksMjEsMjMsMjUsMjcsMjhdLGY9W3swOjg0MjE4ODgsMjY4NDM1NDU2OjMyNzY4LDUzNjg3MDkxMjo4NDIxMzc4LDgwNTMwNjM2ODoyLDEwNzM3NDE4MjQ6NTEyLDEzNDIxNzcyODA6ODQyMTg5MCwxNjEwNjEyNzM2OjgzODkxMjIsMTg3OTA0ODE5Mjo4Mzg4NjA4LDIxNDc0ODM2NDg6NTE0LDI0MTU5MTkxMDQ6ODM4OTEyMCwyNjg0MzU0NTYwOjMzMjgwLDI5NTI3OTAwMTY6ODQyMTM3NiwzMjIxMjI1NDcyOjMyNzcwLDM0ODk2NjA5Mjg6ODM4ODYxMCwzNzU4MDk2Mzg0OjAsNDAyNjUzMTg0MDozMzI4MiwxMzQyMTc3Mjg6MCw0MDI2NTMxODQ6ODQyMTg5MCw2NzEwODg2NDA6MzMyODIsOTM5NTI0MDk2OjMyNzY4LDEyMDc5NTk1NTI6ODQyMTg4OCwxNDc2Mzk1MDA4OjUxMiwxNzQ0ODMwNDY0Ojg0MjEzNzgsMjAxMzI2NTkyMDoyLDIyODE3MDEzNzY6ODM4OTEyMCwyNTUwMTM2ODMyOjMzMjgwLDI4MTg1NzIyODg6ODQyMTM3NiwzMDg3MDA3NzQ0OjgzODkxMjIsMzM1NTQ0MzIwMDo4Mzg4NjEwLDM2MjM4Nzg2NTY6MzI3NzAsMzg5MjMxNDExMjo1MTQsNDE2MDc0OTU2ODo4Mzg4NjA4LDE6MzI3NjgsMjY4NDM1NDU3OjIsNTM2ODcwOTEzOjg0MjE4ODgsODA1MzA2MzY5OjgzODg2MDgsMTA3Mzc0MTgyNTo4NDIxMzc4LDEzNDIxNzcyODE6MzMyODAsMTYxMDYxMjczNzo1MTIsMTg3OTA0ODE5Mzo4Mzg5MTIyLDIxNDc0ODM2NDk6ODQyMTg5MCwyNDE1OTE5MTA1Ojg0MjEzNzYsMjY4NDM1NDU2MTo4Mzg4NjEwLDI5NTI3OTAwMTc6MzMyODIsMzIyMTIyNTQ3Mzo1MTQsMzQ4OTY2MDkyOTo4Mzg5MTIwLDM3NTgwOTYzODU6MzI3NzAsNDAyNjUzMTg0MTowLDEzNDIxNzcyOTo4NDIxODkwLDQwMjY1MzE4NTo4NDIxMzc2LDY3MTA4ODY0MTo4Mzg4NjA4LDkzOTUyNDA5Nzo1MTIsMTIwNzk1OTU1MzozMjc2OCwxNDc2Mzk1MDA5OjgzODg2MTAsMTc0NDgzMDQ2NToyLDIwMTMyNjU5MjE6MzMyODIsMjI4MTcwMTM3NzozMjc3MCwyNTUwMTM2ODMzOjgzODkxMjIsMjgxODU3MjI4OTo1MTQsMzA4NzAwNzc0NTo4NDIxODg4LDMzNTU0NDMyMDE6ODM4OTEyMCwzNjIzODc4NjU3OjAsMzg5MjMxNDExMzozMzI4MCw0MTYwNzQ5NTY5Ojg0MjEzNzh9LHswOjEwNzQyODI1MTIsMTY3NzcyMTY6MTYzODQsMzM1NTQ0MzI6NTI0Mjg4LDUwMzMxNjQ4OjEwNzQyNjYxMjgsNjcxMDg4NjQ6MTA3Mzc0MTg0MCw4Mzg4NjA4MDoxMDc0MjgyNDk2LDEwMDY2MzI5NjoxMDczNzU4MjA4LDExNzQ0MDUxMjoxNiwxMzQyMTc3Mjg6NTQwNjcyLDE1MDk5NDk0NDoxMDczNzU4MjI0LDE2Nzc3MjE2MDoxMDczNzQxODI0LDE4NDU0OTM3Njo1NDA2ODgsMjAxMzI2NTkyOjUyNDMwNCwyMTgxMDM4MDg6MCwyMzQ4ODEwMjQ6MTY0MDAsMjUxNjU4MjQwOjEwNzQyNjYxMTIsODM4ODYwODoxMDczNzU4MjA4LDI1MTY1ODI0OjU0MDY4OCw0MTk0MzA0MDoxNiw1ODcyMDI1NjoxMDczNzU4MjI0LDc1NDk3NDcyOjEwNzQyODI1MTIsOTIyNzQ2ODg6MTA3Mzc0MTgyNCwxMDkwNTE5MDQ6NTI0Mjg4LDEyNTgyOTEyMDoxMDc0MjY2MTI4LDE0MjYwNjMzNjo1MjQzMDQsMTU5MzgzNTUyOjAsMTc2MTYwNzY4OjE2Mzg0LDE5MjkzNzk4NDoxMDc0MjY2MTEyLDIwOTcxNTIwMDoxMDczNzQxODQwLDIyNjQ5MjQxNjo1NDA2NzIsMjQzMjY5NjMyOjEwNzQyODI0OTYsMjYwMDQ2ODQ4OjE2NDAwLDI2ODQzNTQ1NjowLDI4NTIxMjY3MjoxMDc0MjY2MTI4LDMwMTk4OTg4ODoxMDczNzU4MjI0LDMxODc2NzEwNDoxMDc0MjgyNDk2LDMzNTU0NDMyMDoxMDc0MjY2MTEyLDM1MjMyMTUzNjoxNiwzNjkwOTg3NTI6NTQwNjg4LDM4NTg3NTk2ODoxNjM4NCw0MDI2NTMxODQ6MTY0MDAsNDE5NDMwNDAwOjUyNDI4OCw0MzYyMDc2MTY6NTI0MzA0LDQ1Mjk4NDgzMjoxMDczNzQxODQwLDQ2OTc2MjA0ODo1NDA2NzIsNDg2NTM5MjY0OjEwNzM3NTgyMDgsNTAzMzE2NDgwOjEwNzM3NDE4MjQsNTIwMDkzNjk2OjEwNzQyODI1MTIsMjc2ODI0MDY0OjU0MDY4OCwyOTM2MDEyODA6NTI0Mjg4LDMxMDM3ODQ5NjoxMDc0MjY2MTEyLDMyNzE1NTcxMjoxNjM4NCwzNDM5MzI5Mjg6MTA3Mzc1ODIwOCwzNjA3MTAxNDQ6MTA3NDI4MjUxMiwzNzc0ODczNjA6MTYsMzk0MjY0NTc2OjEwNzM3NDE4MjQsNDExMDQxNzkyOjEwNzQyODI0OTYsNDI3ODE5MDA4OjEwNzM3NDE4NDAsNDQ0NTk2MjI0OjEwNzM3NTgyMjQsNDYxMzczNDQwOjUyNDMwNCw0NzgxNTA2NTY6MCw0OTQ5Mjc4NzI6MTY0MDAsNTExNzA1MDg4OjEwNzQyNjYxMjgsNTI4NDgyMzA0OjU0MDY3Mn0sezA6MjYwLDEwNDg1NzY6MCwyMDk3MTUyOjY3MTA5MTIwLDMxNDU3Mjg6NjU3OTYsNDE5NDMwNDo2NTU0MCw1MjQyODgwOjY3MTA4ODY4LDYyOTE0NTY6NjcxNzQ2NjAsNzM0MDAzMjo2NzE3NDQwMCw4Mzg4NjA4OjY3MTA4ODY0LDk0MzcxODQ6NjcxNzQ2NTYsMTA0ODU3NjA6NjU3OTIsMTE1MzQzMzY6NjcxNzQ0MDQsMTI1ODI5MTI6NjcxMDkxMjQsMTM2MzE0ODg6NjU1MzYsMTQ2ODAwNjQ6NCwxNTcyODY0MDoyNTYsNTI0Mjg4OjY3MTc0NjU2LDE1NzI4NjQ6NjcxNzQ0MDQsMjYyMTQ0MDowLDM2NzAwMTY6NjcxMDkxMjAsNDcxODU5Mjo2NzEwODg2OCw1NzY3MTY4OjY1NTM2LDY4MTU3NDQ6NjU1NDAsNzg2NDMyMDoyNjAsODkxMjg5Njo0LDk5NjE0NzI6MjU2LDExMDEwMDQ4OjY3MTc0NDAwLDEyMDU4NjI0OjY1Nzk2LDEzMTA3MjAwOjY1NzkyLDE0MTU1Nzc2OjY3MTA5MTI0LDE1MjA0MzUyOjY3MTc0NjYwLDE2MjUyOTI4OjY3MTA4ODY0LDE2Nzc3MjE2OjY3MTc0NjU2LDE3ODI1NzkyOjY1NTQwLDE4ODc0MzY4OjY1NTM2LDE5OTIyOTQ0OjY3MTA5MTIwLDIwOTcxNTIwOjI1NiwyMjAyMDA5Njo2NzE3NDY2MCwyMzA2ODY3Mjo2NzEwODg2OCwyNDExNzI0ODowLDI1MTY1ODI0OjY3MTA5MTI0LDI2MjE0NDAwOjY3MTA4ODY0LDI3MjYyOTc2OjQsMjgzMTE1NTI6NjU3OTIsMjkzNjAxMjg6NjcxNzQ0MDAsMzA0MDg3MDQ6MjYwLDMxNDU3MjgwOjY1Nzk2LDMyNTA1ODU2OjY3MTc0NDA0LDE3MzAxNTA0OjY3MTA4ODY0LDE4MzUwMDgwOjI2MCwxOTM5ODY1Njo2NzE3NDY1NiwyMDQ0NzIzMjowLDIxNDk1ODA4OjY1NTQwLDIyNTQ0Mzg0OjY3MTA5MTIwLDIzNTkyOTYwOjI1NiwyNDY0MTUzNjo2NzE3NDQwNCwyNTY5MDExMjo2NTUzNiwyNjczODY4ODo2NzE3NDY2MCwyNzc4NzI2NDo2NTc5NiwyODgzNTg0MDo2NzEwODg2OCwyOTg4NDQxNjo2NzEwOTEyNCwzMDkzMjk5Mjo2NzE3NDQwMCwzMTk4MTU2ODo0LDMzMDMwMTQ0OjY1NzkyfSx7MDoyMTUxNjgyMDQ4LDY1NTM2OjIxNDc0ODc4MDgsMTMxMDcyOjQxOTg0NjQsMTk2NjA4OjIxNTE2Nzc5NTIsMjYyMTQ0OjAsMzI3NjgwOjQxOTg0MDAsMzkzMjE2OjIxNDc0ODM3MTIsNDU4NzUyOjQxOTQzNjgsNTI0Mjg4OjIxNDc0ODM2NDgsNTg5ODI0OjQxOTQzMDQsNjU1MzYwOjY0LDcyMDg5NjoyMTQ3NDg3NzQ0LDc4NjQzMjoyMTUxNjc4MDE2LDg1MTk2ODo0MTYwLDkxNzUwNDo0MDk2LDk4MzA0MDoyMTUxNjgyMTEyLDMyNzY4OjIxNDc0ODc4MDgsOTgzMDQ6NjQsMTYzODQwOjIxNTE2NzgwMTYsMjI5Mzc2OjIxNDc0ODc3NDQsMjk0OTEyOjQxOTg0MDAsMzYwNDQ4OjIxNTE2ODIxMTIsNDI1OTg0OjAsNDkxNTIwOjIxNTE2Nzc5NTIsNTU3MDU2OjQwOTYsNjIyNTkyOjIxNTE2ODIwNDgsNjg4MTI4OjQxOTQzMDQsNzUzNjY0OjQxNjAsODE5MjAwOjIxNDc0ODM2NDgsODg0NzM2OjQxOTQzNjgsOTUwMjcyOjQxOTg0NjQsMTAxNTgwODoyMTQ3NDgzNzEyLDEwNDg1NzY6NDE5NDM2OCwxMTE0MTEyOjQxOTg0MDAsMTE3OTY0ODoyMTQ3NDgzNzEyLDEyNDUxODQ6MCwxMzEwNzIwOjQxNjAsMTM3NjI1NjoyMTUxNjc4MDE2LDE0NDE3OTI6MjE1MTY4MjA0OCwxNTA3MzI4OjIxNDc0ODc4MDgsMTU3Mjg2NDoyMTUxNjgyMTEyLDE2Mzg0MDA6MjE0NzQ4MzY0OCwxNzAzOTM2OjIxNTE2Nzc5NTIsMTc2OTQ3Mjo0MTk4NDY0LDE4MzUwMDg6MjE0NzQ4Nzc0NCwxOTAwNTQ0OjQxOTQzMDQsMTk2NjA4MDo2NCwyMDMxNjE2OjQwOTYsMTA4MTM0NDoyMTUxNjc3OTUyLDExNDY4ODA6MjE1MTY4MjExMiwxMjEyNDE2OjAsMTI3Nzk1Mjo0MTk4NDAwLDEzNDM0ODg6NDE5NDM2OCwxNDA5MDI0OjIxNDc0ODM2NDgsMTQ3NDU2MDoyMTQ3NDg3ODA4LDE1NDAwOTY6NjQsMTYwNTYzMjoyMTQ3NDgzNzEyLDE2NzExNjg6NDA5NiwxNzM2NzA0OjIxNDc0ODc3NDQsMTgwMjI0MDoyMTUxNjc4MDE2LDE4Njc3NzY6NDE2MCwxOTMzMzEyOjIxNTE2ODIwNDgsMTk5ODg0ODo0MTk0MzA0LDIwNjQzODQ6NDE5ODQ2NH0sezA6MTI4LDQwOTY6MTcwMzkzNjAsODE5MjoyNjIxNDQsMTIyODg6NTM2ODcwOTEyLDE2Mzg0OjUzNzEzMzE4NCwyMDQ4MDoxNjc3NzM0NCwyNDU3Njo1NTM2NDgyNTYsMjg2NzI6MjYyMjcyLDMyNzY4OjE2Nzc3MjE2LDM2ODY0OjUzNzEzMzA1Niw0MDk2MDo1MzY4NzEwNDAsNDUwNTY6NTUzOTEwNDAwLDQ5MTUyOjU1MzkxMDI3Miw1MzI0ODowLDU3MzQ0OjE3MDM5NDg4LDYxNDQwOjU1MzY0ODEyOCwyMDQ4OjE3MDM5NDg4LDYxNDQ6NTUzNjQ4MjU2LDEwMjQwOjEyOCwxNDMzNjoxNzAzOTM2MCwxODQzMjoyNjIxNDQsMjI1Mjg6NTM3MTMzMTg0LDI2NjI0OjU1MzkxMDI3MiwzMDcyMDo1MzY4NzA5MTIsMzQ4MTY6NTM3MTMzMDU2LDM4OTEyOjAsNDMwMDg6NTUzOTEwNDAwLDQ3MTA0OjE2Nzc3MzQ0LDUxMjAwOjUzNjg3MTA0MCw1NTI5Njo1NTM2NDgxMjgsNTkzOTI6MTY3NzcyMTYsNjM0ODg6MjYyMjcyLDY1NTM2OjI2MjE0NCw2OTYzMjoxMjgsNzM3Mjg6NTM2ODcwOTEyLDc3ODI0OjU1MzY0ODI1Niw4MTkyMDoxNjc3NzM0NCw4NjAxNjo1NTM5MTAyNzIsOTAxMTI6NTM3MTMzMTg0LDk0MjA4OjE2Nzc3MjE2LDk4MzA0OjU1MzkxMDQwMCwxMDI0MDA6NTUzNjQ4MTI4LDEwNjQ5NjoxNzAzOTM2MCwxMTA1OTI6NTM3MTMzMDU2LDExNDY4ODoyNjIyNzIsMTE4Nzg0OjUzNjg3MTA0MCwxMjI4ODA6MCwxMjY5NzY6MTcwMzk0ODgsNjc1ODQ6NTUzNjQ4MjU2LDcxNjgwOjE2Nzc3MjE2LDc1Nzc2OjE3MDM5MzYwLDc5ODcyOjUzNzEzMzE4NCw4Mzk2ODo1MzY4NzA5MTIsODgwNjQ6MTcwMzk0ODgsOTIxNjA6MTI4LDk2MjU2OjU1MzkxMDI3MiwxMDAzNTI6MjYyMjcyLDEwNDQ0ODo1NTM5MTA0MDAsMTA4NTQ0OjAsMTEyNjQwOjU1MzY0ODEyOCwxMTY3MzY6MTY3NzczNDQsMTIwODMyOjI2MjE0NCwxMjQ5Mjg6NTM3MTMzMDU2LDEyOTAyNDo1MzY4NzEwNDB9LHswOjI2ODQzNTQ2NCwyNTY6ODE5Miw1MTI6MjcwNTMyNjA4LDc2ODoyNzA1NDA4MDgsMTAyNDoyNjg0NDM2NDgsMTI4MDoyMDk3MTUyLDE1MzY6MjA5NzE2MCwxNzkyOjI2ODQzNTQ1NiwyMDQ4OjAsMjMwNDoyNjg0NDM2NTYsMjU2MDoyMTA1MzQ0LDI4MTY6OCwzMDcyOjI3MDUzMjYxNiwzMzI4OjIxMDUzNTIsMzU4NDo4MjAwLDM4NDA6MjcwNTQwODAwLDEyODoyNzA1MzI2MDgsMzg0OjI3MDU0MDgwOCw2NDA6OCw4OTY6MjA5NzE1MiwxMTUyOjIxMDUzNTIsMTQwODoyNjg0MzU0NjQsMTY2NDoyNjg0NDM2NDgsMTkyMDo4MjAwLDIxNzY6MjA5NzE2MCwyNDMyOjgxOTIsMjY4ODoyNjg0NDM2NTYsMjk0NDoyNzA1MzI2MTYsMzIwMDowLDM0NTY6MjcwNTQwODAwLDM3MTI6MjEwNTM0NCwzOTY4OjI2ODQzNTQ1Niw0MDk2OjI2ODQ0MzY0OCw0MzUyOjI3MDUzMjYxNiw0NjA4OjI3MDU0MDgwOCw0ODY0OjgyMDAsNTEyMDoyMDk3MTUyLDUzNzY6MjY4NDM1NDU2LDU2MzI6MjY4NDM1NDY0LDU4ODg6MjEwNTM0NCw2MTQ0OjIxMDUzNTIsNjQwMDowLDY2NTY6OCw2OTEyOjI3MDUzMjYwOCw3MTY4OjgxOTIsNzQyNDoyNjg0NDM2NTYsNzY4MDoyNzA1NDA4MDAsNzkzNjoyMDk3MTYwLDQyMjQ6OCw0NDgwOjIxMDUzNDQsNDczNjoyMDk3MTUyLDQ5OTI6MjY4NDM1NDY0LDUyNDg6MjY4NDQzNjQ4LDU1MDQ6ODIwMCw1NzYwOjI3MDU0MDgwOCw2MDE2OjI3MDUzMjYwOCw2MjcyOjI3MDU0MDgwMCw2NTI4OjI3MDUzMjYxNiw2Nzg0OjgxOTIsNzA0MDoyMTA1MzUyLDcyOTY6MjA5NzE2MCw3NTUyOjAsNzgwODoyNjg0MzU0NTYsODA2NDoyNjg0NDM2NTZ9LHswOjEwNDg1NzYsMTY6MzM1NTU0NTcsMzI6MTAyNCw0ODoxMDQ5NjAxLDY0OjM0NjA0MDMzLDgwOjAsOTY6MSwxMTI6MzQ2MDMwMDksMTI4OjMzNTU1NDU2LDE0NDoxMDQ4NTc3LDE2MDozMzU1NDQzMywxNzY6MzQ2MDQwMzIsMTkyOjM0NjAzMDA4LDIwODoxMDI1LDIyNDoxMDQ5NjAwLDI0MDozMzU1NDQzMiw4OjM0NjAzMDA5LDI0OjAsNDA6MzM1NTU0NTcsNTY6MzQ2MDQwMzIsNzI6MTA0ODU3Niw4ODozMzU1NDQzMywxMDQ6MzM1NTQ0MzIsMTIwOjEwMjUsMTM2OjEwNDk2MDEsMTUyOjMzNTU1NDU2LDE2ODozNDYwMzAwOCwxODQ6MTA0ODU3NywyMDA6MTAyNCwyMTY6MzQ2MDQwMzMsMjMyOjEsMjQ4OjEwNDk2MDAsMjU2OjMzNTU0NDMyLDI3MjoxMDQ4NTc2LDI4ODozMzU1NTQ1NywzMDQ6MzQ2MDMwMDksMzIwOjEwNDg1NzcsMzM2OjMzNTU1NDU2LDM1MjozNDYwNDAzMiwzNjg6MTA0OTYwMSwzODQ6MTAyNSw0MDA6MzQ2MDQwMzMsNDE2OjEwNDk2MDAsNDMyOjEsNDQ4OjAsNDY0OjM0NjAzMDA4LDQ4MDozMzU1NDQzMyw0OTY6MTAyNCwyNjQ6MTA0OTYwMCwyODA6MzM1NTU0NTcsMjk2OjM0NjAzMDA5LDMxMjoxLDMyODozMzU1NDQzMiwzNDQ6MTA0ODU3NiwzNjA6MTAyNSwzNzY6MzQ2MDQwMzIsMzkyOjMzNTU0NDMzLDQwODozNDYwMzAwOCw0MjQ6MCw0NDA6MzQ2MDQwMzMsNDU2OjEwNDk2MDEsNDcyOjEwMjQsNDg4OjMzNTU1NDU2LDUwNDoxMDQ4NTc3fSx7MDoxMzQyMTk4MDgsMToxMzEwNzIsMjoxMzQyMTc3MjgsMzozMiw0OjEzMTEwNCw1OjEzNDM1MDg4MCw2OjEzNDM1MDg0OCw3OjIwNDgsODoxMzQzNDg4MDAsOToxMzQyMTk3NzYsMTA6MTMzMTIwLDExOjEzNDM0ODgzMiwxMjoyMDgwLDEzOjAsMTQ6MTM0MjE3NzYwLDE1OjEzMzE1MiwyMTQ3NDgzNjQ4OjIwNDgsMjE0NzQ4MzY0OToxMzQzNTA4ODAsMjE0NzQ4MzY1MDoxMzQyMTk4MDgsMjE0NzQ4MzY1MToxMzQyMTc3MjgsMjE0NzQ4MzY1MjoxMzQzNDg4MDAsMjE0NzQ4MzY1MzoxMzMxMjAsMjE0NzQ4MzY1NDoxMzMxNTIsMjE0NzQ4MzY1NTozMiwyMTQ3NDgzNjU2OjEzNDIxNzc2MCwyMTQ3NDgzNjU3OjIwODAsMjE0NzQ4MzY1ODoxMzExMDQsMjE0NzQ4MzY1OToxMzQzNTA4NDgsMjE0NzQ4MzY2MDowLDIxNDc0ODM2NjE6MTM0MzQ4ODMyLDIxNDc0ODM2NjI6MTM0MjE5Nzc2LDIxNDc0ODM2NjM6MTMxMDcyLDE2OjEzMzE1MiwxNzoxMzQzNTA4NDgsMTg6MzIsMTk6MjA0OCwyMDoxMzQyMTk3NzYsMjE6MTM0MjE3NzYwLDIyOjEzNDM0ODgzMiwyMzoxMzEwNzIsMjQ6MCwyNToxMzExMDQsMjY6MTM0MzQ4ODAwLDI3OjEzNDIxOTgwOCwyODoxMzQzNTA4ODAsMjk6MTMzMTIwLDMwOjIwODAsMzE6MTM0MjE3NzI4LDIxNDc0ODM2NjQ6MTMxMDcyLDIxNDc0ODM2NjU6MjA0OCwyMTQ3NDgzNjY2OjEzNDM0ODgzMiwyMTQ3NDgzNjY3OjEzMzE1MiwyMTQ3NDgzNjY4OjMyLDIxNDc0ODM2Njk6MTM0MzQ4ODAwLDIxNDc0ODM2NzA6MTM0MjE3NzI4LDIxNDc0ODM2NzE6MTM0MjE5ODA4LDIxNDc0ODM2NzI6MTM0MzUwODgwLDIxNDc0ODM2NzM6MTM0MjE3NzYwLDIxNDc0ODM2NzQ6MTM0MjE5Nzc2LDIxNDc0ODM2NzU6MCwyMTQ3NDgzNjc2OjEzMzEyMCwyMTQ3NDgzNjc3OjIwODAsMjE0NzQ4MzY3ODoxMzExMDQsMjE0NzQ4MzY3OToxMzQzNTA4NDh9XSx1PVs0MTYwNzQ5NTY5LDUyODQ4MjMwNCwzMzAzMDE0NCwyMDY0Mzg0LDEyOTAyNCw4MDY0LDUwNCwyMTQ3NDgzNjc5XSxkPWEuREVTPXMuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9rZXkscj10LndvcmRzLGU9W10saT0wO2k8NTY7aSsrKXt2YXIgbj1jW2ldLTE7ZVtpXT1yW24+Pj41XT4+PjMxLW4lMzImMX1mb3IodmFyIG89dGhpcy5fc3ViS2V5cz1bXSxzPTA7czwxNjtzKyspe2Zvcih2YXIgYT1vW3NdPVtdLGY9bFtzXSxpPTA7aTwyNDtpKyspYVtpLzZ8MF18PWVbKGhbaV0tMStmKSUyOF08PDMxLWklNixhWzQrKGkvNnwwKV18PWVbMjgrKGhbaSsyNF0tMStmKSUyOF08PDMxLWklNjthWzBdPWFbMF08PDF8YVswXT4+PjMxO2Zvcih2YXIgaT0xO2k8NztpKyspYVtpXT1hW2ldPj4+NCooaS0xKSszO2FbN109YVs3XTw8NXxhWzddPj4+Mjd9Zm9yKHZhciB1PXRoaXMuX2ludlN1YktleXM9W10saT0wO2k8MTY7aSsrKXVbaV09b1sxNS1pXX0sZW5jcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9zdWJLZXlzKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9pbnZTdWJLZXlzKX0sX2RvQ3J5cHRCbG9jazpmdW5jdGlvbih0LGksbil7dGhpcy5fbEJsb2NrPXRbaV0sdGhpcy5fckJsb2NrPXRbaSsxXSxyLmNhbGwodGhpcyw0LDI1MjY0NTEzNSksci5jYWxsKHRoaXMsMTYsNjU1MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxlLmNhbGwodGhpcyw4LDE2NzExOTM1KSxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpO2Zvcih2YXIgbz0wO288MTY7bysrKXtmb3IodmFyIHM9bltvXSxhPXRoaXMuX2xCbG9jayxjPXRoaXMuX3JCbG9jayxoPTAsbD0wO2w8ODtsKyspaHw9ZltsXVsoKGNec1tsXSkmdVtsXSk+Pj4wXTt0aGlzLl9sQmxvY2s9Yyx0aGlzLl9yQmxvY2s9YV5ofXZhciBkPXRoaXMuX2xCbG9jazt0aGlzLl9sQmxvY2s9dGhpcy5fckJsb2NrLHRoaXMuX3JCbG9jaz1kLHIuY2FsbCh0aGlzLDEsMTQzMTY1NTc2NSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksZS5jYWxsKHRoaXMsMiw4NTg5OTM0NTkpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxyLmNhbGwodGhpcyw0LDI1MjY0NTEzNSksdFtpXT10aGlzLl9sQmxvY2ssdFtpKzFdPXRoaXMuX3JCbG9ja30sa2V5U2l6ZToyLGl2U2l6ZToyLGJsb2NrU2l6ZToyfSk7aS5ERVM9cy5fY3JlYXRlSGVscGVyKGQpO3ZhciB2PWEuVHJpcGxlREVTPXMuZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleSxyPXQud29yZHM7dGhpcy5fZGVzMT1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDAsMikpKSx0aGlzLl9kZXMyPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoMiw0KSkpLHRoaXMuX2RlczM9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSg0LDYpKSl9LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RlczEuZW5jcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMi5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMzLmVuY3J5cHRCbG9jayh0LHIpfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMzLmRlY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZW5jcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMS5kZWNyeXB0QmxvY2sodCxyKX0sa2V5U2l6ZTo2LGl2U2l6ZToyLGJsb2NrU2l6ZToyfSk7aS5UcmlwbGVERVM9cy5fY3JlYXRlSGVscGVyKHYpfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9TLHI9dGhpcy5faSxlPXRoaXMuX2osaT0wLG49MDtuPDQ7bisrKXtyPShyKzEpJTI1NixlPShlK3Rbcl0pJTI1Njt2YXIgbz10W3JdO3Rbcl09dFtlXSx0W2VdPW8saXw9dFsodFtyXSt0W2VdKSUyNTZdPDwyNC04Km59cmV0dXJuIHRoaXMuX2k9cix0aGlzLl9qPWUsaX12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPW8uUkM0PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9rZXkscj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPXRoaXMuX1M9W10sbj0wO248MjU2O24rKylpW25dPW47Zm9yKHZhciBuPTAsbz0wO248MjU2O24rKyl7dmFyIHM9biVlLGE9cltzPj4+Ml0+Pj4yNC1zJTQqOCYyNTU7bz0obytpW25dK2EpJTI1Njt2YXIgYz1pW25dO2lbbl09aVtvXSxpW29dPWN9dGhpcy5faT10aGlzLl9qPTB9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LGUpe3RbZV1ePXIuY2FsbCh0aGlzKX0sa2V5U2l6ZTo4LGl2U2l6ZTowfSk7ZS5SQzQ9bi5fY3JlYXRlSGVscGVyKHMpO3ZhciBhPW8uUkM0RHJvcD1zLmV4dGVuZCh7Y2ZnOnMuY2ZnLmV4dGVuZCh7ZHJvcDoxOTJ9KSxfZG9SZXNldDpmdW5jdGlvbigpe3MuX2RvUmVzZXQuY2FsbCh0aGlzKTtmb3IodmFyIHQ9dGhpcy5jZmcuZHJvcDt0PjA7dC0tKXIuY2FsbCh0aGlzKX19KTtlLlJDNERyb3A9bi5fY3JlYXRlSGVscGVyKGEpfSgpLHQubW9kZS5DVFJHbGFkbWFuPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0KXtpZigyNTU9PT0odD4+MjQmMjU1KSl7dmFyIHI9dD4+MTYmMjU1LGU9dD4+OCYyNTUsaT0yNTUmdDsyNTU9PT1yPyhyPTAsMjU1PT09ZT8oZT0wLDI1NT09PWk/aT0wOisraSk6KytlKTorK3IsdD0wLHQrPXI8PDE2LHQrPWU8PDgsdCs9aX1lbHNlIHQrPTE8PDI0O3JldHVybiB0fWZ1bmN0aW9uIGUodCl7cmV0dXJuIDA9PT0odFswXT1yKHRbMF0pKSYmKHRbMV09cih0WzFdKSksdH12YXIgaT10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCksbj1pLkVuY3J5cHRvcj1pLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemUsbz10aGlzLl9pdixzPXRoaXMuX2NvdW50ZXI7byYmKHM9dGhpcy5fY291bnRlcj1vLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCksZShzKTt2YXIgYT1zLnNsaWNlKDApO2kuZW5jcnlwdEJsb2NrKGEsMCk7Zm9yKHZhciBjPTA7YzxuO2MrKyl0W3IrY11ePWFbY119fSk7cmV0dXJuIGkuRGVjcnlwdG9yPW4saX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fWCxyPXRoaXMuX0MsZT0wO2U8ODtlKyspYVtlXT1yW2VdO3JbMF09clswXSsxMjk1MzA3NTk3K3RoaXMuX2J8MCxyWzFdPXJbMV0rMzU0NTA1MjM3MSsoclswXT4+PjA8YVswXT4+PjA/MTowKXwwLHJbMl09clsyXSs4ODYyNjMwOTIrKHJbMV0+Pj4wPGFbMV0+Pj4wPzE6MCl8MCxyWzNdPXJbM10rMTI5NTMwNzU5NysoclsyXT4+PjA8YVsyXT4+PjA/MTowKXwwLHJbNF09cls0XSszNTQ1MDUyMzcxKyhyWzNdPj4+MDxhWzNdPj4+MD8xOjApfDAscls1XT1yWzVdKzg4NjI2MzA5Misocls0XT4+PjA8YVs0XT4+PjA/MTowKXwwLHJbNl09cls2XSsxMjk1MzA3NTk3KyhyWzVdPj4+MDxhWzVdPj4+MD8xOjApfDAscls3XT1yWzddKzM1NDUwNTIzNzErKHJbNl0+Pj4wPGFbNl0+Pj4wPzE6MCl8MCx0aGlzLl9iPXJbN10+Pj4wPGFbN10+Pj4wPzE6MDtmb3IodmFyIGU9MDtlPDg7ZSsrKXt2YXIgaT10W2VdK3JbZV0sbj02NTUzNSZpLG89aT4+PjE2LHM9KChuKm4+Pj4xNykrbipvPj4+MTUpK28qbyxoPSgoNDI5NDkwMTc2MCZpKSppfDApKygoNjU1MzUmaSkqaXwwKTtjW2VdPXNeaH10WzBdPWNbMF0rKGNbN108PDE2fGNbN10+Pj4xNikrKGNbNl08PDE2fGNbNl0+Pj4xNil8MCx0WzFdPWNbMV0rKGNbMF08PDh8Y1swXT4+PjI0KStjWzddfDAsdFsyXT1jWzJdKyhjWzFdPDwxNnxjWzFdPj4+MTYpKyhjWzBdPDwxNnxjWzBdPj4+MTYpfDAsdFszXT1jWzNdKyhjWzJdPDw4fGNbMl0+Pj4yNCkrY1sxXXwwLHRbNF09Y1s0XSsoY1szXTw8MTZ8Y1szXT4+PjE2KSsoY1syXTw8MTZ8Y1syXT4+PjE2KXwwLHRbNV09Y1s1XSsoY1s0XTw8OHxjWzRdPj4+MjQpK2NbM118MCx0WzZdPWNbNl0rKGNbNV08PDE2fGNbNV0+Pj4xNikrKGNbNF08PDE2fGNbNF0+Pj4xNil8MCx0WzddPWNbN10rKGNbNl08PDh8Y1s2XT4+PjI0KStjWzVdfDB9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1bXSxhPVtdLGM9W10saD1vLlJhYmJpdD1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LndvcmRzLGU9dGhpcy5jZmcuaXYsaT0wO2k8NDtpKyspdFtpXT0xNjcxMTkzNSYodFtpXTw8OHx0W2ldPj4+MjQpfDQyNzgyNTUzNjAmKHRbaV08PDI0fHRbaV0+Pj44KTt2YXIgbj10aGlzLl9YPVt0WzBdLHRbM108PDE2fHRbMl0+Pj4xNix0WzFdLHRbMF08PDE2fHRbM10+Pj4xNix0WzJdLHRbMV08PDE2fHRbMF0+Pj4xNix0WzNdLHRbMl08PDE2fHRbMV0+Pj4xNl0sbz10aGlzLl9DPVt0WzJdPDwxNnx0WzJdPj4+MTYsNDI5NDkwMTc2MCZ0WzBdfDY1NTM1JnRbMV0sdFszXTw8MTZ8dFszXT4+PjE2LDQyOTQ5MDE3NjAmdFsxXXw2NTUzNSZ0WzJdLHRbMF08PDE2fHRbMF0+Pj4xNiw0Mjk0OTAxNzYwJnRbMl18NjU1MzUmdFszXSx0WzFdPDwxNnx0WzFdPj4+MTYsNDI5NDkwMTc2MCZ0WzNdfDY1NTM1JnRbMF1dO3RoaXMuX2I9MDtmb3IodmFyIGk9MDtpPDQ7aSsrKXIuY2FsbCh0aGlzKTtmb3IodmFyIGk9MDtpPDg7aSsrKW9baV1ePW5baSs0JjddO2lmKGUpe3ZhciBzPWUud29yZHMsYT1zWzBdLGM9c1sxXSxoPTE2NzExOTM1JihhPDw4fGE+Pj4yNCl8NDI3ODI1NTM2MCYoYTw8MjR8YT4+PjgpLGw9MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCksZj1oPj4+MTZ8NDI5NDkwMTc2MCZsLHU9bDw8MTZ8NjU1MzUmaDtvWzBdXj1oLG9bMV1ePWYsb1syXV49bCxvWzNdXj11LG9bNF1ePWgsb1s1XV49ZixvWzZdXj1sLG9bN11ePXU7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyl9fSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9YO3IuY2FsbCh0aGlzKSxzWzBdPWlbMF1eaVs1XT4+PjE2XmlbM108PDE2LHNbMV09aVsyXV5pWzddPj4+MTZeaVs1XTw8MTYsc1syXT1pWzRdXmlbMV0+Pj4xNl5pWzddPDwxNixzWzNdPWlbNl1eaVszXT4+PjE2XmlbMV08PDE2O2Zvcih2YXIgbj0wO248NDtuKyspc1tuXT0xNjcxMTkzNSYoc1tuXTw8OHxzW25dPj4+MjQpfDQyNzgyNTUzNjAmKHNbbl08PDI0fHNbbl0+Pj44KSx0W2Urbl1ePXNbbl19LGJsb2NrU2l6ZTo0LGl2U2l6ZToyfSk7ZS5SYWJiaXQ9bi5fY3JlYXRlSGVscGVyKGgpfSgpLHQubW9kZS5DVFI9ZnVuY3Rpb24oKXt2YXIgcj10LmxpYi5CbG9ja0NpcGhlck1vZGUuZXh0ZW5kKCksZT1yLkVuY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dmFyIGU9dGhpcy5fY2lwaGVyLGk9ZS5ibG9ja1NpemUsbj10aGlzLl9pdixvPXRoaXMuX2NvdW50ZXI7biYmKG89dGhpcy5fY291bnRlcj1uLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCk7dmFyIHM9by5zbGljZSgwKTtlLmVuY3J5cHRCbG9jayhzLDApLG9baS0xXT1vW2ktMV0rMXwwO2Zvcih2YXIgYT0wO2E8aTthKyspdFtyK2FdXj1zW2FdfX0pO3JldHVybiByLkRlY3J5cHRvcj1lLHJ9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+Pj4wPGFbMF0+Pj4wPzE6MCl8MCxyWzJdPXJbMl0rODg2MjYzMDkyKyhyWzFdPj4+MDxhWzFdPj4+MD8xOjApfDAsclszXT1yWzNdKzEyOTUzMDc1OTcrKHJbMl0+Pj4wPGFbMl0+Pj4wPzE6MCl8MCxyWzRdPXJbNF0rMzU0NTA1MjM3MSsoclszXT4+PjA8YVszXT4+PjA/MTowKXwwLHJbNV09cls1XSs4ODYyNjMwOTIrKHJbNF0+Pj4wPGFbNF0+Pj4wPzE6MCl8MCxyWzZdPXJbNl0rMTI5NTMwNzU5Nysocls1XT4+PjA8YVs1XT4+PjA/MTowKXwwLHJbN109cls3XSszNTQ1MDUyMzcxKyhyWzZdPj4+MDxhWzZdPj4+MD8xOjApfDAsdGhpcy5fYj1yWzddPj4+MDxhWzddPj4+MD8xOjA7Zm9yKHZhciBlPTA7ZTw4O2UrKyl7dmFyIGk9dFtlXStyW2VdLG49NjU1MzUmaSxvPWk+Pj4xNixzPSgobipuPj4+MTcpK24qbz4+PjE1KStvKm8saD0oKDQyOTQ5MDE3NjAmaSkqaXwwKSsoKDY1NTM1JmkpKml8MCk7Y1tlXT1zXmh9dFswXT1jWzBdKyhjWzddPDwxNnxjWzddPj4+MTYpKyhjWzZdPDwxNnxjWzZdPj4+MTYpfDAsdFsxXT1jWzFdKyhjWzBdPDw4fGNbMF0+Pj4yNCkrY1s3XXwwLHRbMl09Y1syXSsoY1sxXTw8MTZ8Y1sxXT4+PjE2KSsoY1swXTw8MTZ8Y1swXT4+PjE2KXwwLHRbM109Y1szXSsoY1syXTw8OHxjWzJdPj4+MjQpK2NbMV18MCx0WzRdPWNbNF0rKGNbM108PDE2fGNbM10+Pj4xNikrKGNbMl08PDE2fGNbMl0+Pj4xNil8MCx0WzVdPWNbNV0rKGNbNF08PDh8Y1s0XT4+PjI0KStjWzNdfDAsdFs2XT1jWzZdKyhjWzVdPDwxNnxjWzVdPj4+MTYpKyhjWzRdPDwxNnxjWzRdPj4+MTYpfDAsdFs3XT1jWzddKyhjWzZdPDw4fGNbNl0+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXRMZWdhY3k9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fa2V5LndvcmRzLGU9dGhpcy5jZmcuaXYsaT10aGlzLl9YPVt0WzBdLHRbM108PDE2fHRbMl0+Pj4xNix0WzFdLHRbMF08PDE2fHRbM10+Pj4xNix0WzJdLHRbMV08PDE2fHRbMF0+Pj4xNix0WzNdLHRbMl08PDE2fHRbMV0+Pj4xNl0sbj10aGlzLl9DPVt0WzJdPDwxNnx0WzJdPj4+MTYsNDI5NDkwMTc2MCZ0WzBdfDY1NTM1JnRbMV0sdFszXTw8MTZ8dFszXT4+PjE2LDQyOTQ5MDE3NjAmdFsxXXw2NTUzNSZ0WzJdLHRbMF08PDE2fHRbMF0+Pj4xNiw0Mjk0OTAxNzYwJnRbMl18NjU1MzUmdFszXSx0WzFdPDwxNnx0WzFdPj4+MTYsNDI5NDkwMTc2MCZ0WzNdfDY1NTM1JnRbMF1dO3RoaXMuX2I9MDtmb3IodmFyIG89MDtvPDQ7bysrKXIuY2FsbCh0aGlzKTtmb3IodmFyIG89MDtvPDg7bysrKW5bb11ePWlbbys0JjddO2lmKGUpe3ZhciBzPWUud29yZHMsYT1zWzBdLGM9c1sxXSxoPTE2NzExOTM1JihhPDw4fGE+Pj4yNCl8NDI3ODI1NTM2MCYoYTw8MjR8YT4+PjgpLGw9MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCksZj1oPj4+MTZ8NDI5NDkwMTc2MCZsLHU9bDw8MTZ8NjU1MzUmaDtuWzBdXj1oLG5bMV1ePWYsblsyXV49bCxuWzNdXj11LG5bNF1ePWgsbls1XV49ZixuWzZdXj1sLG5bN11ePXU7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyl9fSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9YO3IuY2FsbCh0aGlzKSxzWzBdPWlbMF1eaVs1XT4+PjE2XmlbM108PDE2LHNbMV09aVsyXV5pWzddPj4+MTZeaVs1XTw8MTYsc1syXT1pWzRdXmlbMV0+Pj4xNl5pWzddPDwxNixzWzNdPWlbNl1eaVszXT4+PjE2XmlbMV08PDE2O2Zvcih2YXIgbj0wO248NDtuKyspc1tuXT0xNjcxMTkzNSYoc1tuXTw8OHxzW25dPj4+MjQpfDQyNzgyNTUzNjAmKHNbbl08PDI0fHNbbl0+Pj44KSx0W2Urbl1ePXNbbl19LGJsb2NrU2l6ZTo0LGl2U2l6ZToyfSk7ZS5SYWJiaXRMZWdhY3k9bi5fY3JlYXRlSGVscGVyKGgpfSgpLHQucGFkLlplcm9QYWRkaW5nPXtwYWQ6ZnVuY3Rpb24odCxyKXt2YXIgZT00KnI7dC5jbGFtcCgpLHQuc2lnQnl0ZXMrPWUtKHQuc2lnQnl0ZXMlZXx8ZSl9LHVucGFkOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcy0xOyEocltlPj4+Ml0+Pj4yNC1lJTQqOCYyNTUpOyllLS07dC5zaWdCeXRlcz1lKzF9fSx0fSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyeXB0by1qcy5taW4uanMubWFwIl19 //------QC-SOURCE-SPLIT------ (function() { @@ -18087,213 +17903,213 @@ cc._RF.pop(); return __quick_compile_project__.require(request, __filename); }; function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, '30e2eSQWDNKI69FbaYfN62j', 'TmoObjectGroup'); -// Script/TmoObjectGroup.js - -"use strict"; - -exports.__esModule = true; -exports["default"] = void 0; -// Learn cc.Class: -// - https://docs.cocos.com/creator/manual/en/scripting/class.html -// Learn Attribute: -// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html -// Learn life-cycle callbacks: -// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html - -var TmoSprite = require("./TmoSprite"); -var _default = cc.Class({ - "extends": cc.TiledObjectGroup, - _init: function _init(groupInfo, mapInfo, texGrids, tiledMap) { - var TiledMap = cc.TiledMap; - var TMXObjectType = TiledMap.TMXObjectType; - var Orientation = TiledMap.Orientation; - var StaggerAxis = TiledMap.StaggerAxis; - var TileFlag = TiledMap.TileFlag; - var FLIPPED_MASK = TileFlag.FLIPPED_MASK; - var FLAG_HORIZONTAL = TileFlag.HORIZONTAL; - var FLAG_VERTICAL = TileFlag.VERTICAL; - this._groupName = groupInfo.name; - this._positionOffset = groupInfo.offset; - this._mapInfo = mapInfo; - this._properties = groupInfo.getProperties(); - this._offset = cc.v2(groupInfo.offset.x, -groupInfo.offset.y); - this._opacity = groupInfo._opacity; - var mapSize = mapInfo._mapSize; - var tileSize = mapInfo._tileSize; - var width = 0, - height = 0; - if (mapInfo.orientation === Orientation.HEX) { - if (mapInfo.getStaggerAxis() === StaggerAxis.STAGGERAXIS_X) { - height = tileSize.height * (mapSize.height + 0.5); - width = (tileSize.width + mapInfo.getHexSideLength()) * Math.floor(mapSize.width / 2) + tileSize.width * (mapSize.width % 2); - } else { - width = tileSize.width * (mapSize.width + 0.5); - height = (tileSize.height + mapInfo.getHexSideLength()) * Math.floor(mapSize.height / 2) + tileSize.height * (mapSize.height % 2); - } - } else if (mapInfo.orientation === Orientation.ISO) { - var wh = mapSize.width + mapSize.height; - width = tileSize.width * 0.5 * wh; - height = tileSize.height * 0.5 * wh; - } else { - width = mapSize.width * tileSize.width; - height = mapSize.height * tileSize.height; - } - this.node.setContentSize(width, height); - var leftTopX = width * this.node.anchorX; - var leftTopY = height * (1 - this.node.anchorY); - var objects = groupInfo._objects; - var aliveNodes = {}; - - // 生成映射Map { Texture2D: textureIndex } - var textureIndexMap = new Map(); - var objectTextures = tiledMap.getObjectTextures(); - objectTextures.forEach(function (texture, idx) { - return textureIndexMap.set(texture, idx); - }); - for (var i = 0, l = objects.length; i < l; i++) { - var object = objects[i]; - var objType = object.type; - object.offset = cc.v2(object.x, object.y); - var points = object.points || object.polylinePoints; - if (points) { - for (var pi = 0; pi < points.length; pi++) { - points[pi].y *= -1; - } - } - if (Orientation.ISO !== mapInfo.orientation) { - object.y = height - object.y; - } else { - var posIdxX = object.x / tileSize.height; - var posIdxY = object.y / tileSize.height; - object.x = tileSize.width * 0.5 * (mapSize.height + posIdxX - posIdxY); - object.y = tileSize.height * 0.5 * (mapSize.width + mapSize.height - posIdxX - posIdxY); - } - if (objType === TMXObjectType.TEXT) { - var textName = "text" + object.id; - aliveNodes[textName] = true; - var textNode = this.node.getChildByName(textName); - if (!textNode) { - textNode = new cc.Node(); - } - textNode.active = object.visible; - textNode.anchorX = 0; - textNode.anchorY = 1; - textNode.angle = -object.rotation; - textNode.x = object.x - leftTopX; - textNode.y = object.y - leftTopY; - textNode.name = textName; - textNode.parent = this.node; - textNode.color = object.color; - textNode.opacity = this._opacity; - textNode.setSiblingIndex(i); - var label = textNode.getComponent(cc.Label); - if (!label) { - label = textNode.addComponent(cc.Label); - } - label.overflow = cc.Label.Overflow.SHRINK; - label.lineHeight = object.height; - label.string = object.text; - label.horizontalAlign = object.halign; - label.verticalAlign = object.valign; - label.fontSize = object.pixelsize; - textNode.width = object.width; - textNode.height = object.height; - } - if (objType === TMXObjectType.IMAGE) { - var gid = object.gid; - var grid = texGrids[(gid & FLIPPED_MASK) >>> 0]; - if (!grid) continue; - var tileset = grid.tileset; - var imgName = "img" + object.id; - aliveNodes[imgName] = true; - var imgNode = this.node.getChildByName(imgName); - var imgWidth = object.width || grid.width; - var imgHeight = object.height || grid.height; - var tileOffsetX = tileset.tileOffset.x; - var tileOffsetY = tileset.tileOffset.y; - - // Delete image nodes implemented as private nodes - // Use cc.Node to implement node-level requirements - if (imgNode instanceof cc.PrivateNode) { - imgNode.removeFromParent(); - imgNode.destroy(); - imgNode = null; - } - if (!imgNode) { - imgNode = new cc.Node(); - } - if (Orientation.ISO == mapInfo.orientation) { - imgNode.anchorX = 0.5 + tileOffsetX / imgWidth; - imgNode.anchorY = tileOffsetY / imgHeight; - } else { - imgNode.anchorX = tileOffsetX / imgWidth; - imgNode.anchorY = tileOffsetY / imgHeight; - } - imgNode.active = object.visible; - imgNode.angle = -object.rotation; - imgNode.x = object.x - leftTopX; - imgNode.y = object.y - leftTopY; - imgNode.name = imgName; - imgNode.parent = this.node; - imgNode.opacity = this._opacity; - imgNode.setSiblingIndex(i); - imgNode._tiledMap = tiledMap; - var sp = imgNode.getComponent(TmoSprite); - if (!sp) { - sp = imgNode.addComponent(TmoSprite); - } - var spf = sp.spriteFrame; - if (!spf) { - spf = new cc.SpriteFrame(); - } - if ((gid & FLAG_HORIZONTAL) >>> 0) { - spf.setFlipX(true); - } else { - spf.setFlipX(false); - } - if ((gid & FLAG_VERTICAL) >>> 0) { - spf.setFlipY(true); - } else { - spf.setFlipY(false); - } - var sourceImage = grid.tileset.sourceImage; - spf.setTexture(sourceImage, cc.rect(grid)); - sp.spriteFrame = spf; - sp.setVertsDirty(); - - // object group may has no width or height info - imgNode.width = imgWidth; - imgNode.height = imgHeight; - - // 收集图集 更新textureIndexMap - if (!textureIndexMap.has(sourceImage)) { - textureIndexMap.set(sourceImage, objectTextures.length); - objectTextures.push(sourceImage); - } - - // 设置textureIndex - var textureIndex = textureIndexMap.get(sourceImage); - sp.setTextureIdx(textureIndex + 1); - } - } - this._objects = objects; - - // destroy useless node - var children = this.node.children; - var uselessExp = /^(?:img|text)\d+$/; - for (var _i = 0, n = children.length; _i < n; _i++) { - var c = children[_i]; - var cName = c._name; - var isUseless = uselessExp.test(cName); - if (isUseless && !aliveNodes[cName]) c.destroy(); - } - } -}); -exports["default"] = _default; -module.exports = exports["default"]; - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '30e2eSQWDNKI69FbaYfN62j', 'TmoObjectGroup'); +// Script/TmoObjectGroup.js + +"use strict"; + +exports.__esModule = true; +exports["default"] = void 0; +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html + +var TmoSprite = require("./TmoSprite"); +var _default = cc.Class({ + "extends": cc.TiledObjectGroup, + _init: function _init(groupInfo, mapInfo, texGrids, tiledMap) { + var TiledMap = cc.TiledMap; + var TMXObjectType = TiledMap.TMXObjectType; + var Orientation = TiledMap.Orientation; + var StaggerAxis = TiledMap.StaggerAxis; + var TileFlag = TiledMap.TileFlag; + var FLIPPED_MASK = TileFlag.FLIPPED_MASK; + var FLAG_HORIZONTAL = TileFlag.HORIZONTAL; + var FLAG_VERTICAL = TileFlag.VERTICAL; + this._groupName = groupInfo.name; + this._positionOffset = groupInfo.offset; + this._mapInfo = mapInfo; + this._properties = groupInfo.getProperties(); + this._offset = cc.v2(groupInfo.offset.x, -groupInfo.offset.y); + this._opacity = groupInfo._opacity; + var mapSize = mapInfo._mapSize; + var tileSize = mapInfo._tileSize; + var width = 0, + height = 0; + if (mapInfo.orientation === Orientation.HEX) { + if (mapInfo.getStaggerAxis() === StaggerAxis.STAGGERAXIS_X) { + height = tileSize.height * (mapSize.height + 0.5); + width = (tileSize.width + mapInfo.getHexSideLength()) * Math.floor(mapSize.width / 2) + tileSize.width * (mapSize.width % 2); + } else { + width = tileSize.width * (mapSize.width + 0.5); + height = (tileSize.height + mapInfo.getHexSideLength()) * Math.floor(mapSize.height / 2) + tileSize.height * (mapSize.height % 2); + } + } else if (mapInfo.orientation === Orientation.ISO) { + var wh = mapSize.width + mapSize.height; + width = tileSize.width * 0.5 * wh; + height = tileSize.height * 0.5 * wh; + } else { + width = mapSize.width * tileSize.width; + height = mapSize.height * tileSize.height; + } + this.node.setContentSize(width, height); + var leftTopX = width * this.node.anchorX; + var leftTopY = height * (1 - this.node.anchorY); + var objects = groupInfo._objects; + var aliveNodes = {}; + + // 生成映射Map { Texture2D: textureIndex } + var textureIndexMap = new Map(); + var objectTextures = tiledMap.getObjectTextures(); + objectTextures.forEach(function (texture, idx) { + return textureIndexMap.set(texture, idx); + }); + for (var i = 0, l = objects.length; i < l; i++) { + var object = objects[i]; + var objType = object.type; + object.offset = cc.v2(object.x, object.y); + var points = object.points || object.polylinePoints; + if (points) { + for (var pi = 0; pi < points.length; pi++) { + points[pi].y *= -1; + } + } + if (Orientation.ISO !== mapInfo.orientation) { + object.y = height - object.y; + } else { + var posIdxX = object.x / tileSize.height; + var posIdxY = object.y / tileSize.height; + object.x = tileSize.width * 0.5 * (mapSize.height + posIdxX - posIdxY); + object.y = tileSize.height * 0.5 * (mapSize.width + mapSize.height - posIdxX - posIdxY); + } + if (objType === TMXObjectType.TEXT) { + var textName = "text" + object.id; + aliveNodes[textName] = true; + var textNode = this.node.getChildByName(textName); + if (!textNode) { + textNode = new cc.Node(); + } + textNode.active = object.visible; + textNode.anchorX = 0; + textNode.anchorY = 1; + textNode.angle = -object.rotation; + textNode.x = object.x - leftTopX; + textNode.y = object.y - leftTopY; + textNode.name = textName; + textNode.parent = this.node; + textNode.color = object.color; + textNode.opacity = this._opacity; + textNode.setSiblingIndex(i); + var label = textNode.getComponent(cc.Label); + if (!label) { + label = textNode.addComponent(cc.Label); + } + label.overflow = cc.Label.Overflow.SHRINK; + label.lineHeight = object.height; + label.string = object.text; + label.horizontalAlign = object.halign; + label.verticalAlign = object.valign; + label.fontSize = object.pixelsize; + textNode.width = object.width; + textNode.height = object.height; + } + if (objType === TMXObjectType.IMAGE) { + var gid = object.gid; + var grid = texGrids[(gid & FLIPPED_MASK) >>> 0]; + if (!grid) continue; + var tileset = grid.tileset; + var imgName = "img" + object.id; + aliveNodes[imgName] = true; + var imgNode = this.node.getChildByName(imgName); + var imgWidth = object.width || grid.width; + var imgHeight = object.height || grid.height; + var tileOffsetX = tileset.tileOffset.x; + var tileOffsetY = tileset.tileOffset.y; + + // Delete image nodes implemented as private nodes + // Use cc.Node to implement node-level requirements + if (imgNode instanceof cc.PrivateNode) { + imgNode.removeFromParent(); + imgNode.destroy(); + imgNode = null; + } + if (!imgNode) { + imgNode = new cc.Node(); + } + if (Orientation.ISO == mapInfo.orientation) { + imgNode.anchorX = 0.5 + tileOffsetX / imgWidth; + imgNode.anchorY = tileOffsetY / imgHeight; + } else { + imgNode.anchorX = tileOffsetX / imgWidth; + imgNode.anchorY = tileOffsetY / imgHeight; + } + imgNode.active = object.visible; + imgNode.angle = -object.rotation; + imgNode.x = object.x - leftTopX; + imgNode.y = object.y - leftTopY; + imgNode.name = imgName; + imgNode.parent = this.node; + imgNode.opacity = this._opacity; + imgNode.setSiblingIndex(i); + imgNode._tiledMap = tiledMap; + var sp = imgNode.getComponent(TmoSprite); + if (!sp) { + sp = imgNode.addComponent(TmoSprite); + } + var spf = sp.spriteFrame; + if (!spf) { + spf = new cc.SpriteFrame(); + } + if ((gid & FLAG_HORIZONTAL) >>> 0) { + spf.setFlipX(true); + } else { + spf.setFlipX(false); + } + if ((gid & FLAG_VERTICAL) >>> 0) { + spf.setFlipY(true); + } else { + spf.setFlipY(false); + } + var sourceImage = grid.tileset.sourceImage; + spf.setTexture(sourceImage, cc.rect(grid)); + sp.spriteFrame = spf; + sp.setVertsDirty(); + + // object group may has no width or height info + imgNode.width = imgWidth; + imgNode.height = imgHeight; + + // 收集图集 更新textureIndexMap + if (!textureIndexMap.has(sourceImage)) { + textureIndexMap.set(sourceImage, objectTextures.length); + objectTextures.push(sourceImage); + } + + // 设置textureIndex + var textureIndex = textureIndexMap.get(sourceImage); + sp.setTextureIdx(textureIndex + 1); + } + } + this._objects = objects; + + // destroy useless node + var children = this.node.children; + var uselessExp = /^(?:img|text)\d+$/; + for (var _i = 0, n = children.length; _i < n; _i++) { + var c = children[_i]; + var cName = c._name; + var isUseless = uselessExp.test(cName); + if (isUseless && !aliveNodes[cName]) c.destroy(); + } + } +}); +exports["default"] = _default; +module.exports = exports["default"]; + cc._RF.pop(); } if (nodeEnv) { @@ -18306,4 +18122,179 @@ cc._RF.pop(); } })(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vT2JqZWN0R3JvdXAuanMiXSwibmFtZXMiOlsiVG1vU3ByaXRlIiwicmVxdWlyZSIsIl9kZWZhdWx0IiwiY2MiLCJDbGFzcyIsIlRpbGVkT2JqZWN0R3JvdXAiLCJfaW5pdCIsImdyb3VwSW5mbyIsIm1hcEluZm8iLCJ0ZXhHcmlkcyIsInRpbGVkTWFwIiwiVGlsZWRNYXAiLCJUTVhPYmplY3RUeXBlIiwiT3JpZW50YXRpb24iLCJTdGFnZ2VyQXhpcyIsIlRpbGVGbGFnIiwiRkxJUFBFRF9NQVNLIiwiRkxBR19IT1JJWk9OVEFMIiwiSE9SSVpPTlRBTCIsIkZMQUdfVkVSVElDQUwiLCJWRVJUSUNBTCIsIl9ncm91cE5hbWUiLCJuYW1lIiwiX3Bvc2l0aW9uT2Zmc2V0Iiwib2Zmc2V0IiwiX21hcEluZm8iLCJfcHJvcGVydGllcyIsImdldFByb3BlcnRpZXMiLCJfb2Zmc2V0IiwidjIiLCJ4IiwieSIsIl9vcGFjaXR5IiwibWFwU2l6ZSIsIl9tYXBTaXplIiwidGlsZVNpemUiLCJfdGlsZVNpemUiLCJ3aWR0aCIsImhlaWdodCIsIm9yaWVudGF0aW9uIiwiSEVYIiwiZ2V0U3RhZ2dlckF4aXMiLCJTVEFHR0VSQVhJU19YIiwiZ2V0SGV4U2lkZUxlbmd0aCIsIk1hdGgiLCJmbG9vciIsIklTTyIsIndoIiwibm9kZSIsInNldENvbnRlbnRTaXplIiwibGVmdFRvcFgiLCJhbmNob3JYIiwibGVmdFRvcFkiLCJhbmNob3JZIiwib2JqZWN0cyIsIl9vYmplY3RzIiwiYWxpdmVOb2RlcyIsInRleHR1cmVJbmRleE1hcCIsIk1hcCIsIm9iamVjdFRleHR1cmVzIiwiZ2V0T2JqZWN0VGV4dHVyZXMiLCJmb3JFYWNoIiwidGV4dHVyZSIsImlkeCIsInNldCIsImkiLCJsIiwibGVuZ3RoIiwib2JqZWN0Iiwib2JqVHlwZSIsInR5cGUiLCJwb2ludHMiLCJwb2x5bGluZVBvaW50cyIsInBpIiwicG9zSWR4WCIsInBvc0lkeFkiLCJURVhUIiwidGV4dE5hbWUiLCJpZCIsInRleHROb2RlIiwiZ2V0Q2hpbGRCeU5hbWUiLCJOb2RlIiwiYWN0aXZlIiwidmlzaWJsZSIsImFuZ2xlIiwicm90YXRpb24iLCJwYXJlbnQiLCJjb2xvciIsIm9wYWNpdHkiLCJzZXRTaWJsaW5nSW5kZXgiLCJsYWJlbCIsImdldENvbXBvbmVudCIsIkxhYmVsIiwiYWRkQ29tcG9uZW50Iiwib3ZlcmZsb3ciLCJPdmVyZmxvdyIsIlNIUklOSyIsImxpbmVIZWlnaHQiLCJzdHJpbmciLCJ0ZXh0IiwiaG9yaXpvbnRhbEFsaWduIiwiaGFsaWduIiwidmVydGljYWxBbGlnbiIsInZhbGlnbiIsImZvbnRTaXplIiwicGl4ZWxzaXplIiwiSU1BR0UiLCJnaWQiLCJncmlkIiwidGlsZXNldCIsImltZ05hbWUiLCJpbWdOb2RlIiwiaW1nV2lkdGgiLCJpbWdIZWlnaHQiLCJ0aWxlT2Zmc2V0WCIsInRpbGVPZmZzZXQiLCJ0aWxlT2Zmc2V0WSIsIlByaXZhdGVOb2RlIiwicmVtb3ZlRnJvbVBhcmVudCIsImRlc3Ryb3kiLCJfdGlsZWRNYXAiLCJzcCIsInNwZiIsInNwcml0ZUZyYW1lIiwiU3ByaXRlRnJhbWUiLCJzZXRGbGlwWCIsInNldEZsaXBZIiwic291cmNlSW1hZ2UiLCJzZXRUZXh0dXJlIiwicmVjdCIsInNldFZlcnRzRGlydHkiLCJoYXMiLCJwdXNoIiwidGV4dHVyZUluZGV4IiwiZ2V0Iiwic2V0VGV4dHVyZUlkeCIsImNoaWxkcmVuIiwidXNlbGVzc0V4cCIsIm4iLCJjIiwiY05hbWUiLCJfbmFtZSIsImlzVXNlbGVzcyIsInRlc3QiLCJleHBvcnRzIiwibW9kdWxlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLElBQU1BLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGFBQWEsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FFMUJDLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ3BCLFdBQVNELEVBQUUsQ0FBQ0UsZ0JBQWdCO0VBRTVCQyxLQUFLLFdBQUFBLE1BQUNDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxRQUFRLEVBQUVDLFFBQVEsRUFBRTtJQUMxQyxJQUFNQyxRQUFRLEdBQUdSLEVBQUUsQ0FBQ1EsUUFBUTtJQUM1QixJQUFNQyxhQUFhLEdBQUdELFFBQVEsQ0FBQ0MsYUFBYTtJQUM1QyxJQUFNQyxXQUFXLEdBQUdGLFFBQVEsQ0FBQ0UsV0FBVztJQUN4QyxJQUFNQyxXQUFXLEdBQUdILFFBQVEsQ0FBQ0csV0FBVztJQUN4QyxJQUFNQyxRQUFRLEdBQUdKLFFBQVEsQ0FBQ0ksUUFBUTtJQUNsQyxJQUFNQyxZQUFZLEdBQUdELFFBQVEsQ0FBQ0MsWUFBWTtJQUMxQyxJQUFNQyxlQUFlLEdBQUdGLFFBQVEsQ0FBQ0csVUFBVTtJQUMzQyxJQUFNQyxhQUFhLEdBQUdKLFFBQVEsQ0FBQ0ssUUFBUTtJQUV2QyxJQUFJLENBQUNDLFVBQVUsR0FBR2QsU0FBUyxDQUFDZSxJQUFJO0lBQ2hDLElBQUksQ0FBQ0MsZUFBZSxHQUFHaEIsU0FBUyxDQUFDaUIsTUFBTTtJQUN2QyxJQUFJLENBQUNDLFFBQVEsR0FBR2pCLE9BQU87SUFDdkIsSUFBSSxDQUFDa0IsV0FBVyxHQUFHbkIsU0FBUyxDQUFDb0IsYUFBYSxFQUFFO0lBQzVDLElBQUksQ0FBQ0MsT0FBTyxHQUFHekIsRUFBRSxDQUFDMEIsRUFBRSxDQUFDdEIsU0FBUyxDQUFDaUIsTUFBTSxDQUFDTSxDQUFDLEVBQUUsQ0FBQ3ZCLFNBQVMsQ0FBQ2lCLE1BQU0sQ0FBQ08sQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQ0MsUUFBUSxHQUFHekIsU0FBUyxDQUFDeUIsUUFBUTtJQUVsQyxJQUFJQyxPQUFPLEdBQUd6QixPQUFPLENBQUMwQixRQUFRO0lBQzlCLElBQUlDLFFBQVEsR0FBRzNCLE9BQU8sQ0FBQzRCLFNBQVM7SUFDaEMsSUFBSUMsS0FBSyxHQUFHLENBQUM7TUFBRUMsTUFBTSxHQUFHLENBQUM7SUFDekIsSUFBSTlCLE9BQU8sQ0FBQytCLFdBQVcsS0FBSzFCLFdBQVcsQ0FBQzJCLEdBQUcsRUFBRTtNQUN6QyxJQUFJaEMsT0FBTyxDQUFDaUMsY0FBYyxFQUFFLEtBQUszQixXQUFXLENBQUM0QixhQUFhLEVBQUU7UUFDeERKLE1BQU0sR0FBR0gsUUFBUSxDQUFDRyxNQUFNLElBQUlMLE9BQU8sQ0FBQ0ssTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUNqREQsS0FBSyxHQUFHLENBQUNGLFFBQVEsQ0FBQ0UsS0FBSyxHQUFHN0IsT0FBTyxDQUFDbUMsZ0JBQWdCLEVBQUUsSUFBSUMsSUFBSSxDQUFDQyxLQUFLLENBQUNaLE9BQU8sQ0FBQ0ksS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHRixRQUFRLENBQUNFLEtBQUssSUFBSUosT0FBTyxDQUFDSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO01BQ2hJLENBQUMsTUFBTTtRQUNIQSxLQUFLLEdBQUdGLFFBQVEsQ0FBQ0UsS0FBSyxJQUFJSixPQUFPLENBQUNJLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDOUNDLE1BQU0sR0FBRyxDQUFDSCxRQUFRLENBQUNHLE1BQU0sR0FBRzlCLE9BQU8sQ0FBQ21DLGdCQUFnQixFQUFFLElBQUlDLElBQUksQ0FBQ0MsS0FBSyxDQUFDWixPQUFPLENBQUNLLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBR0gsUUFBUSxDQUFDRyxNQUFNLElBQUlMLE9BQU8sQ0FBQ0ssTUFBTSxHQUFHLENBQUMsQ0FBQztNQUNySTtJQUNKLENBQUMsTUFBTSxJQUFJOUIsT0FBTyxDQUFDK0IsV0FBVyxLQUFLMUIsV0FBVyxDQUFDaUMsR0FBRyxFQUFFO01BQ2hELElBQUlDLEVBQUUsR0FBR2QsT0FBTyxDQUFDSSxLQUFLLEdBQUdKLE9BQU8sQ0FBQ0ssTUFBTTtNQUN2Q0QsS0FBSyxHQUFHRixRQUFRLENBQUNFLEtBQUssR0FBRyxHQUFHLEdBQUdVLEVBQUU7TUFDakNULE1BQU0sR0FBR0gsUUFBUSxDQUFDRyxNQUFNLEdBQUcsR0FBRyxHQUFHUyxFQUFFO0lBQ3ZDLENBQUMsTUFBTTtNQUNIVixLQUFLLEdBQUdKLE9BQU8sQ0FBQ0ksS0FBSyxHQUFHRixRQUFRLENBQUNFLEtBQUs7TUFDdENDLE1BQU0sR0FBR0wsT0FBTyxDQUFDSyxNQUFNLEdBQUdILFFBQVEsQ0FBQ0csTUFBTTtJQUM3QztJQUNBLElBQUksQ0FBQ1UsSUFBSSxDQUFDQyxjQUFjLENBQUNaLEtBQUssRUFBRUMsTUFBTSxDQUFDO0lBRXZDLElBQUlZLFFBQVEsR0FBR2IsS0FBSyxHQUFHLElBQUksQ0FBQ1csSUFBSSxDQUFDRyxPQUFPO0lBQ3hDLElBQUlDLFFBQVEsR0FBR2QsTUFBTSxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUNVLElBQUksQ0FBQ0ssT0FBTyxDQUFDO0lBRS9DLElBQUlDLE9BQU8sR0FBRy9DLFNBQVMsQ0FBQ2dELFFBQVE7SUFDaEMsSUFBSUMsVUFBVSxHQUFHLENBQUMsQ0FBQzs7SUFFbkI7SUFDQSxJQUFJQyxlQUFlLEdBQUcsSUFBSUMsR0FBRyxFQUFFO0lBQy9CLElBQUlDLGNBQWMsR0FBR2pELFFBQVEsQ0FBQ2tELGlCQUFpQixFQUFFO0lBQ2pERCxjQUFjLENBQUNFLE9BQU8sQ0FBQyxVQUFDQyxPQUFPLEVBQUVDLEdBQUc7TUFBQSxPQUFLTixlQUFlLENBQUNPLEdBQUcsQ0FBQ0YsT0FBTyxFQUFFQyxHQUFHLENBQUM7SUFBQSxFQUFDO0lBRTNFLEtBQUssSUFBSUUsQ0FBQyxHQUFHLENBQUMsRUFBRUMsQ0FBQyxHQUFHWixPQUFPLENBQUNhLE1BQU0sRUFBRUYsQ0FBQyxHQUFHQyxDQUFDLEVBQUVELENBQUMsRUFBRSxFQUFFO01BQzVDLElBQUlHLE1BQU0sR0FBR2QsT0FBTyxDQUFDVyxDQUFDLENBQUM7TUFDdkIsSUFBSUksT0FBTyxHQUFHRCxNQUFNLENBQUNFLElBQUk7TUFDekJGLE1BQU0sQ0FBQzVDLE1BQU0sR0FBR3JCLEVBQUUsQ0FBQzBCLEVBQUUsQ0FBQ3VDLE1BQU0sQ0FBQ3RDLENBQUMsRUFBRXNDLE1BQU0sQ0FBQ3JDLENBQUMsQ0FBQztNQUV6QyxJQUFJd0MsTUFBTSxHQUFHSCxNQUFNLENBQUNHLE1BQU0sSUFBSUgsTUFBTSxDQUFDSSxjQUFjO01BQ25ELElBQUlELE1BQU0sRUFBRTtRQUNSLEtBQUssSUFBSUUsRUFBRSxHQUFHLENBQUMsRUFBRUEsRUFBRSxHQUFHRixNQUFNLENBQUNKLE1BQU0sRUFBRU0sRUFBRSxFQUFFLEVBQUU7VUFDdkNGLE1BQU0sQ0FBQ0UsRUFBRSxDQUFDLENBQUMxQyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCO01BQ0o7TUFFQSxJQUFJbEIsV0FBVyxDQUFDaUMsR0FBRyxLQUFLdEMsT0FBTyxDQUFDK0IsV0FBVyxFQUFFO1FBQ3pDNkIsTUFBTSxDQUFDckMsQ0FBQyxHQUFHTyxNQUFNLEdBQUc4QixNQUFNLENBQUNyQyxDQUFDO01BQ2hDLENBQUMsTUFBTTtRQUNILElBQUkyQyxPQUFPLEdBQUdOLE1BQU0sQ0FBQ3RDLENBQUMsR0FBR0ssUUFBUSxDQUFDRyxNQUFNO1FBQ3hDLElBQUlxQyxPQUFPLEdBQUdQLE1BQU0sQ0FBQ3JDLENBQUMsR0FBR0ksUUFBUSxDQUFDRyxNQUFNO1FBQ3hDOEIsTUFBTSxDQUFDdEMsQ0FBQyxHQUFHSyxRQUFRLENBQUNFLEtBQUssR0FBRyxHQUFHLElBQUlKLE9BQU8sQ0FBQ0ssTUFBTSxHQUFHb0MsT0FBTyxHQUFHQyxPQUFPLENBQUM7UUFDdEVQLE1BQU0sQ0FBQ3JDLENBQUMsR0FBR0ksUUFBUSxDQUFDRyxNQUFNLEdBQUcsR0FBRyxJQUFJTCxPQUFPLENBQUNJLEtBQUssR0FBR0osT0FBTyxDQUFDSyxNQUFNLEdBQUdvQyxPQUFPLEdBQUdDLE9BQU8sQ0FBQztNQUMzRjtNQUVBLElBQUlOLE9BQU8sS0FBS3pELGFBQWEsQ0FBQ2dFLElBQUksRUFBRTtRQUNoQyxJQUFJQyxRQUFRLEdBQUcsTUFBTSxHQUFHVCxNQUFNLENBQUNVLEVBQUU7UUFDakN0QixVQUFVLENBQUNxQixRQUFRLENBQUMsR0FBRyxJQUFJO1FBRTNCLElBQUlFLFFBQVEsR0FBRyxJQUFJLENBQUMvQixJQUFJLENBQUNnQyxjQUFjLENBQUNILFFBQVEsQ0FBQztRQUNqRCxJQUFJLENBQUNFLFFBQVEsRUFBRTtVQUNYQSxRQUFRLEdBQUcsSUFBSTVFLEVBQUUsQ0FBQzhFLElBQUksRUFBRTtRQUM1QjtRQUVBRixRQUFRLENBQUNHLE1BQU0sR0FBR2QsTUFBTSxDQUFDZSxPQUFPO1FBQ2hDSixRQUFRLENBQUM1QixPQUFPLEdBQUcsQ0FBQztRQUNwQjRCLFFBQVEsQ0FBQzFCLE9BQU8sR0FBRyxDQUFDO1FBQ3BCMEIsUUFBUSxDQUFDSyxLQUFLLEdBQUcsQ0FBQ2hCLE1BQU0sQ0FBQ2lCLFFBQVE7UUFDakNOLFFBQVEsQ0FBQ2pELENBQUMsR0FBR3NDLE1BQU0sQ0FBQ3RDLENBQUMsR0FBR29CLFFBQVE7UUFDaEM2QixRQUFRLENBQUNoRCxDQUFDLEdBQUdxQyxNQUFNLENBQUNyQyxDQUFDLEdBQUdxQixRQUFRO1FBQ2hDMkIsUUFBUSxDQUFDekQsSUFBSSxHQUFHdUQsUUFBUTtRQUN4QkUsUUFBUSxDQUFDTyxNQUFNLEdBQUcsSUFBSSxDQUFDdEMsSUFBSTtRQUMzQitCLFFBQVEsQ0FBQ1EsS0FBSyxHQUFHbkIsTUFBTSxDQUFDbUIsS0FBSztRQUM3QlIsUUFBUSxDQUFDUyxPQUFPLEdBQUcsSUFBSSxDQUFDeEQsUUFBUTtRQUNoQytDLFFBQVEsQ0FBQ1UsZUFBZSxDQUFDeEIsQ0FBQyxDQUFDO1FBRTNCLElBQUl5QixLQUFLLEdBQUdYLFFBQVEsQ0FBQ1ksWUFBWSxDQUFDeEYsRUFBRSxDQUFDeUYsS0FBSyxDQUFDO1FBQzNDLElBQUksQ0FBQ0YsS0FBSyxFQUFFO1VBQ1JBLEtBQUssR0FBR1gsUUFBUSxDQUFDYyxZQUFZLENBQUMxRixFQUFFLENBQUN5RixLQUFLLENBQUM7UUFDM0M7UUFFQUYsS0FBSyxDQUFDSSxRQUFRLEdBQUczRixFQUFFLENBQUN5RixLQUFLLENBQUNHLFFBQVEsQ0FBQ0MsTUFBTTtRQUN6Q04sS0FBSyxDQUFDTyxVQUFVLEdBQUc3QixNQUFNLENBQUM5QixNQUFNO1FBQ2hDb0QsS0FBSyxDQUFDUSxNQUFNLEdBQUc5QixNQUFNLENBQUMrQixJQUFJO1FBQzFCVCxLQUFLLENBQUNVLGVBQWUsR0FBR2hDLE1BQU0sQ0FBQ2lDLE1BQU07UUFDckNYLEtBQUssQ0FBQ1ksYUFBYSxHQUFHbEMsTUFBTSxDQUFDbUMsTUFBTTtRQUNuQ2IsS0FBSyxDQUFDYyxRQUFRLEdBQUdwQyxNQUFNLENBQUNxQyxTQUFTO1FBRWpDMUIsUUFBUSxDQUFDMUMsS0FBSyxHQUFHK0IsTUFBTSxDQUFDL0IsS0FBSztRQUM3QjBDLFFBQVEsQ0FBQ3pDLE1BQU0sR0FBRzhCLE1BQU0sQ0FBQzlCLE1BQU07TUFDbkM7TUFFQSxJQUFJK0IsT0FBTyxLQUFLekQsYUFBYSxDQUFDOEYsS0FBSyxFQUFFO1FBQ2pDLElBQUlDLEdBQUcsR0FBR3ZDLE1BQU0sQ0FBQ3VDLEdBQUc7UUFDcEIsSUFBSUMsSUFBSSxHQUFHbkcsUUFBUSxDQUFDLENBQUNrRyxHQUFHLEdBQUczRixZQUFZLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQzRGLElBQUksRUFBRTtRQUNYLElBQUlDLE9BQU8sR0FBR0QsSUFBSSxDQUFDQyxPQUFPO1FBQzFCLElBQUlDLE9BQU8sR0FBRyxLQUFLLEdBQUcxQyxNQUFNLENBQUNVLEVBQUU7UUFDL0J0QixVQUFVLENBQUNzRCxPQUFPLENBQUMsR0FBRyxJQUFJO1FBQzFCLElBQUlDLE9BQU8sR0FBRyxJQUFJLENBQUMvRCxJQUFJLENBQUNnQyxjQUFjLENBQUM4QixPQUFPLENBQUM7UUFDL0MsSUFBSUUsUUFBUSxHQUFHNUMsTUFBTSxDQUFDL0IsS0FBSyxJQUFJdUUsSUFBSSxDQUFDdkUsS0FBSztRQUN6QyxJQUFJNEUsU0FBUyxHQUFHN0MsTUFBTSxDQUFDOUIsTUFBTSxJQUFJc0UsSUFBSSxDQUFDdEUsTUFBTTtRQUM1QyxJQUFJNEUsV0FBVyxHQUFHTCxPQUFPLENBQUNNLFVBQVUsQ0FBQ3JGLENBQUM7UUFDdEMsSUFBSXNGLFdBQVcsR0FBR1AsT0FBTyxDQUFDTSxVQUFVLENBQUNwRixDQUFDOztRQUV0QztRQUNBO1FBQ0EsSUFBSWdGLE9BQU8sWUFBWTVHLEVBQUUsQ0FBQ2tILFdBQVcsRUFBRTtVQUNuQ04sT0FBTyxDQUFDTyxnQkFBZ0IsRUFBRTtVQUMxQlAsT0FBTyxDQUFDUSxPQUFPLEVBQUU7VUFDakJSLE9BQU8sR0FBRyxJQUFJO1FBQ2xCO1FBRUEsSUFBSSxDQUFDQSxPQUFPLEVBQUU7VUFDVkEsT0FBTyxHQUFHLElBQUk1RyxFQUFFLENBQUM4RSxJQUFJLEVBQUU7UUFDM0I7UUFFQSxJQUFJcEUsV0FBVyxDQUFDaUMsR0FBRyxJQUFJdEMsT0FBTyxDQUFDK0IsV0FBVyxFQUFFO1VBQ3hDd0UsT0FBTyxDQUFDNUQsT0FBTyxHQUFHLEdBQUcsR0FBRytELFdBQVcsR0FBR0YsUUFBUTtVQUM5Q0QsT0FBTyxDQUFDMUQsT0FBTyxHQUFHK0QsV0FBVyxHQUFHSCxTQUFTO1FBQzdDLENBQUMsTUFBTTtVQUNIRixPQUFPLENBQUM1RCxPQUFPLEdBQUcrRCxXQUFXLEdBQUdGLFFBQVE7VUFDeENELE9BQU8sQ0FBQzFELE9BQU8sR0FBRytELFdBQVcsR0FBR0gsU0FBUztRQUM3QztRQUNBRixPQUFPLENBQUM3QixNQUFNLEdBQUdkLE1BQU0sQ0FBQ2UsT0FBTztRQUMvQjRCLE9BQU8sQ0FBQzNCLEtBQUssR0FBRyxDQUFDaEIsTUFBTSxDQUFDaUIsUUFBUTtRQUNoQzBCLE9BQU8sQ0FBQ2pGLENBQUMsR0FBR3NDLE1BQU0sQ0FBQ3RDLENBQUMsR0FBR29CLFFBQVE7UUFDL0I2RCxPQUFPLENBQUNoRixDQUFDLEdBQUdxQyxNQUFNLENBQUNyQyxDQUFDLEdBQUdxQixRQUFRO1FBQy9CMkQsT0FBTyxDQUFDekYsSUFBSSxHQUFHd0YsT0FBTztRQUN0QkMsT0FBTyxDQUFDekIsTUFBTSxHQUFHLElBQUksQ0FBQ3RDLElBQUk7UUFDMUIrRCxPQUFPLENBQUN2QixPQUFPLEdBQUcsSUFBSSxDQUFDeEQsUUFBUTtRQUMvQitFLE9BQU8sQ0FBQ3RCLGVBQWUsQ0FBQ3hCLENBQUMsQ0FBQztRQUMxQjhDLE9BQU8sQ0FBQ1MsU0FBUyxHQUFHOUcsUUFBUTtRQUc1QixJQUFJK0csRUFBRSxHQUFHVixPQUFPLENBQUNwQixZQUFZLENBQUMzRixTQUFTLENBQUM7UUFDeEMsSUFBSSxDQUFDeUgsRUFBRSxFQUFFO1VBQ0xBLEVBQUUsR0FBR1YsT0FBTyxDQUFDbEIsWUFBWSxDQUFDN0YsU0FBUyxDQUFDO1FBQ3hDO1FBQ0EsSUFBSTBILEdBQUcsR0FBR0QsRUFBRSxDQUFDRSxXQUFXO1FBQ3hCLElBQUksQ0FBQ0QsR0FBRyxFQUFFO1VBQ05BLEdBQUcsR0FBRyxJQUFJdkgsRUFBRSxDQUFDeUgsV0FBVyxFQUFFO1FBQzlCO1FBRUEsSUFBSSxDQUFDakIsR0FBRyxHQUFHMUYsZUFBZSxNQUFNLENBQUMsRUFBRTtVQUMvQnlHLEdBQUcsQ0FBQ0csUUFBUSxDQUFDLElBQUksQ0FBQztRQUN0QixDQUFDLE1BQU07VUFDSEgsR0FBRyxDQUFDRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZCO1FBRUEsSUFBSSxDQUFDbEIsR0FBRyxHQUFHeEYsYUFBYSxNQUFNLENBQUMsRUFBRTtVQUM3QnVHLEdBQUcsQ0FBQ0ksUUFBUSxDQUFDLElBQUksQ0FBQztRQUN0QixDQUFDLE1BQU07VUFDSEosR0FBRyxDQUFDSSxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3ZCO1FBRUEsSUFBSUMsV0FBVyxHQUFHbkIsSUFBSSxDQUFDQyxPQUFPLENBQUNrQixXQUFXO1FBQzFDTCxHQUFHLENBQUNNLFVBQVUsQ0FBQ0QsV0FBVyxFQUFFNUgsRUFBRSxDQUFDOEgsSUFBSSxDQUFDckIsSUFBSSxDQUFDLENBQUM7UUFDMUNhLEVBQUUsQ0FBQ0UsV0FBVyxHQUFHRCxHQUFHO1FBQ3BCRCxFQUFFLENBQUNTLGFBQWEsRUFBRTs7UUFFbEI7UUFDQW5CLE9BQU8sQ0FBQzFFLEtBQUssR0FBRzJFLFFBQVE7UUFDeEJELE9BQU8sQ0FBQ3pFLE1BQU0sR0FBRzJFLFNBQVM7O1FBRTFCO1FBQ0EsSUFBSSxDQUFDeEQsZUFBZSxDQUFDMEUsR0FBRyxDQUFDSixXQUFXLENBQUMsRUFBRTtVQUNuQ3RFLGVBQWUsQ0FBQ08sR0FBRyxDQUFDK0QsV0FBVyxFQUFFcEUsY0FBYyxDQUFDUSxNQUFNLENBQUM7VUFDdkRSLGNBQWMsQ0FBQ3lFLElBQUksQ0FBQ0wsV0FBVyxDQUFDO1FBQ3BDOztRQUVBO1FBQ0EsSUFBSU0sWUFBWSxHQUFHNUUsZUFBZSxDQUFDNkUsR0FBRyxDQUFDUCxXQUFXLENBQUM7UUFDbkROLEVBQUUsQ0FBQ2MsYUFBYSxDQUFDRixZQUFZLEdBQUcsQ0FBQyxDQUFDO01BQ3RDO0lBQ0o7SUFDQSxJQUFJLENBQUM5RSxRQUFRLEdBQUdELE9BQU87O0lBR3ZCO0lBQ0EsSUFBSWtGLFFBQVEsR0FBRyxJQUFJLENBQUN4RixJQUFJLENBQUN3RixRQUFRO0lBQ2pDLElBQUlDLFVBQVUsR0FBRyxtQkFBbUI7SUFDcEMsS0FBSyxJQUFJeEUsRUFBQyxHQUFHLENBQUMsRUFBRXlFLENBQUMsR0FBR0YsUUFBUSxDQUFDckUsTUFBTSxFQUFFRixFQUFDLEdBQUd5RSxDQUFDLEVBQUV6RSxFQUFDLEVBQUUsRUFBRTtNQUM3QyxJQUFJMEUsQ0FBQyxHQUFHSCxRQUFRLENBQUN2RSxFQUFDLENBQUM7TUFDbkIsSUFBSTJFLEtBQUssR0FBR0QsQ0FBQyxDQUFDRSxLQUFLO01BQ25CLElBQUlDLFNBQVMsR0FBR0wsVUFBVSxDQUFDTSxJQUFJLENBQUNILEtBQUssQ0FBQztNQUN0QyxJQUFJRSxTQUFTLElBQUksQ0FBQ3RGLFVBQVUsQ0FBQ29GLEtBQUssQ0FBQyxFQUFFRCxDQUFDLENBQUNwQixPQUFPLEVBQUU7SUFDcEQ7RUFFSjtBQUNKLENBQUMsQ0FBQztBQUFBeUIsT0FBQSxjQUFBOUksUUFBQTtBQUFBK0ksTUFBQSxDQUFBRCxPQUFBLEdBQUFBLE9BQUEiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5cclxuY29uc3QgVG1vU3ByaXRlID0gcmVxdWlyZShcIi4vVG1vU3ByaXRlXCIpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuVGlsZWRPYmplY3RHcm91cCxcclxuXHJcbiAgICBfaW5pdChncm91cEluZm8sIG1hcEluZm8sIHRleEdyaWRzLCB0aWxlZE1hcCkge1xyXG4gICAgICAgIGNvbnN0IFRpbGVkTWFwID0gY2MuVGlsZWRNYXA7XHJcbiAgICAgICAgY29uc3QgVE1YT2JqZWN0VHlwZSA9IFRpbGVkTWFwLlRNWE9iamVjdFR5cGU7XHJcbiAgICAgICAgY29uc3QgT3JpZW50YXRpb24gPSBUaWxlZE1hcC5PcmllbnRhdGlvbjtcclxuICAgICAgICBjb25zdCBTdGFnZ2VyQXhpcyA9IFRpbGVkTWFwLlN0YWdnZXJBeGlzO1xyXG4gICAgICAgIGNvbnN0IFRpbGVGbGFnID0gVGlsZWRNYXAuVGlsZUZsYWc7XHJcbiAgICAgICAgY29uc3QgRkxJUFBFRF9NQVNLID0gVGlsZUZsYWcuRkxJUFBFRF9NQVNLO1xyXG4gICAgICAgIGNvbnN0IEZMQUdfSE9SSVpPTlRBTCA9IFRpbGVGbGFnLkhPUklaT05UQUw7XHJcbiAgICAgICAgY29uc3QgRkxBR19WRVJUSUNBTCA9IFRpbGVGbGFnLlZFUlRJQ0FMO1xyXG5cclxuICAgICAgICB0aGlzLl9ncm91cE5hbWUgPSBncm91cEluZm8ubmFtZTtcclxuICAgICAgICB0aGlzLl9wb3NpdGlvbk9mZnNldCA9IGdyb3VwSW5mby5vZmZzZXQ7XHJcbiAgICAgICAgdGhpcy5fbWFwSW5mbyA9IG1hcEluZm87XHJcbiAgICAgICAgdGhpcy5fcHJvcGVydGllcyA9IGdyb3VwSW5mby5nZXRQcm9wZXJ0aWVzKCk7XHJcbiAgICAgICAgdGhpcy5fb2Zmc2V0ID0gY2MudjIoZ3JvdXBJbmZvLm9mZnNldC54LCAtZ3JvdXBJbmZvLm9mZnNldC55KTtcclxuICAgICAgICB0aGlzLl9vcGFjaXR5ID0gZ3JvdXBJbmZvLl9vcGFjaXR5O1xyXG5cclxuICAgICAgICBsZXQgbWFwU2l6ZSA9IG1hcEluZm8uX21hcFNpemU7XHJcbiAgICAgICAgbGV0IHRpbGVTaXplID0gbWFwSW5mby5fdGlsZVNpemU7XHJcbiAgICAgICAgbGV0IHdpZHRoID0gMCwgaGVpZ2h0ID0gMDtcclxuICAgICAgICBpZiAobWFwSW5mby5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uSEVYKSB7XHJcbiAgICAgICAgICAgIGlmIChtYXBJbmZvLmdldFN0YWdnZXJBeGlzKCkgPT09IFN0YWdnZXJBeGlzLlNUQUdHRVJBWElTX1gpIHtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9IHRpbGVTaXplLmhlaWdodCAqIChtYXBTaXplLmhlaWdodCArIDAuNSk7XHJcbiAgICAgICAgICAgICAgICB3aWR0aCA9ICh0aWxlU2l6ZS53aWR0aCArIG1hcEluZm8uZ2V0SGV4U2lkZUxlbmd0aCgpKSAqIE1hdGguZmxvb3IobWFwU2l6ZS53aWR0aCAvIDIpICsgdGlsZVNpemUud2lkdGggKiAobWFwU2l6ZS53aWR0aCAlIDIpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZS53aWR0aCAqIChtYXBTaXplLndpZHRoICsgMC41KTtcclxuICAgICAgICAgICAgICAgIGhlaWdodCA9ICh0aWxlU2l6ZS5oZWlnaHQgKyBtYXBJbmZvLmdldEhleFNpZGVMZW5ndGgoKSkgKiBNYXRoLmZsb29yKG1hcFNpemUuaGVpZ2h0IC8gMikgKyB0aWxlU2l6ZS5oZWlnaHQgKiAobWFwU2l6ZS5oZWlnaHQgJSAyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAobWFwSW5mby5vcmllbnRhdGlvbiA9PT0gT3JpZW50YXRpb24uSVNPKSB7XHJcbiAgICAgICAgICAgIGxldCB3aCA9IG1hcFNpemUud2lkdGggKyBtYXBTaXplLmhlaWdodDtcclxuICAgICAgICAgICAgd2lkdGggPSB0aWxlU2l6ZS53aWR0aCAqIDAuNSAqIHdoO1xyXG4gICAgICAgICAgICBoZWlnaHQgPSB0aWxlU2l6ZS5oZWlnaHQgKiAwLjUgKiB3aDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB3aWR0aCA9IG1hcFNpemUud2lkdGggKiB0aWxlU2l6ZS53aWR0aDtcclxuICAgICAgICAgICAgaGVpZ2h0ID0gbWFwU2l6ZS5oZWlnaHQgKiB0aWxlU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubm9kZS5zZXRDb250ZW50U2l6ZSh3aWR0aCwgaGVpZ2h0KTtcclxuXHJcbiAgICAgICAgbGV0IGxlZnRUb3BYID0gd2lkdGggKiB0aGlzLm5vZGUuYW5jaG9yWDtcclxuICAgICAgICBsZXQgbGVmdFRvcFkgPSBoZWlnaHQgKiAoMSAtIHRoaXMubm9kZS5hbmNob3JZKTtcclxuXHJcbiAgICAgICAgbGV0IG9iamVjdHMgPSBncm91cEluZm8uX29iamVjdHM7XHJcbiAgICAgICAgbGV0IGFsaXZlTm9kZXMgPSB7fTtcclxuXHJcbiAgICAgICAgLy8g55Sf5oiQ5pig5bCETWFwICAgeyBUZXh0dXJlMkQ6IHRleHR1cmVJbmRleCB9XHJcbiAgICAgICAgbGV0IHRleHR1cmVJbmRleE1hcCA9IG5ldyBNYXAoKTtcclxuICAgICAgICBsZXQgb2JqZWN0VGV4dHVyZXMgPSB0aWxlZE1hcC5nZXRPYmplY3RUZXh0dXJlcygpO1xyXG4gICAgICAgIG9iamVjdFRleHR1cmVzLmZvckVhY2goKHRleHR1cmUsIGlkeCkgPT4gdGV4dHVyZUluZGV4TWFwLnNldCh0ZXh0dXJlLCBpZHgpKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBvYmplY3RzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgb2JqZWN0ID0gb2JqZWN0c1tpXTtcclxuICAgICAgICAgICAgbGV0IG9ialR5cGUgPSBvYmplY3QudHlwZTtcclxuICAgICAgICAgICAgb2JqZWN0Lm9mZnNldCA9IGNjLnYyKG9iamVjdC54LCBvYmplY3QueSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgcG9pbnRzID0gb2JqZWN0LnBvaW50cyB8fCBvYmplY3QucG9seWxpbmVQb2ludHM7XHJcbiAgICAgICAgICAgIGlmIChwb2ludHMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHBpID0gMDsgcGkgPCBwb2ludHMubGVuZ3RoOyBwaSsrKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9pbnRzW3BpXS55ICo9IC0xO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoT3JpZW50YXRpb24uSVNPICE9PSBtYXBJbmZvLm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QueSA9IGhlaWdodCAtIG9iamVjdC55O1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHBvc0lkeFggPSBvYmplY3QueCAvIHRpbGVTaXplLmhlaWdodDtcclxuICAgICAgICAgICAgICAgIGxldCBwb3NJZHhZID0gb2JqZWN0LnkgLyB0aWxlU2l6ZS5oZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICBvYmplY3QueCA9IHRpbGVTaXplLndpZHRoICogMC41ICogKG1hcFNpemUuaGVpZ2h0ICsgcG9zSWR4WCAtIHBvc0lkeFkpO1xyXG4gICAgICAgICAgICAgICAgb2JqZWN0LnkgPSB0aWxlU2l6ZS5oZWlnaHQgKiAwLjUgKiAobWFwU2l6ZS53aWR0aCArIG1hcFNpemUuaGVpZ2h0IC0gcG9zSWR4WCAtIHBvc0lkeFkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob2JqVHlwZSA9PT0gVE1YT2JqZWN0VHlwZS5URVhUKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGV4dE5hbWUgPSBcInRleHRcIiArIG9iamVjdC5pZDtcclxuICAgICAgICAgICAgICAgIGFsaXZlTm9kZXNbdGV4dE5hbWVdID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdGV4dE5vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUodGV4dE5hbWUpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0ZXh0Tm9kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRleHROb2RlID0gbmV3IGNjLk5vZGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5hY3RpdmUgPSBvYmplY3QudmlzaWJsZTtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLmFuY2hvclggPSAwO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUuYW5jaG9yWSA9IDE7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5hbmdsZSA9IC1vYmplY3Qucm90YXRpb247XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS54ID0gb2JqZWN0LnggLSBsZWZ0VG9wWDtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLnkgPSBvYmplY3QueSAtIGxlZnRUb3BZO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUubmFtZSA9IHRleHROYW1lO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUuY29sb3IgPSBvYmplY3QuY29sb3I7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5vcGFjaXR5ID0gdGhpcy5fb3BhY2l0eTtcclxuICAgICAgICAgICAgICAgIHRleHROb2RlLnNldFNpYmxpbmdJbmRleChpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPSB0ZXh0Tm9kZS5nZXRDb21wb25lbnQoY2MuTGFiZWwpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCFsYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsID0gdGV4dE5vZGUuYWRkQ29tcG9uZW50KGNjLkxhYmVsKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsYWJlbC5vdmVyZmxvdyA9IGNjLkxhYmVsLk92ZXJmbG93LlNIUklOSztcclxuICAgICAgICAgICAgICAgIGxhYmVsLmxpbmVIZWlnaHQgPSBvYmplY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGFiZWwuc3RyaW5nID0gb2JqZWN0LnRleHQ7XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5ob3Jpem9udGFsQWxpZ24gPSBvYmplY3QuaGFsaWduO1xyXG4gICAgICAgICAgICAgICAgbGFiZWwudmVydGljYWxBbGlnbiA9IG9iamVjdC52YWxpZ247XHJcbiAgICAgICAgICAgICAgICBsYWJlbC5mb250U2l6ZSA9IG9iamVjdC5waXhlbHNpemU7XHJcblxyXG4gICAgICAgICAgICAgICAgdGV4dE5vZGUud2lkdGggPSBvYmplY3Qud2lkdGg7XHJcbiAgICAgICAgICAgICAgICB0ZXh0Tm9kZS5oZWlnaHQgPSBvYmplY3QuaGVpZ2h0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAob2JqVHlwZSA9PT0gVE1YT2JqZWN0VHlwZS5JTUFHRSkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdpZCA9IG9iamVjdC5naWQ7XHJcbiAgICAgICAgICAgICAgICBsZXQgZ3JpZCA9IHRleEdyaWRzWyhnaWQgJiBGTElQUEVEX01BU0spID4+PiAwXTtcclxuICAgICAgICAgICAgICAgIGlmICghZ3JpZCkgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGlsZXNldCA9IGdyaWQudGlsZXNldDtcclxuICAgICAgICAgICAgICAgIGxldCBpbWdOYW1lID0gXCJpbWdcIiArIG9iamVjdC5pZDtcclxuICAgICAgICAgICAgICAgIGFsaXZlTm9kZXNbaW1nTmFtZV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgbGV0IGltZ05vZGUgPSB0aGlzLm5vZGUuZ2V0Q2hpbGRCeU5hbWUoaW1nTmFtZSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgaW1nV2lkdGggPSBvYmplY3Qud2lkdGggfHwgZ3JpZC53aWR0aDtcclxuICAgICAgICAgICAgICAgIGxldCBpbWdIZWlnaHQgPSBvYmplY3QuaGVpZ2h0IHx8IGdyaWQuaGVpZ2h0O1xyXG4gICAgICAgICAgICAgICAgbGV0IHRpbGVPZmZzZXRYID0gdGlsZXNldC50aWxlT2Zmc2V0Lng7XHJcbiAgICAgICAgICAgICAgICBsZXQgdGlsZU9mZnNldFkgPSB0aWxlc2V0LnRpbGVPZmZzZXQueTtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyBEZWxldGUgaW1hZ2Ugbm9kZXMgaW1wbGVtZW50ZWQgYXMgcHJpdmF0ZSBub2Rlc1xyXG4gICAgICAgICAgICAgICAgLy8gVXNlIGNjLk5vZGUgdG8gaW1wbGVtZW50IG5vZGUtbGV2ZWwgcmVxdWlyZW1lbnRzXHJcbiAgICAgICAgICAgICAgICBpZiAoaW1nTm9kZSBpbnN0YW5jZW9mIGNjLlByaXZhdGVOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5yZW1vdmVGcm9tUGFyZW50KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCFpbWdOb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZSA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKE9yaWVudGF0aW9uLklTTyA9PSBtYXBJbmZvLm9yaWVudGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5hbmNob3JYID0gMC41ICsgdGlsZU9mZnNldFggLyBpbWdXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBpbWdOb2RlLmFuY2hvclkgPSB0aWxlT2Zmc2V0WSAvIGltZ0hlaWdodDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1nTm9kZS5hbmNob3JYID0gdGlsZU9mZnNldFggLyBpbWdXaWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBpbWdOb2RlLmFuY2hvclkgPSB0aWxlT2Zmc2V0WSAvIGltZ0hlaWdodDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGltZ05vZGUuYWN0aXZlID0gb2JqZWN0LnZpc2libGU7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLmFuZ2xlID0gLW9iamVjdC5yb3RhdGlvbjtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUueCA9IG9iamVjdC54IC0gbGVmdFRvcFg7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLnkgPSBvYmplY3QueSAtIGxlZnRUb3BZO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5uYW1lID0gaW1nTmFtZTtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUucGFyZW50ID0gdGhpcy5ub2RlO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5vcGFjaXR5ID0gdGhpcy5fb3BhY2l0eTtcclxuICAgICAgICAgICAgICAgIGltZ05vZGUuc2V0U2libGluZ0luZGV4KGkpO1xyXG4gICAgICAgICAgICAgICAgaW1nTm9kZS5fdGlsZWRNYXAgPSB0aWxlZE1hcDtcclxuXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHNwID0gaW1nTm9kZS5nZXRDb21wb25lbnQoVG1vU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgIGlmICghc3ApIHtcclxuICAgICAgICAgICAgICAgICAgICBzcCA9IGltZ05vZGUuYWRkQ29tcG9uZW50KFRtb1Nwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgc3BmID0gc3Auc3ByaXRlRnJhbWU7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXNwZikge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwZiA9IG5ldyBjYy5TcHJpdGVGcmFtZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmICgoZ2lkICYgRkxBR19IT1JJWk9OVEFMKSA+Pj4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNwZi5zZXRGbGlwWCh0cnVlKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldEZsaXBYKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoKGdpZCAmIEZMQUdfVkVSVElDQUwpID4+PiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldEZsaXBZKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzcGYuc2V0RmxpcFkoZmFsc2UpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBzb3VyY2VJbWFnZSA9IGdyaWQudGlsZXNldC5zb3VyY2VJbWFnZTtcclxuICAgICAgICAgICAgICAgIHNwZi5zZXRUZXh0dXJlKHNvdXJjZUltYWdlLCBjYy5yZWN0KGdyaWQpKTtcclxuICAgICAgICAgICAgICAgIHNwLnNwcml0ZUZyYW1lID0gc3BmO1xyXG4gICAgICAgICAgICAgICAgc3Auc2V0VmVydHNEaXJ0eSgpO1xyXG5cclxuICAgICAgICAgICAgICAgIC8vIG9iamVjdCBncm91cCBtYXkgaGFzIG5vIHdpZHRoIG9yIGhlaWdodCBpbmZvXHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLndpZHRoID0gaW1nV2lkdGg7XHJcbiAgICAgICAgICAgICAgICBpbWdOb2RlLmhlaWdodCA9IGltZ0hlaWdodDtcclxuXHJcbiAgICAgICAgICAgICAgICAvLyDmlLbpm4blm77pm4Yg5pu05pawdGV4dHVyZUluZGV4TWFwXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRleHR1cmVJbmRleE1hcC5oYXMoc291cmNlSW1hZ2UpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dHVyZUluZGV4TWFwLnNldChzb3VyY2VJbWFnZSwgb2JqZWN0VGV4dHVyZXMubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICBvYmplY3RUZXh0dXJlcy5wdXNoKHNvdXJjZUltYWdlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAvLyDorr7nva50ZXh0dXJlSW5kZXhcclxuICAgICAgICAgICAgICAgIGxldCB0ZXh0dXJlSW5kZXggPSB0ZXh0dXJlSW5kZXhNYXAuZ2V0KHNvdXJjZUltYWdlKTtcclxuICAgICAgICAgICAgICAgIHNwLnNldFRleHR1cmVJZHgodGV4dHVyZUluZGV4ICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fb2JqZWN0cyA9IG9iamVjdHM7XHJcblxyXG5cclxuICAgICAgICAvLyBkZXN0cm95IHVzZWxlc3Mgbm9kZVxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IHRoaXMubm9kZS5jaGlsZHJlbjtcclxuICAgICAgICBsZXQgdXNlbGVzc0V4cCA9IC9eKD86aW1nfHRleHQpXFxkKyQvO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBjID0gY2hpbGRyZW5baV07XHJcbiAgICAgICAgICAgIGxldCBjTmFtZSA9IGMuX25hbWU7XHJcbiAgICAgICAgICAgIGxldCBpc1VzZWxlc3MgPSB1c2VsZXNzRXhwLnRlc3QoY05hbWUpO1xyXG4gICAgICAgICAgICBpZiAoaXNVc2VsZXNzICYmICFhbGl2ZU5vZGVzW2NOYW1lXSkgYy5kZXN0cm95KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgIH1cclxufSk7XHJcbiJdfQ== +//------QC-SOURCE-SPLIT------ + + (function() { + var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined'; + var __module = nodeEnv ? module : {exports:{}}; + var __filename = 'preview-scripts/tiledmap-optimize-resource/Script/TmoTiledMap.js'; + var __require = nodeEnv ? function (request) { + return cc.require(request); + } : function (request) { + return __quick_compile_project__.require(request, __filename); + }; + function __define (exports, require, module) { + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, '0b9eetmSUdJRZCQS91TYCw/', 'TmoTiledMap'); +// Script/TmoTiledMap.js + +"use strict"; + +// Learn cc.Class: +// - https://docs.cocos.com/creator/manual/en/scripting/class.html +// Learn Attribute: +// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html +// Learn life-cycle callbacks: +// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html +var TmoTiledLayer = require("./TmoTiledLayer"); +var TmoObjectGroup = require("./TmoObjectGroup"); +cc.Class({ + "extends": cc.TiledMap, + properties: { + objectMaterial: cc.Material, + noColor: true, + singleTexture: true, + _objectTextures: [] + }, + _applyFile: function _applyFile() { + if (!this.objectMaterial) { + cc.error("TiledmapOptimize: 未设置objectMaterial!"); + return; + } + this._super(); + }, + _buildLayerAndGroup: function _buildLayerAndGroup() { + var tilesets = this._tilesets; + var texGrids = this._texGrids; + var animations = this._animations; + texGrids.length = 0; + for (var i = 0, l = tilesets.length; i < l; ++i) { + var tilesetInfo = tilesets[i]; + if (!tilesetInfo) continue; + cc.TiledMap.fillTextureGrids(tilesetInfo, texGrids, i); + } + this._fillAniGrids(texGrids, animations); + var layers = this._layers; + var groups = this._groups; + var images = this._images; + var oldNodeNames = {}; + for (var _i = 0, n = layers.length; _i < n; _i++) { + oldNodeNames[layers[_i].node._name] = true; + } + for (var _i2 = 0, _n = groups.length; _i2 < _n; _i2++) { + oldNodeNames[groups[_i2].node._name] = true; + } + for (var _i3 = 0, _n2 = images.length; _i3 < _n2; _i3++) { + oldNodeNames[images[_i3]._name] = true; + } + layers = this._layers = []; + groups = this._groups = []; + images = this._images = []; + var mapInfo = this._mapInfo; + var node = this.node; + var layerInfos = mapInfo.getAllChildren(); + var textures = this._textures; + var maxWidth = 0; + var maxHeight = 0; + this._objectTextures = []; + var firstTmxLayer = null; + if (layerInfos && layerInfos.length > 0) { + for (var _i4 = 0, len = layerInfos.length; _i4 < len; _i4++) { + var layerInfo = layerInfos[_i4]; + var name = layerInfo.name; + var child = this.node.getChildByName(name); + oldNodeNames[name] = false; + if (!child) { + child = new cc.Node(); + child.name = name; + node.addChild(child); + } + child.setSiblingIndex(_i4); + child.active = layerInfo.visible; + if (layerInfo instanceof cc.TMXLayerInfo) { + // 此处修改 改为创建MyTiledLayer + var layer = child.getComponent(TmoTiledLayer); + if (!layer) { + layer = child.addComponent(TmoTiledLayer); + } + // 修改结束 + // 此处修改 传递firstTmxLayer 记录firstTmxLayer + layer._init(layerInfo, mapInfo, tilesets, textures, texGrids, this, firstTmxLayer); + firstTmxLayer = firstTmxLayer || layer; + // 修改结束 + + // tell the layerinfo to release the ownership of the tiles map. + layerInfo.ownTiles = false; + layers.push(layer); + } else if (layerInfo instanceof cc.TMXObjectGroupInfo) { + var group = child.getComponent(TmoObjectGroup); + if (!group) { + group = child.addComponent(TmoObjectGroup); + } + group._init(layerInfo, mapInfo, texGrids, this); + groups.push(group); + } else if (layerInfo instanceof cc.TMXImageLayerInfo) { + var texture = layerInfo.sourceImage; + child.opacity = layerInfo.opacity; + child.layerInfo = layerInfo; + child._offset = cc.v2(layerInfo.offset.x, -layerInfo.offset.y); + var image = child.getComponent(cc.Sprite); + if (!image) { + image = child.addComponent(cc.Sprite); + } + var spf = image.spriteFrame || new cc.SpriteFrame(); + spf.setTexture(texture); + image.spriteFrame = spf; + child.width = texture.width; + child.height = texture.height; + images.push(child); + } + maxWidth = Math.max(maxWidth, child.width); + maxHeight = Math.max(maxHeight, child.height); + } + } + + // 设置材质的texture属性 + var objectTextures = this._objectTextures; + for (var _i5 = 0; _i5 < objectTextures.length; _i5++) { + var idx = _i5 === 0 ? '' : _i5; + this.objectMaterial.setProperty("texture" + idx, objectTextures[_i5], 0); + } + var children = node.children; + for (var _i6 = 0, _n3 = children.length; _i6 < _n3; _i6++) { + var c = children[_i6]; + if (oldNodeNames[c._name]) { + c.destroy(); + } + } + this.node.width = maxWidth; + this.node.height = maxHeight; + this._syncAnchorPoint(); + }, + getObjectMaterial: function getObjectMaterial() { + return this.objectMaterial; + }, + isNoColor: function isNoColor() { + return this.noColor; + }, + isSingleTexture: function isSingleTexture() { + return this.singleTexture; + }, + getObjectTextures: function getObjectTextures() { + return this._objectTextures; + } +}); + +cc._RF.pop(); + } + if (nodeEnv) { + __define(__module.exports, __require, __module); + } + else { + __quick_compile_project__.registerModuleFunc(__filename, function () { + __define(__module.exports, __require, __module); + }); + } + })(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhY2thZ2VzXFxUaWxlZE1hcE9wdGltaXplclxccmVzb3VyY2VcXFNjcmlwdFxcVG1vVGlsZWRNYXAuanMiXSwibmFtZXMiOlsiVG1vVGlsZWRMYXllciIsInJlcXVpcmUiLCJUbW9PYmplY3RHcm91cCIsImNjIiwiQ2xhc3MiLCJUaWxlZE1hcCIsInByb3BlcnRpZXMiLCJvYmplY3RNYXRlcmlhbCIsIk1hdGVyaWFsIiwibm9Db2xvciIsInNpbmdsZVRleHR1cmUiLCJfb2JqZWN0VGV4dHVyZXMiLCJfYXBwbHlGaWxlIiwiZXJyb3IiLCJfc3VwZXIiLCJfYnVpbGRMYXllckFuZEdyb3VwIiwidGlsZXNldHMiLCJfdGlsZXNldHMiLCJ0ZXhHcmlkcyIsIl90ZXhHcmlkcyIsImFuaW1hdGlvbnMiLCJfYW5pbWF0aW9ucyIsImxlbmd0aCIsImkiLCJsIiwidGlsZXNldEluZm8iLCJmaWxsVGV4dHVyZUdyaWRzIiwiX2ZpbGxBbmlHcmlkcyIsImxheWVycyIsIl9sYXllcnMiLCJncm91cHMiLCJfZ3JvdXBzIiwiaW1hZ2VzIiwiX2ltYWdlcyIsIm9sZE5vZGVOYW1lcyIsIm4iLCJub2RlIiwiX25hbWUiLCJtYXBJbmZvIiwiX21hcEluZm8iLCJsYXllckluZm9zIiwiZ2V0QWxsQ2hpbGRyZW4iLCJ0ZXh0dXJlcyIsIl90ZXh0dXJlcyIsIm1heFdpZHRoIiwibWF4SGVpZ2h0IiwiZmlyc3RUbXhMYXllciIsImxlbiIsImxheWVySW5mbyIsIm5hbWUiLCJjaGlsZCIsImdldENoaWxkQnlOYW1lIiwiTm9kZSIsImFkZENoaWxkIiwic2V0U2libGluZ0luZGV4IiwiYWN0aXZlIiwidmlzaWJsZSIsIlRNWExheWVySW5mbyIsImxheWVyIiwiZ2V0Q29tcG9uZW50IiwiYWRkQ29tcG9uZW50IiwiX2luaXQiLCJvd25UaWxlcyIsInB1c2giLCJUTVhPYmplY3RHcm91cEluZm8iLCJncm91cCIsIlRNWEltYWdlTGF5ZXJJbmZvIiwidGV4dHVyZSIsInNvdXJjZUltYWdlIiwib3BhY2l0eSIsIl9vZmZzZXQiLCJ2MiIsIm9mZnNldCIsIngiLCJ5IiwiaW1hZ2UiLCJTcHJpdGUiLCJzcGYiLCJzcHJpdGVGcmFtZSIsIlNwcml0ZUZyYW1lIiwic2V0VGV4dHVyZSIsIndpZHRoIiwiaGVpZ2h0IiwiTWF0aCIsIm1heCIsIm9iamVjdFRleHR1cmVzIiwiaWR4Iiwic2V0UHJvcGVydHkiLCJjaGlsZHJlbiIsImMiLCJkZXN0cm95IiwiX3N5bmNBbmNob3JQb2ludCIsImdldE9iamVjdE1hdGVyaWFsIiwiaXNOb0NvbG9yIiwiaXNTaW5nbGVUZXh0dXJlIiwiZ2V0T2JqZWN0VGV4dHVyZXMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsYUFBYSxHQUFHQyxPQUFPLENBQUMsaUJBQWlCLENBQUM7QUFDaEQsSUFBTUMsY0FBYyxHQUFHRCxPQUFPLENBQUMsa0JBQWtCLENBQUM7QUFDbERFLEVBQUUsQ0FBQ0MsS0FBSyxDQUFDO0VBQ0wsV0FBU0QsRUFBRSxDQUFDRSxRQUFRO0VBQ3BCQyxVQUFVLEVBQUU7SUFDUkMsY0FBYyxFQUFFSixFQUFFLENBQUNLLFFBQVE7SUFDM0JDLE9BQU8sRUFBRSxJQUFJO0lBQ2JDLGFBQWEsRUFBRSxJQUFJO0lBRW5CQyxlQUFlLEVBQUU7RUFDckIsQ0FBQztFQUdEQyxVQUFVLEVBQUUsU0FBQUEsV0FBQSxFQUFZO0lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUNMLGNBQWMsRUFBRTtNQUN0QkosRUFBRSxDQUFDVSxLQUFLLENBQUMsc0NBQXNDLENBQUM7TUFDaEQ7SUFDSjtJQUVBLElBQUksQ0FBQ0MsTUFBTSxFQUFFO0VBQ2pCLENBQUM7RUFFREMsbUJBQW1CLEVBQUUsU0FBQUEsb0JBQUEsRUFBWTtJQUM3QixJQUFJQyxRQUFRLEdBQUcsSUFBSSxDQUFDQyxTQUFTO0lBQzdCLElBQUlDLFFBQVEsR0FBRyxJQUFJLENBQUNDLFNBQVM7SUFDN0IsSUFBSUMsVUFBVSxH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QUFDO0VBRURzRixTQUFTLEVBQUUsU0FBQUEsVUFBQSxFQUFZO0lBQ25CLE9BQU8sSUFBSSxDQUFDcEYsT0FBTztFQUN2QixDQUFDO0VBRURxRixlQUFlLEVBQUUsU0FBQUEsZ0JBQUEsRUFBWTtJQUN6QixPQUFPLElBQUksQ0FBQ3BGLGFBQWE7RUFDN0IsQ0FBQztFQUVEcUYsaUJBQWlCLEVBQUUsU0FBQUEsa0JBQUEsRUFBWTtJQUMzQixPQUFPLElBQUksQ0FBQ3BGLGVBQWU7RUFDL0I7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VSb290IjoiLyIsInNvdXJjZXNDb250ZW50IjpbIi8vIExlYXJuIGNjLkNsYXNzOlxyXG4vLyAgLSBodHRwczovL2RvY3MuY29jb3MuY29tL2NyZWF0b3IvbWFudWFsL2VuL3NjcmlwdGluZy9jbGFzcy5odG1sXHJcbi8vIExlYXJuIEF0dHJpYnV0ZTpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvcmVmZXJlbmNlL2F0dHJpYnV0ZXMuaHRtbFxyXG4vLyBMZWFybiBsaWZlLWN5Y2xlIGNhbGxiYWNrczpcclxuLy8gIC0gaHR0cHM6Ly9kb2NzLmNvY29zLmNvbS9jcmVhdG9yL21hbnVhbC9lbi9zY3JpcHRpbmcvbGlmZS1jeWNsZS1jYWxsYmFja3MuaHRtbFxyXG5jb25zdCBUbW9UaWxlZExheWVyID0gcmVxdWlyZShcIi4vVG1vVGlsZWRMYXllclwiKTtcclxuY29uc3QgVG1vT2JqZWN0R3JvdXAgPSByZXF1aXJlKFwiLi9UbW9PYmplY3RHcm91cFwiKTtcclxuY2MuQ2xhc3Moe1xyXG4gICAgZXh0ZW5kczogY2MuVGlsZWRNYXAsXHJcbiAgICBwcm9wZXJ0aWVzOiB7XHJcbiAgICAgICAgb2JqZWN0TWF0ZXJpYWw6IGNjLk1hdGVyaWFsLFxyXG4gICAgICAgIG5vQ29sb3I6IHRydWUsXHJcbiAgICAgICAgc2luZ2xlVGV4dHVyZTogdHJ1ZSxcclxuXHJcbiAgICAgICAgX29iamVjdFRleHR1cmVzOiBbXSxcclxuICAgIH0sXHJcbiAgICBcclxuXHJcbiAgICBfYXBwbHlGaWxlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLm9iamVjdE1hdGVyaWFsKSB7XHJcbiAgICAgICAgICAgIGNjLmVycm9yKFwiVGlsZWRtYXBPcHRpbWl6ZTog5pyq6K6+572ub2JqZWN0TWF0ZXJpYWwhXCIpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zdXBlcigpO1xyXG4gICAgfSxcclxuXHJcbiAgICBfYnVpbGRMYXllckFuZEdyb3VwOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgbGV0IHRpbGVzZXRzID0gdGhpcy5fdGlsZXNldHM7XHJcbiAgICAgICAgbGV0IHRleEdyaWRzID0gdGhpcy5fdGV4R3JpZHM7XHJcbiAgICAgICAgbGV0IGFuaW1hdGlvbnMgPSB0aGlzLl9hbmltYXRpb25zO1xyXG4gICAgICAgIHRleEdyaWRzLmxlbmd0aCA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0aWxlc2V0cy5sZW5ndGg7IGkgPCBsOyArK2kpIHtcclxuICAgICAgICAgICAgbGV0IHRpbGVzZXRJbmZvID0gdGlsZXNldHNbaV07XHJcbiAgICAgICAgICAgIGlmICghdGlsZXNldEluZm8pIGNvbnRpbnVlO1xyXG4gICAgICAgICAgICBjYy5UaWxlZE1hcC5maWxsVGV4dHVyZUdyaWRzKHRpbGVzZXRJbmZvLCB0ZXhHcmlkcywgaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZpbGxBbmlHcmlkcyh0ZXhHcmlkcywgYW5pbWF0aW9ucyk7XHJcblxyXG4gICAgICAgIGxldCBsYXllcnMgPSB0aGlzLl9sYXllcnM7XHJcbiAgICAgICAgbGV0IGdyb3VwcyA9IHRoaXMuX2dyb3VwcztcclxuICAgICAgICBsZXQgaW1hZ2VzID0gdGhpcy5faW1hZ2VzO1xyXG4gICAgICAgIGxldCBvbGROb2RlTmFtZXMgPSB7fTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbiA9IGxheWVycy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgb2xkTm9kZU5hbWVzW2xheWVyc1tpXS5ub2RlLl9uYW1lXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBuID0gZ3JvdXBzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBvbGROb2RlTmFtZXNbZ3JvdXBzW2ldLm5vZGUuX25hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBpbWFnZXMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIG9sZE5vZGVOYW1lc1tpbWFnZXNbaV0uX25hbWVdID0gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxheWVycyA9IHRoaXMuX2xheWVycyA9IFtdO1xyXG4gICAgICAgIGdyb3VwcyA9IHRoaXMuX2dyb3VwcyA9IFtdO1xyXG4gICAgICAgIGltYWdlcyA9IHRoaXMuX2ltYWdlcyA9IFtdO1xyXG5cclxuICAgICAgICBsZXQgbWFwSW5mbyA9IHRoaXMuX21hcEluZm87XHJcbiAgICAgICAgbGV0IG5vZGUgPSB0aGlzLm5vZGU7XHJcbiAgICAgICAgbGV0IGxheWVySW5mb3MgPSBtYXBJbmZvLmdldEFsbENoaWxkcmVuKCk7XHJcbiAgICAgICAgbGV0IHRleHR1cmVzID0gdGhpcy5fdGV4dHVyZXM7XHJcbiAgICAgICAgbGV0IG1heFdpZHRoID0gMDtcclxuICAgICAgICBsZXQgbWF4SGVpZ2h0ID0gMDtcclxuXHJcbiAgICAgICAgdGhpcy5fb2JqZWN0VGV4dHVyZXMgPSBbXTtcclxuICAgICAgICBsZXQgZmlyc3RUbXhMYXllciA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmIChsYXllckluZm9zICYmIGxheWVySW5mb3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gbGF5ZXJJbmZvcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICAgICAgICAgICAgbGV0IGxheWVySW5mbyA9IGxheWVySW5mb3NbaV07XHJcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IGxheWVySW5mby5uYW1lO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCBjaGlsZCA9IHRoaXMubm9kZS5nZXRDaGlsZEJ5TmFtZShuYW1lKTtcclxuICAgICAgICAgICAgICAgIG9sZE5vZGVOYW1lc1tuYW1lXSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghY2hpbGQpIHtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZCA9IG5ldyBjYy5Ob2RlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQubmFtZSA9IG5hbWU7XHJcbiAgICAgICAgICAgICAgICAgICAgbm9kZS5hZGRDaGlsZChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgY2hpbGQuc2V0U2libGluZ0luZGV4KGkpO1xyXG4gICAgICAgICAgICAgICAgY2hpbGQuYWN0aXZlID0gbGF5ZXJJbmZvLnZpc2libGU7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGxheWVySW5mbyBpbnN0YW5jZW9mIGNjLlRNWExheWVySW5mbykge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIOatpOWkhOS/ruaUuSDmlLnkuLrliJvlu7pNeVRpbGVkTGF5ZXJcclxuICAgICAgICAgICAgICAgICAgICBsZXQgbGF5ZXIgPSBjaGlsZC5nZXRDb21wb25lbnQoVG1vVGlsZWRMYXllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFsYXllcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYXllciA9IGNoaWxkLmFkZENvbXBvbmVudChUbW9UaWxlZExheWVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5q2k5aSE5L+u5pS5IOS8oOmAkmZpcnN0VG14TGF5ZXIg6K6w5b2VZmlyc3RUbXhMYXllclxyXG4gICAgICAgICAgICAgICAgICAgIGxheWVyLl9pbml0KGxheWVySW5mbywgbWFwSW5mbywgdGlsZXNldHMsIHRleHR1cmVzLCB0ZXhHcmlkcywgdGhpcywgZmlyc3RUbXhMYXllcik7XHJcbiAgICAgICAgICAgICAgICAgICAgZmlyc3RUbXhMYXllciA9IGZpcnN0VG14TGF5ZXIgfHwgbGF5ZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5L+u5pS557uT5p2fXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRlbGwgdGhlIGxheWVyaW5mbyB0byByZWxlYXNlIHRoZSBvd25lcnNoaXAgb2YgdGhlIHRpbGVzIG1hcC5cclxuICAgICAgICAgICAgICAgICAgICBsYXllckluZm8ub3duVGlsZXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBsYXllcnMucHVzaChsYXllcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmIChsYXllckluZm8gaW5zdGFuY2VvZiBjYy5UTVhPYmplY3RHcm91cEluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZ3JvdXAgPSBjaGlsZC5nZXRDb21wb25lbnQoVG1vT2JqZWN0R3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghZ3JvdXApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBjaGlsZC5hZGRDb21wb25lbnQoVG1vT2JqZWN0R3JvdXApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuX2luaXQobGF5ZXJJbmZvLCBtYXBJbmZvLCB0ZXhHcmlkcywgdGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2goZ3JvdXApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobGF5ZXJJbmZvIGluc3RhbmNlb2YgY2MuVE1YSW1hZ2VMYXllckluZm8pIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dHVyZSA9IGxheWVySW5mby5zb3VyY2VJbWFnZTtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5vcGFjaXR5ID0gbGF5ZXJJbmZvLm9wYWNpdHk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5ZXJJbmZvID0gbGF5ZXJJbmZvO1xyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLl9vZmZzZXQgPSBjYy52MihsYXllckluZm8ub2Zmc2V0LngsIC1sYXllckluZm8ub2Zmc2V0LnkpO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgaW1hZ2UgPSBjaGlsZC5nZXRDb21wb25lbnQoY2MuU3ByaXRlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIWltYWdlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlID0gY2hpbGQuYWRkQ29tcG9uZW50KGNjLlNwcml0ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3BmID0gaW1hZ2Uuc3ByaXRlRnJhbWUgfHwgbmV3IGNjLlNwcml0ZUZyYW1lKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3BmLnNldFRleHR1cmUodGV4dHVyZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2Uuc3ByaXRlRnJhbWUgPSBzcGY7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGNoaWxkLndpZHRoID0gdGV4dHVyZS53aWR0aDtcclxuICAgICAgICAgICAgICAgICAgICBjaGlsZC5oZWlnaHQgPSB0ZXh0dXJlLmhlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICBpbWFnZXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbWF4V2lkdGggPSBNYXRoLm1heChtYXhXaWR0aCwgY2hpbGQud2lkdGgpO1xyXG4gICAgICAgICAgICAgICAgbWF4SGVpZ2h0ID0gTWF0aC5tYXgobWF4SGVpZ2h0LCBjaGlsZC5oZWlnaHQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDorr7nva7mnZDotKjnmoR0ZXh0dXJl5bGe5oCnXHJcbiAgICAgICAgbGV0IG9iamVjdFRleHR1cmVzID0gdGhpcy5fb2JqZWN0VGV4dHVyZXM7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvYmplY3RUZXh0dXJlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaWR4ID0gaSA9PT0gMCA/ICcnIDogaTtcclxuICAgICAgICAgICAgdGhpcy5vYmplY3RNYXRlcmlhbC5zZXRQcm9wZXJ0eShgdGV4dHVyZSR7aWR4fWAsIG9iamVjdFRleHR1cmVzW2ldLCAwKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBjaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW47XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIG4gPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGMgPSBjaGlsZHJlbltpXTtcclxuICAgICAgICAgICAgaWYgKG9sZE5vZGVOYW1lc1tjLl9uYW1lXSkge1xyXG4gICAgICAgICAgICAgICAgYy5kZXN0cm95KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMubm9kZS53aWR0aCA9IG1heFdpZHRoO1xyXG4gICAgICAgIHRoaXMubm9kZS5oZWlnaHQgPSBtYXhIZWlnaHQ7XHJcbiAgICAgICAgdGhpcy5fc3luY0FuY2hvclBvaW50KCk7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE9iamVjdE1hdGVyaWFsOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0TWF0ZXJpYWw7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzTm9Db2xvcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm5vQ29sb3I7XHJcbiAgICB9LFxyXG5cclxuICAgIGlzU2luZ2xlVGV4dHVyZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNpbmdsZVRleHR1cmU7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldE9iamVjdFRleHR1cmVzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX29iamVjdFRleHR1cmVzO1xyXG4gICAgfVxyXG59KTsiXX0= //------QC-SOURCE-SPLIT------ diff --git a/temp/quick-scripts/dst/__quick_compile__.js b/temp/quick-scripts/dst/__quick_compile__.js index 45d9f16..d8f7ba6 100644 --- a/temp/quick-scripts/dst/__quick_compile__.js +++ b/temp/quick-scripts/dst/__quick_compile__.js @@ -1,6 +1,6 @@ (function () { -var scripts = [{"deps":{"./assets/Script/CollisionDetection":5,"./assets/Script/ControlManager":23,"./assets/Script/DynamicAtlasManager":27,"./assets/Script/GameManager":25,"./assets/Script/GameOver":20,"./assets/Script/GameScene":24,"./assets/Script/JiaZai":22,"./assets/Script/Load":21,"./assets/Script/Map":36,"./assets/Script/MapBlock":28,"./assets/Script/NewMode":31,"./assets/Script/NumberToImage":29,"./assets/Script/Pause":33,"./assets/Script/RankManager":34,"./assets/Script/Reduce":32,"./assets/Script/SceneManager":30,"./assets/Script/Wall":39,"./assets/Script/Window":37,"./assets/Script/btnControl":43,"./assets/Script/peizhi":41,"./assets/Script/position":40,"./assets/Script/Barrier":44,"./assets/Script/Sdk/MiniGameManager":35,"./assets/Script/Sdk/MiniGameSdk":7,"./assets/Script/Sdk/DouyinEntranceView":42,"./assets/Script/lq_collide_system/lq_collide_base":1,"./assets/Script/lq_collide_system/lq_collide_config":38,"./assets/Script/lq_collide_system/lq_collide_system":51,"./assets/Script/lq_collide_system/lq_collide":57,"./assets/Script/prop/Boom":8,"./assets/Script/prop/Freeze":46,"./assets/Script/prop/Key":50,"./assets/Script/prop/Lock":45,"./assets/Script/prop/Star":48,"./assets/Script/prop/Adhesive":47,"./assets/animation/NewScript":10,"./assets/effect/融化":9,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1":53,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event":11,"./assets/Script/Block":56,"./assets/Script/lq_base/data/lq_interface":54,"./assets/Script/lq_base/data/lq_const":14,"./assets/Script/lq_base/util/lq_game_util":52,"./assets/Script/lq_base/util/lq_math_util":2,"./assets/Script/lq_base/util/lq_platform_util":49,"./assets/Script/lq_base/util/lq_pool_util":61,"./assets/Script/lq_base/util/lq_base_util":62,"./assets/Script/lq_base/data/lq_data":55,"./assets/Script/module/Crypto/crypto-js.min":58,"./assets/Script/module/Crypto/HttpUtil":3,"./assets/Script/module/GameStart/GameAppStart":13,"./assets/Script/module/Music/AudioManager":15,"./assets/Script/module/Notification/Notification":16,"./assets/Script/module/RankList/List":64,"./assets/Script/module/RankList/ItemRender":12,"./assets/Script/module/Share/share":18,"./assets/Script/module/Storage/Storage":17,"./assets/Script/module/Tool/GameTool":19,"./assets/Script/module/Config/GameConfig":26,"./assets/shop/script/item":6,"./assets/shop/script/shop":60,"./tiledmap-optimize-resource/Script/TmoSprite":59,"./tiledmap-optimize-resource/Script/TmoTiledLayer":4,"./tiledmap-optimize-resource/Script/TmoTiledMap":63,"./tiledmap-optimize-resource/Script/TmoAssembler":65,"./tiledmap-optimize-resource/Script/TmoObjectGroup":66},"path":"preview-scripts/__qc_index__.js"},{"deps":{"./lq_collide":57,"../lq_base/data/lq_const":14},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_base.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_math_util.js"},{"deps":{"./crypto-js.min.js":58},"path":"preview-scripts/assets/Script/module/Crypto/HttpUtil.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledLayer.js"},{"deps":{},"path":"preview-scripts/assets/Script/CollisionDetection.js"},{"deps":{},"path":"preview-scripts/assets/shop/script/item.js"},{"deps":{},"path":"preview-scripts/assets/Script/Sdk/MiniGameSdk.js"},{"deps":{"../Map":36,"../NumberToImage":29},"path":"preview-scripts/assets/Script/prop/Boom.js"},{"deps":{},"path":"preview-scripts/assets/effect/融化.js"},{"deps":{},"path":"preview-scripts/assets/animation/NewScript.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/RankList/ItemRender.js"},{"deps":{"../Storage/Storage":17,"../Config/GameConfig":26,"../Crypto/HttpUtil":3,"../Notification/Notification":16,"../Tool/GameTool":19},"path":"preview-scripts/assets/Script/module/GameStart/GameAppStart.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_const.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Music/AudioManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Notification/Notification.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Storage/Storage.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Share/share.js"},{"deps":{"../../Sdk/MiniGameSdk":7},"path":"preview-scripts/assets/Script/module/Tool/GameTool.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameOver.js"},{"deps":{},"path":"preview-scripts/assets/Script/Load.js"},{"deps":{"./GameManager":25,"./NumberToImage":29,"./Sdk/MiniGameSdk":7,"./lq_collide_system/lq_collide_system":51},"path":"preview-scripts/assets/Script/JiaZai.js"},{"deps":{},"path":"preview-scripts/assets/Script/ControlManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameScene.js"},{"deps":{"./Sdk/MiniGameSdk":7},"path":"preview-scripts/assets/Script/GameManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Config/GameConfig.js"},{"deps":{},"path":"preview-scripts/assets/Script/DynamicAtlasManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/MapBlock.js"},{"deps":{},"path":"preview-scripts/assets/Script/NumberToImage.js"},{"deps":{"./Map":36,"./Sdk/MiniGameSdk":7},"path":"preview-scripts/assets/Script/SceneManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/NewMode.js"},{"deps":{},"path":"preview-scripts/assets/Script/Reduce.js"},{"deps":{},"path":"preview-scripts/assets/Script/Pause.js"},{"deps":{"./module/RankList/List":64},"path":"preview-scripts/assets/Script/RankManager.js"},{"deps":{"./MiniGameSdk":7},"path":"preview-scripts/assets/Script/Sdk/MiniGameManager.js"},{"deps":{"./GameManager":25,"./NumberToImage":29,"./Sdk/MiniGameSdk":7},"path":"preview-scripts/assets/Script/Map.js"},{"deps":{},"path":"preview-scripts/assets/Script/Window.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_config.js"},{"deps":{"./Map":36},"path":"preview-scripts/assets/Script/Wall.js"},{"deps":{},"path":"preview-scripts/assets/Script/position.js"},{"deps":{},"path":"preview-scripts/assets/Script/peizhi.js"},{"deps":{"./MiniGameSdk":7},"path":"preview-scripts/assets/Script/Sdk/DouyinEntranceView.js"},{"deps":{},"path":"preview-scripts/assets/Script/btnControl.js"},{"deps":{"./Map":36},"path":"preview-scripts/assets/Script/Barrier.js"},{"deps":{"../NumberToImage":29},"path":"preview-scripts/assets/Script/prop/Lock.js"},{"deps":{"../NumberToImage":29},"path":"preview-scripts/assets/Script/prop/Freeze.js"},{"deps":{},"path":"preview-scripts/assets/Script/prop/Adhesive.js"},{"deps":{"../Map":36},"path":"preview-scripts/assets/Script/prop/Star.js"},{"deps":{"../data/lq_const":14},"path":"preview-scripts/assets/Script/lq_base/util/lq_platform_util.js"},{"deps":{"../Map":36},"path":"preview-scripts/assets/Script/prop/Key.js"},{"deps":{"../lq_base/data/lq_const":14,"../lq_base/util/lq_math_util":2,"./lq_collide_config":38,"../lq_base/data/lq_data":55},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_system.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_game_util.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_interface.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_data.js"},{"deps":{"./lq_collide_system/lq_collide_system":51,"./Map":36},"path":"preview-scripts/assets/Script/Block.js"},{"deps":{"../lq_base/data/lq_const":14,"./lq_collide_config":38,"./lq_collide_system":51,"../lq_base/data/lq_data":55,"./lq_collide_base":1,"../lq_base/util/lq_game_util":52,"../Map":36},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Crypto/crypto-js.min.js"},{"deps":{"./TmoAssembler":65},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoSprite.js"},{"deps":{},"path":"preview-scripts/assets/shop/script/shop.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_pool_util.js"},{"deps":{"./lq_platform_util":49,"../data/lq_const":14},"path":"preview-scripts/assets/Script/lq_base/util/lq_base_util.js"},{"deps":{"./TmoTiledLayer":4,"./TmoObjectGroup":66},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledMap.js"},{"deps":{"./ItemRender":12},"path":"preview-scripts/assets/Script/module/RankList/List.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoAssembler.js"},{"deps":{"./TmoSprite":59},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoObjectGroup.js"}]; +var scripts = [{"deps":{"./assets/Script/lq_collide_system/lq_collide_base":1,"./assets/Script/lq_base/data/lq_interface":2,"./assets/Script/module/Crypto/HttpUtil":3,"./tiledmap-optimize-resource/Script/TmoSprite":4,"./assets/Script/DynamicAtlasManager":5,"./assets/shop/script/item":6,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1":7,"./assets/Script/prop/Lock":8,"./assets/Script/Sdk/DouyinEntranceView":9,"./assets/effect/融化":10,"./assets/Script/lq_base/util/lq_game_util":11,"./assets/Script/module/GameStart/GameAppStart":12,"./assets/animation/NewScript":13,"./assets/Script/module/RankList/ItemRender":14,"./assets/Script/module/Notification/Notification":15,"./assets/Script/module/Music/AudioManager":16,"./assets/Script/module/Config/GameConfig":17,"./assets/Script/ControlManager":18,"./assets/Script/module/Share/share":19,"./assets/Script/GameManager":20,"./assets/Script/module/Tool/GameTool":21,"./assets/Script/JiaZai":22,"./assets/Script/GameScene":23,"./assets/Script/Reduce":24,"./assets/Script/CollisionDetection":25,"./assets/Script/GameOver":26,"./assets/Script/RankManager":27,"./assets/Script/NewMode":28,"./assets/Script/SceneManager":29,"./assets/Script/Map":30,"./assets/Script/Window":31,"./assets/Script/Wall":32,"./assets/Script/NumberToImage":33,"./assets/Script/Pause":34,"./assets/Script/Load":35,"./assets/Script/btnControl":36,"./assets/Script/position":37,"./assets/Script/peizhi":38,"./assets/Script/lq_collide_system/lq_collide_config":39,"./assets/Script/Sdk/MiniGameManager":40,"./assets/Script/prop/Freeze":41,"./assets/Script/lq_collide_system/lq_collide_system":42,"./assets/Script/Sdk/MiniGameSdk":43,"./assets/Script/prop/Boom":44,"./assets/Script/prop/Key":45,"./assets/Script/prop/Star":46,"./assets/Script/lq_collide_system/lq_collide":47,"./assets/Script/prop/Adhesive":48,"./assets/migration/use_v2.1-2.2.1_cc.Toggle_event":49,"./assets/Script/Block":50,"./assets/Script/lq_base/data/lq_const":51,"./assets/Script/lq_base/util/lq_platform_util":52,"./assets/Script/MapBlock":53,"./assets/Script/lq_base/util/lq_math_util":54,"./assets/Script/Barrier":55,"./assets/Script/module/Storage/Storage":56,"./assets/Script/lq_base/data/lq_data":57,"./assets/Script/lq_base/util/lq_base_util":58,"./assets/Script/module/RankList/List":59,"./assets/Script/lq_base/util/lq_pool_util":60,"./tiledmap-optimize-resource/Script/TmoTiledLayer":61,"./tiledmap-optimize-resource/Script/TmoAssembler":62,"./assets/shop/script/shop":63,"./assets/Script/module/Crypto/crypto-js.min":64,"./tiledmap-optimize-resource/Script/TmoObjectGroup":65,"./tiledmap-optimize-resource/Script/TmoTiledMap":66},"path":"preview-scripts/__qc_index__.js"},{"deps":{"./lq_collide":47,"../lq_base/data/lq_const":51},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_base.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_interface.js"},{"deps":{"./crypto-js.min.js":64},"path":"preview-scripts/assets/Script/module/Crypto/HttpUtil.js"},{"deps":{"./TmoAssembler":62},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoSprite.js"},{"deps":{},"path":"preview-scripts/assets/Script/DynamicAtlasManager.js"},{"deps":{},"path":"preview-scripts/assets/shop/script/item.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event_1.js"},{"deps":{"../NumberToImage":33},"path":"preview-scripts/assets/Script/prop/Lock.js"},{"deps":{"./MiniGameSdk":43},"path":"preview-scripts/assets/Script/Sdk/DouyinEntranceView.js"},{"deps":{},"path":"preview-scripts/assets/effect/融化.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_game_util.js"},{"deps":{"../Storage/Storage":56,"../Config/GameConfig":17,"../Crypto/HttpUtil":3,"../Music/AudioManager":16,"../Notification/Notification":15,"../Tool/GameTool":21},"path":"preview-scripts/assets/Script/module/GameStart/GameAppStart.js"},{"deps":{},"path":"preview-scripts/assets/animation/NewScript.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/RankList/ItemRender.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Notification/Notification.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Music/AudioManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Config/GameConfig.js"},{"deps":{},"path":"preview-scripts/assets/Script/ControlManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Share/share.js"},{"deps":{"./Sdk/MiniGameSdk":43},"path":"preview-scripts/assets/Script/GameManager.js"},{"deps":{"../../Sdk/MiniGameSdk":43},"path":"preview-scripts/assets/Script/module/Tool/GameTool.js"},{"deps":{"./GameManager":20,"./NumberToImage":33,"./Sdk/MiniGameSdk":43,"./lq_collide_system/lq_collide_system":42},"path":"preview-scripts/assets/Script/JiaZai.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameScene.js"},{"deps":{},"path":"preview-scripts/assets/Script/Reduce.js"},{"deps":{},"path":"preview-scripts/assets/Script/CollisionDetection.js"},{"deps":{},"path":"preview-scripts/assets/Script/GameOver.js"},{"deps":{"./module/RankList/List":59},"path":"preview-scripts/assets/Script/RankManager.js"},{"deps":{},"path":"preview-scripts/assets/Script/NewMode.js"},{"deps":{"./Map":30,"./Sdk/MiniGameSdk":43},"path":"preview-scripts/assets/Script/SceneManager.js"},{"deps":{"./GameManager":20,"./NumberToImage":33,"./Sdk/MiniGameSdk":43},"path":"preview-scripts/assets/Script/Map.js"},{"deps":{},"path":"preview-scripts/assets/Script/Window.js"},{"deps":{"./Map":30},"path":"preview-scripts/assets/Script/Wall.js"},{"deps":{},"path":"preview-scripts/assets/Script/NumberToImage.js"},{"deps":{},"path":"preview-scripts/assets/Script/Pause.js"},{"deps":{},"path":"preview-scripts/assets/Script/Load.js"},{"deps":{},"path":"preview-scripts/assets/Script/btnControl.js"},{"deps":{},"path":"preview-scripts/assets/Script/position.js"},{"deps":{},"path":"preview-scripts/assets/Script/peizhi.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_config.js"},{"deps":{"./MiniGameSdk":43},"path":"preview-scripts/assets/Script/Sdk/MiniGameManager.js"},{"deps":{"../NumberToImage":33},"path":"preview-scripts/assets/Script/prop/Freeze.js"},{"deps":{"../lq_base/data/lq_const":51,"../lq_base/util/lq_math_util":54,"./lq_collide_config":39,"../lq_base/data/lq_data":57},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide_system.js"},{"deps":{},"path":"preview-scripts/assets/Script/Sdk/MiniGameSdk.js"},{"deps":{"../Map":30,"../NumberToImage":33},"path":"preview-scripts/assets/Script/prop/Boom.js"},{"deps":{"../Map":30},"path":"preview-scripts/assets/Script/prop/Key.js"},{"deps":{"../Map":30},"path":"preview-scripts/assets/Script/prop/Star.js"},{"deps":{"../lq_base/data/lq_const":51,"./lq_collide_config":39,"./lq_collide_system":42,"../lq_base/data/lq_data":57,"./lq_collide_base":1,"../lq_base/util/lq_game_util":11,"../Map":30},"path":"preview-scripts/assets/Script/lq_collide_system/lq_collide.js"},{"deps":{},"path":"preview-scripts/assets/Script/prop/Adhesive.js"},{"deps":{},"path":"preview-scripts/assets/migration/use_v2.1-2.2.1_cc.Toggle_event.js"},{"deps":{"./lq_collide_system/lq_collide_system":42,"./Map":30},"path":"preview-scripts/assets/Script/Block.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_const.js"},{"deps":{"../data/lq_const":51},"path":"preview-scripts/assets/Script/lq_base/util/lq_platform_util.js"},{"deps":{},"path":"preview-scripts/assets/Script/MapBlock.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_math_util.js"},{"deps":{"./Map":30},"path":"preview-scripts/assets/Script/Barrier.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Storage/Storage.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/data/lq_data.js"},{"deps":{"./lq_platform_util":52,"../data/lq_const":51},"path":"preview-scripts/assets/Script/lq_base/util/lq_base_util.js"},{"deps":{"./ItemRender":14},"path":"preview-scripts/assets/Script/module/RankList/List.js"},{"deps":{},"path":"preview-scripts/assets/Script/lq_base/util/lq_pool_util.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledLayer.js"},{"deps":{},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoAssembler.js"},{"deps":{},"path":"preview-scripts/assets/shop/script/shop.js"},{"deps":{},"path":"preview-scripts/assets/Script/module/Crypto/crypto-js.min.js"},{"deps":{"./TmoSprite":4},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoObjectGroup.js"},{"deps":{"./TmoTiledLayer":61,"./TmoObjectGroup":65},"path":"preview-scripts/tiledmap-optimize-resource/Script/TmoTiledMap.js"}]; var entries = ["preview-scripts/__qc_index__.js"]; var bundleScript = 'preview-scripts/__qc_bundle__.js'; diff --git a/temp/quick-scripts/dst/assets/Script/module/Crypto/crypto-js.min.js b/temp/quick-scripts/dst/assets/Script/module/Crypto/crypto-js.min.js index 263c1b2..afce80e 100644 --- a/temp/quick-scripts/dst/assets/Script/module/Crypto/crypto-js.min.js +++ b/temp/quick-scripts/dst/assets/Script/module/Crypto/crypto-js.min.js @@ -9,2067 +9,2067 @@ return __quick_compile_project__.require(request, __filename); }; function __define (exports, require, module) { - if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; -cc._RF.push(module, 'e64e1qXyT9CV6s0gDQdj/ed', 'crypto-js.min'); -// Script/module/Crypto/crypto-js.min.js - -"use strict"; - -!function (t, r) { - "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r(); -}(void 0, function () { - var t = t || function (t, r) { - var e = Object.create || function () { - function t() {} - return function (r) { - var e; - return t.prototype = r, e = new t(), t.prototype = null, e; - }; - }(), - i = {}, - n = i.lib = {}, - o = n.Base = function () { - return { - extend: function extend(t) { - var r = e(this); - return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { - r.$super.init.apply(this, arguments); - }), r.init.prototype = r, r.$super = this, r; - }, - create: function create() { - var t = this.extend(); - return t.init.apply(t, arguments), t; - }, - init: function init() {}, - mixIn: function mixIn(t) { - for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); - t.hasOwnProperty("toString") && (this.toString = t.toString); - }, - clone: function clone() { - return this.init.prototype.extend(this); - } - }; - }(), - s = n.WordArray = o.extend({ - init: function init(t, e) { - t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length; - }, - toString: function toString(t) { - return (t || c).stringify(this); - }, - concat: function concat(t) { - var r = this.words, - e = t.words, - i = this.sigBytes, - n = t.sigBytes; - if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { - var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; - r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8; - } else for (var o = 0; o < n; o += 4) r[i + o >>> 2] = e[o >>> 2]; - return this.sigBytes += n, this; - }, - clamp: function clamp() { - var r = this.words, - e = this.sigBytes; - r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4); - }, - clone: function clone() { - var t = o.clone.call(this); - return t.words = this.words.slice(0), t; - }, - random: function random(r) { - for (var e, i = [], n = function n(r) { - var r = r, - e = 987654321, - i = 4294967295; - return function () { - e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; - var n = (e << 16) + r & i; - return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1); - }; - }, o = 0; o < r; o += 4) { - var a = n(4294967296 * (e || t.random())); - e = 987654071 * a(), i.push(4294967296 * a() | 0); - } - return new s.init(i, r); - } - }), - a = i.enc = {}, - c = a.Hex = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { - var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; - i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i += 2) e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; - return new s.init(e, r / 2); - } - }, - h = a.Latin1 = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { - var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; - i.push(String.fromCharCode(o)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; - return new s.init(e, r); - } - }, - l = a.Utf8 = { - stringify: function stringify(t) { - try { - return decodeURIComponent(escape(h.stringify(t))); - } catch (t) { - throw new Error("Malformed UTF-8 data"); - } - }, - parse: function parse(t) { - return h.parse(unescape(encodeURIComponent(t))); - } - }, - f = n.BufferedBlockAlgorithm = o.extend({ - reset: function reset() { - this._data = new s.init(), this._nDataBytes = 0; - }, - _append: function _append(t) { - "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes; - }, - _process: function _process(r) { - var e = this._data, - i = e.words, - n = e.sigBytes, - o = this.blockSize, - a = 4 * o, - c = n / a; - c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); - var h = c * o, - l = t.min(4 * h, n); - if (h) { - for (var f = 0; f < h; f += o) this._doProcessBlock(i, f); - var u = i.splice(0, h); - e.sigBytes -= l; - } - return new s.init(u, l); - }, - clone: function clone() { - var t = o.clone.call(this); - return t._data = this._data.clone(), t; - }, - _minBufferSize: 0 - }), - u = (n.Hasher = f.extend({ - cfg: o.extend(), - init: function init(t) { - this.cfg = this.cfg.extend(t), this.reset(); - }, - reset: function reset() { - f.reset.call(this), this._doReset(); - }, - update: function update(t) { - return this._append(t), this._process(), this; - }, - finalize: function finalize(t) { - t && this._append(t); - var r = this._doFinalize(); - return r; - }, - blockSize: 16, - _createHelper: function _createHelper(t) { - return function (r, e) { - return new t.init(e).finalize(r); - }; - }, - _createHmacHelper: function _createHmacHelper(t) { - return function (r, e) { - return new u.HMAC.init(t, e).finalize(r); - }; - } - }), i.algo = {}); - return i; - }(Math); - return function () { - function r(t, r, e) { - for (var i = [], o = 0, s = 0; s < r; s++) if (s % 4) { - var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, - c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; - i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++; - } - return n.create(i, o); - } - var e = t, - i = e.lib, - n = i.WordArray, - o = e.enc; - o.Base64 = { - stringify: function stringify(t) { - var r = t.words, - e = t.sigBytes, - i = this._map; - t.clamp(); - for (var n = [], o = 0; o < e; o += 3) for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++) n.push(i.charAt(h >>> 6 * (3 - l) & 63)); - var f = i.charAt(64); - if (f) for (; n.length % 4;) n.push(f); - return n.join(""); - }, - parse: function parse(t) { - var e = t.length, - i = this._map, - n = this._reverseMap; - if (!n) { - n = this._reverseMap = []; - for (var o = 0; o < i.length; o++) n[i.charCodeAt(o)] = o; - } - var s = i.charAt(64); - if (s) { - var a = t.indexOf(s); - a !== -1 && (e = a); - } - return r(t, e, n); - }, - _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" - }; - }(), function (r) { - function e(t, r, e, i, n, o, s) { - var a = t + (r & e | ~r & i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function i(t, r, e, i, n, o, s) { - var a = t + (r & i | e & ~i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function n(t, r, e, i, n, o, s) { - var a = t + (r ^ e ^ i) + n + s; - return (a << o | a >>> 32 - o) + r; - } - function o(t, r, e, i, n, o, s) { - var a = t + (e ^ (r | ~i)) + n + s; - return (a << o | a >>> 32 - o) + r; - } - var s = t, - a = s.lib, - c = a.WordArray, - h = a.Hasher, - l = s.algo, - f = []; - !function () { - for (var t = 0; t < 64; t++) f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0; - }(); - var u = l.MD5 = h.extend({ - _doReset: function _doReset() { - this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var s = 0; s < 16; s++) { - var a = r + s, - c = t[a]; - t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8); - } - var h = this._hash.words, - l = t[r + 0], - u = t[r + 1], - d = t[r + 2], - v = t[r + 3], - p = t[r + 4], - _ = t[r + 5], - y = t[r + 6], - g = t[r + 7], - B = t[r + 8], - w = t[r + 9], - k = t[r + 10], - S = t[r + 11], - m = t[r + 12], - x = t[r + 13], - b = t[r + 14], - H = t[r + 15], - z = h[0], - A = h[1], - C = h[2], - D = h[3]; - z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = 8 * this._nDataBytes, - n = 8 * t.sigBytes; - e[n >>> 5] |= 128 << 24 - n % 32; - var o = r.floor(i / 4294967296), - s = i; - e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); - for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { - var l = c[h]; - c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); - } - return a; - }, - clone: function clone() { - var t = h.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u); - }(Math), function () { - var r = t, - e = r.lib, - i = e.WordArray, - n = e.Hasher, - o = r.algo, - s = [], - a = o.SHA1 = n.extend({ - _doReset: function _doReset() { - this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { - if (h < 16) s[h] = 0 | t[r + h];else { - var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; - s[h] = l << 1 | l >>> 31; - } - var f = (i << 5 | i >>> 27) + c + s[h]; - f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f; - } - e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash; - }, - clone: function clone() { - var t = n.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a); - }(), function (r) { - var e = t, - i = e.lib, - n = i.WordArray, - o = i.Hasher, - s = e.algo, - a = [], - c = []; - !function () { - function t(t) { - for (var e = r.sqrt(t), i = 2; i <= e; i++) if (!(t % i)) return !1; - return !0; - } - function e(t) { - return 4294967296 * (t - (0 | t)) | 0; - } - for (var i = 2, n = 0; n < 64;) t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++; - }(); - var h = [], - l = s.SHA256 = o.extend({ - _doReset: function _doReset() { - this._hash = new n.init(a.slice(0)); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { - if (d < 16) h[d] = 0 | t[r + d];else { - var v = h[d - 15], - p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, - _ = h[d - 2], - y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; - h[d] = p + h[d - 7] + y + h[d - 16]; - } - var g = a & l ^ ~a & f, - B = i & n ^ i & o ^ n & o, - w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), - k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), - S = u + k + g + c[d] + h[d], - m = w + B; - u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0; - } - e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = 8 * this._nDataBytes, - n = 8 * t.sigBytes; - return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash; - }, - clone: function clone() { - var t = o.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l); - }(Math), function () { - function r(t) { - return t << 8 & 4278255360 | t >>> 8 & 16711935; - } - var e = t, - i = e.lib, - n = i.WordArray, - o = e.enc; - o.Utf16 = o.Utf16BE = { - stringify: function stringify(t) { - for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { - var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; - i.push(String.fromCharCode(o)); - } - return i.join(""); - }, - parse: function parse(t) { - for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; - return n.create(e, 2 * r); - } - }; - o.Utf16LE = { - stringify: function stringify(t) { - for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { - var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); - n.push(String.fromCharCode(s)); - } - return n.join(""); - }, - parse: function parse(t) { - for (var e = t.length, i = [], o = 0; o < e; o++) i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); - return n.create(i, 2 * e); - } - }; - }(), function () { - if ("function" == typeof ArrayBuffer) { - var r = t, - e = r.lib, - i = e.WordArray, - n = i.init, - o = i.init = function (t) { - if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { - for (var r = t.byteLength, e = [], i = 0; i < r; i++) e[i >>> 2] |= t[i] << 24 - i % 4 * 8; - n.call(this, e, r); - } else n.apply(this, arguments); - }; - o.prototype = i; - } - }(), function (r) { - function e(t, r, e) { - return t ^ r ^ e; - } - function i(t, r, e) { - return t & r | ~t & e; - } - function n(t, r, e) { - return (t | ~r) ^ e; - } - function o(t, r, e) { - return t & e | r & ~e; - } - function s(t, r, e) { - return t ^ (r | ~e); - } - function a(t, r) { - return t << r | t >>> 32 - r; - } - var c = t, - h = c.lib, - l = h.WordArray, - f = h.Hasher, - u = c.algo, - d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), - v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), - p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), - _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), - y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), - g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), - B = u.RIPEMD160 = f.extend({ - _doReset: function _doReset() { - this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var c = 0; c < 16; c++) { - var h = r + c, - l = t[h]; - t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); - } - var f, - u, - B, - w, - k, - S, - m, - x, - b, - H, - z = this._hash.words, - A = y.words, - C = g.words, - D = d.words, - R = v.words, - E = p.words, - M = _.words; - S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; - for (var F, c = 0; c < 80; c += 1) F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; - F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F; - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); - for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { - var a = o[s]; - o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8); - } - return n; - }, - clone: function clone() { - var t = f.clone.call(this); - return t._hash = this._hash.clone(), t; - } - }); - c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B); - }(Math), function () { - var r = t, - e = r.lib, - i = e.Base, - n = r.enc, - o = n.Utf8, - s = r.algo; - s.HMAC = i.extend({ - init: function init(t, r) { - t = this._hasher = new t.init(), "string" == typeof r && (r = o.parse(r)); - var e = t.blockSize, - i = 4 * e; - r.sigBytes > i && (r = t.finalize(r)), r.clamp(); - for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++) a[h] ^= 1549556828, c[h] ^= 909522486; - n.sigBytes = s.sigBytes = i, this.reset(); - }, - reset: function reset() { - var t = this._hasher; - t.reset(), t.update(this._iKey); - }, - update: function update(t) { - return this._hasher.update(t), this; - }, - finalize: function finalize(t) { - var r = this._hasher, - e = r.finalize(t); - r.reset(); - var i = r.finalize(this._oKey.clone().concat(e)); - return i; - } - }); - }(), function () { - var r = t, - e = r.lib, - i = e.Base, - n = e.WordArray, - o = r.algo, - s = o.SHA1, - a = o.HMAC, - c = o.PBKDF2 = i.extend({ - cfg: i.extend({ - keySize: 4, - hasher: s, - iterations: 1 - }), - init: function init(t) { - this.cfg = this.cfg.extend(t); - }, - compute: function compute(t, r) { - for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { - var u = i.update(r).finalize(s); - i.reset(); - for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { - p = i.finalize(p), i.reset(); - for (var y = p.words, g = 0; g < v; g++) d[g] ^= y[g]; - } - o.concat(u), h[0]++; - } - return o.sigBytes = 4 * l, o; - } - }); - r.PBKDF2 = function (t, r, e) { - return c.create(e).compute(t, r); - }; - }(), function () { - var r = t, - e = r.lib, - i = e.Base, - n = e.WordArray, - o = r.algo, - s = o.MD5, - a = o.EvpKDF = i.extend({ - cfg: i.extend({ - keySize: 4, - hasher: s, - iterations: 1 - }), - init: function init(t) { - this.cfg = this.cfg.extend(t); - }, - compute: function compute(t, r) { - for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { - h && i.update(h); - var h = i.update(t).finalize(r); - i.reset(); - for (var l = 1; l < c; l++) h = i.finalize(h), i.reset(); - o.concat(h); - } - return o.sigBytes = 4 * a, o; - } - }); - r.EvpKDF = function (t, r, e) { - return a.create(e).compute(t, r); - }; - }(), function () { - var r = t, - e = r.lib, - i = e.WordArray, - n = r.algo, - o = n.SHA256, - s = n.SHA224 = o.extend({ - _doReset: function _doReset() { - this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); - }, - _doFinalize: function _doFinalize() { - var t = o._doFinalize.call(this); - return t.sigBytes -= 4, t; - } - }); - r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s); - }(), function (r) { - var e = t, - i = e.lib, - n = i.Base, - o = i.WordArray, - s = e.x64 = {}; - s.Word = n.extend({ - init: function init(t, r) { - this.high = t, this.low = r; - } - }), s.WordArray = n.extend({ - init: function init(t, e) { - t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length; - }, - toX32: function toX32() { - for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { - var n = t[i]; - e.push(n.high), e.push(n.low); - } - return o.create(e, this.sigBytes); - }, - clone: function clone() { - for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++) r[i] = r[i].clone(); - return t; - } - }); - }(), function (r) { - var e = t, - i = e.lib, - n = i.WordArray, - o = i.Hasher, - s = e.x64, - a = s.Word, - c = e.algo, - h = [], - l = [], - f = []; - !function () { - for (var t = 1, r = 0, e = 0; e < 24; e++) { - h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; - var i = r % 5, - n = (2 * t + 3 * r) % 5; - t = i, r = n; - } - for (var t = 0; t < 5; t++) for (var r = 0; r < 5; r++) l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; - for (var o = 1, s = 0; s < 24; s++) { - for (var c = 0, u = 0, d = 0; d < 7; d++) { - if (1 & o) { - var v = (1 << d) - 1; - v < 32 ? u ^= 1 << v : c ^= 1 << v - 32; - } - 128 & o ? o = o << 1 ^ 113 : o <<= 1; - } - f[s] = a.create(c, u); - } - }(); - var u = []; - !function () { - for (var t = 0; t < 25; t++) u[t] = a.create(); - }(); - var d = c.SHA3 = o.extend({ - cfg: o.cfg.extend({ - outputLength: 512 - }), - _doReset: function _doReset() { - for (var t = this._state = [], r = 0; r < 25; r++) t[r] = new a.init(); - this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { - var o = t[r + 2 * n], - s = t[r + 2 * n + 1]; - o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); - var a = e[n]; - a.high ^= s, a.low ^= o; - } - for (var c = 0; c < 24; c++) { - for (var d = 0; d < 5; d++) { - for (var v = 0, p = 0, _ = 0; _ < 5; _++) { - var a = e[d + 5 * _]; - v ^= a.high, p ^= a.low; - } - var y = u[d]; - y.high = v, y.low = p; - } - for (var d = 0; d < 5; d++) for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { - var a = e[d + 5 * _]; - a.high ^= v, a.low ^= p; - } - for (var S = 1; S < 25; S++) { - var a = e[S], - m = a.high, - x = a.low, - b = h[S]; - if (b < 32) var v = m << b | x >>> 32 - b, - p = x << b | m >>> 32 - b;else var v = x << b - 32 | m >>> 64 - b, - p = m << b - 32 | x >>> 64 - b; - var H = u[l[S]]; - H.high = v, H.low = p; - } - var z = u[0], - A = e[0]; - z.high = A.high, z.low = A.low; - for (var d = 0; d < 5; d++) for (var _ = 0; _ < 5; _++) { - var S = d + 5 * _, - a = e[S], - C = u[S], - D = u[(d + 1) % 5 + 5 * _], - R = u[(d + 2) % 5 + 5 * _]; - a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low; - } - var a = e[0], - E = f[c]; - a.high ^= E.high, a.low ^= E.low; - } - }, - _doFinalize: function _doFinalize() { - var t = this._data, - e = t.words, - i = (8 * this._nDataBytes, 8 * t.sigBytes), - o = 32 * this.blockSize; - e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); - for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { - var f = s[l], - u = f.high, - d = f.low; - u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u); - } - return new n.init(h, a); - }, - clone: function clone() { - for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++) r[e] = r[e].clone(); - return t; - } - }); - e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d); - }(Math), function () { - function r() { - return s.create.apply(s, arguments); - } - var e = t, - i = e.lib, - n = i.Hasher, - o = e.x64, - s = o.Word, - a = o.WordArray, - c = e.algo, - h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], - l = []; - !function () { - for (var t = 0; t < 80; t++) l[t] = r(); - }(); - var f = c.SHA512 = n.extend({ - _doReset: function _doReset() { - this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { - var Z = l[T]; - if (T < 16) var q = Z.high = 0 | t[r + 2 * T], - G = Z.low = 0 | t[r + 2 * T + 1];else { - var J = l[T - 15], - $ = J.high, - Q = J.low, - V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, - Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), - tt = l[T - 2], - rt = tt.high, - et = tt.low, - it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, - nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), - ot = l[T - 7], - st = ot.high, - at = ot.low, - ct = l[T - 16], - ht = ct.high, - lt = ct.low, - G = Y + at, - q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), - G = G + nt, - q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), - G = G + lt, - q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); - Z.high = q, Z.low = G; - } - var ft = O & I ^ ~O & X, - ut = U & K ^ ~U & L, - dt = C & R ^ C & M ^ R & M, - vt = D & E ^ D & F ^ E & F, - pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), - _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), - yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), - gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), - Bt = h[T], - wt = Bt.high, - kt = Bt.low, - St = N + gt, - mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), - St = St + ut, - mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), - St = St + kt, - mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), - St = St + G, - mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), - xt = _t + vt, - bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); - j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0; - } - v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0); - }, - _doFinalize: function _doFinalize() { - var t = this._data, - r = t.words, - e = 8 * this._nDataBytes, - i = 8 * t.sigBytes; - r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); - var n = this._hash.toX32(); - return n; - }, - clone: function clone() { - var t = n.clone.call(this); - return t._hash = this._hash.clone(), t; - }, - blockSize: 32 - }); - e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f); - }(), function () { - var r = t, - e = r.x64, - i = e.Word, - n = e.WordArray, - o = r.algo, - s = o.SHA512, - a = o.SHA384 = s.extend({ - _doReset: function _doReset() { - this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]); - }, - _doFinalize: function _doFinalize() { - var t = s._doFinalize.call(this); - return t.sigBytes -= 16, t; - } - }); - r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a); - }(), t.lib.Cipher || function (r) { - var e = t, - i = e.lib, - n = i.Base, - o = i.WordArray, - s = i.BufferedBlockAlgorithm, - a = e.enc, - c = (a.Utf8, a.Base64), - h = e.algo, - l = h.EvpKDF, - f = i.Cipher = s.extend({ - cfg: n.extend(), - createEncryptor: function createEncryptor(t, r) { - return this.create(this._ENC_XFORM_MODE, t, r); - }, - createDecryptor: function createDecryptor(t, r) { - return this.create(this._DEC_XFORM_MODE, t, r); - }, - init: function init(t, r, e) { - this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset(); - }, - reset: function reset() { - s.reset.call(this), this._doReset(); - }, - process: function process(t) { - return this._append(t), this._process(); - }, - finalize: function finalize(t) { - t && this._append(t); - var r = this._doFinalize(); - return r; - }, - keySize: 4, - ivSize: 4, - _ENC_XFORM_MODE: 1, - _DEC_XFORM_MODE: 2, - _createHelper: function () { - function t(t) { - return "string" == typeof t ? m : w; - } - return function (r) { - return { - encrypt: function encrypt(e, i, n) { - return t(i).encrypt(r, e, i, n); - }, - decrypt: function decrypt(e, i, n) { - return t(i).decrypt(r, e, i, n); - } - }; - }; - }() - }), - u = (i.StreamCipher = f.extend({ - _doFinalize: function _doFinalize() { - var t = this._process(!0); - return t; - }, - blockSize: 1 - }), e.mode = {}), - d = i.BlockCipherMode = n.extend({ - createEncryptor: function createEncryptor(t, r) { - return this.Encryptor.create(t, r); - }, - createDecryptor: function createDecryptor(t, r) { - return this.Decryptor.create(t, r); - }, - init: function init(t, r) { - this._cipher = t, this._iv = r; - } - }), - v = u.CBC = function () { - function t(t, e, i) { - var n = this._iv; - if (n) { - var o = n; - this._iv = r; - } else var o = this._prevBlock; - for (var s = 0; s < i; s++) t[e + s] ^= o[s]; - } - var e = d.extend(); - return e.Encryptor = e.extend({ - processBlock: function processBlock(r, e) { - var i = this._cipher, - n = i.blockSize; - t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n); - } - }), e.Decryptor = e.extend({ - processBlock: function processBlock(r, e) { - var i = this._cipher, - n = i.blockSize, - o = r.slice(e, e + n); - i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o; - } - }), e; - }(), - p = e.pad = {}, - _ = p.Pkcs7 = { - pad: function pad(t, r) { - for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4) s.push(n); - var c = o.create(s, i); - t.concat(c); - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, - y = (i.BlockCipher = f.extend({ - cfg: f.cfg.extend({ - mode: v, - padding: _ - }), - reset: function reset() { - f.reset.call(this); - var t = this.cfg, - r = t.iv, - e = t.mode; - if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor;else { - var i = e.createDecryptor; - this._minBufferSize = 1; - } - this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i); - }, - _doProcessBlock: function _doProcessBlock(t, r) { - this._mode.processBlock(t, r); - }, - _doFinalize: function _doFinalize() { - var t = this.cfg.padding; - if (this._xformMode == this._ENC_XFORM_MODE) { - t.pad(this._data, this.blockSize); - var r = this._process(!0); - } else { - var r = this._process(!0); - t.unpad(r); - } - return r; - }, - blockSize: 4 - }), i.CipherParams = n.extend({ - init: function init(t) { - this.mixIn(t); - }, - toString: function toString(t) { - return (t || this.formatter).stringify(this); - } - })), - g = e.format = {}, - B = g.OpenSSL = { - stringify: function stringify(t) { - var r = t.ciphertext, - e = t.salt; - if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r);else var i = r; - return i.toString(c); - }, - parse: function parse(t) { - var r = c.parse(t), - e = r.words; - if (1398893684 == e[0] && 1701076831 == e[1]) { - var i = o.create(e.slice(2, 4)); - e.splice(0, 4), r.sigBytes -= 16; - } - return y.create({ - ciphertext: r, - salt: i - }); - } - }, - w = i.SerializableCipher = n.extend({ - cfg: n.extend({ - format: B - }), - encrypt: function encrypt(t, r, e, i) { - i = this.cfg.extend(i); - var n = t.createEncryptor(e, i), - o = n.finalize(r), - s = n.cfg; - return y.create({ - ciphertext: o, - key: e, - iv: s.iv, - algorithm: t, - mode: s.mode, - padding: s.padding, - blockSize: t.blockSize, - formatter: i.format - }); - }, - decrypt: function decrypt(t, r, e, i) { - i = this.cfg.extend(i), r = this._parse(r, i.format); - var n = t.createDecryptor(e, i).finalize(r.ciphertext); - return n; - }, - _parse: function _parse(t, r) { - return "string" == typeof t ? r.parse(t, this) : t; - } - }), - k = e.kdf = {}, - S = k.OpenSSL = { - execute: function execute(t, r, e, i) { - i || (i = o.random(8)); - var n = l.create({ - keySize: r + e - }).compute(t, i), - s = o.create(n.words.slice(r), 4 * e); - return n.sigBytes = 4 * r, y.create({ - key: n, - iv: s, - salt: i - }); - } - }, - m = i.PasswordBasedCipher = w.extend({ - cfg: w.cfg.extend({ - kdf: S - }), - encrypt: function encrypt(t, r, e, i) { - i = this.cfg.extend(i); - var n = i.kdf.execute(e, t.keySize, t.ivSize); - i.iv = n.iv; - var o = w.encrypt.call(this, t, r, n.key, i); - return o.mixIn(n), o; - }, - decrypt: function decrypt(t, r, e, i) { - i = this.cfg.extend(i), r = this._parse(r, i.format); - var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); - i.iv = n.iv; - var o = w.decrypt.call(this, t, r, n.key, i); - return o; - } - }); - }(), t.mode.CFB = function () { - function r(t, r, e, i) { - var n = this._iv; - if (n) { - var o = n.slice(0); - this._iv = void 0; - } else var o = this._prevBlock; - i.encryptBlock(o, 0); - for (var s = 0; s < e; s++) t[r + s] ^= o[s]; - } - var e = t.lib.BlockCipherMode.extend(); - return e.Encryptor = e.extend({ - processBlock: function processBlock(t, e) { - var i = this._cipher, - n = i.blockSize; - r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n); - } - }), e.Decryptor = e.extend({ - processBlock: function processBlock(t, e) { - var i = this._cipher, - n = i.blockSize, - o = t.slice(e, e + n); - r.call(this, t, e, n, i), this._prevBlock = o; - } - }), e; - }(), t.mode.ECB = function () { - var r = t.lib.BlockCipherMode.extend(); - return r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - this._cipher.encryptBlock(t, r); - } - }), r.Decryptor = r.extend({ - processBlock: function processBlock(t, r) { - this._cipher.decryptBlock(t, r); - } - }), r; - }(), t.pad.AnsiX923 = { - pad: function pad(t, r) { - var e = t.sigBytes, - i = 4 * r, - n = i - e % i, - o = e + n - 1; - t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n; - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, t.pad.Iso10126 = { - pad: function pad(r, e) { - var i = 4 * e, - n = i - r.sigBytes % i; - r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)); - }, - unpad: function unpad(t) { - var r = 255 & t.words[t.sigBytes - 1 >>> 2]; - t.sigBytes -= r; - } - }, t.pad.Iso97971 = { - pad: function pad(r, e) { - r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e); - }, - unpad: function unpad(r) { - t.pad.ZeroPadding.unpad(r), r.sigBytes--; - } - }, t.mode.OFB = function () { - var r = t.lib.BlockCipherMode.extend(), - e = r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - var e = this._cipher, - i = e.blockSize, - n = this._iv, - o = this._keystream; - n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); - for (var s = 0; s < i; s++) t[r + s] ^= o[s]; - } - }); - return r.Decryptor = e, r; - }(), t.pad.NoPadding = { - pad: function pad() {}, - unpad: function unpad() {} - }, function (r) { - var e = t, - i = e.lib, - n = i.CipherParams, - o = e.enc, - s = o.Hex, - a = e.format; - a.Hex = { - stringify: function stringify(t) { - return t.ciphertext.toString(s); - }, - parse: function parse(t) { - var r = s.parse(t); - return n.create({ - ciphertext: r - }); - } - }; - }(), function () { - var r = t, - e = r.lib, - i = e.BlockCipher, - n = r.algo, - o = [], - s = [], - a = [], - c = [], - h = [], - l = [], - f = [], - u = [], - d = [], - v = []; - !function () { - for (var t = [], r = 0; r < 256; r++) r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; - for (var e = 0, i = 0, r = 0; r < 256; r++) { - var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; - n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; - var p = t[e], - _ = t[p], - y = t[_], - g = 257 * t[n] ^ 16843008 * n; - a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; - var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; - f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1; - } - }(); - var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], - _ = n.AES = i.extend({ - _doReset: function _doReset() { - if (!this._nRounds || this._keyPriorReset !== this._key) { - for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++) if (a < e) s[a] = r[a];else { - var c = s[a - 1]; - a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c; - } - for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { - var a = n - l; - if (l % 4) var c = s[a];else var c = s[a - 4]; - l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]]; - } - } - }, - encryptBlock: function encryptBlock(t, r) { - this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o); - }, - decryptBlock: function decryptBlock(t, r) { - var e = t[r + 1]; - t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); - var e = t[r + 1]; - t[r + 1] = t[r + 3], t[r + 3] = e; - }, - _doCryptBlock: function _doCryptBlock(t, r, e, i, n, o, s, a) { - for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { - var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], - _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], - y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], - g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; - h = p, l = _, f = y, u = g; - } - var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], - _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], - y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], - g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; - t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g; - }, - keySize: 8 - }); - r.AES = i._createHelper(_); - }(), function () { - function r(t, r) { - var e = (this._lBlock >>> t ^ this._rBlock) & r; - this._rBlock ^= e, this._lBlock ^= e << t; - } - function e(t, r) { - var e = (this._rBlock >>> t ^ this._lBlock) & r; - this._lBlock ^= e, this._rBlock ^= e << t; - } - var i = t, - n = i.lib, - o = n.WordArray, - s = n.BlockCipher, - a = i.algo, - c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], - h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], - l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], - f = [{ - 0: 8421888, - 268435456: 32768, - 536870912: 8421378, - 805306368: 2, - 1073741824: 512, - 1342177280: 8421890, - 1610612736: 8389122, - 1879048192: 8388608, - 2147483648: 514, - 2415919104: 8389120, - 2684354560: 33280, - 2952790016: 8421376, - 3221225472: 32770, - 3489660928: 8388610, - 3758096384: 0, - 4026531840: 33282, - 134217728: 0, - 402653184: 8421890, - 671088640: 33282, - 939524096: 32768, - 1207959552: 8421888, - 1476395008: 512, - 1744830464: 8421378, - 2013265920: 2, - 2281701376: 8389120, - 2550136832: 33280, - 2818572288: 8421376, - 3087007744: 8389122, - 3355443200: 8388610, - 3623878656: 32770, - 3892314112: 514, - 4160749568: 8388608, - 1: 32768, - 268435457: 2, - 536870913: 8421888, - 805306369: 8388608, - 1073741825: 8421378, - 1342177281: 33280, - 1610612737: 512, - 1879048193: 8389122, - 2147483649: 8421890, - 2415919105: 8421376, - 2684354561: 8388610, - 2952790017: 33282, - 3221225473: 514, - 3489660929: 8389120, - 3758096385: 32770, - 4026531841: 0, - 134217729: 8421890, - 402653185: 8421376, - 671088641: 8388608, - 939524097: 512, - 1207959553: 32768, - 1476395009: 8388610, - 1744830465: 2, - 2013265921: 33282, - 2281701377: 32770, - 2550136833: 8389122, - 2818572289: 514, - 3087007745: 8421888, - 3355443201: 8389120, - 3623878657: 0, - 3892314113: 33280, - 4160749569: 8421378 - }, { - 0: 1074282512, - 16777216: 16384, - 33554432: 524288, - 50331648: 1074266128, - 67108864: 1073741840, - 83886080: 1074282496, - 100663296: 1073758208, - 117440512: 16, - 134217728: 540672, - 150994944: 1073758224, - 167772160: 1073741824, - 184549376: 540688, - 201326592: 524304, - 218103808: 0, - 234881024: 16400, - 251658240: 1074266112, - 8388608: 1073758208, - 25165824: 540688, - 41943040: 16, - 58720256: 1073758224, - 75497472: 1074282512, - 92274688: 1073741824, - 109051904: 524288, - 125829120: 1074266128, - 142606336: 524304, - 159383552: 0, - 176160768: 16384, - 192937984: 1074266112, - 209715200: 1073741840, - 226492416: 540672, - 243269632: 1074282496, - 260046848: 16400, - 268435456: 0, - 285212672: 1074266128, - 301989888: 1073758224, - 318767104: 1074282496, - 335544320: 1074266112, - 352321536: 16, - 369098752: 540688, - 385875968: 16384, - 402653184: 16400, - 419430400: 524288, - 436207616: 524304, - 452984832: 1073741840, - 469762048: 540672, - 486539264: 1073758208, - 503316480: 1073741824, - 520093696: 1074282512, - 276824064: 540688, - 293601280: 524288, - 310378496: 1074266112, - 327155712: 16384, - 343932928: 1073758208, - 360710144: 1074282512, - 377487360: 16, - 394264576: 1073741824, - 411041792: 1074282496, - 427819008: 1073741840, - 444596224: 1073758224, - 461373440: 524304, - 478150656: 0, - 494927872: 16400, - 511705088: 1074266128, - 528482304: 540672 - }, { - 0: 260, - 1048576: 0, - 2097152: 67109120, - 3145728: 65796, - 4194304: 65540, - 5242880: 67108868, - 6291456: 67174660, - 7340032: 67174400, - 8388608: 67108864, - 9437184: 67174656, - 10485760: 65792, - 11534336: 67174404, - 12582912: 67109124, - 13631488: 65536, - 14680064: 4, - 15728640: 256, - 524288: 67174656, - 1572864: 67174404, - 2621440: 0, - 3670016: 67109120, - 4718592: 67108868, - 5767168: 65536, - 6815744: 65540, - 7864320: 260, - 8912896: 4, - 9961472: 256, - 11010048: 67174400, - 12058624: 65796, - 13107200: 65792, - 14155776: 67109124, - 15204352: 67174660, - 16252928: 67108864, - 16777216: 67174656, - 17825792: 65540, - 18874368: 65536, - 19922944: 67109120, - 20971520: 256, - 22020096: 67174660, - 23068672: 67108868, - 24117248: 0, - 25165824: 67109124, - 26214400: 67108864, - 27262976: 4, - 28311552: 65792, - 29360128: 67174400, - 30408704: 260, - 31457280: 65796, - 32505856: 67174404, - 17301504: 67108864, - 18350080: 260, - 19398656: 67174656, - 20447232: 0, - 21495808: 65540, - 22544384: 67109120, - 23592960: 256, - 24641536: 67174404, - 25690112: 65536, - 26738688: 67174660, - 27787264: 65796, - 28835840: 67108868, - 29884416: 67109124, - 30932992: 67174400, - 31981568: 4, - 33030144: 65792 - }, { - 0: 2151682048, - 65536: 2147487808, - 131072: 4198464, - 196608: 2151677952, - 262144: 0, - 327680: 4198400, - 393216: 2147483712, - 458752: 4194368, - 524288: 2147483648, - 589824: 4194304, - 655360: 64, - 720896: 2147487744, - 786432: 2151678016, - 851968: 4160, - 917504: 4096, - 983040: 2151682112, - 32768: 2147487808, - 98304: 64, - 163840: 2151678016, - 229376: 2147487744, - 294912: 4198400, - 360448: 2151682112, - 425984: 0, - 491520: 2151677952, - 557056: 4096, - 622592: 2151682048, - 688128: 4194304, - 753664: 4160, - 819200: 2147483648, - 884736: 4194368, - 950272: 4198464, - 1015808: 2147483712, - 1048576: 4194368, - 1114112: 4198400, - 1179648: 2147483712, - 1245184: 0, - 1310720: 4160, - 1376256: 2151678016, - 1441792: 2151682048, - 1507328: 2147487808, - 1572864: 2151682112, - 1638400: 2147483648, - 1703936: 2151677952, - 1769472: 4198464, - 1835008: 2147487744, - 1900544: 4194304, - 1966080: 64, - 2031616: 4096, - 1081344: 2151677952, - 1146880: 2151682112, - 1212416: 0, - 1277952: 4198400, - 1343488: 4194368, - 1409024: 2147483648, - 1474560: 2147487808, - 1540096: 64, - 1605632: 2147483712, - 1671168: 4096, - 1736704: 2147487744, - 1802240: 2151678016, - 1867776: 4160, - 1933312: 2151682048, - 1998848: 4194304, - 2064384: 4198464 - }, { - 0: 128, - 4096: 17039360, - 8192: 262144, - 12288: 536870912, - 16384: 537133184, - 20480: 16777344, - 24576: 553648256, - 28672: 262272, - 32768: 16777216, - 36864: 537133056, - 40960: 536871040, - 45056: 553910400, - 49152: 553910272, - 53248: 0, - 57344: 17039488, - 61440: 553648128, - 2048: 17039488, - 6144: 553648256, - 10240: 128, - 14336: 17039360, - 18432: 262144, - 22528: 537133184, - 26624: 553910272, - 30720: 536870912, - 34816: 537133056, - 38912: 0, - 43008: 553910400, - 47104: 16777344, - 51200: 536871040, - 55296: 553648128, - 59392: 16777216, - 63488: 262272, - 65536: 262144, - 69632: 128, - 73728: 536870912, - 77824: 553648256, - 81920: 16777344, - 86016: 553910272, - 90112: 537133184, - 94208: 16777216, - 98304: 553910400, - 102400: 553648128, - 106496: 17039360, - 110592: 537133056, - 114688: 262272, - 118784: 536871040, - 122880: 0, - 126976: 17039488, - 67584: 553648256, - 71680: 16777216, - 75776: 17039360, - 79872: 537133184, - 83968: 536870912, - 88064: 17039488, - 92160: 128, - 96256: 553910272, - 100352: 262272, - 104448: 553910400, - 108544: 0, - 112640: 553648128, - 116736: 16777344, - 120832: 262144, - 124928: 537133056, - 129024: 536871040 - }, { - 0: 268435464, - 256: 8192, - 512: 270532608, - 768: 270540808, - 1024: 268443648, - 1280: 2097152, - 1536: 2097160, - 1792: 268435456, - 2048: 0, - 2304: 268443656, - 2560: 2105344, - 2816: 8, - 3072: 270532616, - 3328: 2105352, - 3584: 8200, - 3840: 270540800, - 128: 270532608, - 384: 270540808, - 640: 8, - 896: 2097152, - 1152: 2105352, - 1408: 268435464, - 1664: 268443648, - 1920: 8200, - 2176: 2097160, - 2432: 8192, - 2688: 268443656, - 2944: 270532616, - 3200: 0, - 3456: 270540800, - 3712: 2105344, - 3968: 268435456, - 4096: 268443648, - 4352: 270532616, - 4608: 270540808, - 4864: 8200, - 5120: 2097152, - 5376: 268435456, - 5632: 268435464, - 5888: 2105344, - 6144: 2105352, - 6400: 0, - 6656: 8, - 6912: 270532608, - 7168: 8192, - 7424: 268443656, - 7680: 270540800, - 7936: 2097160, - 4224: 8, - 4480: 2105344, - 4736: 2097152, - 4992: 268435464, - 5248: 268443648, - 5504: 8200, - 5760: 270540808, - 6016: 270532608, - 6272: 270540800, - 6528: 270532616, - 6784: 8192, - 7040: 2105352, - 7296: 2097160, - 7552: 0, - 7808: 268435456, - 8064: 268443656 - }, { - 0: 1048576, - 16: 33555457, - 32: 1024, - 48: 1049601, - 64: 34604033, - 80: 0, - 96: 1, - 112: 34603009, - 128: 33555456, - 144: 1048577, - 160: 33554433, - 176: 34604032, - 192: 34603008, - 208: 1025, - 224: 1049600, - 240: 33554432, - 8: 34603009, - 24: 0, - 40: 33555457, - 56: 34604032, - 72: 1048576, - 88: 33554433, - 104: 33554432, - 120: 1025, - 136: 1049601, - 152: 33555456, - 168: 34603008, - 184: 1048577, - 200: 1024, - 216: 34604033, - 232: 1, - 248: 1049600, - 256: 33554432, - 272: 1048576, - 288: 33555457, - 304: 34603009, - 320: 1048577, - 336: 33555456, - 352: 34604032, - 368: 1049601, - 384: 1025, - 400: 34604033, - 416: 1049600, - 432: 1, - 448: 0, - 464: 34603008, - 480: 33554433, - 496: 1024, - 264: 1049600, - 280: 33555457, - 296: 34603009, - 312: 1, - 328: 33554432, - 344: 1048576, - 360: 1025, - 376: 34604032, - 392: 33554433, - 408: 34603008, - 424: 0, - 440: 34604033, - 456: 1049601, - 472: 1024, - 488: 33555456, - 504: 1048577 - }, { - 0: 134219808, - 1: 131072, - 2: 134217728, - 3: 32, - 4: 131104, - 5: 134350880, - 6: 134350848, - 7: 2048, - 8: 134348800, - 9: 134219776, - 10: 133120, - 11: 134348832, - 12: 2080, - 13: 0, - 14: 134217760, - 15: 133152, - 2147483648: 2048, - 2147483649: 134350880, - 2147483650: 134219808, - 2147483651: 134217728, - 2147483652: 134348800, - 2147483653: 133120, - 2147483654: 133152, - 2147483655: 32, - 2147483656: 134217760, - 2147483657: 2080, - 2147483658: 131104, - 2147483659: 134350848, - 2147483660: 0, - 2147483661: 134348832, - 2147483662: 134219776, - 2147483663: 131072, - 16: 133152, - 17: 134350848, - 18: 32, - 19: 2048, - 20: 134219776, - 21: 134217760, - 22: 134348832, - 23: 131072, - 24: 0, - 25: 131104, - 26: 134348800, - 27: 134219808, - 28: 134350880, - 29: 133120, - 30: 2080, - 31: 134217728, - 2147483664: 131072, - 2147483665: 2048, - 2147483666: 134348832, - 2147483667: 133152, - 2147483668: 32, - 2147483669: 134348800, - 2147483670: 134217728, - 2147483671: 134219808, - 2147483672: 134350880, - 2147483673: 134217760, - 2147483674: 134219776, - 2147483675: 0, - 2147483676: 133120, - 2147483677: 2080, - 2147483678: 131104, - 2147483679: 134350848 - }], - u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], - d = a.DES = s.extend({ - _doReset: function _doReset() { - for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { - var n = c[i] - 1; - e[i] = r[n >>> 5] >>> 31 - n % 32 & 1; - } - for (var o = this._subKeys = [], s = 0; s < 16; s++) { - for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++) a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; - a[0] = a[0] << 1 | a[0] >>> 31; - for (var i = 1; i < 7; i++) a[i] = a[i] >>> 4 * (i - 1) + 3; - a[7] = a[7] << 5 | a[7] >>> 27; - } - for (var u = this._invSubKeys = [], i = 0; i < 16; i++) u[i] = o[15 - i]; - }, - encryptBlock: function encryptBlock(t, r) { - this._doCryptBlock(t, r, this._subKeys); - }, - decryptBlock: function decryptBlock(t, r) { - this._doCryptBlock(t, r, this._invSubKeys); - }, - _doCryptBlock: function _doCryptBlock(t, i, n) { - this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); - for (var o = 0; o < 16; o++) { - for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++) h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; - this._lBlock = c, this._rBlock = a ^ h; - } - var d = this._lBlock; - this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock; - }, - keySize: 2, - ivSize: 2, - blockSize: 2 - }); - i.DES = s._createHelper(d); - var v = a.TripleDES = s.extend({ - _doReset: function _doReset() { - var t = this._key, - r = t.words; - this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))); - }, - encryptBlock: function encryptBlock(t, r) { - this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r); - }, - decryptBlock: function decryptBlock(t, r) { - this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r); - }, - keySize: 6, - ivSize: 2, - blockSize: 2 - }); - i.TripleDES = s._createHelper(v); - }(), function () { - function r() { - for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { - r = (r + 1) % 256, e = (e + t[r]) % 256; - var o = t[r]; - t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n; - } - return this._i = r, this._j = e, i; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = o.RC4 = n.extend({ - _doReset: function _doReset() { - for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) i[n] = n; - for (var n = 0, o = 0; n < 256; n++) { - var s = n % e, - a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; - o = (o + i[n] + a) % 256; - var c = i[n]; - i[n] = i[o], i[o] = c; - } - this._i = this._j = 0; - }, - _doProcessBlock: function _doProcessBlock(t, e) { - t[e] ^= r.call(this); - }, - keySize: 8, - ivSize: 0 - }); - e.RC4 = n._createHelper(s); - var a = o.RC4Drop = s.extend({ - cfg: s.cfg.extend({ - drop: 192 - }), - _doReset: function _doReset() { - s._doReset.call(this); - for (var t = this.cfg.drop; t > 0; t--) r.call(this); - } - }); - e.RC4Drop = n._createHelper(a); - }(), t.mode.CTRGladman = function () { - function r(t) { - if (255 === (t >> 24 & 255)) { - var r = t >> 16 & 255, - e = t >> 8 & 255, - i = 255 & t; - 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i; - } else t += 1 << 24; - return t; - } - function e(t) { - return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t; - } - var i = t.lib.BlockCipherMode.extend(), - n = i.Encryptor = i.extend({ - processBlock: function processBlock(t, r) { - var i = this._cipher, - n = i.blockSize, - o = this._iv, - s = this._counter; - o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); - var a = s.slice(0); - i.encryptBlock(a, 0); - for (var c = 0; c < n; c++) t[r + c] ^= a[c]; - } - }); - return i.Decryptor = n, i; - }(), function () { - function r() { - for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; - r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; - for (var e = 0; e < 8; e++) { - var i = t[e] + r[e], - n = 65535 & i, - o = i >>> 16, - s = ((n * n >>> 17) + n * o >>> 15) + o * o, - h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); - c[e] = s ^ h; - } - t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = [], - a = [], - c = [], - h = o.Rabbit = n.extend({ - _doReset: function _doReset() { - for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++) t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); - var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], - o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; - this._b = 0; - for (var i = 0; i < 4; i++) r.call(this); - for (var i = 0; i < 8; i++) o[i] ^= n[i + 4 & 7]; - if (e) { - var s = e.words, - a = s[0], - c = s[1], - h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), - l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), - f = h >>> 16 | 4294901760 & l, - u = l << 16 | 65535 & h; - o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; - for (var i = 0; i < 4; i++) r.call(this); - } - }, - _doProcessBlock: function _doProcessBlock(t, e) { - var i = this._X; - r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; - for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; - }, - blockSize: 4, - ivSize: 2 - }); - e.Rabbit = n._createHelper(h); - }(), t.mode.CTR = function () { - var r = t.lib.BlockCipherMode.extend(), - e = r.Encryptor = r.extend({ - processBlock: function processBlock(t, r) { - var e = this._cipher, - i = e.blockSize, - n = this._iv, - o = this._counter; - n && (o = this._counter = n.slice(0), this._iv = void 0); - var s = o.slice(0); - e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; - for (var a = 0; a < i; a++) t[r + a] ^= s[a]; - } - }); - return r.Decryptor = e, r; - }(), function () { - function r() { - for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; - r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; - for (var e = 0; e < 8; e++) { - var i = t[e] + r[e], - n = 65535 & i, - o = i >>> 16, - s = ((n * n >>> 17) + n * o >>> 15) + o * o, - h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); - c[e] = s ^ h; - } - t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; - } - var e = t, - i = e.lib, - n = i.StreamCipher, - o = e.algo, - s = [], - a = [], - c = [], - h = o.RabbitLegacy = n.extend({ - _doReset: function _doReset() { - var t = this._key.words, - e = this.cfg.iv, - i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], - n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; - this._b = 0; - for (var o = 0; o < 4; o++) r.call(this); - for (var o = 0; o < 8; o++) n[o] ^= i[o + 4 & 7]; - if (e) { - var s = e.words, - a = s[0], - c = s[1], - h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), - l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), - f = h >>> 16 | 4294901760 & l, - u = l << 16 | 65535 & h; - n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; - for (var o = 0; o < 4; o++) r.call(this); - } - }, - _doProcessBlock: function _doProcessBlock(t, e) { - var i = this._X; - r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; - for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; - }, - blockSize: 4, - ivSize: 2 - }); - e.RabbitLegacy = n._createHelper(h); - }(), t.pad.ZeroPadding = { - pad: function pad(t, r) { - var e = 4 * r; - t.clamp(), t.sigBytes += e - (t.sigBytes % e || e); - }, - unpad: function unpad(t) { - for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);) e--; - t.sigBytes = e + 1; - } - }, t; -}); - + if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict"; +cc._RF.push(module, 'e64e1qXyT9CV6s0gDQdj/ed', 'crypto-js.min'); +// Script/module/Crypto/crypto-js.min.js + +"use strict"; + +!function (t, r) { + "object" == typeof exports ? module.exports = exports = r() : "function" == typeof define && define.amd ? define([], r) : t.CryptoJS = r(); +}(void 0, function () { + var t = t || function (t, r) { + var e = Object.create || function () { + function t() {} + return function (r) { + var e; + return t.prototype = r, e = new t(), t.prototype = null, e; + }; + }(), + i = {}, + n = i.lib = {}, + o = n.Base = function () { + return { + extend: function extend(t) { + var r = e(this); + return t && r.mixIn(t), r.hasOwnProperty("init") && this.init !== r.init || (r.init = function () { + r.$super.init.apply(this, arguments); + }), r.init.prototype = r, r.$super = this, r; + }, + create: function create() { + var t = this.extend(); + return t.init.apply(t, arguments), t; + }, + init: function init() {}, + mixIn: function mixIn(t) { + for (var r in t) t.hasOwnProperty(r) && (this[r] = t[r]); + t.hasOwnProperty("toString") && (this.toString = t.toString); + }, + clone: function clone() { + return this.init.prototype.extend(this); + } + }; + }(), + s = n.WordArray = o.extend({ + init: function init(t, e) { + t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 4 * t.length; + }, + toString: function toString(t) { + return (t || c).stringify(this); + }, + concat: function concat(t) { + var r = this.words, + e = t.words, + i = this.sigBytes, + n = t.sigBytes; + if (this.clamp(), i % 4) for (var o = 0; o < n; o++) { + var s = e[o >>> 2] >>> 24 - o % 4 * 8 & 255; + r[i + o >>> 2] |= s << 24 - (i + o) % 4 * 8; + } else for (var o = 0; o < n; o += 4) r[i + o >>> 2] = e[o >>> 2]; + return this.sigBytes += n, this; + }, + clamp: function clamp() { + var r = this.words, + e = this.sigBytes; + r[e >>> 2] &= 4294967295 << 32 - e % 4 * 8, r.length = t.ceil(e / 4); + }, + clone: function clone() { + var t = o.clone.call(this); + return t.words = this.words.slice(0), t; + }, + random: function random(r) { + for (var e, i = [], n = function n(r) { + var r = r, + e = 987654321, + i = 4294967295; + return function () { + e = 36969 * (65535 & e) + (e >> 16) & i, r = 18e3 * (65535 & r) + (r >> 16) & i; + var n = (e << 16) + r & i; + return n /= 4294967296, n += .5, n * (t.random() > .5 ? 1 : -1); + }; + }, o = 0; o < r; o += 4) { + var a = n(4294967296 * (e || t.random())); + e = 987654071 * a(), i.push(4294967296 * a() | 0); + } + return new s.init(i, r); + } + }), + a = i.enc = {}, + c = a.Hex = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { + var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; + i.push((o >>> 4).toString(16)), i.push((15 & o).toString(16)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i += 2) e[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4; + return new s.init(e, r / 2); + } + }, + h = a.Latin1 = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n++) { + var o = r[n >>> 2] >>> 24 - n % 4 * 8 & 255; + i.push(String.fromCharCode(o)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8; + return new s.init(e, r); + } + }, + l = a.Utf8 = { + stringify: function stringify(t) { + try { + return decodeURIComponent(escape(h.stringify(t))); + } catch (t) { + throw new Error("Malformed UTF-8 data"); + } + }, + parse: function parse(t) { + return h.parse(unescape(encodeURIComponent(t))); + } + }, + f = n.BufferedBlockAlgorithm = o.extend({ + reset: function reset() { + this._data = new s.init(), this._nDataBytes = 0; + }, + _append: function _append(t) { + "string" == typeof t && (t = l.parse(t)), this._data.concat(t), this._nDataBytes += t.sigBytes; + }, + _process: function _process(r) { + var e = this._data, + i = e.words, + n = e.sigBytes, + o = this.blockSize, + a = 4 * o, + c = n / a; + c = r ? t.ceil(c) : t.max((0 | c) - this._minBufferSize, 0); + var h = c * o, + l = t.min(4 * h, n); + if (h) { + for (var f = 0; f < h; f += o) this._doProcessBlock(i, f); + var u = i.splice(0, h); + e.sigBytes -= l; + } + return new s.init(u, l); + }, + clone: function clone() { + var t = o.clone.call(this); + return t._data = this._data.clone(), t; + }, + _minBufferSize: 0 + }), + u = (n.Hasher = f.extend({ + cfg: o.extend(), + init: function init(t) { + this.cfg = this.cfg.extend(t), this.reset(); + }, + reset: function reset() { + f.reset.call(this), this._doReset(); + }, + update: function update(t) { + return this._append(t), this._process(), this; + }, + finalize: function finalize(t) { + t && this._append(t); + var r = this._doFinalize(); + return r; + }, + blockSize: 16, + _createHelper: function _createHelper(t) { + return function (r, e) { + return new t.init(e).finalize(r); + }; + }, + _createHmacHelper: function _createHmacHelper(t) { + return function (r, e) { + return new u.HMAC.init(t, e).finalize(r); + }; + } + }), i.algo = {}); + return i; + }(Math); + return function () { + function r(t, r, e) { + for (var i = [], o = 0, s = 0; s < r; s++) if (s % 4) { + var a = e[t.charCodeAt(s - 1)] << s % 4 * 2, + c = e[t.charCodeAt(s)] >>> 6 - s % 4 * 2; + i[o >>> 2] |= (a | c) << 24 - o % 4 * 8, o++; + } + return n.create(i, o); + } + var e = t, + i = e.lib, + n = i.WordArray, + o = e.enc; + o.Base64 = { + stringify: function stringify(t) { + var r = t.words, + e = t.sigBytes, + i = this._map; + t.clamp(); + for (var n = [], o = 0; o < e; o += 3) for (var s = r[o >>> 2] >>> 24 - o % 4 * 8 & 255, a = r[o + 1 >>> 2] >>> 24 - (o + 1) % 4 * 8 & 255, c = r[o + 2 >>> 2] >>> 24 - (o + 2) % 4 * 8 & 255, h = s << 16 | a << 8 | c, l = 0; l < 4 && o + .75 * l < e; l++) n.push(i.charAt(h >>> 6 * (3 - l) & 63)); + var f = i.charAt(64); + if (f) for (; n.length % 4;) n.push(f); + return n.join(""); + }, + parse: function parse(t) { + var e = t.length, + i = this._map, + n = this._reverseMap; + if (!n) { + n = this._reverseMap = []; + for (var o = 0; o < i.length; o++) n[i.charCodeAt(o)] = o; + } + var s = i.charAt(64); + if (s) { + var a = t.indexOf(s); + a !== -1 && (e = a); + } + return r(t, e, n); + }, + _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" + }; + }(), function (r) { + function e(t, r, e, i, n, o, s) { + var a = t + (r & e | ~r & i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function i(t, r, e, i, n, o, s) { + var a = t + (r & i | e & ~i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function n(t, r, e, i, n, o, s) { + var a = t + (r ^ e ^ i) + n + s; + return (a << o | a >>> 32 - o) + r; + } + function o(t, r, e, i, n, o, s) { + var a = t + (e ^ (r | ~i)) + n + s; + return (a << o | a >>> 32 - o) + r; + } + var s = t, + a = s.lib, + c = a.WordArray, + h = a.Hasher, + l = s.algo, + f = []; + !function () { + for (var t = 0; t < 64; t++) f[t] = 4294967296 * r.abs(r.sin(t + 1)) | 0; + }(); + var u = l.MD5 = h.extend({ + _doReset: function _doReset() { + this._hash = new c.init([1732584193, 4023233417, 2562383102, 271733878]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var s = 0; s < 16; s++) { + var a = r + s, + c = t[a]; + t[a] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8); + } + var h = this._hash.words, + l = t[r + 0], + u = t[r + 1], + d = t[r + 2], + v = t[r + 3], + p = t[r + 4], + _ = t[r + 5], + y = t[r + 6], + g = t[r + 7], + B = t[r + 8], + w = t[r + 9], + k = t[r + 10], + S = t[r + 11], + m = t[r + 12], + x = t[r + 13], + b = t[r + 14], + H = t[r + 15], + z = h[0], + A = h[1], + C = h[2], + D = h[3]; + z = e(z, A, C, D, l, 7, f[0]), D = e(D, z, A, C, u, 12, f[1]), C = e(C, D, z, A, d, 17, f[2]), A = e(A, C, D, z, v, 22, f[3]), z = e(z, A, C, D, p, 7, f[4]), D = e(D, z, A, C, _, 12, f[5]), C = e(C, D, z, A, y, 17, f[6]), A = e(A, C, D, z, g, 22, f[7]), z = e(z, A, C, D, B, 7, f[8]), D = e(D, z, A, C, w, 12, f[9]), C = e(C, D, z, A, k, 17, f[10]), A = e(A, C, D, z, S, 22, f[11]), z = e(z, A, C, D, m, 7, f[12]), D = e(D, z, A, C, x, 12, f[13]), C = e(C, D, z, A, b, 17, f[14]), A = e(A, C, D, z, H, 22, f[15]), z = i(z, A, C, D, u, 5, f[16]), D = i(D, z, A, C, y, 9, f[17]), C = i(C, D, z, A, S, 14, f[18]), A = i(A, C, D, z, l, 20, f[19]), z = i(z, A, C, D, _, 5, f[20]), D = i(D, z, A, C, k, 9, f[21]), C = i(C, D, z, A, H, 14, f[22]), A = i(A, C, D, z, p, 20, f[23]), z = i(z, A, C, D, w, 5, f[24]), D = i(D, z, A, C, b, 9, f[25]), C = i(C, D, z, A, v, 14, f[26]), A = i(A, C, D, z, B, 20, f[27]), z = i(z, A, C, D, x, 5, f[28]), D = i(D, z, A, C, d, 9, f[29]), C = i(C, D, z, A, g, 14, f[30]), A = i(A, C, D, z, m, 20, f[31]), z = n(z, A, C, D, _, 4, f[32]), D = n(D, z, A, C, B, 11, f[33]), C = n(C, D, z, A, S, 16, f[34]), A = n(A, C, D, z, b, 23, f[35]), z = n(z, A, C, D, u, 4, f[36]), D = n(D, z, A, C, p, 11, f[37]), C = n(C, D, z, A, g, 16, f[38]), A = n(A, C, D, z, k, 23, f[39]), z = n(z, A, C, D, x, 4, f[40]), D = n(D, z, A, C, l, 11, f[41]), C = n(C, D, z, A, v, 16, f[42]), A = n(A, C, D, z, y, 23, f[43]), z = n(z, A, C, D, w, 4, f[44]), D = n(D, z, A, C, m, 11, f[45]), C = n(C, D, z, A, H, 16, f[46]), A = n(A, C, D, z, d, 23, f[47]), z = o(z, A, C, D, l, 6, f[48]), D = o(D, z, A, C, g, 10, f[49]), C = o(C, D, z, A, b, 15, f[50]), A = o(A, C, D, z, _, 21, f[51]), z = o(z, A, C, D, m, 6, f[52]), D = o(D, z, A, C, v, 10, f[53]), C = o(C, D, z, A, k, 15, f[54]), A = o(A, C, D, z, u, 21, f[55]), z = o(z, A, C, D, B, 6, f[56]), D = o(D, z, A, C, H, 10, f[57]), C = o(C, D, z, A, y, 15, f[58]), A = o(A, C, D, z, x, 21, f[59]), z = o(z, A, C, D, p, 6, f[60]), D = o(D, z, A, C, S, 10, f[61]), C = o(C, D, z, A, d, 15, f[62]), A = o(A, C, D, z, w, 21, f[63]), h[0] = h[0] + z | 0, h[1] = h[1] + A | 0, h[2] = h[2] + C | 0, h[3] = h[3] + D | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + e[n >>> 5] |= 128 << 24 - n % 32; + var o = r.floor(i / 4294967296), + s = i; + e[(n + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), e[(n + 64 >>> 9 << 4) + 14] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8), t.sigBytes = 4 * (e.length + 1), this._process(); + for (var a = this._hash, c = a.words, h = 0; h < 4; h++) { + var l = c[h]; + c[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); + } + return a; + }, + clone: function clone() { + var t = h.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + s.MD5 = h._createHelper(u), s.HmacMD5 = h._createHmacHelper(u); + }(Math), function () { + var r = t, + e = r.lib, + i = e.WordArray, + n = e.Hasher, + o = r.algo, + s = [], + a = o.SHA1 = n.extend({ + _doReset: function _doReset() { + this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], a = e[3], c = e[4], h = 0; h < 80; h++) { + if (h < 16) s[h] = 0 | t[r + h];else { + var l = s[h - 3] ^ s[h - 8] ^ s[h - 14] ^ s[h - 16]; + s[h] = l << 1 | l >>> 31; + } + var f = (i << 5 | i >>> 27) + c + s[h]; + f += h < 20 ? (n & o | ~n & a) + 1518500249 : h < 40 ? (n ^ o ^ a) + 1859775393 : h < 60 ? (n & o | n & a | o & a) - 1894007588 : (n ^ o ^ a) - 899497514, c = a, a = o, o = n << 30 | n >>> 2, n = i, i = f; + } + e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + a | 0, e[4] = e[4] + c | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + return r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = Math.floor(e / 4294967296), r[(i + 64 >>> 9 << 4) + 15] = e, t.sigBytes = 4 * r.length, this._process(), this._hash; + }, + clone: function clone() { + var t = n.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + r.SHA1 = n._createHelper(a), r.HmacSHA1 = n._createHmacHelper(a); + }(), function (r) { + var e = t, + i = e.lib, + n = i.WordArray, + o = i.Hasher, + s = e.algo, + a = [], + c = []; + !function () { + function t(t) { + for (var e = r.sqrt(t), i = 2; i <= e; i++) if (!(t % i)) return !1; + return !0; + } + function e(t) { + return 4294967296 * (t - (0 | t)) | 0; + } + for (var i = 2, n = 0; n < 64;) t(i) && (n < 8 && (a[n] = e(r.pow(i, .5))), c[n] = e(r.pow(i, 1 / 3)), n++), i++; + }(); + var h = [], + l = s.SHA256 = o.extend({ + _doReset: function _doReset() { + this._hash = new n.init(a.slice(0)); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], l = e[5], f = e[6], u = e[7], d = 0; d < 64; d++) { + if (d < 16) h[d] = 0 | t[r + d];else { + var v = h[d - 15], + p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3, + _ = h[d - 2], + y = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10; + h[d] = p + h[d - 7] + y + h[d - 16]; + } + var g = a & l ^ ~a & f, + B = i & n ^ i & o ^ n & o, + w = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22), + k = (a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25), + S = u + k + g + c[d] + h[d], + m = w + B; + u = f, f = l, l = a, a = s + S | 0, s = o, o = n, n = i, i = S + m | 0; + } + e[0] = e[0] + i | 0, e[1] = e[1] + n | 0, e[2] = e[2] + o | 0, e[3] = e[3] + s | 0, e[4] = e[4] + a | 0, e[5] = e[5] + l | 0, e[6] = e[6] + f | 0, e[7] = e[7] + u | 0; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = 8 * this._nDataBytes, + n = 8 * t.sigBytes; + return e[n >>> 5] |= 128 << 24 - n % 32, e[(n + 64 >>> 9 << 4) + 14] = r.floor(i / 4294967296), e[(n + 64 >>> 9 << 4) + 15] = i, t.sigBytes = 4 * e.length, this._process(), this._hash; + }, + clone: function clone() { + var t = o.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + e.SHA256 = o._createHelper(l), e.HmacSHA256 = o._createHmacHelper(l); + }(Math), function () { + function r(t) { + return t << 8 & 4278255360 | t >>> 8 & 16711935; + } + var e = t, + i = e.lib, + n = i.WordArray, + o = e.enc; + o.Utf16 = o.Utf16BE = { + stringify: function stringify(t) { + for (var r = t.words, e = t.sigBytes, i = [], n = 0; n < e; n += 2) { + var o = r[n >>> 2] >>> 16 - n % 4 * 8 & 65535; + i.push(String.fromCharCode(o)); + } + return i.join(""); + }, + parse: function parse(t) { + for (var r = t.length, e = [], i = 0; i < r; i++) e[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16; + return n.create(e, 2 * r); + } + }; + o.Utf16LE = { + stringify: function stringify(t) { + for (var e = t.words, i = t.sigBytes, n = [], o = 0; o < i; o += 2) { + var s = r(e[o >>> 2] >>> 16 - o % 4 * 8 & 65535); + n.push(String.fromCharCode(s)); + } + return n.join(""); + }, + parse: function parse(t) { + for (var e = t.length, i = [], o = 0; o < e; o++) i[o >>> 1] |= r(t.charCodeAt(o) << 16 - o % 2 * 16); + return n.create(i, 2 * e); + } + }; + }(), function () { + if ("function" == typeof ArrayBuffer) { + var r = t, + e = r.lib, + i = e.WordArray, + n = i.init, + o = i.init = function (t) { + if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) { + for (var r = t.byteLength, e = [], i = 0; i < r; i++) e[i >>> 2] |= t[i] << 24 - i % 4 * 8; + n.call(this, e, r); + } else n.apply(this, arguments); + }; + o.prototype = i; + } + }(), function (r) { + function e(t, r, e) { + return t ^ r ^ e; + } + function i(t, r, e) { + return t & r | ~t & e; + } + function n(t, r, e) { + return (t | ~r) ^ e; + } + function o(t, r, e) { + return t & e | r & ~e; + } + function s(t, r, e) { + return t ^ (r | ~e); + } + function a(t, r) { + return t << r | t >>> 32 - r; + } + var c = t, + h = c.lib, + l = h.WordArray, + f = h.Hasher, + u = c.algo, + d = l.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]), + v = l.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]), + p = l.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]), + _ = l.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]), + y = l.create([0, 1518500249, 1859775393, 2400959708, 2840853838]), + g = l.create([1352829926, 1548603684, 1836072691, 2053994217, 0]), + B = u.RIPEMD160 = f.extend({ + _doReset: function _doReset() { + this._hash = l.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var c = 0; c < 16; c++) { + var h = r + c, + l = t[h]; + t[h] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8); + } + var f, + u, + B, + w, + k, + S, + m, + x, + b, + H, + z = this._hash.words, + A = y.words, + C = g.words, + D = d.words, + R = v.words, + E = p.words, + M = _.words; + S = f = z[0], m = u = z[1], x = B = z[2], b = w = z[3], H = k = z[4]; + for (var F, c = 0; c < 80; c += 1) F = f + t[r + D[c]] | 0, F += c < 16 ? e(u, B, w) + A[0] : c < 32 ? i(u, B, w) + A[1] : c < 48 ? n(u, B, w) + A[2] : c < 64 ? o(u, B, w) + A[3] : s(u, B, w) + A[4], F |= 0, F = a(F, E[c]), F = F + k | 0, f = k, k = w, w = a(B, 10), B = u, u = F, F = S + t[r + R[c]] | 0, F += c < 16 ? s(m, x, b) + C[0] : c < 32 ? o(m, x, b) + C[1] : c < 48 ? n(m, x, b) + C[2] : c < 64 ? i(m, x, b) + C[3] : e(m, x, b) + C[4], F |= 0, F = a(F, M[c]), F = F + H | 0, S = H, H = b, b = a(x, 10), x = m, m = F; + F = z[1] + B + b | 0, z[1] = z[2] + w + H | 0, z[2] = z[3] + k + S | 0, z[3] = z[4] + f + m | 0, z[4] = z[0] + u + x | 0, z[0] = F; + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (e << 8 | e >>> 24) | 4278255360 & (e << 24 | e >>> 8), t.sigBytes = 4 * (r.length + 1), this._process(); + for (var n = this._hash, o = n.words, s = 0; s < 5; s++) { + var a = o[s]; + o[s] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8); + } + return n; + }, + clone: function clone() { + var t = f.clone.call(this); + return t._hash = this._hash.clone(), t; + } + }); + c.RIPEMD160 = f._createHelper(B), c.HmacRIPEMD160 = f._createHmacHelper(B); + }(Math), function () { + var r = t, + e = r.lib, + i = e.Base, + n = r.enc, + o = n.Utf8, + s = r.algo; + s.HMAC = i.extend({ + init: function init(t, r) { + t = this._hasher = new t.init(), "string" == typeof r && (r = o.parse(r)); + var e = t.blockSize, + i = 4 * e; + r.sigBytes > i && (r = t.finalize(r)), r.clamp(); + for (var n = this._oKey = r.clone(), s = this._iKey = r.clone(), a = n.words, c = s.words, h = 0; h < e; h++) a[h] ^= 1549556828, c[h] ^= 909522486; + n.sigBytes = s.sigBytes = i, this.reset(); + }, + reset: function reset() { + var t = this._hasher; + t.reset(), t.update(this._iKey); + }, + update: function update(t) { + return this._hasher.update(t), this; + }, + finalize: function finalize(t) { + var r = this._hasher, + e = r.finalize(t); + r.reset(); + var i = r.finalize(this._oKey.clone().concat(e)); + return i; + } + }); + }(), function () { + var r = t, + e = r.lib, + i = e.Base, + n = e.WordArray, + o = r.algo, + s = o.SHA1, + a = o.HMAC, + c = o.PBKDF2 = i.extend({ + cfg: i.extend({ + keySize: 4, + hasher: s, + iterations: 1 + }), + init: function init(t) { + this.cfg = this.cfg.extend(t); + }, + compute: function compute(t, r) { + for (var e = this.cfg, i = a.create(e.hasher, t), o = n.create(), s = n.create([1]), c = o.words, h = s.words, l = e.keySize, f = e.iterations; c.length < l;) { + var u = i.update(r).finalize(s); + i.reset(); + for (var d = u.words, v = d.length, p = u, _ = 1; _ < f; _++) { + p = i.finalize(p), i.reset(); + for (var y = p.words, g = 0; g < v; g++) d[g] ^= y[g]; + } + o.concat(u), h[0]++; + } + return o.sigBytes = 4 * l, o; + } + }); + r.PBKDF2 = function (t, r, e) { + return c.create(e).compute(t, r); + }; + }(), function () { + var r = t, + e = r.lib, + i = e.Base, + n = e.WordArray, + o = r.algo, + s = o.MD5, + a = o.EvpKDF = i.extend({ + cfg: i.extend({ + keySize: 4, + hasher: s, + iterations: 1 + }), + init: function init(t) { + this.cfg = this.cfg.extend(t); + }, + compute: function compute(t, r) { + for (var e = this.cfg, i = e.hasher.create(), o = n.create(), s = o.words, a = e.keySize, c = e.iterations; s.length < a;) { + h && i.update(h); + var h = i.update(t).finalize(r); + i.reset(); + for (var l = 1; l < c; l++) h = i.finalize(h), i.reset(); + o.concat(h); + } + return o.sigBytes = 4 * a, o; + } + }); + r.EvpKDF = function (t, r, e) { + return a.create(e).compute(t, r); + }; + }(), function () { + var r = t, + e = r.lib, + i = e.WordArray, + n = r.algo, + o = n.SHA256, + s = n.SHA224 = o.extend({ + _doReset: function _doReset() { + this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428]); + }, + _doFinalize: function _doFinalize() { + var t = o._doFinalize.call(this); + return t.sigBytes -= 4, t; + } + }); + r.SHA224 = o._createHelper(s), r.HmacSHA224 = o._createHmacHelper(s); + }(), function (r) { + var e = t, + i = e.lib, + n = i.Base, + o = i.WordArray, + s = e.x64 = {}; + s.Word = n.extend({ + init: function init(t, r) { + this.high = t, this.low = r; + } + }), s.WordArray = n.extend({ + init: function init(t, e) { + t = this.words = t || [], e != r ? this.sigBytes = e : this.sigBytes = 8 * t.length; + }, + toX32: function toX32() { + for (var t = this.words, r = t.length, e = [], i = 0; i < r; i++) { + var n = t[i]; + e.push(n.high), e.push(n.low); + } + return o.create(e, this.sigBytes); + }, + clone: function clone() { + for (var t = n.clone.call(this), r = t.words = this.words.slice(0), e = r.length, i = 0; i < e; i++) r[i] = r[i].clone(); + return t; + } + }); + }(), function (r) { + var e = t, + i = e.lib, + n = i.WordArray, + o = i.Hasher, + s = e.x64, + a = s.Word, + c = e.algo, + h = [], + l = [], + f = []; + !function () { + for (var t = 1, r = 0, e = 0; e < 24; e++) { + h[t + 5 * r] = (e + 1) * (e + 2) / 2 % 64; + var i = r % 5, + n = (2 * t + 3 * r) % 5; + t = i, r = n; + } + for (var t = 0; t < 5; t++) for (var r = 0; r < 5; r++) l[t + 5 * r] = r + (2 * t + 3 * r) % 5 * 5; + for (var o = 1, s = 0; s < 24; s++) { + for (var c = 0, u = 0, d = 0; d < 7; d++) { + if (1 & o) { + var v = (1 << d) - 1; + v < 32 ? u ^= 1 << v : c ^= 1 << v - 32; + } + 128 & o ? o = o << 1 ^ 113 : o <<= 1; + } + f[s] = a.create(c, u); + } + }(); + var u = []; + !function () { + for (var t = 0; t < 25; t++) u[t] = a.create(); + }(); + var d = c.SHA3 = o.extend({ + cfg: o.cfg.extend({ + outputLength: 512 + }), + _doReset: function _doReset() { + for (var t = this._state = [], r = 0; r < 25; r++) t[r] = new a.init(); + this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32; + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._state, i = this.blockSize / 2, n = 0; n < i; n++) { + var o = t[r + 2 * n], + s = t[r + 2 * n + 1]; + o = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), s = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8); + var a = e[n]; + a.high ^= s, a.low ^= o; + } + for (var c = 0; c < 24; c++) { + for (var d = 0; d < 5; d++) { + for (var v = 0, p = 0, _ = 0; _ < 5; _++) { + var a = e[d + 5 * _]; + v ^= a.high, p ^= a.low; + } + var y = u[d]; + y.high = v, y.low = p; + } + for (var d = 0; d < 5; d++) for (var g = u[(d + 4) % 5], B = u[(d + 1) % 5], w = B.high, k = B.low, v = g.high ^ (w << 1 | k >>> 31), p = g.low ^ (k << 1 | w >>> 31), _ = 0; _ < 5; _++) { + var a = e[d + 5 * _]; + a.high ^= v, a.low ^= p; + } + for (var S = 1; S < 25; S++) { + var a = e[S], + m = a.high, + x = a.low, + b = h[S]; + if (b < 32) var v = m << b | x >>> 32 - b, + p = x << b | m >>> 32 - b;else var v = x << b - 32 | m >>> 64 - b, + p = m << b - 32 | x >>> 64 - b; + var H = u[l[S]]; + H.high = v, H.low = p; + } + var z = u[0], + A = e[0]; + z.high = A.high, z.low = A.low; + for (var d = 0; d < 5; d++) for (var _ = 0; _ < 5; _++) { + var S = d + 5 * _, + a = e[S], + C = u[S], + D = u[(d + 1) % 5 + 5 * _], + R = u[(d + 2) % 5 + 5 * _]; + a.high = C.high ^ ~D.high & R.high, a.low = C.low ^ ~D.low & R.low; + } + var a = e[0], + E = f[c]; + a.high ^= E.high, a.low ^= E.low; + } + }, + _doFinalize: function _doFinalize() { + var t = this._data, + e = t.words, + i = (8 * this._nDataBytes, 8 * t.sigBytes), + o = 32 * this.blockSize; + e[i >>> 5] |= 1 << 24 - i % 32, e[(r.ceil((i + 1) / o) * o >>> 5) - 1] |= 128, t.sigBytes = 4 * e.length, this._process(); + for (var s = this._state, a = this.cfg.outputLength / 8, c = a / 8, h = [], l = 0; l < c; l++) { + var f = s[l], + u = f.high, + d = f.low; + u = 16711935 & (u << 8 | u >>> 24) | 4278255360 & (u << 24 | u >>> 8), d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8), h.push(d), h.push(u); + } + return new n.init(h, a); + }, + clone: function clone() { + for (var t = o.clone.call(this), r = t._state = this._state.slice(0), e = 0; e < 25; e++) r[e] = r[e].clone(); + return t; + } + }); + e.SHA3 = o._createHelper(d), e.HmacSHA3 = o._createHmacHelper(d); + }(Math), function () { + function r() { + return s.create.apply(s, arguments); + } + var e = t, + i = e.lib, + n = i.Hasher, + o = e.x64, + s = o.Word, + a = o.WordArray, + c = e.algo, + h = [r(1116352408, 3609767458), r(1899447441, 602891725), r(3049323471, 3964484399), r(3921009573, 2173295548), r(961987163, 4081628472), r(1508970993, 3053834265), r(2453635748, 2937671579), r(2870763221, 3664609560), r(3624381080, 2734883394), r(310598401, 1164996542), r(607225278, 1323610764), r(1426881987, 3590304994), r(1925078388, 4068182383), r(2162078206, 991336113), r(2614888103, 633803317), r(3248222580, 3479774868), r(3835390401, 2666613458), r(4022224774, 944711139), r(264347078, 2341262773), r(604807628, 2007800933), r(770255983, 1495990901), r(1249150122, 1856431235), r(1555081692, 3175218132), r(1996064986, 2198950837), r(2554220882, 3999719339), r(2821834349, 766784016), r(2952996808, 2566594879), r(3210313671, 3203337956), r(3336571891, 1034457026), r(3584528711, 2466948901), r(113926993, 3758326383), r(338241895, 168717936), r(666307205, 1188179964), r(773529912, 1546045734), r(1294757372, 1522805485), r(1396182291, 2643833823), r(1695183700, 2343527390), r(1986661051, 1014477480), r(2177026350, 1206759142), r(2456956037, 344077627), r(2730485921, 1290863460), r(2820302411, 3158454273), r(3259730800, 3505952657), r(3345764771, 106217008), r(3516065817, 3606008344), r(3600352804, 1432725776), r(4094571909, 1467031594), r(275423344, 851169720), r(430227734, 3100823752), r(506948616, 1363258195), r(659060556, 3750685593), r(883997877, 3785050280), r(958139571, 3318307427), r(1322822218, 3812723403), r(1537002063, 2003034995), r(1747873779, 3602036899), r(1955562222, 1575990012), r(2024104815, 1125592928), r(2227730452, 2716904306), r(2361852424, 442776044), r(2428436474, 593698344), r(2756734187, 3733110249), r(3204031479, 2999351573), r(3329325298, 3815920427), r(3391569614, 3928383900), r(3515267271, 566280711), r(3940187606, 3454069534), r(4118630271, 4000239992), r(116418474, 1914138554), r(174292421, 2731055270), r(289380356, 3203993006), r(460393269, 320620315), r(685471733, 587496836), r(852142971, 1086792851), r(1017036298, 365543100), r(1126000580, 2618297676), r(1288033470, 3409855158), r(1501505948, 4234509866), r(1607167915, 987167468), r(1816402316, 1246189591)], + l = []; + !function () { + for (var t = 0; t < 80; t++) l[t] = r(); + }(); + var f = c.SHA512 = n.extend({ + _doReset: function _doReset() { + this._hash = new a.init([new s.init(1779033703, 4089235720), new s.init(3144134277, 2227873595), new s.init(1013904242, 4271175723), new s.init(2773480762, 1595750129), new s.init(1359893119, 2917565137), new s.init(2600822924, 725511199), new s.init(528734635, 4215389547), new s.init(1541459225, 327033209)]); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + for (var e = this._hash.words, i = e[0], n = e[1], o = e[2], s = e[3], a = e[4], c = e[5], f = e[6], u = e[7], d = i.high, v = i.low, p = n.high, _ = n.low, y = o.high, g = o.low, B = s.high, w = s.low, k = a.high, S = a.low, m = c.high, x = c.low, b = f.high, H = f.low, z = u.high, A = u.low, C = d, D = v, R = p, E = _, M = y, F = g, P = B, W = w, O = k, U = S, I = m, K = x, X = b, L = H, j = z, N = A, T = 0; T < 80; T++) { + var Z = l[T]; + if (T < 16) var q = Z.high = 0 | t[r + 2 * T], + G = Z.low = 0 | t[r + 2 * T + 1];else { + var J = l[T - 15], + $ = J.high, + Q = J.low, + V = ($ >>> 1 | Q << 31) ^ ($ >>> 8 | Q << 24) ^ $ >>> 7, + Y = (Q >>> 1 | $ << 31) ^ (Q >>> 8 | $ << 24) ^ (Q >>> 7 | $ << 25), + tt = l[T - 2], + rt = tt.high, + et = tt.low, + it = (rt >>> 19 | et << 13) ^ (rt << 3 | et >>> 29) ^ rt >>> 6, + nt = (et >>> 19 | rt << 13) ^ (et << 3 | rt >>> 29) ^ (et >>> 6 | rt << 26), + ot = l[T - 7], + st = ot.high, + at = ot.low, + ct = l[T - 16], + ht = ct.high, + lt = ct.low, + G = Y + at, + q = V + st + (G >>> 0 < Y >>> 0 ? 1 : 0), + G = G + nt, + q = q + it + (G >>> 0 < nt >>> 0 ? 1 : 0), + G = G + lt, + q = q + ht + (G >>> 0 < lt >>> 0 ? 1 : 0); + Z.high = q, Z.low = G; + } + var ft = O & I ^ ~O & X, + ut = U & K ^ ~U & L, + dt = C & R ^ C & M ^ R & M, + vt = D & E ^ D & F ^ E & F, + pt = (C >>> 28 | D << 4) ^ (C << 30 | D >>> 2) ^ (C << 25 | D >>> 7), + _t = (D >>> 28 | C << 4) ^ (D << 30 | C >>> 2) ^ (D << 25 | C >>> 7), + yt = (O >>> 14 | U << 18) ^ (O >>> 18 | U << 14) ^ (O << 23 | U >>> 9), + gt = (U >>> 14 | O << 18) ^ (U >>> 18 | O << 14) ^ (U << 23 | O >>> 9), + Bt = h[T], + wt = Bt.high, + kt = Bt.low, + St = N + gt, + mt = j + yt + (St >>> 0 < N >>> 0 ? 1 : 0), + St = St + ut, + mt = mt + ft + (St >>> 0 < ut >>> 0 ? 1 : 0), + St = St + kt, + mt = mt + wt + (St >>> 0 < kt >>> 0 ? 1 : 0), + St = St + G, + mt = mt + q + (St >>> 0 < G >>> 0 ? 1 : 0), + xt = _t + vt, + bt = pt + dt + (xt >>> 0 < _t >>> 0 ? 1 : 0); + j = X, N = L, X = I, L = K, I = O, K = U, U = W + St | 0, O = P + mt + (U >>> 0 < W >>> 0 ? 1 : 0) | 0, P = M, W = F, M = R, F = E, R = C, E = D, D = St + xt | 0, C = mt + bt + (D >>> 0 < St >>> 0 ? 1 : 0) | 0; + } + v = i.low = v + D, i.high = d + C + (v >>> 0 < D >>> 0 ? 1 : 0), _ = n.low = _ + E, n.high = p + R + (_ >>> 0 < E >>> 0 ? 1 : 0), g = o.low = g + F, o.high = y + M + (g >>> 0 < F >>> 0 ? 1 : 0), w = s.low = w + W, s.high = B + P + (w >>> 0 < W >>> 0 ? 1 : 0), S = a.low = S + U, a.high = k + O + (S >>> 0 < U >>> 0 ? 1 : 0), x = c.low = x + K, c.high = m + I + (x >>> 0 < K >>> 0 ? 1 : 0), H = f.low = H + L, f.high = b + X + (H >>> 0 < L >>> 0 ? 1 : 0), A = u.low = A + N, u.high = z + j + (A >>> 0 < N >>> 0 ? 1 : 0); + }, + _doFinalize: function _doFinalize() { + var t = this._data, + r = t.words, + e = 8 * this._nDataBytes, + i = 8 * t.sigBytes; + r[i >>> 5] |= 128 << 24 - i % 32, r[(i + 128 >>> 10 << 5) + 30] = Math.floor(e / 4294967296), r[(i + 128 >>> 10 << 5) + 31] = e, t.sigBytes = 4 * r.length, this._process(); + var n = this._hash.toX32(); + return n; + }, + clone: function clone() { + var t = n.clone.call(this); + return t._hash = this._hash.clone(), t; + }, + blockSize: 32 + }); + e.SHA512 = n._createHelper(f), e.HmacSHA512 = n._createHmacHelper(f); + }(), function () { + var r = t, + e = r.x64, + i = e.Word, + n = e.WordArray, + o = r.algo, + s = o.SHA512, + a = o.SHA384 = s.extend({ + _doReset: function _doReset() { + this._hash = new n.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)]); + }, + _doFinalize: function _doFinalize() { + var t = s._doFinalize.call(this); + return t.sigBytes -= 16, t; + } + }); + r.SHA384 = s._createHelper(a), r.HmacSHA384 = s._createHmacHelper(a); + }(), t.lib.Cipher || function (r) { + var e = t, + i = e.lib, + n = i.Base, + o = i.WordArray, + s = i.BufferedBlockAlgorithm, + a = e.enc, + c = (a.Utf8, a.Base64), + h = e.algo, + l = h.EvpKDF, + f = i.Cipher = s.extend({ + cfg: n.extend(), + createEncryptor: function createEncryptor(t, r) { + return this.create(this._ENC_XFORM_MODE, t, r); + }, + createDecryptor: function createDecryptor(t, r) { + return this.create(this._DEC_XFORM_MODE, t, r); + }, + init: function init(t, r, e) { + this.cfg = this.cfg.extend(e), this._xformMode = t, this._key = r, this.reset(); + }, + reset: function reset() { + s.reset.call(this), this._doReset(); + }, + process: function process(t) { + return this._append(t), this._process(); + }, + finalize: function finalize(t) { + t && this._append(t); + var r = this._doFinalize(); + return r; + }, + keySize: 4, + ivSize: 4, + _ENC_XFORM_MODE: 1, + _DEC_XFORM_MODE: 2, + _createHelper: function () { + function t(t) { + return "string" == typeof t ? m : w; + } + return function (r) { + return { + encrypt: function encrypt(e, i, n) { + return t(i).encrypt(r, e, i, n); + }, + decrypt: function decrypt(e, i, n) { + return t(i).decrypt(r, e, i, n); + } + }; + }; + }() + }), + u = (i.StreamCipher = f.extend({ + _doFinalize: function _doFinalize() { + var t = this._process(!0); + return t; + }, + blockSize: 1 + }), e.mode = {}), + d = i.BlockCipherMode = n.extend({ + createEncryptor: function createEncryptor(t, r) { + return this.Encryptor.create(t, r); + }, + createDecryptor: function createDecryptor(t, r) { + return this.Decryptor.create(t, r); + }, + init: function init(t, r) { + this._cipher = t, this._iv = r; + } + }), + v = u.CBC = function () { + function t(t, e, i) { + var n = this._iv; + if (n) { + var o = n; + this._iv = r; + } else var o = this._prevBlock; + for (var s = 0; s < i; s++) t[e + s] ^= o[s]; + } + var e = d.extend(); + return e.Encryptor = e.extend({ + processBlock: function processBlock(r, e) { + var i = this._cipher, + n = i.blockSize; + t.call(this, r, e, n), i.encryptBlock(r, e), this._prevBlock = r.slice(e, e + n); + } + }), e.Decryptor = e.extend({ + processBlock: function processBlock(r, e) { + var i = this._cipher, + n = i.blockSize, + o = r.slice(e, e + n); + i.decryptBlock(r, e), t.call(this, r, e, n), this._prevBlock = o; + } + }), e; + }(), + p = e.pad = {}, + _ = p.Pkcs7 = { + pad: function pad(t, r) { + for (var e = 4 * r, i = e - t.sigBytes % e, n = i << 24 | i << 16 | i << 8 | i, s = [], a = 0; a < i; a += 4) s.push(n); + var c = o.create(s, i); + t.concat(c); + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, + y = (i.BlockCipher = f.extend({ + cfg: f.cfg.extend({ + mode: v, + padding: _ + }), + reset: function reset() { + f.reset.call(this); + var t = this.cfg, + r = t.iv, + e = t.mode; + if (this._xformMode == this._ENC_XFORM_MODE) var i = e.createEncryptor;else { + var i = e.createDecryptor; + this._minBufferSize = 1; + } + this._mode && this._mode.__creator == i ? this._mode.init(this, r && r.words) : (this._mode = i.call(e, this, r && r.words), this._mode.__creator = i); + }, + _doProcessBlock: function _doProcessBlock(t, r) { + this._mode.processBlock(t, r); + }, + _doFinalize: function _doFinalize() { + var t = this.cfg.padding; + if (this._xformMode == this._ENC_XFORM_MODE) { + t.pad(this._data, this.blockSize); + var r = this._process(!0); + } else { + var r = this._process(!0); + t.unpad(r); + } + return r; + }, + blockSize: 4 + }), i.CipherParams = n.extend({ + init: function init(t) { + this.mixIn(t); + }, + toString: function toString(t) { + return (t || this.formatter).stringify(this); + } + })), + g = e.format = {}, + B = g.OpenSSL = { + stringify: function stringify(t) { + var r = t.ciphertext, + e = t.salt; + if (e) var i = o.create([1398893684, 1701076831]).concat(e).concat(r);else var i = r; + return i.toString(c); + }, + parse: function parse(t) { + var r = c.parse(t), + e = r.words; + if (1398893684 == e[0] && 1701076831 == e[1]) { + var i = o.create(e.slice(2, 4)); + e.splice(0, 4), r.sigBytes -= 16; + } + return y.create({ + ciphertext: r, + salt: i + }); + } + }, + w = i.SerializableCipher = n.extend({ + cfg: n.extend({ + format: B + }), + encrypt: function encrypt(t, r, e, i) { + i = this.cfg.extend(i); + var n = t.createEncryptor(e, i), + o = n.finalize(r), + s = n.cfg; + return y.create({ + ciphertext: o, + key: e, + iv: s.iv, + algorithm: t, + mode: s.mode, + padding: s.padding, + blockSize: t.blockSize, + formatter: i.format + }); + }, + decrypt: function decrypt(t, r, e, i) { + i = this.cfg.extend(i), r = this._parse(r, i.format); + var n = t.createDecryptor(e, i).finalize(r.ciphertext); + return n; + }, + _parse: function _parse(t, r) { + return "string" == typeof t ? r.parse(t, this) : t; + } + }), + k = e.kdf = {}, + S = k.OpenSSL = { + execute: function execute(t, r, e, i) { + i || (i = o.random(8)); + var n = l.create({ + keySize: r + e + }).compute(t, i), + s = o.create(n.words.slice(r), 4 * e); + return n.sigBytes = 4 * r, y.create({ + key: n, + iv: s, + salt: i + }); + } + }, + m = i.PasswordBasedCipher = w.extend({ + cfg: w.cfg.extend({ + kdf: S + }), + encrypt: function encrypt(t, r, e, i) { + i = this.cfg.extend(i); + var n = i.kdf.execute(e, t.keySize, t.ivSize); + i.iv = n.iv; + var o = w.encrypt.call(this, t, r, n.key, i); + return o.mixIn(n), o; + }, + decrypt: function decrypt(t, r, e, i) { + i = this.cfg.extend(i), r = this._parse(r, i.format); + var n = i.kdf.execute(e, t.keySize, t.ivSize, r.salt); + i.iv = n.iv; + var o = w.decrypt.call(this, t, r, n.key, i); + return o; + } + }); + }(), t.mode.CFB = function () { + function r(t, r, e, i) { + var n = this._iv; + if (n) { + var o = n.slice(0); + this._iv = void 0; + } else var o = this._prevBlock; + i.encryptBlock(o, 0); + for (var s = 0; s < e; s++) t[r + s] ^= o[s]; + } + var e = t.lib.BlockCipherMode.extend(); + return e.Encryptor = e.extend({ + processBlock: function processBlock(t, e) { + var i = this._cipher, + n = i.blockSize; + r.call(this, t, e, n, i), this._prevBlock = t.slice(e, e + n); + } + }), e.Decryptor = e.extend({ + processBlock: function processBlock(t, e) { + var i = this._cipher, + n = i.blockSize, + o = t.slice(e, e + n); + r.call(this, t, e, n, i), this._prevBlock = o; + } + }), e; + }(), t.mode.ECB = function () { + var r = t.lib.BlockCipherMode.extend(); + return r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + this._cipher.encryptBlock(t, r); + } + }), r.Decryptor = r.extend({ + processBlock: function processBlock(t, r) { + this._cipher.decryptBlock(t, r); + } + }), r; + }(), t.pad.AnsiX923 = { + pad: function pad(t, r) { + var e = t.sigBytes, + i = 4 * r, + n = i - e % i, + o = e + n - 1; + t.clamp(), t.words[o >>> 2] |= n << 24 - o % 4 * 8, t.sigBytes += n; + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, t.pad.Iso10126 = { + pad: function pad(r, e) { + var i = 4 * e, + n = i - r.sigBytes % i; + r.concat(t.lib.WordArray.random(n - 1)).concat(t.lib.WordArray.create([n << 24], 1)); + }, + unpad: function unpad(t) { + var r = 255 & t.words[t.sigBytes - 1 >>> 2]; + t.sigBytes -= r; + } + }, t.pad.Iso97971 = { + pad: function pad(r, e) { + r.concat(t.lib.WordArray.create([2147483648], 1)), t.pad.ZeroPadding.pad(r, e); + }, + unpad: function unpad(r) { + t.pad.ZeroPadding.unpad(r), r.sigBytes--; + } + }, t.mode.OFB = function () { + var r = t.lib.BlockCipherMode.extend(), + e = r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + var e = this._cipher, + i = e.blockSize, + n = this._iv, + o = this._keystream; + n && (o = this._keystream = n.slice(0), this._iv = void 0), e.encryptBlock(o, 0); + for (var s = 0; s < i; s++) t[r + s] ^= o[s]; + } + }); + return r.Decryptor = e, r; + }(), t.pad.NoPadding = { + pad: function pad() {}, + unpad: function unpad() {} + }, function (r) { + var e = t, + i = e.lib, + n = i.CipherParams, + o = e.enc, + s = o.Hex, + a = e.format; + a.Hex = { + stringify: function stringify(t) { + return t.ciphertext.toString(s); + }, + parse: function parse(t) { + var r = s.parse(t); + return n.create({ + ciphertext: r + }); + } + }; + }(), function () { + var r = t, + e = r.lib, + i = e.BlockCipher, + n = r.algo, + o = [], + s = [], + a = [], + c = [], + h = [], + l = [], + f = [], + u = [], + d = [], + v = []; + !function () { + for (var t = [], r = 0; r < 256; r++) r < 128 ? t[r] = r << 1 : t[r] = r << 1 ^ 283; + for (var e = 0, i = 0, r = 0; r < 256; r++) { + var n = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4; + n = n >>> 8 ^ 255 & n ^ 99, o[e] = n, s[n] = e; + var p = t[e], + _ = t[p], + y = t[_], + g = 257 * t[n] ^ 16843008 * n; + a[e] = g << 24 | g >>> 8, c[e] = g << 16 | g >>> 16, h[e] = g << 8 | g >>> 24, l[e] = g; + var g = 16843009 * y ^ 65537 * _ ^ 257 * p ^ 16843008 * e; + f[n] = g << 24 | g >>> 8, u[n] = g << 16 | g >>> 16, d[n] = g << 8 | g >>> 24, v[n] = g, e ? (e = p ^ t[t[t[y ^ p]]], i ^= t[t[i]]) : e = i = 1; + } + }(); + var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], + _ = n.AES = i.extend({ + _doReset: function _doReset() { + if (!this._nRounds || this._keyPriorReset !== this._key) { + for (var t = this._keyPriorReset = this._key, r = t.words, e = t.sigBytes / 4, i = this._nRounds = e + 6, n = 4 * (i + 1), s = this._keySchedule = [], a = 0; a < n; a++) if (a < e) s[a] = r[a];else { + var c = s[a - 1]; + a % e ? e > 6 && a % e == 4 && (c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c]) : (c = c << 8 | c >>> 24, c = o[c >>> 24] << 24 | o[c >>> 16 & 255] << 16 | o[c >>> 8 & 255] << 8 | o[255 & c], c ^= p[a / e | 0] << 24), s[a] = s[a - e] ^ c; + } + for (var h = this._invKeySchedule = [], l = 0; l < n; l++) { + var a = n - l; + if (l % 4) var c = s[a];else var c = s[a - 4]; + l < 4 || a <= 4 ? h[l] = c : h[l] = f[o[c >>> 24]] ^ u[o[c >>> 16 & 255]] ^ d[o[c >>> 8 & 255]] ^ v[o[255 & c]]; + } + } + }, + encryptBlock: function encryptBlock(t, r) { + this._doCryptBlock(t, r, this._keySchedule, a, c, h, l, o); + }, + decryptBlock: function decryptBlock(t, r) { + var e = t[r + 1]; + t[r + 1] = t[r + 3], t[r + 3] = e, this._doCryptBlock(t, r, this._invKeySchedule, f, u, d, v, s); + var e = t[r + 1]; + t[r + 1] = t[r + 3], t[r + 3] = e; + }, + _doCryptBlock: function _doCryptBlock(t, r, e, i, n, o, s, a) { + for (var c = this._nRounds, h = t[r] ^ e[0], l = t[r + 1] ^ e[1], f = t[r + 2] ^ e[2], u = t[r + 3] ^ e[3], d = 4, v = 1; v < c; v++) { + var p = i[h >>> 24] ^ n[l >>> 16 & 255] ^ o[f >>> 8 & 255] ^ s[255 & u] ^ e[d++], + _ = i[l >>> 24] ^ n[f >>> 16 & 255] ^ o[u >>> 8 & 255] ^ s[255 & h] ^ e[d++], + y = i[f >>> 24] ^ n[u >>> 16 & 255] ^ o[h >>> 8 & 255] ^ s[255 & l] ^ e[d++], + g = i[u >>> 24] ^ n[h >>> 16 & 255] ^ o[l >>> 8 & 255] ^ s[255 & f] ^ e[d++]; + h = p, l = _, f = y, u = g; + } + var p = (a[h >>> 24] << 24 | a[l >>> 16 & 255] << 16 | a[f >>> 8 & 255] << 8 | a[255 & u]) ^ e[d++], + _ = (a[l >>> 24] << 24 | a[f >>> 16 & 255] << 16 | a[u >>> 8 & 255] << 8 | a[255 & h]) ^ e[d++], + y = (a[f >>> 24] << 24 | a[u >>> 16 & 255] << 16 | a[h >>> 8 & 255] << 8 | a[255 & l]) ^ e[d++], + g = (a[u >>> 24] << 24 | a[h >>> 16 & 255] << 16 | a[l >>> 8 & 255] << 8 | a[255 & f]) ^ e[d++]; + t[r] = p, t[r + 1] = _, t[r + 2] = y, t[r + 3] = g; + }, + keySize: 8 + }); + r.AES = i._createHelper(_); + }(), function () { + function r(t, r) { + var e = (this._lBlock >>> t ^ this._rBlock) & r; + this._rBlock ^= e, this._lBlock ^= e << t; + } + function e(t, r) { + var e = (this._rBlock >>> t ^ this._lBlock) & r; + this._lBlock ^= e, this._rBlock ^= e << t; + } + var i = t, + n = i.lib, + o = n.WordArray, + s = n.BlockCipher, + a = i.algo, + c = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4], + h = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32], + l = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], + f = [{ + 0: 8421888, + 268435456: 32768, + 536870912: 8421378, + 805306368: 2, + 1073741824: 512, + 1342177280: 8421890, + 1610612736: 8389122, + 1879048192: 8388608, + 2147483648: 514, + 2415919104: 8389120, + 2684354560: 33280, + 2952790016: 8421376, + 3221225472: 32770, + 3489660928: 8388610, + 3758096384: 0, + 4026531840: 33282, + 134217728: 0, + 402653184: 8421890, + 671088640: 33282, + 939524096: 32768, + 1207959552: 8421888, + 1476395008: 512, + 1744830464: 8421378, + 2013265920: 2, + 2281701376: 8389120, + 2550136832: 33280, + 2818572288: 8421376, + 3087007744: 8389122, + 3355443200: 8388610, + 3623878656: 32770, + 3892314112: 514, + 4160749568: 8388608, + 1: 32768, + 268435457: 2, + 536870913: 8421888, + 805306369: 8388608, + 1073741825: 8421378, + 1342177281: 33280, + 1610612737: 512, + 1879048193: 8389122, + 2147483649: 8421890, + 2415919105: 8421376, + 2684354561: 8388610, + 2952790017: 33282, + 3221225473: 514, + 3489660929: 8389120, + 3758096385: 32770, + 4026531841: 0, + 134217729: 8421890, + 402653185: 8421376, + 671088641: 8388608, + 939524097: 512, + 1207959553: 32768, + 1476395009: 8388610, + 1744830465: 2, + 2013265921: 33282, + 2281701377: 32770, + 2550136833: 8389122, + 2818572289: 514, + 3087007745: 8421888, + 3355443201: 8389120, + 3623878657: 0, + 3892314113: 33280, + 4160749569: 8421378 + }, { + 0: 1074282512, + 16777216: 16384, + 33554432: 524288, + 50331648: 1074266128, + 67108864: 1073741840, + 83886080: 1074282496, + 100663296: 1073758208, + 117440512: 16, + 134217728: 540672, + 150994944: 1073758224, + 167772160: 1073741824, + 184549376: 540688, + 201326592: 524304, + 218103808: 0, + 234881024: 16400, + 251658240: 1074266112, + 8388608: 1073758208, + 25165824: 540688, + 41943040: 16, + 58720256: 1073758224, + 75497472: 1074282512, + 92274688: 1073741824, + 109051904: 524288, + 125829120: 1074266128, + 142606336: 524304, + 159383552: 0, + 176160768: 16384, + 192937984: 1074266112, + 209715200: 1073741840, + 226492416: 540672, + 243269632: 1074282496, + 260046848: 16400, + 268435456: 0, + 285212672: 1074266128, + 301989888: 1073758224, + 318767104: 1074282496, + 335544320: 1074266112, + 352321536: 16, + 369098752: 540688, + 385875968: 16384, + 402653184: 16400, + 419430400: 524288, + 436207616: 524304, + 452984832: 1073741840, + 469762048: 540672, + 486539264: 1073758208, + 503316480: 1073741824, + 520093696: 1074282512, + 276824064: 540688, + 293601280: 524288, + 310378496: 1074266112, + 327155712: 16384, + 343932928: 1073758208, + 360710144: 1074282512, + 377487360: 16, + 394264576: 1073741824, + 411041792: 1074282496, + 427819008: 1073741840, + 444596224: 1073758224, + 461373440: 524304, + 478150656: 0, + 494927872: 16400, + 511705088: 1074266128, + 528482304: 540672 + }, { + 0: 260, + 1048576: 0, + 2097152: 67109120, + 3145728: 65796, + 4194304: 65540, + 5242880: 67108868, + 6291456: 67174660, + 7340032: 67174400, + 8388608: 67108864, + 9437184: 67174656, + 10485760: 65792, + 11534336: 67174404, + 12582912: 67109124, + 13631488: 65536, + 14680064: 4, + 15728640: 256, + 524288: 67174656, + 1572864: 67174404, + 2621440: 0, + 3670016: 67109120, + 4718592: 67108868, + 5767168: 65536, + 6815744: 65540, + 7864320: 260, + 8912896: 4, + 9961472: 256, + 11010048: 67174400, + 12058624: 65796, + 13107200: 65792, + 14155776: 67109124, + 15204352: 67174660, + 16252928: 67108864, + 16777216: 67174656, + 17825792: 65540, + 18874368: 65536, + 19922944: 67109120, + 20971520: 256, + 22020096: 67174660, + 23068672: 67108868, + 24117248: 0, + 25165824: 67109124, + 26214400: 67108864, + 27262976: 4, + 28311552: 65792, + 29360128: 67174400, + 30408704: 260, + 31457280: 65796, + 32505856: 67174404, + 17301504: 67108864, + 18350080: 260, + 19398656: 67174656, + 20447232: 0, + 21495808: 65540, + 22544384: 67109120, + 23592960: 256, + 24641536: 67174404, + 25690112: 65536, + 26738688: 67174660, + 27787264: 65796, + 28835840: 67108868, + 29884416: 67109124, + 30932992: 67174400, + 31981568: 4, + 33030144: 65792 + }, { + 0: 2151682048, + 65536: 2147487808, + 131072: 4198464, + 196608: 2151677952, + 262144: 0, + 327680: 4198400, + 393216: 2147483712, + 458752: 4194368, + 524288: 2147483648, + 589824: 4194304, + 655360: 64, + 720896: 2147487744, + 786432: 2151678016, + 851968: 4160, + 917504: 4096, + 983040: 2151682112, + 32768: 2147487808, + 98304: 64, + 163840: 2151678016, + 229376: 2147487744, + 294912: 4198400, + 360448: 2151682112, + 425984: 0, + 491520: 2151677952, + 557056: 4096, + 622592: 2151682048, + 688128: 4194304, + 753664: 4160, + 819200: 2147483648, + 884736: 4194368, + 950272: 4198464, + 1015808: 2147483712, + 1048576: 4194368, + 1114112: 4198400, + 1179648: 2147483712, + 1245184: 0, + 1310720: 4160, + 1376256: 2151678016, + 1441792: 2151682048, + 1507328: 2147487808, + 1572864: 2151682112, + 1638400: 2147483648, + 1703936: 2151677952, + 1769472: 4198464, + 1835008: 2147487744, + 1900544: 4194304, + 1966080: 64, + 2031616: 4096, + 1081344: 2151677952, + 1146880: 2151682112, + 1212416: 0, + 1277952: 4198400, + 1343488: 4194368, + 1409024: 2147483648, + 1474560: 2147487808, + 1540096: 64, + 1605632: 2147483712, + 1671168: 4096, + 1736704: 2147487744, + 1802240: 2151678016, + 1867776: 4160, + 1933312: 2151682048, + 1998848: 4194304, + 2064384: 4198464 + }, { + 0: 128, + 4096: 17039360, + 8192: 262144, + 12288: 536870912, + 16384: 537133184, + 20480: 16777344, + 24576: 553648256, + 28672: 262272, + 32768: 16777216, + 36864: 537133056, + 40960: 536871040, + 45056: 553910400, + 49152: 553910272, + 53248: 0, + 57344: 17039488, + 61440: 553648128, + 2048: 17039488, + 6144: 553648256, + 10240: 128, + 14336: 17039360, + 18432: 262144, + 22528: 537133184, + 26624: 553910272, + 30720: 536870912, + 34816: 537133056, + 38912: 0, + 43008: 553910400, + 47104: 16777344, + 51200: 536871040, + 55296: 553648128, + 59392: 16777216, + 63488: 262272, + 65536: 262144, + 69632: 128, + 73728: 536870912, + 77824: 553648256, + 81920: 16777344, + 86016: 553910272, + 90112: 537133184, + 94208: 16777216, + 98304: 553910400, + 102400: 553648128, + 106496: 17039360, + 110592: 537133056, + 114688: 262272, + 118784: 536871040, + 122880: 0, + 126976: 17039488, + 67584: 553648256, + 71680: 16777216, + 75776: 17039360, + 79872: 537133184, + 83968: 536870912, + 88064: 17039488, + 92160: 128, + 96256: 553910272, + 100352: 262272, + 104448: 553910400, + 108544: 0, + 112640: 553648128, + 116736: 16777344, + 120832: 262144, + 124928: 537133056, + 129024: 536871040 + }, { + 0: 268435464, + 256: 8192, + 512: 270532608, + 768: 270540808, + 1024: 268443648, + 1280: 2097152, + 1536: 2097160, + 1792: 268435456, + 2048: 0, + 2304: 268443656, + 2560: 2105344, + 2816: 8, + 3072: 270532616, + 3328: 2105352, + 3584: 8200, + 3840: 270540800, + 128: 270532608, + 384: 270540808, + 640: 8, + 896: 2097152, + 1152: 2105352, + 1408: 268435464, + 1664: 268443648, + 1920: 8200, + 2176: 2097160, + 2432: 8192, + 2688: 268443656, + 2944: 270532616, + 3200: 0, + 3456: 270540800, + 3712: 2105344, + 3968: 268435456, + 4096: 268443648, + 4352: 270532616, + 4608: 270540808, + 4864: 8200, + 5120: 2097152, + 5376: 268435456, + 5632: 268435464, + 5888: 2105344, + 6144: 2105352, + 6400: 0, + 6656: 8, + 6912: 270532608, + 7168: 8192, + 7424: 268443656, + 7680: 270540800, + 7936: 2097160, + 4224: 8, + 4480: 2105344, + 4736: 2097152, + 4992: 268435464, + 5248: 268443648, + 5504: 8200, + 5760: 270540808, + 6016: 270532608, + 6272: 270540800, + 6528: 270532616, + 6784: 8192, + 7040: 2105352, + 7296: 2097160, + 7552: 0, + 7808: 268435456, + 8064: 268443656 + }, { + 0: 1048576, + 16: 33555457, + 32: 1024, + 48: 1049601, + 64: 34604033, + 80: 0, + 96: 1, + 112: 34603009, + 128: 33555456, + 144: 1048577, + 160: 33554433, + 176: 34604032, + 192: 34603008, + 208: 1025, + 224: 1049600, + 240: 33554432, + 8: 34603009, + 24: 0, + 40: 33555457, + 56: 34604032, + 72: 1048576, + 88: 33554433, + 104: 33554432, + 120: 1025, + 136: 1049601, + 152: 33555456, + 168: 34603008, + 184: 1048577, + 200: 1024, + 216: 34604033, + 232: 1, + 248: 1049600, + 256: 33554432, + 272: 1048576, + 288: 33555457, + 304: 34603009, + 320: 1048577, + 336: 33555456, + 352: 34604032, + 368: 1049601, + 384: 1025, + 400: 34604033, + 416: 1049600, + 432: 1, + 448: 0, + 464: 34603008, + 480: 33554433, + 496: 1024, + 264: 1049600, + 280: 33555457, + 296: 34603009, + 312: 1, + 328: 33554432, + 344: 1048576, + 360: 1025, + 376: 34604032, + 392: 33554433, + 408: 34603008, + 424: 0, + 440: 34604033, + 456: 1049601, + 472: 1024, + 488: 33555456, + 504: 1048577 + }, { + 0: 134219808, + 1: 131072, + 2: 134217728, + 3: 32, + 4: 131104, + 5: 134350880, + 6: 134350848, + 7: 2048, + 8: 134348800, + 9: 134219776, + 10: 133120, + 11: 134348832, + 12: 2080, + 13: 0, + 14: 134217760, + 15: 133152, + 2147483648: 2048, + 2147483649: 134350880, + 2147483650: 134219808, + 2147483651: 134217728, + 2147483652: 134348800, + 2147483653: 133120, + 2147483654: 133152, + 2147483655: 32, + 2147483656: 134217760, + 2147483657: 2080, + 2147483658: 131104, + 2147483659: 134350848, + 2147483660: 0, + 2147483661: 134348832, + 2147483662: 134219776, + 2147483663: 131072, + 16: 133152, + 17: 134350848, + 18: 32, + 19: 2048, + 20: 134219776, + 21: 134217760, + 22: 134348832, + 23: 131072, + 24: 0, + 25: 131104, + 26: 134348800, + 27: 134219808, + 28: 134350880, + 29: 133120, + 30: 2080, + 31: 134217728, + 2147483664: 131072, + 2147483665: 2048, + 2147483666: 134348832, + 2147483667: 133152, + 2147483668: 32, + 2147483669: 134348800, + 2147483670: 134217728, + 2147483671: 134219808, + 2147483672: 134350880, + 2147483673: 134217760, + 2147483674: 134219776, + 2147483675: 0, + 2147483676: 133120, + 2147483677: 2080, + 2147483678: 131104, + 2147483679: 134350848 + }], + u = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], + d = a.DES = s.extend({ + _doReset: function _doReset() { + for (var t = this._key, r = t.words, e = [], i = 0; i < 56; i++) { + var n = c[i] - 1; + e[i] = r[n >>> 5] >>> 31 - n % 32 & 1; + } + for (var o = this._subKeys = [], s = 0; s < 16; s++) { + for (var a = o[s] = [], f = l[s], i = 0; i < 24; i++) a[i / 6 | 0] |= e[(h[i] - 1 + f) % 28] << 31 - i % 6, a[4 + (i / 6 | 0)] |= e[28 + (h[i + 24] - 1 + f) % 28] << 31 - i % 6; + a[0] = a[0] << 1 | a[0] >>> 31; + for (var i = 1; i < 7; i++) a[i] = a[i] >>> 4 * (i - 1) + 3; + a[7] = a[7] << 5 | a[7] >>> 27; + } + for (var u = this._invSubKeys = [], i = 0; i < 16; i++) u[i] = o[15 - i]; + }, + encryptBlock: function encryptBlock(t, r) { + this._doCryptBlock(t, r, this._subKeys); + }, + decryptBlock: function decryptBlock(t, r) { + this._doCryptBlock(t, r, this._invSubKeys); + }, + _doCryptBlock: function _doCryptBlock(t, i, n) { + this._lBlock = t[i], this._rBlock = t[i + 1], r.call(this, 4, 252645135), r.call(this, 16, 65535), e.call(this, 2, 858993459), e.call(this, 8, 16711935), r.call(this, 1, 1431655765); + for (var o = 0; o < 16; o++) { + for (var s = n[o], a = this._lBlock, c = this._rBlock, h = 0, l = 0; l < 8; l++) h |= f[l][((c ^ s[l]) & u[l]) >>> 0]; + this._lBlock = c, this._rBlock = a ^ h; + } + var d = this._lBlock; + this._lBlock = this._rBlock, this._rBlock = d, r.call(this, 1, 1431655765), e.call(this, 8, 16711935), e.call(this, 2, 858993459), r.call(this, 16, 65535), r.call(this, 4, 252645135), t[i] = this._lBlock, t[i + 1] = this._rBlock; + }, + keySize: 2, + ivSize: 2, + blockSize: 2 + }); + i.DES = s._createHelper(d); + var v = a.TripleDES = s.extend({ + _doReset: function _doReset() { + var t = this._key, + r = t.words; + this._des1 = d.createEncryptor(o.create(r.slice(0, 2))), this._des2 = d.createEncryptor(o.create(r.slice(2, 4))), this._des3 = d.createEncryptor(o.create(r.slice(4, 6))); + }, + encryptBlock: function encryptBlock(t, r) { + this._des1.encryptBlock(t, r), this._des2.decryptBlock(t, r), this._des3.encryptBlock(t, r); + }, + decryptBlock: function decryptBlock(t, r) { + this._des3.decryptBlock(t, r), this._des2.encryptBlock(t, r), this._des1.decryptBlock(t, r); + }, + keySize: 6, + ivSize: 2, + blockSize: 2 + }); + i.TripleDES = s._createHelper(v); + }(), function () { + function r() { + for (var t = this._S, r = this._i, e = this._j, i = 0, n = 0; n < 4; n++) { + r = (r + 1) % 256, e = (e + t[r]) % 256; + var o = t[r]; + t[r] = t[e], t[e] = o, i |= t[(t[r] + t[e]) % 256] << 24 - 8 * n; + } + return this._i = r, this._j = e, i; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = o.RC4 = n.extend({ + _doReset: function _doReset() { + for (var t = this._key, r = t.words, e = t.sigBytes, i = this._S = [], n = 0; n < 256; n++) i[n] = n; + for (var n = 0, o = 0; n < 256; n++) { + var s = n % e, + a = r[s >>> 2] >>> 24 - s % 4 * 8 & 255; + o = (o + i[n] + a) % 256; + var c = i[n]; + i[n] = i[o], i[o] = c; + } + this._i = this._j = 0; + }, + _doProcessBlock: function _doProcessBlock(t, e) { + t[e] ^= r.call(this); + }, + keySize: 8, + ivSize: 0 + }); + e.RC4 = n._createHelper(s); + var a = o.RC4Drop = s.extend({ + cfg: s.cfg.extend({ + drop: 192 + }), + _doReset: function _doReset() { + s._doReset.call(this); + for (var t = this.cfg.drop; t > 0; t--) r.call(this); + } + }); + e.RC4Drop = n._createHelper(a); + }(), t.mode.CTRGladman = function () { + function r(t) { + if (255 === (t >> 24 & 255)) { + var r = t >> 16 & 255, + e = t >> 8 & 255, + i = 255 & t; + 255 === r ? (r = 0, 255 === e ? (e = 0, 255 === i ? i = 0 : ++i) : ++e) : ++r, t = 0, t += r << 16, t += e << 8, t += i; + } else t += 1 << 24; + return t; + } + function e(t) { + return 0 === (t[0] = r(t[0])) && (t[1] = r(t[1])), t; + } + var i = t.lib.BlockCipherMode.extend(), + n = i.Encryptor = i.extend({ + processBlock: function processBlock(t, r) { + var i = this._cipher, + n = i.blockSize, + o = this._iv, + s = this._counter; + o && (s = this._counter = o.slice(0), this._iv = void 0), e(s); + var a = s.slice(0); + i.encryptBlock(a, 0); + for (var c = 0; c < n; c++) t[r + c] ^= a[c]; + } + }); + return i.Decryptor = n, i; + }(), function () { + function r() { + for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; + r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; + for (var e = 0; e < 8; e++) { + var i = t[e] + r[e], + n = 65535 & i, + o = i >>> 16, + s = ((n * n >>> 17) + n * o >>> 15) + o * o, + h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); + c[e] = s ^ h; + } + t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = [], + a = [], + c = [], + h = o.Rabbit = n.extend({ + _doReset: function _doReset() { + for (var t = this._key.words, e = this.cfg.iv, i = 0; i < 4; i++) t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8); + var n = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + this._b = 0; + for (var i = 0; i < 4; i++) r.call(this); + for (var i = 0; i < 8; i++) o[i] ^= n[i + 4 & 7]; + if (e) { + var s = e.words, + a = s[0], + c = s[1], + h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), + f = h >>> 16 | 4294901760 & l, + u = l << 16 | 65535 & h; + o[0] ^= h, o[1] ^= f, o[2] ^= l, o[3] ^= u, o[4] ^= h, o[5] ^= f, o[6] ^= l, o[7] ^= u; + for (var i = 0; i < 4; i++) r.call(this); + } + }, + _doProcessBlock: function _doProcessBlock(t, e) { + var i = this._X; + r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; + for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; + }, + blockSize: 4, + ivSize: 2 + }); + e.Rabbit = n._createHelper(h); + }(), t.mode.CTR = function () { + var r = t.lib.BlockCipherMode.extend(), + e = r.Encryptor = r.extend({ + processBlock: function processBlock(t, r) { + var e = this._cipher, + i = e.blockSize, + n = this._iv, + o = this._counter; + n && (o = this._counter = n.slice(0), this._iv = void 0); + var s = o.slice(0); + e.encryptBlock(s, 0), o[i - 1] = o[i - 1] + 1 | 0; + for (var a = 0; a < i; a++) t[r + a] ^= s[a]; + } + }); + return r.Decryptor = e, r; + }(), function () { + function r() { + for (var t = this._X, r = this._C, e = 0; e < 8; e++) a[e] = r[e]; + r[0] = r[0] + 1295307597 + this._b | 0, r[1] = r[1] + 3545052371 + (r[0] >>> 0 < a[0] >>> 0 ? 1 : 0) | 0, r[2] = r[2] + 886263092 + (r[1] >>> 0 < a[1] >>> 0 ? 1 : 0) | 0, r[3] = r[3] + 1295307597 + (r[2] >>> 0 < a[2] >>> 0 ? 1 : 0) | 0, r[4] = r[4] + 3545052371 + (r[3] >>> 0 < a[3] >>> 0 ? 1 : 0) | 0, r[5] = r[5] + 886263092 + (r[4] >>> 0 < a[4] >>> 0 ? 1 : 0) | 0, r[6] = r[6] + 1295307597 + (r[5] >>> 0 < a[5] >>> 0 ? 1 : 0) | 0, r[7] = r[7] + 3545052371 + (r[6] >>> 0 < a[6] >>> 0 ? 1 : 0) | 0, this._b = r[7] >>> 0 < a[7] >>> 0 ? 1 : 0; + for (var e = 0; e < 8; e++) { + var i = t[e] + r[e], + n = 65535 & i, + o = i >>> 16, + s = ((n * n >>> 17) + n * o >>> 15) + o * o, + h = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0); + c[e] = s ^ h; + } + t[0] = c[0] + (c[7] << 16 | c[7] >>> 16) + (c[6] << 16 | c[6] >>> 16) | 0, t[1] = c[1] + (c[0] << 8 | c[0] >>> 24) + c[7] | 0, t[2] = c[2] + (c[1] << 16 | c[1] >>> 16) + (c[0] << 16 | c[0] >>> 16) | 0, t[3] = c[3] + (c[2] << 8 | c[2] >>> 24) + c[1] | 0, t[4] = c[4] + (c[3] << 16 | c[3] >>> 16) + (c[2] << 16 | c[2] >>> 16) | 0, t[5] = c[5] + (c[4] << 8 | c[4] >>> 24) + c[3] | 0, t[6] = c[6] + (c[5] << 16 | c[5] >>> 16) + (c[4] << 16 | c[4] >>> 16) | 0, t[7] = c[7] + (c[6] << 8 | c[6] >>> 24) + c[5] | 0; + } + var e = t, + i = e.lib, + n = i.StreamCipher, + o = e.algo, + s = [], + a = [], + c = [], + h = o.RabbitLegacy = n.extend({ + _doReset: function _doReset() { + var t = this._key.words, + e = this.cfg.iv, + i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16], + n = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]]; + this._b = 0; + for (var o = 0; o < 4; o++) r.call(this); + for (var o = 0; o < 8; o++) n[o] ^= i[o + 4 & 7]; + if (e) { + var s = e.words, + a = s[0], + c = s[1], + h = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8), + l = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8), + f = h >>> 16 | 4294901760 & l, + u = l << 16 | 65535 & h; + n[0] ^= h, n[1] ^= f, n[2] ^= l, n[3] ^= u, n[4] ^= h, n[5] ^= f, n[6] ^= l, n[7] ^= u; + for (var o = 0; o < 4; o++) r.call(this); + } + }, + _doProcessBlock: function _doProcessBlock(t, e) { + var i = this._X; + r.call(this), s[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16, s[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16, s[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16, s[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16; + for (var n = 0; n < 4; n++) s[n] = 16711935 & (s[n] << 8 | s[n] >>> 24) | 4278255360 & (s[n] << 24 | s[n] >>> 8), t[e + n] ^= s[n]; + }, + blockSize: 4, + ivSize: 2 + }); + e.RabbitLegacy = n._createHelper(h); + }(), t.pad.ZeroPadding = { + pad: function pad(t, r) { + var e = 4 * r; + t.clamp(), t.sigBytes += e - (t.sigBytes % e || e); + }, + unpad: function unpad(t) { + for (var r = t.words, e = t.sigBytes - 1; !(r[e >>> 2] >>> 24 - e % 4 * 8 & 255);) e--; + t.sigBytes = e + 1; + } + }, t; +}); + cc._RF.pop(); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0c1xcU2NyaXB0XFxtb2R1bGVcXENyeXB0b1xcY3J5cHRvLWpzLm1pbi5qcyJdLCJuYW1lcyI6WyJ0IiwiciIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJDcnlwdG9KUyIsImUiLCJPYmplY3QiLCJjcmVhdGUiLCJwcm90b3R5cGUiLCJpIiwibiIsImxpYiIsIm8iLCJCYXNlIiwiZXh0ZW5kIiwibWl4SW4iLCJoYXNPd25Qcm9wZXJ0eSIsImluaXQiLCIkc3VwZXIiLCJhcHBseSIsImFyZ3VtZW50cyIsInRvU3RyaW5nIiwiY2xvbmUiLCJzIiwiV29yZEFycmF5Iiwid29yZHMiLCJzaWdCeXRlcyIsImxlbmd0aCIsImMiLCJzdHJpbmdpZnkiLCJjb25jYXQiLCJjbGFtcCIsImNlaWwiLCJjYWxsIiwic2xpY2UiLCJyYW5kb20iLCJhIiwicHVzaCIsImVuYyIsIkhleCIsImpvaW4iLCJwYXJzZSIsInBhcnNlSW50Iiwic3Vic3RyIiwiaCIsIkxhdGluMSIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsImNoYXJDb2RlQXQiLCJsIiwiVXRmOCIsImRlY29kZVVSSUNvbXBvbmVudCIsImVzY2FwZSIsIkVycm9yIiwidW5lc2NhcGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJmIiwiQnVmZmVyZWRCbG9ja0FsZ29yaXRobSIsInJlc2V0IiwiX2RhdGEiLCJfbkRhdGFCeXRlcyIsIl9hcHBlbmQiLCJfcHJvY2VzcyIsImJsb2NrU2l6ZSIsIm1heCIsIl9taW5CdWZmZXJTaXplIiwibWluIiwiX2RvUHJvY2Vzc0Jsb2NrIiwidSIsInNwbGljZSIsIkhhc2hlciIsImNmZyIsIl9kb1Jlc2V0IiwidXBkYXRlIiwiZmluYWxpemUiLCJfZG9GaW5hbGl6ZSIsIl9jcmVhdGVIZWxwZXIiLCJfY3JlYXRlSG1hY0hlbHBlciIsIkhNQUMiLCJhbGdvIiwiTWF0aCIsIkJhc2U2NCIsIl9tYXAiLCJjaGFyQXQiLCJfcmV2ZXJzZU1hcCIsImluZGV4T2YiLCJhYnMiLCJzaW4iLCJNRDUiLCJfaGFzaCIsImQiLCJ2IiwicCIsIl8iLCJ5IiwiZyIsIkIiLCJ3IiwiayIsIlMiLCJtIiwieCIsImIiLCJIIiwieiIsIkEiLCJDIiwiRCIsImZsb29yIiwiSG1hY01ENSIsIlNIQTEiLCJIbWFjU0hBMSIsInNxcnQiLCJwb3ciLCJTSEEyNTYiLCJIbWFjU0hBMjU2IiwiVXRmMTYiLCJVdGYxNkJFIiwiVXRmMTZMRSIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkludDhBcnJheSIsIlVpbnQ4Q2xhbXBlZEFycmF5IiwiSW50MTZBcnJheSIsIlVpbnQxNkFycmF5IiwiSW50MzJBcnJheSIsIlVpbnQzMkFycmF5IiwiRmxvYXQzMkFycmF5IiwiRmxvYXQ2NEFycmF5IiwiYnVmZmVyIiwiYnl0ZU9mZnNldCIsImJ5dGVMZW5ndGgiLCJSSVBFTUQxNjAiLCJSIiwiRSIsIk0iLCJGIiwiSG1hY1JJUEVNRDE2MCIsIl9oYXNoZXIiLCJfb0tleSIsIl9pS2V5IiwiUEJLREYyIiwia2V5U2l6ZSIsImhhc2hlciIsIml0ZXJhdGlvbnMiLCJjb21wdXRlIiwiRXZwS0RGIiwiU0hBMjI0IiwiSG1hY1NIQTIyNCIsIng2NCIsIldvcmQiLCJoaWdoIiwibG93IiwidG9YMzIiLCJTSEEzIiwib3V0cHV0TGVuZ3RoIiwiX3N0YXRlIiwiSG1hY1NIQTMiLCJTSEE1MTIiLCJQIiwiVyIsIk8iLCJVIiwiSSIsIksiLCJYIiwiTCIsImoiLCJOIiwiVCIsIloiLCJxIiwiRyIsIkoiLCIkIiwiUSIsIlYiLCJZIiwidHQiLCJydCIsImV0IiwiaXQiLCJudCIsIm90Iiwic3QiLCJhdCIsImN0IiwiaHQiLCJsdCIsImZ0IiwidXQiLCJkdCIsInZ0IiwicHQiLCJfdCIsInl0IiwiZ3QiLCJCdCIsInd0Iiwia3QiLCJTdCIsIm10IiwieHQiLCJidCIsIkhtYWNTSEE1MTIiLCJTSEEzODQiLCJIbWFjU0hBMzg0IiwiQ2lwaGVyIiwiY3JlYXRlRW5jcnlwdG9yIiwiX0VOQ19YRk9STV9NT0RFIiwiY3JlYXRlRGVjcnlwdG9yIiwiX0RFQ19YRk9STV9NT0RFIiwiX3hmb3JtTW9kZSIsIl9rZXkiLCJwcm9jZXNzIiwiaXZTaXplIiwiZW5jcnlwdCIsImRlY3J5cHQiLCJTdHJlYW1DaXBoZXIiLCJtb2RlIiwiQmxvY2tDaXBoZXJNb2RlIiwiRW5jcnlwdG9yIiwiRGVjcnlwdG9yIiwiX2NpcGhlciIsIl9pdiIsIkNCQyIsIl9wcmV2QmxvY2siLCJwcm9jZXNzQmxvY2siLCJlbmNyeXB0QmxvY2siLCJkZWNyeXB0QmxvY2siLCJwYWQiLCJQa2NzNyIsInVucGFkIiwiQmxvY2tDaXBoZXIiLCJwYWRkaW5nIiwiaXYiLCJfbW9kZSIsIl9fY3JlYXRvciIsIkNpcGhlclBhcmFtcyIsImZvcm1hdHRlciIsImZvcm1hdCIsIk9wZW5TU0wiLCJjaXBoZXJ0ZXh0Iiwic2FsdCIsIlNlcmlhbGl6YWJsZUNpcGhlciIsImtleSIsImFsZ29yaXRobSIsIl9wYXJzZSIsImtkZiIsImV4ZWN1dGUiLCJQYXNzd29yZEJhc2VkQ2lwaGVyIiwiQ0ZCIiwiRUNCIiwiQW5zaVg5MjMiLCJJc28xMDEyNiIsIklzbzk3OTcxIiwiWmVyb1BhZGRpbmciLCJPRkIiLCJfa2V5c3RyZWFtIiwiTm9QYWRkaW5nIiwiQUVTIiwiX25Sb3VuZHMiLCJfa2V5UHJpb3JSZXNldCIsIl9rZXlTY2hlZHVsZSIsIl9pbnZLZXlTY2hlZHVsZSIsIl9kb0NyeXB0QmxvY2siLCJfbEJsb2NrIiwiX3JCbG9jayIsIkRFUyIsIl9zdWJLZXlzIiwiX2ludlN1YktleXMiLCJUcmlwbGVERVMiLCJfZGVzMSIsIl9kZXMyIiwiX2RlczMiLCJfUyIsIl9pIiwiX2oiLCJSQzQiLCJSQzREcm9wIiwiZHJvcCIsIkNUUkdsYWRtYW4iLCJfY291bnRlciIsIl9YIiwiX0MiLCJfYiIsIlJhYmJpdCIsIkNUUiIsIlJhYmJpdExlZ2FjeSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsQ0FBQyxVQUFTQSxDQUFDLEVBQUNDLENBQUMsRUFBQztFQUFDLFFBQVEsSUFBRSxP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Q2hCLENBQUMsQ0FBQ2pCLEdBQUc7TUFBQ3NDLENBQUMsR0FBQ0wsQ0FBQyxDQUFDcEIsU0FBUztNQUFDZ0MsQ0FBQyxHQUFDWixDQUFDLENBQUMwQixNQUFNO01BQUNGLENBQUMsR0FBQ3hDLENBQUMsQ0FBQ21ELElBQUk7TUFBQ1csQ0FBQyxHQUFDekMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUNvRixDQUFDLEdBQUMxQyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUM7TUFBQ3FGLENBQUMsR0FBQzNDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztNQUFDc0YsQ0FBQyxHQUFDNUMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsQ0FBQyxDQUFDO01BQUN1RixDQUFDLEdBQUM3QyxDQUFDLENBQUMxQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLENBQUM7TUFBQ3dGLENBQUMsR0FBQzlDLENBQUMsQ0FBQzFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxDQUFDLENBQUMsQ0FBQztNQUFDeUYsQ0FBQyxHQUFDNUIsQ0FBQyxDQUFDZ0UsU0FBUyxHQUFDNUUsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsSUFBSSxDQUFDaUIsS0FBSyxHQUFDeEMsQ0FBQyxDQUFDMUMsTUFBTSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQUEsQ0FBQztRQUFDNEQsZUFBZSxFQUFDLFNBQUFBLGdCQUFTckUsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7VUFBQyxLQUFJLElBQUk2QixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUlnQixDQUFDLEdBQUM3QyxDQUFDLEdBQUM2QixDQUFDO2NBQUNxQixDQUFDLEdBQUNuRCxDQUFDLENBQUM4QyxDQUFDLENBQUM7WUFBQzlDLENBQUMsQ0FBQzhDLENBQUMsQ0FBQyxHQUFDLFFBQVEsSUFBRUssQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsQ0FBQztVQUFBO1VBQUMsSUFBSU8sQ0FBQztZQUFDWSxDQUFDO1lBQUM0QixDQUFDO1lBQUNDLENBQUM7WUFBQ0MsQ0FBQztZQUFDQyxDQUFDO1lBQUNDLENBQUM7WUFBQ0MsQ0FBQztZQUFDQyxDQUFDO1lBQUNDLENBQUM7WUFBQ0MsQ0FBQyxHQUFDLElBQUksQ0FBQ2YsS0FBSyxDQUFDaEUsS0FBSztZQUFDZ0YsQ0FBQyxHQUFDWCxDQUFDLENBQUNyRSxLQUFLO1lBQUNpRixDQUFDLEdBQUNYLENBQUMsQ0FBQ3RFLEtBQUs7WUFBQ2tGLENBQUMsR0FBQ2pCLENBQUMsQ0FBQ2pFLEtBQUs7WUFBQzRHLENBQUMsR0FBQzFDLENBQUMsQ0FBQ2xFLEtBQUs7WUFBQzZHLENBQUMsR0FBQzFDLENBQUMsQ0FBQ25FLEtBQUs7WUFBQzhHLENBQUMsR0FBQzFDLENBQUMsQ0FBQ3BFLEtBQUs7VUFBQzBFLENBQUMsR0FBQzNDLENBQUMsR0FBQ2dELENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0osQ0FBQyxHQUFDaEMsQ0FBQyxHQUFDb0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDSCxDQUFDLEdBQUNMLENBQUMsR0FBQ1EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDRixDQUFDLEdBQUNMLENBQUMsR0FBQ08sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDRCxDQUFDLEdBQUNMLENBQUMsR0FBQ00sQ0FBQyxDQUFDLENBQUMsQ0FBQztVQUFDLEtBQUksSUFBSWdDLENBQUMsRUFBQzVHLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsSUFBRSxDQUFDLEVBQUM0RyxDQUFDLEdBQUNoRixDQUFDLEdBQUMxRCxDQUFDLENBQUNDLENBQUMsR0FBQzRHLENBQUMsQ0FBQy9FLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDNEcsQ0FBQyxJQUFFNUcsQ0FBQyxHQUFDLEVBQUUsR0FBQ3ZCLENBQUMsQ0FBQytELENBQUMsRUFBQzRCLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzdFLENBQUMsR0FBQyxFQUFFLEdBQUNuQixDQUFDLENBQUMyRCxDQUFDLEVBQUM0QixDQUFDLEVBQUNDLENBQUMsQ0FBQyxHQUFDUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM3RSxDQUFDLEdBQUMsRUFBRSxHQUFDbEIsQ0FBQyxDQUFDMEQsQ0FBQyxFQUFDNEIsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ1EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDN0UsQ0FBQyxHQUFDLEVBQUUsR0FBQ2hCLENBQUMsQ0FBQ3dELENBQUMsRUFBQzRCLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNRLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2xGLENBQUMsQ0FBQzZDLENBQUMsRUFBQzRCLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQytCLENBQUMsSUFBRSxDQUFDLEVBQUNBLENBQUMsR0FBQ3BHLENBQUMsQ0FBQ29HLENBQUMsRUFBQ0YsQ0FBQyxDQUFDMUcsQ0FBQyxDQUFDLENBQUMsRUFBQzRHLENBQUMsR0FBQ0EsQ0FBQyxHQUFDdEMsQ0FBQyxHQUFDLENBQUMsRUFBQzFDLENBQUMsR0FBQzBDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRCxDQUFDLEVBQUNBLENBQUMsR0FBQzdELENBQUMsQ0FBQzRELENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQ0EsQ0FBQyxHQUFDNUIsQ0FBQyxFQUFDQSxDQUFDLEdBQUNvRSxDQUFDLEVBQUNBLENBQUMsR0FBQ3JDLENBQUMsR0FBQ3JHLENBQUMsQ0FBQ0MsQ0FBQyxHQUFDc0ksQ0FBQyxDQUFDekcsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM0RyxDQUFDLElBQUU1RyxDQUFDLEdBQUMsRUFBRSxHQUFDTCxDQUFDLENBQUM2RSxDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzlFLENBQUMsR0FBQyxFQUFFLEdBQUNoQixDQUFDLENBQUN3RixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzlFLENBQUMsR0FBQyxFQUFFLEdBQUNsQixDQUFDLENBQUMwRixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzlFLENBQUMsR0FBQyxFQUFFLEdBQUNuQixDQUFDLENBQUMyRixDQUFDLEVBQUNDLENBQUMsRUFBQ0MsQ0FBQyxDQUFDLEdBQUNJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ3JHLENBQUMsQ0FBQytGLENBQUMsRUFBQ0MsQ0FBQyxFQUFDQyxDQUFDLENBQUMsR0FBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDOEIsQ0FBQyxJQUFFLENBQUMsRUFBQ0EsQ0FBQyxHQUFDcEcsQ0FBQyxDQUFDb0csQ0FBQyxFQUFDRCxDQUFDLENBQUMzRyxDQUFDLENBQUMsQ0FBQyxFQUFDNEcsQ0FBQyxHQUFDQSxDQUFDLEdBQUNqQyxDQUFDLEdBQUMsQ0FBQyxFQUFDSixDQUFDLEdBQUNJLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRCxDQUFDLEVBQUNBLENBQUMsR0FBQ2xFLENBQUMsQ0FBQ2lFLENBQUMsRUFBQyxFQUFFLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRCxDQUFDLEVBQUNBLENBQUMsR0FBQ29DLENBQUM7VUFBQ0EsQ0FBQyxHQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDUixDQUFDLEdBQUNNLENBQUMsR0FBQyxDQUFDLEVBQUNFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDUCxDQUFDLEdBQUNNLENBQUMsR0FBQyxDQUFDLEVBQUNDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDTixDQUFDLEdBQUNDLENBQUMsR0FBQyxDQUFDLEVBQUNLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDaEQsQ0FBQyxHQUFDNEMsQ0FBQyxHQUFDLENBQUMsRUFBQ0ksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNwQyxDQUFDLEdBQUNpQyxDQUFDLEdBQUMsQ0FBQyxFQUFDRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNnQyxDQUFDO1FBQUEsQ0FBQztRQUFDN0QsV0FBVyxFQUFDLFNBQUFBLFlBQUEsRUFBVTtVQUFDLElBQUk3RSxDQUFDLEdBQUMsSUFBSSxDQUFDNkQsS0FBSztZQUFDNUQsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFLO1lBQUNwQixDQUFDLEdBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQ3VELFdBQVc7WUFBQ25ELENBQUMsR0FBQyxDQUFDLEdBQUNYLENBQUMsQ0FBQzRCLFFBQVE7VUFBQzNCLENBQUMsQ0FBQ1UsQ0FBQyxLQUFHLENBQUMsQ0FBQyxJQUFFLEdBQUcsSUFBRSxFQUFFLEdBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNWLENBQUMsQ0FBQyxDQUFDVSxDQUFDLEdBQUMsRUFBRSxLQUFHLENBQUMsSUFBRSxDQUFDLElBQUUsRUFBRSxDQUFDLEdBQUMsUUFBUSxJQUFFSixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDLEVBQUNQLENBQUMsQ0FBQzRCLFFBQVEsR0FBQyxDQUFDLElBQUUzQixDQUFDLENBQUM0QixNQUFNLEdBQUMsQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDbUMsUUFBUSxFQUFFO1VBQUMsS0FBSSxJQUFJcEQsQ0FBQyxHQUFDLElBQUksQ0FBQytFLEtBQUssRUFBQzdFLENBQUMsR0FBQ0YsQ0FBQyxDQUFDZSxLQUFLLEVBQUNGLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsSUFBSWEsQ0FBQyxHQUFDeEIsQ0FBQyxDQUFDVyxDQUFDLENBQUM7WUFBQ1gsQ0FBQyxDQUFDVyxDQUFDLENBQUMsR0FBQyxRQUFRLElBQUVhLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUM7VUFBQTtVQUFDLE9BQU8xQixDQUFDO1FBQUEsQ0FBQztRQUFDWSxLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVO1VBQUMsSUFBSXhCLENBQUMsR0FBQzBELENBQUMsQ0FBQ2xDLEtBQUssQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQztVQUFDLE9BQU9uQyxDQUFDLENBQUMyRixLQUFLLEdBQUMsSUFBSSxDQUFDQSxLQUFLLENBQUNuRSxLQUFLLEVBQUUsRUFBQ3hCLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDOEIsQ0FBQyxDQUFDd0csU0FBUyxHQUFDNUUsQ0FBQyxDQUFDb0IsYUFBYSxDQUFDb0IsQ0FBQyxDQUFDLEVBQUNwRSxDQUFDLENBQUM2RyxhQUFhLEdBQUNqRixDQUFDLENBQUNxQixpQkFBaUIsQ0FBQ21CLENBQUMsQ0FBQztFQUFBLENBQUMsQ0FBQ2hCLElBQUksQ0FBQyxFQUFDLFlBQVU7SUFBQyxJQUFJakYsQ0FBQyxHQUFDRCxDQUFDO01BQUNPLENBQUMsR0FBQ04sQ0FBQyxDQUFDWSxHQUFHO01BQUNGLENBQUMsR0FBQ0osQ0FBQyxDQUFDUSxJQUFJO01BQUNILENBQUMsR0FBQ1gsQ0FBQyxDQUFDdUMsR0FBRztNQUFDMUIsQ0FBQyxHQUFDRixDQUFDLENBQUN3QyxJQUFJO01BQUMzQixDQUFDLEdBQUN4QixDQUFDLENBQUNnRixJQUFJO0lBQUN4RCxDQUFDLENBQUN1RCxJQUFJLEdBQUNyRSxDQUFDLENBQUNLLE1BQU0sQ0FBQztNQUFDRyxJQUFJLEVBQUMsU0FBQUEsS0FBU25CLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1FBQUNELENBQUMsR0FBQyxJQUFJLENBQUM0SSxPQUFPLEdBQUMsSUFBSTVJLENBQUMsQ0FBQ21CLElBQUksSUFBQyxRQUFRLElBQUUsT0FBT2xCLENBQUMsS0FBR0EsQ0FBQyxHQUFDYSxDQUFDLENBQUM2QixLQUFLLENBQUMxQyxDQUFDLENBQUMsQ0FBQztRQUFDLElBQUlNLENBQUMsR0FBQ1AsQ0FBQyxDQUFDaUUsU0FBUztVQUFDdEQsQ0FBQyxHQUFDLENBQUMsR0FBQ0osQ0FBQztRQUFDTixDQUFDLENBQUMyQixRQUFRLEdBQUNqQixDQUFDLEtBQUdWLENBQUMsR0FBQ0QsQ0FBQyxDQUFDNEUsUUFBUSxDQUFDM0UsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDZ0MsS0FBSyxFQUFFO1FBQUMsS0FBSSxJQUFJckIsQ0FBQyxHQUFDLElBQUksQ0FBQ2lJLEtBQUssR0FBQzVJLENBQUMsQ0FBQ3VCLEtBQUssRUFBRSxFQUFDQyxDQUFDLEdBQUMsSUFBSSxDQUFDcUgsS0FBSyxHQUFDN0ksQ0FBQyxDQUFDdUIsS0FBSyxFQUFFLEVBQUNjLENBQUMsR0FBQzFCLENBQUMsQ0FBQ2UsS0FBSyxFQUFDRyxDQUFDLEdBQUNMLENBQUMsQ0FBQ0UsS0FBSyxFQUFDbUIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDdkMsQ0FBQyxFQUFDdUMsQ0FBQyxFQUFFLEVBQUNSLENBQUMsQ0FBQ1EsQ0FBQyxDQUFDLElBQUUsVUFBVSxFQUFDaEIsQ0FBQyxDQUFDZ0IsQ0FBQyxDQUFDLElBQUUsU0FBUztRQUFDbEMsQ0FBQyxDQUFDZ0IsUUFBUSxHQUFDSCxDQUFDLENBQUNHLFFBQVEsR0FBQ2pCLENBQUMsRUFBQyxJQUFJLENBQUNpRCxLQUFLLEVBQUU7TUFBQSxDQUFDO01BQUNBLEtBQUssRUFBQyxTQUFBQSxNQUFBLEVBQVU7UUFBQyxJQUFJNUQsQ0FBQyxHQUFDLElBQUksQ0FBQzRJLE9BQU87UUFBQzVJLENBQUMsQ0FBQzRELEtBQUssRUFBRSxFQUFDNUQsQ0FBQyxDQUFDMkUsTUFBTSxDQUFDLElBQUksQ0FBQ21FLEtBQUssQ0FBQztNQUFBLENBQUM7TUFBQ25FLE1BQU0sRUFBQyxTQUFBQSxPQUFTM0UsQ0FBQyxFQUFDO1FBQUMsT0FBTyxJQUFJLENBQUM0SSxPQUFPLENBQUNqRSxNQUFNLENBQUMzRSxDQUFDLENBQUMsRUFBQyxJQUFJO01BQUEsQ0FBQztNQUFDNEUsUUFBUSxFQUFDLFNBQUFBLFNBQVM1RSxDQUFDLEVBQUM7UUFBQyxJQUFJQyxDQUFDLEdBQUMsSUFBSSxDQUFDMkksT0FBTztVQUFDckksQ0FBQyxHQUFDTixDQUFDLENBQUMyRSxRQUFRLENBQUM1RSxDQUFDLENBQUM7UUFBQ0MsQ0FBQyxDQUFDMkQsS0FBSyxFQUFFO1FBQUMsSUFBSWpELENBQUMsR0FBQ1YsQ0FBQyxDQUFDMkUsUUFBUSxDQUFDLElBQUksQ0FBQ2lFLEtBQUssQ0FBQ3JILEtBQUssRUFBRSxDQUFDUSxNQUFNLENBQUN6QixDQUFDLENBQUMsQ0FBQztRQUFDLE9BQU9JLENBQUM7TUFBQTtJQUFDLENBQUMsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxJQUFJVixDQUFDLEdBQUNELENBQUM7TUFBQ08sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQUc7TUFBQ0YsQ0FBQyxHQUFDSixDQUFDLENBQUNRLElBQUk7TUFBQ0gsQ0FBQyxHQUFDTCxDQUFDLENBQUNtQixTQUFTO01BQUNaLENBQUMsR0FBQ2IsQ0FBQyxDQUFDZ0YsSUFBSTtNQUFDeEQsQ0FBQyxHQUFDWCxDQUFDLENBQUNrRyxJQUFJO01BQUMxRSxDQUFDLEdBQUN4QixDQUFDLENBQUNrRSxJQUFJO01BQUNsRCxDQUFDLEdBQUNoQixDQUFDLENBQUNpSSxNQUFNLEdBQUNwSSxDQUFDLENBQUNLLE1BQU0sQ0FBQztRQUFDeUQsR0FBRyxFQUFDOUQsQ0FBQyxDQUFDSyxNQUFNLENBQUM7VUFBQ2dJLE9BQU8sRUFBQyxDQUFDO1VBQUNDLE1BQU0sRUFBQ3hILENBQUM7VUFBQ3lILFVBQVUsRUFBQztRQUFDLENBQUMsQ0FBQztRQUFDL0gsSUFBSSxFQUFDLFNBQUFBLEtBQVNuQixDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUN5RSxHQUFHLEdBQUMsSUFBSSxDQUFDQSxHQUFHLENBQUN6RCxNQUFNLENBQUNoQixDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUNtSixPQUFPLEVBQUMsU0FBQUEsUUFBU25KLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsS0FBSSxJQUFJTSxDQUFDLEdBQUMsSUFBSSxDQUFDa0UsR0FBRyxFQUFDOUQsQ0FBQyxHQUFDMkIsQ0FBQyxDQUFDN0IsTUFBTSxDQUFDRixDQUFDLENBQUMwSSxNQUFNLEVBQUNqSixDQUFDLENBQUMsRUFBQ2MsQ0FBQyxHQUFDRixDQUFDLENBQUNILE1BQU0sRUFBRSxFQUFDZ0IsQ0FBQyxHQUFDYixDQUFDLENBQUNILE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNxQixDQUFDLEdBQUNoQixDQUFDLENBQUNhLEtBQUssRUFBQ21CLENBQUMsR0FBQ3JCLENBQUMsQ0FBQ0UsS0FBSyxFQUFDd0IsQ0FBQyxHQUFDNUMsQ0FBQyxDQUFDeUksT0FBTyxFQUFDdEYsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDMkksVUFBVSxFQUFDcEgsQ0FBQyxDQUFDRCxNQUFNLEdBQUNzQixDQUFDLEdBQUU7WUFBQyxJQUFJbUIsQ0FBQyxHQUFDM0QsQ0FBQyxDQUFDZ0UsTUFBTSxDQUFDMUUsQ0FBQyxDQUFDLENBQUMyRSxRQUFRLENBQUNuRCxDQUFDLENBQUM7WUFBQ2QsQ0FBQyxDQUFDaUQsS0FBSyxFQUFFO1lBQUMsS0FBSSxJQUFJZ0MsQ0FBQyxHQUFDdEIsQ0FBQyxDQUFDM0MsS0FBSyxFQUFDa0UsQ0FBQyxHQUFDRCxDQUFDLENBQUMvRCxNQUFNLEVBQUNpRSxDQUFDLEdBQUN4QixDQUFDLEVBQUN5QixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUNyQyxDQUFDLEVBQUNxQyxDQUFDLEVBQUUsRUFBQztjQUFDRCxDQUFDLEdBQUNuRixDQUFDLENBQUNpRSxRQUFRLENBQUNrQixDQUFDLENBQUMsRUFBQ25GLENBQUMsQ0FBQ2lELEtBQUssRUFBRTtjQUFDLEtBQUksSUFBSW9DLENBQUMsR0FBQ0YsQ0FBQyxDQUFDbkUsS0FBSyxFQUFDc0UsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDSixDQUFDLEVBQUNJLENBQUMsRUFBRSxFQUFDTCxDQUFDLENBQUNLLENBQUMsQ0FBQyxJQUFFRCxDQUFDLENBQUNDLENBQUMsQ0FBQztZQUFBO1lBQUNuRixDQUFDLENBQUNrQixNQUFNLENBQUNzQyxDQUFDLENBQUMsRUFBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtVQUFBO1VBQUMsT0FBT2hDLENBQUMsQ0FBQ2MsUUFBUSxHQUFDLENBQUMsR0FBQ3VCLENBQUMsRUFBQ3JDLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDYixDQUFDLENBQUM4SSxNQUFNLEdBQUMsVUFBUy9JLENBQUMsRUFBQ0MsQ0FBQyxFQUFDTSxDQUFDLEVBQUM7TUFBQyxPQUFPdUIsQ0FBQyxDQUFDckIsTUFBTSxDQUFDRixDQUFDLENBQUMsQ0FBQzRJLE9BQU8sQ0FBQ25KLENBQUMsRUFBQ0MsQ0FBQyxDQUFDO0lBQUEsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxJQUFJQSxDQUFDLEdBQUNELENBQUM7TUFBQ08sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQUc7TUFBQ0YsQ0FBQyxHQUFDSixDQUFDLENBQUNRLElBQUk7TUFBQ0gsQ0FBQyxHQUFDTCxDQUFDLENBQUNtQixTQUFTO01BQUNaLENBQUMsR0FBQ2IsQ0FBQyxDQUFDZ0YsSUFBSTtNQUFDeEQsQ0FBQyxHQUFDWCxDQUFDLENBQUM0RSxHQUFHO01BQUNwRCxDQUFDLEdBQUN4QixDQUFDLENBQUNzSSxNQUFNLEdBQUN6SSxDQUFDLENBQUNLLE1BQU0sQ0FBQztRQUFDeUQsR0FBRyxFQUFDOUQsQ0FBQyxDQUFDSyxNQUFNLENBQUM7VUFBQ2dJLE9BQU8sRUFBQyxDQUFDO1VBQUNDLE1BQU0sRUFBQ3hILENBQUM7VUFBQ3lILFVBQVUsRUFBQztRQUFDLENBQUMsQ0FBQztRQUFDL0gsSUFBSSxFQUFDLFNBQUFBLEtBQVNuQixDQUFDLEVBQUM7VUFBQyxJQUFJLENBQUN5RSxHQUFHLEdBQUMsSUFBSSxDQUFDQSxHQUFHLENBQUN6RCxNQUFNLENBQUNoQixDQUFDLENBQUM7UUFBQSxDQUFDO1FBQUNtSixPQUFPLEVBQUMsU0FBQUEsUUFBU25KLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO1VBQUMsS0FBSSxJQUFJTSxDQUFDLEdBQUMsSUFBSSxDQUFDa0UsR0FBRyxFQUFDOUQsQ0FBQyxHQUFDSixDQUFDLENBQUMwSSxNQUFNLENBQUN4SSxNQUFNLEVBQUUsRUFBQ0ssQ0FBQyxHQUFDRixDQUFDLENBQUNILE1BQU0sRUFBRSxFQUFDZ0IsQ0FBQyxHQUFDWCxDQUFDLENBQUNhLEtBQUssRUFBQ1csQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDeUksT0FBTyxFQUFDbEgsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDMkksVUFBVSxFQUFDekgsQ0FBQyxDQUFDSSxNQUFNLEdBQUNTLENBQUMsR0FBRTtZQUFDUSxDQUFDLElBQUVuQyxDQUFDLENBQUNnRSxNQUFNLENBQUM3QixDQUFDLENBQUM7WUFBQyxJQUFJQSxDQUFDLEdBQUNuQyxDQUFDLENBQUNnRSxNQUFNLENBQUMzRSxDQUFDLENBQUMsQ0FBQzRFLFFBQVEsQ0FBQzNFLENBQUMsQ0FBQztZQUFDVSxDQUFDLENBQUNpRCxLQUFLLEVBQUU7WUFBQyxLQUFJLElBQUlULENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ3JCLENBQUMsRUFBQ3FCLENBQUMsRUFBRSxFQUFDTCxDQUFDLEdBQUNuQyxDQUFDLENBQUNpRSxRQUFRLENBQUM5QixDQUFDLENBQUMsRUFBQ25DLENBQUMsQ0FBQ2lELEtBQUssRUFBRTtZQUFDOUMsQ0FBQyxDQUFDa0IsTUFBTSxDQUFDYyxDQUFDLENBQUM7VUFBQTtVQUFDLE9BQU9oQyxDQUFDLENBQUNjLFFBQVEsR0FBQyxDQUFDLEdBQUNVLENBQUMsRUFBQ3hCLENBQUM7UUFBQTtNQUFDLENBQUMsQ0FBQztJQUFDYixDQUFDLENBQUNtSixNQUFNLEdBQUMsVUFBU3BKLENBQUMsRUFBQ0MsQ0FBQyxFQUFDTSxDQUFDLEVBQUM7TUFBQyxPQUFPK0IsQ0FBQyxDQUFDN0IsTUFBTSxDQUFDRixDQUFDLENBQUMsQ0FBQzRJLE9BQU8sQ0FBQ25KLENBQUMsRUFBQ0MsQ0FBQyxDQUFDO0lBQUEsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFlBQVU7SUFBQyxJQUFJQSxDQUFDLEdBQUNELENBQUM7TUFBQ08sQ0FBQyxHQUFDTixDQUFDLENBQUNZLEdBQUc7TUFBQ0YsQ0FBQyxHQUFDSixDQUFDLENBQUNtQixTQUFTO01BQUNkLENBQUMsR0FBQ1gsQ0FBQyxDQUFDZ0YsSUFBSTtNQUFDbkUsQ0FBQyxHQUFDRixDQUFDLENBQUN3RyxNQUFNO01BQUMzRixDQUFDLEdBQUNiLENBQUMsQ0FBQ3lJLE1BQU0sR0FBQ3ZJLENBQUMsQ0FBQ0UsTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsSUFBSSxDQUFDaUIsS0FBSyxHQUFDLElBQUloRixDQUFDLENBQUNRLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsU0FBUyxFQUFDLFVBQVUsRUFBQyxVQUFVLEVBQUMsVUFBVSxFQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsQ0FBQztRQUFBLENBQUM7UUFBQzBELFdBQVcsRUFBQyxTQUFBQSxZQUFBLEVBQVU7VUFBQyxJQUFJN0UsQ0FBQyxHQUFDYyxDQUFDLENBQUMrRCxXQUFXLENBQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUMsT0FBT25DLENBQUMsQ0FBQzRCLFFBQVEsSUFBRSxDQUFDLEVBQUM1QixDQUFDO1FBQUE7TUFBQyxDQUFDLENBQUM7SUFBQ0MsQ0FBQyxDQUFDb0osTUFBTSxHQUFDdkksQ0FBQyxDQUFDZ0UsYUFBYSxDQUFDckQsQ0FBQyxDQUFDLEVBQUN4QixDQUFDLENBQUNxSixVQUFVLEdBQUN4SSxDQUFDLENBQUNpRSxpQkFBaUIsQ0FBQ3RELENBQUMsQ0FBQztFQUFBLENBQUMsRUFBRSxFQUFDLFVBQVN4QixDQUFDLEVBQUM7SUFBQyxJQUFJTSxDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNJLElBQUk7TUFBQ0QsQ0FBQyxHQUFDSCxDQUFDLENBQUNlLFNBQVM7TUFBQ0QsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDZ0osR0FBRyxHQUFDLENBQUMsQ0FBQztJQUFDOUgsQ0FBQyxDQUFDK0gsSUFBSSxHQUFDNUksQ0FBQyxDQUFDSSxNQUFNLENBQUM7TUFBQ0csSUFBSSxFQUFDLFNBQUFBLEtBQVNuQixDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDLElBQUksQ0FBQ3dKLElBQUksR0FBQ3pKLENBQUMsRUFBQyxJQUFJLENBQUMwSixHQUFHLEdBQUN6SixDQUFDO01BQUE7SUFBQyxDQUFDLENBQUMsRUFBQ3dCLENBQUMsQ0FBQ0MsU0FBUyxHQUFDZCxDQUFDLENBQUNJLE1BQU0sQ0FBQztNQUFDRyxJQUFJLEVBQUMsU0FBQUEsS0FBU25CLENBQUMsRUFBQ08sQ0FBQyxFQUFDO1FBQUNQLENBQUMsR0FBQyxJQUFJLENBQUMyQixLQUFLLEdBQUMzQixDQUFDLElBQUUsRUFBRSxFQUFDTyxDQUFDLElBQUVOLENBQUMsR0FBQyxJQUFJLENBQUMyQixRQUFRLEdBQUNyQixDQUFDLEdBQUMsSUFBSSxDQUFDcUIsUUFBUSxHQUFDLENBQUMsR0FBQzVCLENBQUMsQ0FBQzZCLE1BQU07TUFBQSxDQUFDO01BQUM4SCxLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVO1FBQUMsS0FBSSxJQUFJM0osQ0FBQyxHQUFDLElBQUksQ0FBQzJCLEtBQUssRUFBQzFCLENBQUMsR0FBQ0QsQ0FBQyxDQUFDNkIsTUFBTSxFQUFDdEIsQ0FBQyxHQUFDLEVBQUUsRUFBQ0ksQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDVixDQUFDLEVBQUNVLENBQUMsRUFBRSxFQUFDO1VBQUMsSUFBSUMsQ0FBQyxHQUFDWixDQUFDLENBQUNXLENBQUMsQ0FBQztVQUFDSixDQUFDLENBQUNnQyxJQUFJLENBQUMzQixDQUFDLENBQUM2SSxJQUFJLENBQUMsRUFBQ2xKLENBQUMsQ0FBQ2dDLElBQUksQ0FBQzNCLENBQUMsQ0FBQzhJLEdBQUcsQ0FBQztRQUFBO1FBQUMsT0FBTzVJLENBQUMsQ0FBQ0wsTUFBTSxDQUFDRixDQUFDLEVBQUMsSUFBSSxDQUFDcUIsUUFBUSxDQUFDO01BQUEsQ0FBQztNQUFDSixLQUFLLEVBQUMsU0FBQUEsTUFBQSxFQUFVO1FBQUMsS0FBSSxJQUFJeEIsQ0FBQyxHQUFDWSxDQUFDLENBQUNZLEtBQUssQ0FBQ1csSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFDbEMsQ0FBQyxHQUFDRCxDQUFDLENBQUMyQixLQUFLLEdBQUMsSUFBSSxDQUFDQSxLQUFLLENBQUNTLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBQzdCLENBQUMsR0FBQ04sQ0FBQyxDQUFDNEIsTUFBTSxFQUFDbEIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDSixDQUFDLEVBQUNJLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNVLENBQUMsQ0FBQyxHQUFDVixDQUFDLENBQUNVLENBQUMsQ0FBQyxDQUFDYSxLQUFLLEVBQUU7UUFBQyxPQUFPeEIsQ0FBQztNQUFBO0lBQUMsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxFQUFFLEVBQUMsVUFBU0MsQ0FBQyxFQUFDO0lBQUMsSUFBSU0sQ0FBQyxHQUFDUCxDQUFDO01BQUNXLENBQUMsR0FBQ0osQ0FBQyxDQUFDTSxHQUFHO01BQUNELENBQUMsR0FBQ0QsQ0FBQyxDQUFDZSxTQUFTO01BQUNaLENBQUMsR0FBQ0gsQ0FBQyxDQUFDNkQsTUFBTTtNQUFDL0MsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDZ0osR0FBRztNQUFDakgsQ0FBQyxHQUFDYixDQUFDLENBQUMrSCxJQUFJO01BQUMxSCxDQUFDLEdBQUN2QixDQUFDLENBQUMwRSxJQUFJO01BQUNuQyxDQUFDLEdBQUMsRUFBRTtNQUFDSyxDQUFDLEdBQUMsRUFBRTtNQUFDTyxDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSTFELENBQUMsR0FBQyxDQUFDLEVBQUNDLENBQUMsR0FBQyxDQUFDLEVBQUNNLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDO1FBQUN1QyxDQUFDLENBQUM5QyxDQUFDLEdBQUMsQ0FBQyxHQUFDQyxDQUFDLENBQUMsR0FBQyxDQUFDTSxDQUFDLEdBQUMsQ0FBQyxLQUFHQSxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxHQUFDLEVBQUU7UUFBQyxJQUFJSSxDQUFDLEdBQUNWLENBQUMsR0FBQyxDQUFDO1VBQUNXLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQ1osQ0FBQyxHQUFDLENBQUMsR0FBQ0MsQ0FBQyxJQUFFLENBQUM7UUFBQ0QsQ0FBQyxHQUFDVyxDQUFDLEVBQUNWLENBQUMsR0FBQ1csQ0FBQztNQUFBO01BQUMsS0FBSSxJQUFJWixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQyxLQUFJLElBQUlDLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDa0QsQ0FBQyxDQUFDbkQsQ0FBQyxHQUFDLENBQUMsR0FBQ0MsQ0FBQyxDQUFDLEdBQUNBLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQ0QsQ0FBQyxHQUFDLENBQUMsR0FBQ0MsQ0FBQyxJQUFFLENBQUMsR0FBQyxDQUFDO01BQUMsS0FBSSxJQUFJYSxDQUFDLEdBQUMsQ0FBQyxFQUFDVyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDLEtBQUksSUFBSUssQ0FBQyxHQUFDLENBQUMsRUFBQ3dDLENBQUMsR0FBQyxDQUFDLEVBQUNzQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztVQUFDLElBQUcsQ0FBQyxHQUFDOUUsQ0FBQyxFQUFDO1lBQUMsSUFBSStFLENBQUMsR0FBQyxDQUFDLENBQUMsSUFBRUQsQ0FBQyxJQUFFLENBQUM7WUFBQ0MsQ0FBQyxHQUFDLEVBQUUsR0FBQ3ZCLENBQUMsSUFBRSxDQUFDLElBQUV1QixDQUFDLEdBQUMvRCxDQUFDLElBQUUsQ0FBQyxJQUFFK0QsQ0FBQyxHQUFDLEVBQUU7VUFBQTtVQUFDLEdBQUcsR0FBQy9FLENBQUMsR0FBQ0EsQ0FBQyxHQUFDQSxDQUFDLElBQUUsQ0FBQyxHQUFDLEdBQUcsR0FBQ0EsQ0FBQyxLQUFHLENBQUM7UUFBQTtRQUFDNEMsQ0FBQyxDQUFDakMsQ0FBQyxDQUFDLEdBQUNhLENBQUMsQ0FBQzdCLE1BQU0sQ0FBQ3FCLENBQUMsRUFBQ3dDLENBQUMsQ0FBQztNQUFBO0lBQUMsQ0FBQyxFQUFFO0lBQUMsSUFBSUEsQ0FBQyxHQUFDLEVBQUU7SUFBQyxDQUFDLFlBQVU7TUFBQyxLQUFJLElBQUl0RSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQ3NFLENBQUMsQ0FBQ3RFLENBQUMsQ0FBQyxHQUFDc0MsQ0FBQyxDQUFDN0IsTUFBTSxFQUFFO0lBQUEsQ0FBQyxFQUFFO0lBQUMsSUFBSW1GLENBQUMsR0FBQzlELENBQUMsQ0FBQzhILElBQUksR0FBQzlJLENBQUMsQ0FBQ0UsTUFBTSxDQUFDO01BQUN5RCxHQUFHLEVBQUMzRCxDQUFDLENBQUMyRCxHQUFHLENBQUN6RCxNQUFNLENBQUM7UUFBQzZJLFlBQVksRUFBQztNQUFHLENBQUMsQ0FBQztNQUFDbkYsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtRQUFDLEtBQUksSUFBSTFFLENBQUMsR0FBQyxJQUFJLENBQUM4SixNQUFNLEdBQUMsRUFBRSxFQUFDN0osQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNELENBQUMsQ0FBQ0MsQ0FBQyxDQUFDLEdBQUMsSUFBSXFDLENBQUMsQ0FBQ25CLElBQUk7UUFBQyxJQUFJLENBQUM4QyxTQUFTLEdBQUMsQ0FBQyxJQUFJLEdBQUMsQ0FBQyxHQUFDLElBQUksQ0FBQ1EsR0FBRyxDQUFDb0YsWUFBWSxJQUFFLEVBQUU7TUFBQSxDQUFDO01BQUN4RixlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDLEtBQUksSUFBSU0sQ0FBQyxHQUFDLElBQUksQ0FBQ3VKLE1BQU0sRUFBQ25KLENBQUMsR0FBQyxJQUFJLENBQUNzRCxTQUFTLEdBQUMsQ0FBQyxFQUFDckQsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDRCxDQUFDLEVBQUNDLENBQUMsRUFBRSxFQUFDO1VBQUMsSUFBSUUsQ0FBQyxHQUFDZCxDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLEdBQUNXLENBQUMsQ0FBQztZQUFDYSxDQUFDLEdBQUN6QixDQUFDLENBQUNDLENBQUMsR0FBQyxDQUFDLEdBQUNXLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQ0UsQ0FBQyxHQUFDLFFBQVEsSUFBRUEsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRUEsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxLQUFHLENBQUMsQ0FBQyxFQUFDVyxDQUFDLEdBQUMsUUFBUSxJQUFFQSxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO1VBQUMsSUFBSWEsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDSyxDQUFDLENBQUM7VUFBQzBCLENBQUMsQ0FBQ21ILElBQUksSUFBRWhJLENBQUMsRUFBQ2EsQ0FBQyxDQUFDb0gsR0FBRyxJQUFFNUksQ0FBQztRQUFBO1FBQUMsS0FBSSxJQUFJZ0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7VUFBQyxLQUFJLElBQUk4RCxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDLENBQUMsRUFBQ0MsQ0FBQyxHQUFDLENBQUMsRUFBQ0MsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7Y0FBQyxJQUFJekQsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDcUYsQ0FBQyxHQUFDLENBQUMsR0FBQ0csQ0FBQyxDQUFDO2NBQUNGLENBQUMsSUFBRXZELENBQUMsQ0FBQ21ILElBQUksRUFBQzNELENBQUMsSUFBRXhELENBQUMsQ0FBQ29ILEdBQUc7WUFBQTtZQUFDLElBQUkxRCxDQUFDLEdBQUMxQixDQUFDLENBQUNzQixDQUFDLENBQUM7WUFBQ0ksQ0FBQyxDQUFDeUQsSUFBSSxHQUFDNUQsQ0FBQyxFQUFDRyxDQUFDLENBQUMwRCxHQUFHLEdBQUM1RCxDQUFDO1VBQUE7VUFBQyxLQUFJLElBQUlGLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDLEtBQUksSUFBSUssQ0FBQyxHQUFDM0IsQ0FBQyxDQUFDLENBQUNzQixDQUFDLEdBQUMsQ0FBQyxJQUFFLENBQUMsQ0FBQyxFQUFDTSxDQUFDLEdBQUM1QixDQUFDLENBQUMsQ0FBQ3NCLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxDQUFDLEVBQUNPLENBQUMsR0FBQ0QsQ0FBQyxDQUFDdUQsSUFBSSxFQUFDckQsQ0FBQyxHQUFDRixDQUFDLENBQUN3RCxHQUFHLEVBQUM3RCxDQUFDLEdBQUNJLENBQUMsQ0FBQ3dELElBQUksSUFBRXRELENBQUMsSUFBRSxDQUFDLEdBQUNDLENBQUMsS0FBRyxFQUFFLENBQUMsRUFBQ04sQ0FBQyxHQUFDRyxDQUFDLENBQUN5RCxHQUFHLElBQUV0RCxDQUFDLElBQUUsQ0FBQyxHQUFDRCxDQUFDLEtBQUcsRUFBRSxDQUFDLEVBQUNKLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDO1lBQUMsSUFBSXpELENBQUMsR0FBQy9CLENBQUMsQ0FBQ3FGLENBQUMsR0FBQyxDQUFDLEdBQUNHLENBQUMsQ0FBQztZQUFDekQsQ0FBQyxDQUFDbUgsSUFBSSxJQUFFNUQsQ0FBQyxFQUFDdkQsQ0FBQyxDQUFDb0gsR0FBRyxJQUFFNUQsQ0FBQztVQUFBO1VBQUMsS0FBSSxJQUFJTyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsRUFBRSxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUkvRCxDQUFDLEdBQUMvQixDQUFDLENBQUM4RixDQUFDLENBQUM7Y0FBQ0MsQ0FBQyxHQUFDaEUsQ0FBQyxDQUFDbUgsSUFBSTtjQUFDbEQsQ0FBQyxHQUFDakUsQ0FBQyxDQUFDb0gsR0FBRztjQUFDbEQsQ0FBQyxHQUFDMUQsQ0FBQyxDQUFDdUQsQ0FBQyxDQUFDO1lBQUMsSUFBR0csQ0FBQyxHQUFDLEVBQUUsRUFBQyxJQUFJWCxDQUFDLEdBQUNTLENBQUMsSUFBRUUsQ0FBQyxHQUFDRCxDQUFDLEtBQUcsRUFBRSxHQUFDQyxDQUFDO2NBQUNWLENBQUMsR0FBQ1MsQ0FBQyxJQUFFQyxDQUFDLEdBQUNGLENBQUMsS0FBRyxFQUFFLEdBQUNFLENBQUMsQ0FBQyxLQUFLLElBQUlYLENBQUMsR0FBQ1UsQ0FBQyxJQUFFQyxDQUFDLEdBQUMsRUFBRSxHQUFDRixDQUFDLEtBQUcsRUFBRSxHQUFDRSxDQUFDO2NBQUNWLENBQUMsR0FBQ1EsQ0FBQyxJQUFFRSxDQUFDLEdBQUMsRUFBRSxHQUFDRCxDQUFDLEtBQUcsRUFBRSxHQUFDQyxDQUFDO1lBQUMsSUFBSUMsQ0FBQyxHQUFDbkMsQ0FBQyxDQUFDbkIsQ0FBQyxDQUFDa0QsQ0FBQyxDQUFDLENBQUM7WUFBQ0ksQ0FBQyxDQUFDZ0QsSUFBSSxHQUFDNUQsQ0FBQyxFQUFDWSxDQUFDLENBQUNpRCxHQUFHLEdBQUM1RCxDQUFDO1VBQUE7VUFBQyxJQUFJWSxDQUFDLEdBQUNwQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQUNxQyxDQUFDLEdBQUNwRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUNtRyxDQUFDLENBQUMrQyxJQUFJLEdBQUM5QyxDQUFDLENBQUM4QyxJQUFJLEVBQUMvQyxDQUFDLENBQUNnRCxHQUFHLEdBQUMvQyxDQUFDLENBQUMrQyxHQUFHO1VBQUMsS0FBSSxJQUFJOUQsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUMsS0FBSSxJQUFJRyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztZQUFDLElBQUlNLENBQUMsR0FBQ1QsQ0FBQyxHQUFDLENBQUMsR0FBQ0csQ0FBQztjQUFDekQsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDOEYsQ0FBQyxDQUFDO2NBQUNPLENBQUMsR0FBQ3RDLENBQUMsQ0FBQytCLENBQUMsQ0FBQztjQUFDUSxDQUFDLEdBQUN2QyxDQUFDLENBQUMsQ0FBQ3NCLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDLENBQUMsR0FBQ0csQ0FBQyxDQUFDO2NBQUN3QyxDQUFDLEdBQUNqRSxDQUFDLENBQUMsQ0FBQ3NCLENBQUMsR0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDLENBQUMsR0FBQ0csQ0FBQyxDQUFDO1lBQUN6RCxDQUFDLENBQUNtSCxJQUFJLEdBQUM3QyxDQUFDLENBQUM2QyxJQUFJLEdBQUMsQ0FBQzVDLENBQUMsQ0FBQzRDLElBQUksR0FBQ2xCLENBQUMsQ0FBQ2tCLElBQUksRUFBQ25ILENBQUMsQ0FBQ29ILEdBQUcsR0FBQzlDLENBQUMsQ0FBQzhDLEdBQUcsR0FBQyxDQUFDN0MsQ0FBQyxDQUFDNkMsR0FBRyxHQUFDbkIsQ0FBQyxDQUFDbUIsR0FBRztVQUFBO1VBQUMsSUFBSXBILENBQUMsR0FBQy9CLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFBQ2lJLENBQUMsR0FBQzlFLENBQUMsQ0FBQzVCLENBQUMsQ0FBQztVQUFDUSxDQUFDLENBQUNtSCxJQUFJLElBQUVqQixDQUFDLENBQUNpQixJQUFJLEVBQUNuSCxDQUFDLENBQUNvSCxHQUFHLElBQUVsQixDQUFDLENBQUNrQixHQUFHO1FBQUE7TUFBQyxDQUFDO01BQUM3RSxXQUFXLEVBQUMsU0FBQUEsWUFBQSxFQUFVO1FBQUMsSUFBSTdFLENBQUMsR0FBQyxJQUFJLENBQUM2RCxLQUFLO1VBQUN0RCxDQUFDLEdBQUNQLENBQUMsQ0FBQzJCLEtBQUs7VUFBQ2hCLENBQUMsSUFBRSxDQUFDLEdBQUMsSUFBSSxDQUFDbUQsV0FBVyxFQUFDLENBQUMsR0FBQzlELENBQUMsQ0FBQzRCLFFBQVEsQ0FBQztVQUFDZCxDQUFDLEdBQUMsRUFBRSxHQUFDLElBQUksQ0FBQ21ELFNBQVM7UUFBQzFELENBQUMsQ0FBQ0ksQ0FBQyxLQUFHLENBQUMsQ0FBQyxJQUFFLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNKLENBQUMsQ0FBQyxDQUFDTixDQUFDLENBQUNpQyxJQUFJLENBQUMsQ0FBQ3ZCLENBQUMsR0FBQyxDQUFDLElBQUVHLENBQUMsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxJQUFFLENBQUMsQ0FBQyxJQUFFLEdBQUcsRUFBQ2QsQ0FBQyxDQUFDNEIsUUFBUSxHQUFDLENBQUMsR0FBQ3JCLENBQUMsQ0FBQ3NCLE1BQU0sRUFBQyxJQUFJLENBQUNtQyxRQUFRLEVBQUU7UUFBQyxLQUFJLElBQUl2QyxDQUFDLEdBQUMsSUFBSSxDQUFDcUksTUFBTSxFQUFDeEgsQ0FBQyxHQUFDLElBQUksQ0FBQ21DLEdBQUcsQ0FBQ29GLFlBQVksR0FBQyxDQUFDLEVBQUMvSCxDQUFDLEdBQUNRLENBQUMsR0FBQyxDQUFDLEVBQUNRLENBQUMsR0FBQyxFQUFFLEVBQUNLLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQ3JCLENBQUMsRUFBQ3FCLENBQUMsRUFBRSxFQUFDO1VBQUMsSUFBSU8sQ0FBQyxHQUFDakMsQ0FBQyxDQUFDMEIsQ0FBQyxDQUFDO1lBQUNtQixDQUFDLEdBQUNaLENBQUMsQ0FBQytGLElBQUk7WUFBQzdELENBQUMsR0FBQ2xDLENBQUMsQ0FBQ2dHLEdBQUc7VUFBQ3BGLENBQUMsR0FBQyxRQUFRLElBQUVBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUMsRUFBQ3NCLENBQUMsR0FBQyxRQUFRLElBQUVBLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsS0FBRyxDQUFDLENBQUMsRUFBQzlDLENBQUMsQ0FBQ1AsSUFBSSxDQUFDcUQsQ0FBQyxDQUFDLEVBQUM5QyxDQUFDLENBQUNQLElBQUksQ0FBQytCLENBQUMsQ0FBQztRQUFBO1FBQUMsT0FBTyxJQUFJMUQsQ0FBQyxDQUFDTyxJQUFJLENBQUMyQixDQUFDLEVBQUNSLENBQUMsQ0FBQztNQUFBLENBQUM7TUFBQ2QsS0FBSyxFQUFDLFNBQUFBLE1BQUEsRUFBVTtRQUFDLEtBQUksSUFBSXhCLENBQUMsR0FBQ2MsQ0FBQyxDQUFDVSxLQUFLLENBQUNXLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBQ2xDLENBQUMsR0FBQ0QsQ0FBQyxDQUFDOEosTUFBTSxHQUFDLElBQUksQ0FBQ0EsTUFBTSxDQUFDMUgsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFDN0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDLEdBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDLENBQUNpQixLQUFLLEVBQUU7UUFBQyxPQUFPeEIsQ0FBQztNQUFBO0lBQUMsQ0FBQyxDQUFDO0lBQUNPLENBQUMsQ0FBQ3FKLElBQUksR0FBQzlJLENBQUMsQ0FBQ2dFLGFBQWEsQ0FBQ2MsQ0FBQyxDQUFDLEVBQUNyRixDQUFDLENBQUN3SixRQUFRLEdBQUNqSixDQUFDLENBQUNpRSxpQkFBaUIsQ0FBQ2EsQ0FBQyxDQUFDO0VBQUEsQ0FBQyxDQUFDVixJQUFJLENBQUMsRUFBQyxZQUFVO0lBQUMsU0FBU2pGLENBQUNBLENBQUEsRUFBRTtNQUFDLE9BQU93QixDQUFDLENBQUNoQixNQUFNLENBQUNZLEtBQUssQ0FBQ0ksQ0FBQyxFQUFDSCxTQUFTLENBQUM7SUFBQTtJQUFDLElBQUlmLENBQUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQzZELE1BQU07TUFBQzFELENBQUMsR0FBQ1AsQ0FBQyxDQUFDZ0osR0FBRztNQUFDOUgsQ0FBQyxHQUFDWCxDQUFDLENBQUMwSSxJQUFJO01BQUNsSCxDQUFDLEdBQUN4QixDQUFDLENBQUNZLFNBQVM7TUFBQ0ksQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDMEUsSUFBSTtNQUFDbkMsQ0FBQyxHQUFDLENBQUM3QyxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFNBQVMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxDQUFDO01BQUNrRCxDQUFDLEdBQUMsRUFBRTtJQUFDLENBQUMsWUFBVTtNQUFDLEtBQUksSUFBSW5ELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxFQUFFLEVBQUNBLENBQUMsRUFBRSxFQUFDbUQsQ0FBQyxDQUFDbkQsQ0FBQyxDQUFDLEdBQUNDLENBQUMsRUFBRTtJQUFBLENBQUMsRUFBRTtJQUFDLElBQUl5RCxDQUFDLEdBQUM1QixDQUFDLENBQUNrSSxNQUFNLEdBQUNwSixDQUFDLENBQUNJLE1BQU0sQ0FBQztNQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtRQUFDLElBQUksQ0FBQ2lCLEtBQUssR0FBQyxJQUFJckQsQ0FBQyxDQUFDbkIsSUFBSSxDQUFDLENBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsVUFBVSxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsVUFBVSxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxVQUFVLENBQUMsRUFBQyxJQUFJTSxDQUFDLENBQUNOLElBQUksQ0FBQyxVQUFVLEVBQUMsU0FBUyxDQUFDLEVBQUMsSUFBSU0sQ0FBQyxDQUFDTixJQUFJLENBQUMsU0FBUyxFQUFDLFVBQVUsQ0FBQyxFQUFDLElBQUlNLENBQUMsQ0FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO01BQUEsQ0FBQztNQUFDa0QsZUFBZSxFQUFDLFNBQUFBLGdCQUFTckUsQ0FBQyxFQUFDQyxDQUFDLEVBQUM7UUFBQyxLQUFJLElBQUlNLENBQUMsR0FBQyxJQUFJLENBQUNvRixLQUFLLENBQUNoRSxLQUFLLEVBQUNoQixDQUFDLEdBQUNKLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNPLENBQUMsR0FBQ1AsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0IsQ0FBQyxHQUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDdUIsQ0FBQyxHQUFDdkIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDbUQsQ0FBQyxHQUFDbkQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDK0QsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDcUYsQ0FBQyxHQUFDakYsQ0FBQyxDQUFDOEksSUFBSSxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDK0ksR0FBRyxFQUFDNUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDNkksSUFBSSxFQUFDMUQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDOEksR0FBRyxFQUFDMUQsQ0FBQyxHQUFDbEYsQ0FBQyxDQUFDMkksSUFBSSxFQUFDeEQsQ0FBQyxHQUFDbkYsQ0FBQyxDQUFDNEksR0FBRyxFQUFDeEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDZ0ksSUFBSSxFQUFDdEQsQ0FBQyxHQUFDMUUsQ0FBQyxDQUFDaUksR0FBRyxFQUFDdEQsQ0FBQyxHQUFDOUQsQ0FBQyxDQUFDbUgsSUFBSSxFQUFDcEQsQ0FBQyxHQUFDL0QsQ0FBQyxDQUFDb0gsR0FBRyxFQUFDcEQsQ0FBQyxHQUFDeEUsQ0FBQyxDQUFDMkgsSUFBSSxFQUFDbEQsQ0FBQyxHQUFDekUsQ0FBQyxDQUFDNEgsR0FBRyxFQUFDbEQsQ0FBQyxHQUFDOUMsQ0FBQyxDQUFDK0YsSUFBSSxFQUFDaEQsQ0FBQyxHQUFDL0MsQ0FBQyxDQUFDZ0csR0FBRyxFQUFDaEQsQ0FBQyxHQUFDcEMsQ0FBQyxDQUFDbUYsSUFBSSxFQUFDOUMsQ0FBQyxHQUFDckMsQ0FBQyxDQUFDb0YsR0FBRyxFQUFDOUMsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDaUIsQ0FBQyxHQUFDaEIsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDMEMsQ0FBQyxHQUFDekMsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDL0QsQ0FBQyxFQUFDZ0UsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLEVBQUUsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7VUFBQyxJQUFJQyxDQUFDLEdBQUN6SCxDQUFDLENBQUN3SCxDQUFDLENBQUM7VUFBQyxJQUFHQSxDQUFDLEdBQUMsRUFBRSxFQUFDLElB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QUN5QyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQ3ZDLENBQUMsR0FBQzFFLENBQUMsQ0FBQ2lJLEdBQUcsR0FBQ3ZELENBQUMsR0FBQytELENBQUMsRUFBQ3pJLENBQUMsQ0FBQ2dJLElBQUksR0FBQ3ZELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9ELENBQUMsQ0FBQ29ILEdBQUcsR0FBQ3JELENBQUMsR0FBQytELENBQUMsRUFBQzlILENBQUMsQ0FBQ21ILElBQUksR0FBQ3JELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3pFLENBQUMsQ0FBQzRILEdBQUcsR0FBQ25ELENBQUMsR0FBQytELENBQUMsRUFBQ3hJLENBQUMsQ0FBQzJILElBQUksR0FBQ25ELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQy9DLENBQUMsQ0FBQ2dHLEdBQUcsR0FBQ2pELENBQUMsR0FBQytELENBQUMsRUFBQzlHLENBQUMsQ0FBQytGLElBQUksR0FBQ2pELENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQzdELENBQUMsR0FBQ3JDLENBQUMsQ0FBQ29GLEdBQUcsR0FBQy9DLENBQUMsR0FBQytELENBQUMsRUFBQ3BHLENBQUMsQ0FBQ21GLElBQUksR0FBQy9DLENBQUMsR0FBQytELENBQUMsSUFBRTlELENBQUMsS0FBRyxDQUFDLEdBQUMrRCxDQUFDLEtBQUcs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QUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsQ0FBQztNQUFDZ0IsQ0FBQyxHQUFDLENBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsQ0FBQyxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxDQUFDLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLENBQUM7TUFBQ0ssQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxDQUFDLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxFQUFDLEVBQUUsRUFBQyxFQUFFLEVBQUMsRUFBRSxDQUFDO01BQUNPLENBQUMsR0FBQyxDQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLENBQUMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsT0FBTztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxHQUFHO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLE9BQU87UUFBQyxTQUFTLEVBQUMsT0FBTztRQUFDLFNBQVMsRUFBQyxPQUFPO1FBQUMsU0FBUyxFQUFDLEdBQUc7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLENBQUM7UUFBQyxVQUFVLEVBQUMsS0FBSztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsR0FBRztRQUFDLFVBQVUsRUFBQyxPQUFPO1FBQUMsVUFBVSxFQUFDLE9BQU87UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxLQUFLO1FBQUMsVUFBVSxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxNQUFNO1FBQUMsUUFBUSxFQUFDLEVBQUU7UUFBQyxRQUFRLEVBQUMsVUFBVTtRQUFDLFFBQVEsRUFBQyxVQUFVO1FBQUMsUUFBUSxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsQ0FBQztRQUFDLFNBQVMsRUFBQyxLQUFLO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxDQUFDO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsRUFBRTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLE1BQU07UUFBQyxTQUFTLEVBQUMsTUFBTTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEtBQUs7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLEVBQUU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDLFVBQVU7UUFBQyxTQUFTLEVBQUMsVUFBVTtRQUFDLFNBQVMsRUFBQyxNQUFNO1FBQUMsU0FBUyxFQUFDLENBQUM7UUFBQyxTQUFTLEVBQUMsS0FBSztRQUFDLFNBQVMsRUFBQyxVQUFVO1FBQUMsU0FBUyxFQUFDO01BQU0sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxPQUFPLEVBQUMsQ0FBQztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxNQUFNLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsUUFBUTtRQUFDLE9BQU8sRUFBQyxRQUFRO1FBQUMsT0FBTyxFQUFDLEtBQUs7UUFBQyxPQUFPLEVBQUMsS0FBSztRQUFDLE9BQU8sRUFBQyxHQUFHO1FBQUMsT0FBTyxFQUFDLENBQUM7UUFBQyxPQUFPLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEtBQUs7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsR0FBRztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLENBQUM7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLEdBQUc7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxLQUFLO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsS0FBSztRQUFDLFFBQVEsRUFBQyxRQUFRO1FBQUMsUUFBUSxFQUFDLFFBQVE7UUFBQyxRQUFRLEVBQUMsUUFBUTtRQUFDLFFBQVEsRUFBQyxDQUFDO1FBQUMsUUFBUSxFQUFDO01BQUssQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsT0FBTztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxNQUFNLEVBQUMsRUFBRTtRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsSUFBSTtRQUFDLE1BQU0sRUFBQyxJQUFJO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxLQUFLLEVBQUMsVUFBVTtRQUFDLEtBQUssRUFBQyxFQUFFO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLFVBQVU7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxVQUFVO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLElBQUk7UUFBQyxNQUFNLEVBQUMsVUFBVTtRQUFDLE1BQU0sRUFBQyxPQUFPO1FBQUMsTUFBTSxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxJQUFJO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxDQUFDO1FBQUMsT0FBTyxFQUFDLE9BQU87UUFBQyxPQUFPLEVBQUMsT0FBTztRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLFVBQVU7UUFBQyxPQUFPLEVBQUMsRUFBRTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxVQUFVO1FBQUMsT0FBTyxFQUFDLElBQUk7UUFBQyxPQUFPLEVBQUMsVUFBVTtRQUFDLE9BQU8sRUFBQyxPQUFPO1FBQUMsT0FBTyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLEdBQUc7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsUUFBUTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsQ0FBQztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsTUFBTTtRQUFDLEtBQUssRUFBQyxNQUFNO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxTQUFTO1FBQUMsS0FBSyxFQUFDLFFBQVE7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsUUFBUTtRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLFNBQVM7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLEtBQUssRUFBQyxRQUFRO1FBQUMsS0FBSyxFQUFDLEdBQUc7UUFBQyxLQUFLLEVBQUMsU0FBUztRQUFDLE1BQU0sRUFBQyxNQUFNO1FBQUMsTUFBTSxFQUFDLFNBQVM7UUFBQyxNQUFNLEVBQUMsQ0FBQztRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDLFFBQVE7UUFBQyxNQUFNLEVBQUMsTUFBTTtRQUFDLE1BQU0sRUFBQyxTQUFTO1FBQUMsTUFBTSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxHQUFHLEVBQUMsU0FBUztRQUFDLEdBQUcsRUFBQyxTQUFTO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxDQUFDO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLENBQUM7UUFBQyxJQUFJLEVBQUMsT0FBTztRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxJQUFJO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsU0FBUztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDLFNBQVM7UUFBQyxJQUFJLEVBQUMsSUFBSTtRQUFDLElBQUksRUFBQyxPQUFPO1FBQUMsSUFBSSxFQUFDLE9BQU87UUFBQyxJQUFJLEVBQUMsQ0FBQztRQUFDLElBQUksRUFBQyxTQUFTO1FBQUMsSUFBSSxFQUFDO01BQVMsQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLE9BQU87UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxDQUFDLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxDQUFDO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxFQUFFLEVBQUMsUUFBUTtRQUFDLEVBQUUsRUFBQyxPQUFPO1FBQUMsRUFBRSxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsT0FBTztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxDQUFDO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxJQUFJO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLENBQUM7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxPQUFPO1FBQUMsR0FBRyxFQUFDLElBQUk7UUFBQyxHQUFHLEVBQUMsUUFBUTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLFFBQVE7UUFBQyxHQUFHLEVBQUMsQ0FBQztRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDLE9BQU87UUFBQyxHQUFHLEVBQUMsSUFBSTtRQUFDLEdBQUcsRUFBQyxRQUFRO1FBQUMsR0FBRyxFQUFDO01BQU8sQ0FBQyxFQUFDO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLEVBQUU7UUFBQyxDQUFDLEVBQUMsTUFBTTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxDQUFDLEVBQUMsSUFBSTtRQUFDLENBQUMsRUFBQyxTQUFTO1FBQUMsQ0FBQyxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLElBQUk7UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLFVBQVUsRUFBQyxFQUFFO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsQ0FBQztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsTUFBTTtRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsRUFBRTtRQUFDLEVBQUUsRUFBQyxJQUFJO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsQ0FBQztRQUFDLEVBQUUsRUFBQyxNQUFNO1FBQUMsRUFBRSxFQUFDLFNBQVM7UUFBQyxFQUFFLEVBQUMsU0FBUztRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsRUFBRSxFQUFDLE1BQU07UUFBQyxFQUFFLEVBQUMsSUFBSTtRQUFDLEVBQUUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsRUFBRTtRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxTQUFTO1FBQUMsVUFBVSxFQUFDLFNBQVM7UUFBQyxVQUFVLEVBQUMsU0FBUztRQUFDLFVBQVUsRUFBQyxDQUFDO1FBQUMsVUFBVSxFQUFDLE1BQU07UUFBQyxVQUFVLEVBQUMsSUFBSTtRQUFDLFVBQVUsRUFBQyxNQUFNO1FBQUMsVUFBVSxFQUFDO01BQVMsQ0FBQyxDQUFDO01BQUNZLENBQUMsR0FBQyxDQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsUUFBUSxFQUFDLE9BQU8sRUFBQyxNQUFNLEVBQUMsSUFBSSxFQUFDLEdBQUcsRUFBQyxVQUFVLENBQUM7TUFBQ3NCLENBQUMsR0FBQ3RELENBQUMsQ0FBQ3dPLEdBQUcsR0FBQ3JQLENBQUMsQ0FB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QUksQ0FBQzhSLEVBQUUsR0FBQyxDQUFDLEVBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxTQUFTLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUNyQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxVQUFVLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDeVAsRUFBRSxHQUFDOVIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQ3FDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUMsQ0FBQyxHQUFDLENBQUM7TUFBQyxLQUFJLElBQUkvQixDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQztRQUFDLElBQUlJLENBQUMsR0FBQ1gsQ0FBQyxDQUFDTyxDQUFDLENBQUMsR0FBQ04sQ0FBQyxDQUFDTSxDQUFDLENBQUM7VUFBQ0ssQ0FBQyxHQUFDLEtBQUssR0FBQ0QsQ0FBQztVQUFDRyxDQUFDLEdBQUNILENBQUMsS0FBRyxFQUFFO1VBQUNjLENBQUMsR0FBQyxDQUFDLENBQUNiLENBQUMsR0FBQ0EsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDRSxDQUFDLEtBQUcsRUFBRSxJQUFFQSxDQUFDLEdBQUNBLENBQUM7VUFBQ2dDLENBQUMsR0FBQyxDQUFDLENBQUMsVUFBVSxHQUFDbkMsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxLQUFHLENBQUMsS0FBSyxHQUFDQSxDQUFDLElBQUVBLENBQUMsR0FBQyxDQUFDLENBQUM7UUFBQ21CLENBQUMsQ0FBQ3ZCLENBQUMsQ0FBQyxHQUFDa0IsQ0FBQyxHQUFDcUIsQ0FBQztNQUFBO01BQUM5QyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQztJQUFBO0lBQUMsSUFBSXZCLENBQUMsR0FBQ1AsQ0FBQztNQUFDVyxDQUFDLEdBQUNKLENBQUMsQ0FBQ00sR0FBRztNQUFDRCxDQUFDLEdBQUNELENBQUMsQ0FBQ2lOLFlBQVk7TUFBQzlNLENBQUMsR0FBQ1AsQ0FBQyxDQUFDMEUsSUFBSTtNQUFDeEQsQ0FBQyxHQUFDLEVBQUU7TUFBQ2EsQ0FBQyxHQUFDLEVBQUU7TUFBQ1IsQ0FBQyxHQUFDLEVBQUU7TUFBQ2dCLENBQUMsR0FBQ2hDLENBQUMsQ0FBQ2tSLE1BQU0sR0FBQ3BSLENBQUMsQ0FBQ0ksTUFBTSxDQUFDO1FBQUMwRCxRQUFRLEVBQUMsU0FBQUEsU0FBQSxFQUFVO1VBQUMsS0FBSSxJQUFJMUUsQ0FBQyxHQUFDLElBQUksQ0FBQ3VOLElBQUksQ0FBQzVMLEtBQUssRUFBQ3BCLENBQUMsR0FBQyxJQUFJLENBQUNrRSxHQUFHLENBQUNvSyxFQUFFLEVBQUNsTyxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEdBQUMsQ0FBQyxFQUFDQSxDQUFDLEVBQUUsRUFBQ1gsQ0FBQyxDQUFDVyxDQUFDLENBQUMsR0FBQyxRQUFRLElBQUVYLENBQUMsQ0FBQ1csQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDWCxDQUFDLENBQUNXLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLFVBQVUsSUFBRVgsQ0FBQyxDQUFDVyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNYLENBQUMsQ0FBQ1csQ0FBQyxDQUFDLEtBQUcsQ0FBQyxDQUFDO1VBQUMsSUFBSUMsQ0FBQyxHQUFDLElBQUksQ0FBQ2lSLEVBQUUsR0FBQyxDQUFDN1IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDO1lBQUNjLENBQUMsR0FBQyxJQUFJLENBQUNnUixFQUFFLEdBQUMsQ0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUMsVUFBVSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsS0FBSyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7VUFBQyxJQUFJLENBQUMrUixFQUFFLEdBQUMsQ0FBQztVQUFDLEtBQUksSUFBSXBSLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUMsS0FBSSxJQUFJeEIsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNHLENBQUMsQ0FBQ0gsQ0FBQyxDQUFDLElBQUVDLENBQUMsQ0FBQ0QsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLENBQUM7VUFBQyxJQUFHSixDQUFDLEVBQUM7WUFBQyxJQUFJa0IsQ0FBQyxHQUFDbEIsQ0FBQyxDQUFDb0IsS0FBSztjQUFDVyxDQUFDLEdBQUNiLENBQUMsQ0FBQyxDQUFDLENBQUM7Y0FBQ0ssQ0FBQyxHQUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO2NBQUNxQixDQUFDLEdBQUMsUUFBUSxJQUFFUixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUNhLENBQUMsR0FBQyxRQUFRLElBQUVyQixDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLEtBQUcsQ0FBQyxDQUFDO2NBQUM0QixDQUFDLEdBQUNaLENBQUMsS0FBRyxFQUFFLEdBQUMsVUFBVSxHQUFDSyxDQUFDO2NBQUNtQixDQUFDLEdBQUNuQixDQUFDLElBQUUsRUFBRSxHQUFDLEtBQUssR0FBQ0wsQ0FBQztZQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQyxFQUFDeEQsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFZ0MsQ0FBQyxFQUFDaEMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFNEMsQ0FBQyxFQUFDNUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFcUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFd0QsQ0FBQztZQUFDLEtBQUksSUFBSTNELENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsR0FBQyxDQUFDLEVBQUNBLENBQUMsRUFBRSxFQUFDVixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDO1VBQUE7UUFBQyxDQUFDO1FBQUNrQyxlQUFlLEVBQUMsU0FBQUEsZ0JBQVNyRSxDQUFDLEVBQUNPLENBQUMsRUFBQztVQUFDLElBQUlJLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFO1VBQUM1UixDQUFDLENBQUNrQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUNWLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxFQUFDYyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNkLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsRUFBQ2MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDZCxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEVBQUNjLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRTtVQUFDLEtBQUksSUFBSUMsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUNhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLEdBQUMsUUFBUSxJQUFFYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ2EsQ0FBQyxDQUFDYixDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxVQUFVLElBQUVhLENBQUMsQ0FBQ2IsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDYSxDQUFDLENBQUNiLENBQUMsQ0FBQyxLQUFHLENBQUMsQ0FB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ckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsU0FBUyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDckMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsVUFBVSxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDcUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLENBQUMsR0FBQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDLElBQUksQ0FBQ3lQLEVBQUUsR0FBQzlSLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxDQUFDLEdBQUNxQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDO01BQUMsS0FBSSxJQUFJL0IsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxHQUFDLENBQUMsRUFBQ0EsQ0FBQyxFQUFFLEVBQUM7UUFBQyxJQUFJSSxDQUFDLEdBQUNYLENBQUMsQ0FBQ08sQ0FBQyxDQUFDLEdBQUNOLENBQUMsQ0FBQ00sQ0FBQyxDQUFDO1VBQUNLLENBQUMsR0FBQyxLQUFLLEdBQUNELENBQUM7VUFBQ0csQ0FBQyxHQUFDSCxDQUFDLEtBQUcsRUFBRTtVQUFDYyxDQUFDLEdBQUMsQ0FBQyxDQUFDYixDQUFDLEdBQUNBLENBQUMsS0FBRyxFQUFFLElBQUVBLENBQUMsR0FBQ0UsQ0FBQyxLQUFHLEVBQUUsSUFBRUEsQ0FBQyxHQUFDQSxDQUFDO1VBQUNnQyxDQUFDLEdBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBQ25DLENBQUMsSUFBRUEsQ0FBQyxHQUFDLENBQUMsS0FBRyxDQUFDLEtBQUssR0FBQ0EsQ0FBQyxJQUFFQSxDQUFDLEdBQUMsQ0FBQyxDQUFDO1FBQUNtQixDQUFDLENBQUN2QixDQUFDLENBQUMsR0FBQ2tCLENBQUMsR0FBQ3FCLENBQUM7TUFBQTtNQUFDOUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDLENBQUMsRUFBQzlCLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBQzhCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQyxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUMsQ0FBQyxFQUFDOUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDOEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQyxDQUFDLEVBQUM5QixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUM4QixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUVBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxDQUFDLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLENBQUMsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLENBQUM7SUFBQTtJQUFDLElBQUl2QixDQUFDLEdBQUNQLENBQUM7TUFBQ1csQ0FBQyxHQUFDSixDQUFDLENBQUNNLEdBQUc7TUFBQ0QsQ0FBQyxHQUFDRCxDQUFDLENBQUNpTixZQUFZO01BQUM5TSxDQUFDLEdBQUNQLENBQUMsQ0FBQzBFLElBQUk7TUFBQ3hELENBQUMsR0FBQyxFQUFFO01BQUNhLENBQUMsR0FBQyxFQUFFO01BQUNSLENBQUMsR0FBQyxFQUFFO01BQUNnQixDQUFDLEdBQUNoQyxDQUFDLENBQUNvUixZQUFZLEdBQUN0UixDQUFDLENBQUNJLE1BQU0sQ0FBQztRQUFDMEQsUUFBUSxFQUFDLFNBQUFBLFNBQUEsRUFBVTtVQUFDLElBQUkxRSxDQUFDLEdBQUMsSUFBSSxDQUFDdU4sSUFBSSxDQUFDNUwsS0FBSztZQUFDcEIsQ0FBQyxHQUFDLElBQUksQ0FBQ2tFLEdBQUcsQ0FBQ29LLEVBQUU7WUFBQ2xPLENBQUMsR0FBQyxJQUFJLENBQUNrUixFQUFFLEdBQUMsQ0FBQzdSLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBRSxFQUFFLEdBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBRyxFQUFFLEVBQUNBLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFFLEVBQUUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFHLEVBQUUsQ0FBQztZQUFDWSxDQUFDLEdBQUMsSUFBSSxDQUFDa1IsRUFBRSxHQUFDLENBQUM5UixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUUsRUFBRSxHQUFDQSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUcsRUFBRSxFQUFDLFVBQVUsR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFDLEtBQUssR0FBQ0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1VBQUMsSUFBSSxDQUFDK1IsRUFBRSxHQUFDLENBQUM7VUFBQyxLQUFJLElBQUlqUixDQUFD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QUUsR0FBQ0EsQ0FBQyxHQUFDLENBQUMsR0FBQyxDQUFDLEdBQUMsR0FBRyxDQUFDLEdBQUVBLENBQUMsRUFBRTtNQUFDUCxDQUFDLENBQUM0QixRQUFRLEdBQUNyQixDQUFDLEdBQUMsQ0FBQztJQUFBO0VBQUMsQ0FBQyxFQUFDUCxDQUFDO0FBQUEsQ0FBQyxDQUFDO0FBQ25oZiIsInNvdXJjZVJvb3QiOiIvIiwic291cmNlc0NvbnRlbnQiOlsiIWZ1bmN0aW9uKHQscil7XCJvYmplY3RcIj09dHlwZW9mIGV4cG9ydHM/bW9kdWxlLmV4cG9ydHM9ZXhwb3J0cz1yKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShbXSxyKTp0LkNyeXB0b0pTPXIoKX0odGhpcyxmdW5jdGlvbigpe3ZhciB0PXR8fGZ1bmN0aW9uKHQscil7dmFyIGU9T2JqZWN0LmNyZWF0ZXx8ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7fXJldHVybiBmdW5jdGlvbihyKXt2YXIgZTtyZXR1cm4gdC5wcm90b3R5cGU9cixlPW5ldyB0LHQucHJvdG90eXBlPW51bGwsZX19KCksaT17fSxuPWkubGliPXt9LG89bi5CYXNlPWZ1bmN0aW9uKCl7cmV0dXJue2V4dGVuZDpmdW5jdGlvbih0KXt2YXIgcj1lKHRoaXMpO3JldHVybiB0JiZyLm1peEluKHQpLHIuaGFzT3duUHJvcGVydHkoXCJpbml0XCIpJiZ0aGlzLmluaXQhPT1yLmluaXR8fChyLmluaXQ9ZnVuY3Rpb24oKXtyLiRzdXBlci5pbml0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pLHIuaW5pdC5wcm90b3R5cGU9cixyLiRzdXBlcj10aGlzLHJ9LGNyZWF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuZXh0ZW5kKCk7cmV0dXJuIHQuaW5pdC5hcHBseSh0LGFyZ3VtZW50cyksdH0saW5pdDpmdW5jdGlvbigpe30sbWl4SW46ZnVuY3Rpb24odCl7Zm9yKHZhciByIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShyKSYmKHRoaXNbcl09dFtyXSk7dC5oYXNPd25Qcm9wZXJ0eShcInRvU3RyaW5nXCIpJiYodGhpcy50b1N0cmluZz10LnRvU3RyaW5nKX0sY2xvbmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pbml0LnByb3RvdHlwZS5leHRlbmQodGhpcyl9fX0oKSxzPW4uV29yZEFycmF5PW8uZXh0ZW5kKHtpbml0OmZ1bmN0aW9uKHQsZSl7dD10aGlzLndvcmRzPXR8fFtdLGUhPXI/dGhpcy5zaWdCeXRlcz1lOnRoaXMuc2lnQnl0ZXM9NCp0Lmxlbmd0aH0sdG9TdHJpbmc6ZnVuY3Rpb24odCl7cmV0dXJuKHR8fGMpLnN0cmluZ2lmeSh0aGlzKX0sY29uY2F0OmZ1bmN0aW9uKHQpe3ZhciByPXRoaXMud29yZHMsZT10LndvcmRzLGk9dGhpcy5zaWdCeXRlcyxuPXQuc2lnQnl0ZXM7aWYodGhpcy5jbGFtcCgpLGklNClmb3IodmFyIG89MDtvPG47bysrKXt2YXIgcz1lW28+Pj4yXT4+PjI0LW8lNCo4JjI1NTtyW2krbz4+PjJdfD1zPDwyNC0oaStvKSU0Kjh9ZWxzZSBmb3IodmFyIG89MDtvPG47bys9NClyW2krbz4+PjJdPWVbbz4+PjJdO3JldHVybiB0aGlzLnNpZ0J5dGVzKz1uLHRoaXN9LGNsYW1wOmZ1bmN0aW9uKCl7dmFyIHI9dGhpcy53b3JkcyxlPXRoaXMuc2lnQnl0ZXM7cltlPj4+Ml0mPTQyOTQ5NjcyOTU8PDMyLWUlNCo4LHIubGVuZ3RoPXQuY2VpbChlLzQpfSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC53b3Jkcz10aGlzLndvcmRzLnNsaWNlKDApLHR9LHJhbmRvbTpmdW5jdGlvbihyKXtmb3IodmFyIGUsaT1bXSxuPWZ1bmN0aW9uKHIpe3ZhciByPXIsZT05ODc2NTQzMjEsaT00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe2U9MzY5NjkqKDY1NTM1JmUpKyhlPj4xNikmaSxyPTE4ZTMqKDY1NTM1JnIpKyhyPj4xNikmaTt2YXIgbj0oZTw8MTYpK3ImaTtyZXR1cm4gbi89NDI5NDk2NzI5NixuKz0uNSxuKih0LnJhbmRvbSgpPi41PzE6LTEpfX0sbz0wO288cjtvKz00KXt2YXIgYT1uKDQyOTQ5NjcyOTYqKGV8fHQucmFuZG9tKCkpKTtlPTk4NzY1NDA3MSphKCksaS5wdXNoKDQyOTQ5NjcyOTYqYSgpfDApfXJldHVybiBuZXcgcy5pbml0KGkscil9fSksYT1pLmVuYz17fSxjPWEuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciByPXQud29yZHMsZT10LnNpZ0J5dGVzLGk9W10sbj0wO248ZTtuKyspe3ZhciBvPXJbbj4+PjJdPj4+MjQtbiU0KjgmMjU1O2kucHVzaCgobz4+PjQpLnRvU3RyaW5nKDE2KSksaS5wdXNoKCgxNSZvKS50b1N0cmluZygxNikpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSs9MillW2k+Pj4zXXw9cGFyc2VJbnQodC5zdWJzdHIoaSwyKSwxNik8PDI0LWklOCo0O3JldHVybiBuZXcgcy5pbml0KGUsci8yKX19LGg9YS5MYXRpbjE9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rKyl7dmFyIG89cltuPj4+Ml0+Pj4yNC1uJTQqOCYyNTU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD0oMjU1JnQuY2hhckNvZGVBdChpKSk8PDI0LWklNCo4O3JldHVybiBuZXcgcy5pbml0KGUscil9fSxsPWEuVXRmOD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3RyeXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGVzY2FwZShoLnN0cmluZ2lmeSh0KSkpfWNhdGNoKHQpe3Rocm93IG5ldyBFcnJvcihcIk1hbGZvcm1lZCBVVEYtOCBkYXRhXCIpfX0scGFyc2U6ZnVuY3Rpb24odCl7cmV0dXJuIGgucGFyc2UodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KHQpKSl9fSxmPW4uQnVmZmVyZWRCbG9ja0FsZ29yaXRobT1vLmV4dGVuZCh7cmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9kYXRhPW5ldyBzLmluaXQsdGhpcy5fbkRhdGFCeXRlcz0wfSxfYXBwZW5kOmZ1bmN0aW9uKHQpe1wic3RyaW5nXCI9PXR5cGVvZiB0JiYodD1sLnBhcnNlKHQpKSx0aGlzLl9kYXRhLmNvbmNhdCh0KSx0aGlzLl9uRGF0YUJ5dGVzKz10LnNpZ0J5dGVzfSxfcHJvY2VzczpmdW5jdGlvbihyKXt2YXIgZT10aGlzLl9kYXRhLGk9ZS53b3JkcyxuPWUuc2lnQnl0ZXMsbz10aGlzLmJsb2NrU2l6ZSxhPTQqbyxjPW4vYTtjPXI/dC5jZWlsKGMpOnQubWF4KCgwfGMpLXRoaXMuX21pbkJ1ZmZlclNpemUsMCk7dmFyIGg9YypvLGw9dC5taW4oNCpoLG4pO2lmKGgpe2Zvcih2YXIgZj0wO2Y8aDtmKz1vKXRoaXMuX2RvUHJvY2Vzc0Jsb2NrKGksZik7dmFyIHU9aS5zcGxpY2UoMCxoKTtlLnNpZ0J5dGVzLT1sfXJldHVybiBuZXcgcy5pbml0KHUsbCl9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9by5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSx0fSxfbWluQnVmZmVyU2l6ZTowfSksdT0obi5IYXNoZXI9Zi5leHRlbmQoe2NmZzpvLmV4dGVuZCgpLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dCYmdGhpcy5fYXBwZW5kKHQpO3ZhciByPXRoaXMuX2RvRmluYWxpemUoKTtyZXR1cm4gcn0sYmxvY2tTaXplOjE2LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKHIsZSl7cmV0dXJuIG5ldyB0LmluaXQoZSkuZmluYWxpemUocil9fSxfY3JlYXRlSG1hY0hlbHBlcjpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24ocixlKXtyZXR1cm4gbmV3IHUuSE1BQy5pbml0KHQsZSkuZmluYWxpemUocil9fX0pLGkuYWxnbz17fSk7cmV0dXJuIGl9KE1hdGgpO3JldHVybiBmdW5jdGlvbigpe2Z1bmN0aW9uIHIodCxyLGUpe2Zvcih2YXIgaT1bXSxvPTAscz0wO3M8cjtzKyspaWYocyU0KXt2YXIgYT1lW3QuY2hhckNvZGVBdChzLTEpXTw8cyU0KjIsYz1lW3QuY2hhckNvZGVBdChzKV0+Pj42LXMlNCoyO2lbbz4+PjJdfD0oYXxjKTw8MjQtbyU0KjgsbysrfXJldHVybiBuLmNyZWF0ZShpLG8pfXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5CYXNlNjQ9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXt2YXIgcj10LndvcmRzLGU9dC5zaWdCeXRlcyxpPXRoaXMuX21hcDt0LmNsYW1wKCk7Zm9yKHZhciBuPVtdLG89MDtvPGU7bys9Mylmb3IodmFyIHM9cltvPj4+Ml0+Pj4yNC1vJTQqOCYyNTUsYT1yW28rMT4+PjJdPj4+MjQtKG8rMSklNCo4JjI1NSxjPXJbbysyPj4+Ml0+Pj4yNC0obysyKSU0KjgmMjU1LGg9czw8MTZ8YTw8OHxjLGw9MDtsPDQmJm8rLjc1Kmw8ZTtsKyspbi5wdXNoKGkuY2hhckF0KGg+Pj42KigzLWwpJjYzKSk7dmFyIGY9aS5jaGFyQXQoNjQpO2lmKGYpZm9yKDtuLmxlbmd0aCU0OyluLnB1c2goZik7cmV0dXJuIG4uam9pbihcIlwiKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIGU9dC5sZW5ndGgsaT10aGlzLl9tYXAsbj10aGlzLl9yZXZlcnNlTWFwO2lmKCFuKXtuPXRoaXMuX3JldmVyc2VNYXA9W107Zm9yKHZhciBvPTA7bzxpLmxlbmd0aDtvKyspbltpLmNoYXJDb2RlQXQobyldPW99dmFyIHM9aS5jaGFyQXQoNjQpO2lmKHMpe3ZhciBhPXQuaW5kZXhPZihzKTthIT09LTEmJihlPWEpfXJldHVybiByKHQsZSxuKX0sX21hcDpcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89XCJ9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUsaSxuLG8scyl7dmFyIGE9dCsociZlfH5yJmkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn1mdW5jdGlvbiBpKHQscixlLGksbixvLHMpe3ZhciBhPXQrKHImaXxlJn5pKStuK3M7cmV0dXJuKGE8PG98YT4+PjMyLW8pK3J9ZnVuY3Rpb24gbih0LHIsZSxpLG4sbyxzKXt2YXIgYT10KyhyXmVeaSkrbitzO3JldHVybihhPDxvfGE+Pj4zMi1vKStyfWZ1bmN0aW9uIG8odCxyLGUsaSxuLG8scyl7dmFyIGE9dCsoZV4ocnx+aSkpK24rcztyZXR1cm4oYTw8b3xhPj4+MzItbykrcn12YXIgcz10LGE9cy5saWIsYz1hLldvcmRBcnJheSxoPWEuSGFzaGVyLGw9cy5hbGdvLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw2NDt0KyspZlt0XT00Mjk0OTY3Mjk2KnIuYWJzKHIuc2luKHQrMSkpfDB9KCk7dmFyIHU9bC5NRDU9aC5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYy5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBzPTA7czwxNjtzKyspe3ZhciBhPXIrcyxjPXRbYV07dFthXT0xNjcxMTkzNSYoYzw8OHxjPj4+MjQpfDQyNzgyNTUzNjAmKGM8PDI0fGM+Pj44KX12YXIgaD10aGlzLl9oYXNoLndvcmRzLGw9dFtyKzBdLHU9dFtyKzFdLGQ9dFtyKzJdLHY9dFtyKzNdLHA9dFtyKzRdLF89dFtyKzVdLHk9dFtyKzZdLGc9dFtyKzddLEI9dFtyKzhdLHc9dFtyKzldLGs9dFtyKzEwXSxTPXRbcisxMV0sbT10W3IrMTJdLHg9dFtyKzEzXSxiPXRbcisxNF0sSD10W3IrMTVdLHo9aFswXSxBPWhbMV0sQz1oWzJdLEQ9aFszXTt6PWUoeixBLEMsRCxsLDcsZlswXSksRD1lKEQseixBLEMsdSwxMixmWzFdKSxDPWUoQyxELHosQSxkLDE3LGZbMl0pLEE9ZShBLEMsRCx6LHYsMjIsZlszXSksej1lKHosQSxDLEQscCw3LGZbNF0pLEQ9ZShELHosQSxDLF8sMTIsZls1XSksQz1lKEMsRCx6LEEseSwxNyxmWzZdKSxBPWUoQSxDLEQseixnLDIyLGZbN10pLHo9ZSh6LEEsQyxELEIsNyxmWzhdKSxEPWUoRCx6LEEsQyx3LDEyLGZbOV0pLEM9ZShDLEQseixBLGssMTcsZlsxMF0pLEE9ZShBLEMsRCx6LFMsMjIsZlsxMV0pLHo9ZSh6LEEsQyxELG0sNyxmWzEyXSksRD1lKEQseixBLEMseCwxMixmWzEzXSksQz1lKEMsRCx6LEEsYiwxNyxmWzE0XSksQT1lKEEsQyxELHosSCwyMixmWzE1XSksej1pKHosQSxDLEQsdSw1LGZbMTZdKSxEPWkoRCx6LEEsQyx5LDksZlsxN10pLEM9aShDLEQseixBLFMsMTQsZlsxOF0pLEE9aShBLEMsRCx6LGwsMjAsZlsxOV0pLHo9aSh6LEEsQyxELF8sNSxmWzIwXSksRD1pKEQseixBLEMsayw5LGZbMjFdKSxDPWkoQyxELHosQSxILDE0LGZbMjJdKSxBPWkoQSxDLEQseixwLDIwLGZbMjNdKSx6PWkoeixBLEMsRCx3LDUsZlsyNF0pLEQ9aShELHosQSxDLGIsOSxmWzI1XSksQz1pKEMsRCx6LEEsdiwxNCxmWzI2XSksQT1pKEEsQyxELHosQiwyMCxmWzI3XSksej1pKHosQSxDLEQseCw1LGZbMjhdKSxEPWkoRCx6LEEsQyxkLDksZlsyOV0pLEM9aShDLEQseixBLGcsMTQsZlszMF0pLEE9aShBLEMsRCx6LG0sMjAsZlszMV0pLHo9bih6LEEsQyxELF8sNCxmWzMyXSksRD1uKEQseixBLEMsQiwxMSxmWzMzXSksQz1uKEMsRCx6LEEsUywxNixmWzM0XSksQT1uKEEsQyxELHosYiwyMyxmWzM1XSksej1uKHosQSxDLEQsdSw0LGZbMzZdKSxEPW4oRCx6LEEsQyxwLDExLGZbMzddKSxDPW4oQyxELHosQSxnLDE2LGZbMzhdKSxBPW4oQSxDLEQseixrLDIzLGZbMzldKSx6PW4oeixBLEMsRCx4LDQsZls0MF0pLEQ9bihELHosQSxDLGwsMTEsZls0MV0pLEM9bihDLEQseixBLHYsMTYsZls0Ml0pLEE9bihBLEMsRCx6LHksMjMsZls0M10pLHo9bih6LEEsQyxELHcsNCxmWzQ0XSksRD1uKEQseixBLEMsbSwxMSxmWzQ1XSksQz1uKEMsRCx6LEEsSCwxNixmWzQ2XSksQT1uKEEsQyxELHosZCwyMyxmWzQ3XSksej1vKHosQSxDLEQsbCw2LGZbNDhdKSxEPW8oRCx6LEEsQyxnLDEwLGZbNDldKSxDPW8oQyxELHosQSxiLDE1LGZbNTBdKSxBPW8oQSxDLEQseixfLDIxLGZbNTFdKSx6PW8oeixBLEMsRCxtLDYsZls1Ml0pLEQ9byhELHosQSxDLHYsMTAsZls1M10pLEM9byhDLEQseixBLGssMTUsZls1NF0pLEE9byhBLEMsRCx6LHUsMjEsZls1NV0pLHo9byh6LEEsQyxELEIsNixmWzU2XSksRD1vKEQseixBLEMsSCwxMCxmWzU3XSksQz1vKEMsRCx6LEEseSwxNSxmWzU4XSksQT1vKEEsQyxELHoseCwyMSxmWzU5XSksej1vKHosQSxDLEQscCw2LGZbNjBdKSxEPW8oRCx6LEEsQyxTLDEwLGZbNjFdKSxDPW8oQyxELHosQSxkLDE1LGZbNjJdKSxBPW8oQSxDLEQseix3LDIxLGZbNjNdKSxoWzBdPWhbMF0renwwLGhbMV09aFsxXStBfDAsaFsyXT1oWzJdK0N8MCxoWzNdPWhbM10rRHwwfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9OCp0aGlzLl9uRGF0YUJ5dGVzLG49OCp0LnNpZ0J5dGVzO2Vbbj4+PjVdfD0xMjg8PDI0LW4lMzI7dmFyIG89ci5mbG9vcihpLzQyOTQ5NjcyOTYpLHM9aTtlWyhuKzY0Pj4+OTw8NCkrMTVdPTE2NzExOTM1JihvPDw4fG8+Pj4yNCl8NDI3ODI1NTM2MCYobzw8MjR8bz4+PjgpLGVbKG4rNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKHM8PDh8cz4+PjI0KXw0Mjc4MjU1MzYwJihzPDwyNHxzPj4+OCksdC5zaWdCeXRlcz00KihlLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBhPXRoaXMuX2hhc2gsYz1hLndvcmRzLGg9MDtoPDQ7aCsrKXt2YXIgbD1jW2hdO2NbaF09MTY3MTE5MzUmKGw8PDh8bD4+PjI0KXw0Mjc4MjU1MzYwJihsPDwyNHxsPj4+OCl9cmV0dXJuIGF9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9aC5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO3MuTUQ1PWguX2NyZWF0ZUhlbHBlcih1KSxzLkhtYWNNRDU9aC5fY3JlYXRlSG1hY0hlbHBlcih1KX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLldvcmRBcnJheSxuPWUuSGFzaGVyLG89ci5hbGdvLHM9W10sYT1vLlNIQTE9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgaS5pbml0KFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzgsMzI4NTM3NzUyMF0pfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxhPWVbM10sYz1lWzRdLGg9MDtoPDgwO2grKyl7aWYoaDwxNilzW2hdPTB8dFtyK2hdO2Vsc2V7dmFyIGw9c1toLTNdXnNbaC04XV5zW2gtMTRdXnNbaC0xNl07c1toXT1sPDwxfGw+Pj4zMX12YXIgZj0oaTw8NXxpPj4+MjcpK2Mrc1toXTtmKz1oPDIwPyhuJm98fm4mYSkrMTUxODUwMDI0OTpoPDQwPyhuXm9eYSkrMTg1OTc3NTM5MzpoPDYwPyhuJm98biZhfG8mYSktMTg5NDAwNzU4ODoobl5vXmEpLTg5OTQ5NzUxNCxjPWEsYT1vLG89bjw8MzB8bj4+PjIsbj1pLGk9Zn1lWzBdPWVbMF0raXwwLGVbMV09ZVsxXStufDAsZVsyXT1lWzJdK298MCxlWzNdPWVbM10rYXwwLGVbNF09ZVs0XStjfDB9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxyPXQud29yZHMsZT04KnRoaXMuX25EYXRhQnl0ZXMsaT04KnQuc2lnQnl0ZXM7cmV0dXJuIHJbaT4+PjVdfD0xMjg8PDI0LWklMzIsclsoaSs2ND4+Pjk8PDQpKzE0XT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSs2ND4+Pjk8PDQpKzE1XT1lLHQuc2lnQnl0ZXM9NCpyLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCksdGhpcy5faGFzaH0sY2xvbmU6ZnVuY3Rpb24oKXt2YXIgdD1uLmNsb25lLmNhbGwodGhpcyk7cmV0dXJuIHQuX2hhc2g9dGhpcy5faGFzaC5jbG9uZSgpLHR9fSk7ci5TSEExPW4uX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEExPW4uX2NyZWF0ZUhtYWNIZWxwZXIoYSl9KCksZnVuY3Rpb24ocil7dmFyIGU9dCxpPWUubGliLG49aS5Xb3JkQXJyYXksbz1pLkhhc2hlcixzPWUuYWxnbyxhPVtdLGM9W107IWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXtmb3IodmFyIGU9ci5zcXJ0KHQpLGk9MjtpPD1lO2krKylpZighKHQlaSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZSh0KXtyZXR1cm4gNDI5NDk2NzI5NioodC0oMHx0KSl8MH1mb3IodmFyIGk9MixuPTA7bjw2NDspdChpKSYmKG48OCYmKGFbbl09ZShyLnBvdyhpLC41KSkpLGNbbl09ZShyLnBvdyhpLDEvMykpLG4rKyksaSsrfSgpO3ZhciBoPVtdLGw9cy5TSEEyNTY9by5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KGEuc2xpY2UoMCkpfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9dGhpcy5faGFzaC53b3JkcyxpPWVbMF0sbj1lWzFdLG89ZVsyXSxzPWVbM10sYT1lWzRdLGw9ZVs1XSxmPWVbNl0sdT1lWzddLGQ9MDtkPDY0O2QrKyl7aWYoZDwxNiloW2RdPTB8dFtyK2RdO2Vsc2V7dmFyIHY9aFtkLTE1XSxwPSh2PDwyNXx2Pj4+NyleKHY8PDE0fHY+Pj4xOCledj4+PjMsXz1oW2QtMl0seT0oXzw8MTV8Xz4+PjE3KV4oXzw8MTN8Xz4+PjE5KV5fPj4+MTA7aFtkXT1wK2hbZC03XSt5K2hbZC0xNl19dmFyIGc9YSZsXn5hJmYsQj1pJm5eaSZvXm4mbyx3PShpPDwzMHxpPj4+MileKGk8PDE5fGk+Pj4xMyleKGk8PDEwfGk+Pj4yMiksaz0oYTw8MjZ8YT4+PjYpXihhPDwyMXxhPj4+MTEpXihhPDw3fGE+Pj4yNSksUz11K2srZytjW2RdK2hbZF0sbT13K0I7dT1mLGY9bCxsPWEsYT1zK1N8MCxzPW8sbz1uLG49aSxpPVMrbXwwfWVbMF09ZVswXStpfDAsZVsxXT1lWzFdK258MCxlWzJdPWVbMl0rb3wwLGVbM109ZVszXStzfDAsZVs0XT1lWzRdK2F8MCxlWzVdPWVbNV0rbHwwLGVbNl09ZVs2XStmfDAsZVs3XT1lWzddK3V8MH0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLGU9dC53b3JkcyxpPTgqdGhpcy5fbkRhdGFCeXRlcyxuPTgqdC5zaWdCeXRlcztyZXR1cm4gZVtuPj4+NV18PTEyODw8MjQtbiUzMixlWyhuKzY0Pj4+OTw8NCkrMTRdPXIuZmxvb3IoaS80Mjk0OTY3Mjk2KSxlWyhuKzY0Pj4+OTw8NCkrMTVdPWksdC5zaWdCeXRlcz00KmUubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKSx0aGlzLl9oYXNofSxjbG9uZTpmdW5jdGlvbigpe3ZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19KTtlLlNIQTI1Nj1vLl9jcmVhdGVIZWxwZXIobCksZS5IbWFjU0hBMjU2PW8uX2NyZWF0ZUhtYWNIZWxwZXIobCl9KE1hdGgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0KXtyZXR1cm4gdDw8OCY0Mjc4MjU1MzYwfHQ+Pj44JjE2NzExOTM1fXZhciBlPXQsaT1lLmxpYixuPWkuV29yZEFycmF5LG89ZS5lbmM7by5VdGYxNj1vLlV0ZjE2QkU9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT1bXSxuPTA7bjxlO24rPTIpe3ZhciBvPXJbbj4+PjJdPj4+MTYtbiU0KjgmNjU1MzU7aS5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUobykpfXJldHVybiBpLmpvaW4oXCJcIil9LHBhcnNlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgcj10Lmxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjFdfD10LmNoYXJDb2RlQXQoaSk8PDE2LWklMioxNjtyZXR1cm4gbi5jcmVhdGUoZSwyKnIpfX07by5VdGYxNkxFPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPXQud29yZHMsaT10LnNpZ0J5dGVzLG49W10sbz0wO288aTtvKz0yKXt2YXIgcz1yKGVbbz4+PjJdPj4+MTYtbyU0KjgmNjU1MzUpO24ucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKHMpKX1yZXR1cm4gbi5qb2luKFwiXCIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgsaT1bXSxvPTA7bzxlO28rKylpW28+Pj4xXXw9cih0LmNoYXJDb2RlQXQobyk8PDE2LW8lMioxNik7cmV0dXJuIG4uY3JlYXRlKGksMiplKX19fSgpLGZ1bmN0aW9uKCl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgQXJyYXlCdWZmZXIpe3ZhciByPXQsZT1yLmxpYixpPWUuV29yZEFycmF5LG49aS5pbml0LG89aS5pbml0PWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlciYmKHQ9bmV3IFVpbnQ4QXJyYXkodCkpLCh0IGluc3RhbmNlb2YgSW50OEFycmF5fHxcInVuZGVmaW5lZFwiIT10eXBlb2YgVWludDhDbGFtcGVkQXJyYXkmJnQgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheXx8dCBpbnN0YW5jZW9mIEludDE2QXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MTZBcnJheXx8dCBpbnN0YW5jZW9mIEludDMyQXJyYXl8fHQgaW5zdGFuY2VvZiBVaW50MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0MzJBcnJheXx8dCBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkmJih0PW5ldyBVaW50OEFycmF5KHQuYnVmZmVyLHQuYnl0ZU9mZnNldCx0LmJ5dGVMZW5ndGgpKSx0IGluc3RhbmNlb2YgVWludDhBcnJheSl7Zm9yKHZhciByPXQuYnl0ZUxlbmd0aCxlPVtdLGk9MDtpPHI7aSsrKWVbaT4+PjJdfD10W2ldPDwyNC1pJTQqODtuLmNhbGwodGhpcyxlLHIpfWVsc2Ugbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O28ucHJvdG90eXBlPWl9fSgpLGZ1bmN0aW9uKHIpe2Z1bmN0aW9uIGUodCxyLGUpe3JldHVybiB0XnJeZX1mdW5jdGlvbiBpKHQscixlKXtyZXR1cm4gdCZyfH50JmV9ZnVuY3Rpb24gbih0LHIsZSl7cmV0dXJuKHR8fnIpXmV9ZnVuY3Rpb24gbyh0LHIsZSl7cmV0dXJuIHQmZXxyJn5lfWZ1bmN0aW9uIHModCxyLGUpe3JldHVybiB0XihyfH5lKX1mdW5jdGlvbiBhKHQscil7cmV0dXJuIHQ8PHJ8dD4+PjMyLXJ9dmFyIGM9dCxoPWMubGliLGw9aC5Xb3JkQXJyYXksZj1oLkhhc2hlcix1PWMuYWxnbyxkPWwuY3JlYXRlKFswLDEsMiwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDcsNCwxMywxLDEwLDYsMTUsMywxMiwwLDksNSwyLDE0LDExLDgsMywxMCwxNCw0LDksMTUsOCwxLDIsNywwLDYsMTMsMTEsNSwxMiwxLDksMTEsMTAsMCw4LDEyLDQsMTMsMyw3LDE1LDE0LDUsNiwyLDQsMCw1LDksNywxMiwyLDEwLDE0LDEsMyw4LDExLDYsMTUsMTNdKSx2PWwuY3JlYXRlKFs1LDE0LDcsMCw5LDIsMTEsNCwxMyw2LDE1LDgsMSwxMCwzLDEyLDYsMTEsMyw3LDAsMTMsNSwxMCwxNCwxNSw4LDEyLDQsOSwxLDIsMTUsNSwxLDMsNywxNCw2LDksMTEsOCwxMiwyLDEwLDAsNCwxMyw4LDYsNCwxLDMsMTEsMTUsMCw1LDEyLDIsMTMsOSw3LDEwLDE0LDEyLDE1LDEwLDQsMSw1LDgsNyw2LDIsMTMsMTQsMCwzLDksMTFdKSxwPWwuY3JlYXRlKFsxMSwxNCwxNSwxMiw1LDgsNyw5LDExLDEzLDE0LDE1LDYsNyw5LDgsNyw2LDgsMTMsMTEsOSw3LDE1LDcsMTIsMTUsOSwxMSw3LDEzLDEyLDExLDEzLDYsNywxNCw5LDEzLDE1LDE0LDgsMTMsNiw1LDEyLDcsNSwxMSwxMiwxNCwxNSwxNCwxNSw5LDgsOSwxNCw1LDYsOCw2LDUsMTIsOSwxNSw1LDExLDYsOCwxMywxMiw1LDEyLDEzLDE0LDExLDgsNSw2XSksXz1sLmNyZWF0ZShbOCw5LDksMTEsMTMsMTUsMTUsNSw3LDcsOCwxMSwxNCwxNCwxMiw2LDksMTMsMTUsNywxMiw4LDksMTEsNyw3LDEyLDcsNiwxNSwxMywxMSw5LDcsMTUsMTEsOCw2LDYsMTQsMTIsMTMsNSwxNCwxMywxMyw3LDUsMTUsNSw4LDExLDE0LDE0LDYsMTQsNiw5LDEyLDksMTIsNSwxNSw4LDgsNSwxMiw5LDEyLDUsMTQsNiw4LDEzLDYsNSwxNSwxMywxMSwxMV0pLHk9bC5jcmVhdGUoWzAsMTUxODUwMDI0OSwxODU5Nzc1MzkzLDI0MDA5NTk3MDgsMjg0MDg1MzgzOF0pLGc9bC5jcmVhdGUoWzEzNTI4Mjk5MjYsMTU0ODYwMzY4NCwxODM2MDcyNjkxLDIwNTM5OTQyMTcsMF0pLEI9dS5SSVBFTUQxNjA9Zi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1sLmNyZWF0ZShbMTczMjU4NDE5Myw0MDIzMjMzNDE3LDI1NjIzODMxMDIsMjcxNzMzODc4LDMyODUzNzc1MjBdKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBjPTA7YzwxNjtjKyspe3ZhciBoPXIrYyxsPXRbaF07dFtoXT0xNjcxMTkzNSYobDw8OHxsPj4+MjQpfDQyNzgyNTUzNjAmKGw8PDI0fGw+Pj44KX12YXIgZix1LEIsdyxrLFMsbSx4LGIsSCx6PXRoaXMuX2hhc2gud29yZHMsQT15LndvcmRzLEM9Zy53b3JkcyxEPWQud29yZHMsUj12LndvcmRzLEU9cC53b3JkcyxNPV8ud29yZHM7Uz1mPXpbMF0sbT11PXpbMV0seD1CPXpbMl0sYj13PXpbM10sSD1rPXpbNF07Zm9yKHZhciBGLGM9MDtjPDgwO2MrPTEpRj1mK3RbcitEW2NdXXwwLEYrPWM8MTY/ZSh1LEIsdykrQVswXTpjPDMyP2kodSxCLHcpK0FbMV06Yzw0OD9uKHUsQix3KStBWzJdOmM8NjQ/byh1LEIsdykrQVszXTpzKHUsQix3KStBWzRdLEZ8PTAsRj1hKEYsRVtjXSksRj1GK2t8MCxmPWssaz13LHc9YShCLDEwKSxCPXUsdT1GLEY9Uyt0W3IrUltjXV18MCxGKz1jPDE2P3MobSx4LGIpK0NbMF06YzwzMj9vKG0seCxiKStDWzFdOmM8NDg/bihtLHgsYikrQ1syXTpjPDY0P2kobSx4LGIpK0NbM106ZShtLHgsYikrQ1s0XSxGfD0wLEY9YShGLE1bY10pLEY9RitIfDAsUz1ILEg9YixiPWEoeCwxMCkseD1tLG09RjtGPXpbMV0rQitifDAselsxXT16WzJdK3crSHwwLHpbMl09elszXStrK1N8MCx6WzNdPXpbNF0rZittfDAsels0XT16WzBdK3UreHwwLHpbMF09Rn0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrNjQ+Pj45PDw0KSsxNF09MTY3MTE5MzUmKGU8PDh8ZT4+PjI0KXw0Mjc4MjU1MzYwJihlPDwyNHxlPj4+OCksdC5zaWdCeXRlcz00KihyLmxlbmd0aCsxKSx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBuPXRoaXMuX2hhc2gsbz1uLndvcmRzLHM9MDtzPDU7cysrKXt2YXIgYT1vW3NdO29bc109MTY3MTE5MzUmKGE8PDh8YT4+PjI0KXw0Mjc4MjU1MzYwJihhPDwyNHxhPj4+OCl9cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9Zi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fX0pO2MuUklQRU1EMTYwPWYuX2NyZWF0ZUhlbHBlcihCKSxjLkhtYWNSSVBFTUQxNjA9Zi5fY3JlYXRlSG1hY0hlbHBlcihCKX0oTWF0aCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJhc2Usbj1yLmVuYyxvPW4uVXRmOCxzPXIuYWxnbztzLkhNQUM9aS5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxyKXt0PXRoaXMuX2hhc2hlcj1uZXcgdC5pbml0LFwic3RyaW5nXCI9PXR5cGVvZiByJiYocj1vLnBhcnNlKHIpKTt2YXIgZT10LmJsb2NrU2l6ZSxpPTQqZTtyLnNpZ0J5dGVzPmkmJihyPXQuZmluYWxpemUocikpLHIuY2xhbXAoKTtmb3IodmFyIG49dGhpcy5fb0tleT1yLmNsb25lKCkscz10aGlzLl9pS2V5PXIuY2xvbmUoKSxhPW4ud29yZHMsYz1zLndvcmRzLGg9MDtoPGU7aCsrKWFbaF1ePTE1NDk1NTY4MjgsY1toXV49OTA5NTIyNDg2O24uc2lnQnl0ZXM9cy5zaWdCeXRlcz1pLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9oYXNoZXI7dC5yZXNldCgpLHQudXBkYXRlKHRoaXMuX2lLZXkpfSx1cGRhdGU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2hhc2hlci51cGRhdGUodCksdGhpc30sZmluYWxpemU6ZnVuY3Rpb24odCl7dmFyIHI9dGhpcy5faGFzaGVyLGU9ci5maW5hbGl6ZSh0KTtyLnJlc2V0KCk7dmFyIGk9ci5maW5hbGl6ZSh0aGlzLl9vS2V5LmNsb25lKCkuY29uY2F0KGUpKTtyZXR1cm4gaX19KX0oKSxmdW5jdGlvbigpe3ZhciByPXQsZT1yLmxpYixpPWUuQmFzZSxuPWUuV29yZEFycmF5LG89ci5hbGdvLHM9by5TSEExLGE9by5ITUFDLGM9by5QQktERjI9aS5leHRlbmQoe2NmZzppLmV4dGVuZCh7a2V5U2l6ZTo0LGhhc2hlcjpzLGl0ZXJhdGlvbnM6MX0pLGluaXQ6ZnVuY3Rpb24odCl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKHQpfSxjb21wdXRlOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuY2ZnLGk9YS5jcmVhdGUoZS5oYXNoZXIsdCksbz1uLmNyZWF0ZSgpLHM9bi5jcmVhdGUoWzFdKSxjPW8ud29yZHMsaD1zLndvcmRzLGw9ZS5rZXlTaXplLGY9ZS5pdGVyYXRpb25zO2MubGVuZ3RoPGw7KXt2YXIgdT1pLnVwZGF0ZShyKS5maW5hbGl6ZShzKTtpLnJlc2V0KCk7Zm9yKHZhciBkPXUud29yZHMsdj1kLmxlbmd0aCxwPXUsXz0xO188ZjtfKyspe3A9aS5maW5hbGl6ZShwKSxpLnJlc2V0KCk7Zm9yKHZhciB5PXAud29yZHMsZz0wO2c8djtnKyspZFtnXV49eVtnXX1vLmNvbmNhdCh1KSxoWzBdKyt9cmV0dXJuIG8uc2lnQnl0ZXM9NCpsLG99fSk7ci5QQktERjI9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBjLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5CYXNlLG49ZS5Xb3JkQXJyYXksbz1yLmFsZ28scz1vLk1ENSxhPW8uRXZwS0RGPWkuZXh0ZW5kKHtjZmc6aS5leHRlbmQoe2tleVNpemU6NCxoYXNoZXI6cyxpdGVyYXRpb25zOjF9KSxpbml0OmZ1bmN0aW9uKHQpe3RoaXMuY2ZnPXRoaXMuY2ZnLmV4dGVuZCh0KX0sY29tcHV0ZTpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLmNmZyxpPWUuaGFzaGVyLmNyZWF0ZSgpLG89bi5jcmVhdGUoKSxzPW8ud29yZHMsYT1lLmtleVNpemUsYz1lLml0ZXJhdGlvbnM7cy5sZW5ndGg8YTspe2gmJmkudXBkYXRlKGgpO3ZhciBoPWkudXBkYXRlKHQpLmZpbmFsaXplKHIpO2kucmVzZXQoKTtmb3IodmFyIGw9MTtsPGM7bCsrKWg9aS5maW5hbGl6ZShoKSxpLnJlc2V0KCk7by5jb25jYXQoaCl9cmV0dXJuIG8uc2lnQnl0ZXM9NCphLG99fSk7ci5FdnBLREY9ZnVuY3Rpb24odCxyLGUpe3JldHVybiBhLmNyZWF0ZShlKS5jb21wdXRlKHQscil9fSgpLGZ1bmN0aW9uKCl7dmFyIHI9dCxlPXIubGliLGk9ZS5Xb3JkQXJyYXksbj1yLmFsZ28sbz1uLlNIQTI1NixzPW4uU0hBMjI0PW8uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IGkuaW5pdChbMzIzODM3MTAzMiw5MTQxNTA2NjMsODEyNzAyOTk5LDQxNDQ5MTI2OTcsNDI5MDc3NTg1NywxNzUwNjAzMDI1LDE2OTQwNzY4MzksMzIwNDA3NTQyOF0pfSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PW8uX2RvRmluYWxpemUuY2FsbCh0aGlzKTtyZXR1cm4gdC5zaWdCeXRlcy09NCx0fX0pO3IuU0hBMjI0PW8uX2NyZWF0ZUhlbHBlcihzKSxyLkhtYWNTSEEyMjQ9by5fY3JlYXRlSG1hY0hlbHBlcihzKX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLkJhc2Usbz1pLldvcmRBcnJheSxzPWUueDY0PXt9O3MuV29yZD1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0LHIpe3RoaXMuaGlnaD10LHRoaXMubG93PXJ9fSkscy5Xb3JkQXJyYXk9bi5leHRlbmQoe2luaXQ6ZnVuY3Rpb24odCxlKXt0PXRoaXMud29yZHM9dHx8W10sZSE9cj90aGlzLnNpZ0J5dGVzPWU6dGhpcy5zaWdCeXRlcz04KnQubGVuZ3RofSx0b1gzMjpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLndvcmRzLHI9dC5sZW5ndGgsZT1bXSxpPTA7aTxyO2krKyl7dmFyIG49dFtpXTtlLnB1c2gobi5oaWdoKSxlLnB1c2gobi5sb3cpfXJldHVybiBvLmNyZWF0ZShlLHRoaXMuc2lnQnl0ZXMpfSxjbG9uZTpmdW5jdGlvbigpe2Zvcih2YXIgdD1uLmNsb25lLmNhbGwodGhpcykscj10LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksZT1yLmxlbmd0aCxpPTA7aTxlO2krKylyW2ldPXJbaV0uY2xvbmUoKTtyZXR1cm4gdH19KX0oKSxmdW5jdGlvbihyKXt2YXIgZT10LGk9ZS5saWIsbj1pLldvcmRBcnJheSxvPWkuSGFzaGVyLHM9ZS54NjQsYT1zLldvcmQsYz1lLmFsZ28saD1bXSxsPVtdLGY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTEscj0wLGU9MDtlPDI0O2UrKyl7aFt0KzUqcl09KGUrMSkqKGUrMikvMiU2NDt2YXIgaT1yJTUsbj0oMip0KzMqciklNTt0PWkscj1ufWZvcih2YXIgdD0wO3Q8NTt0KyspZm9yKHZhciByPTA7cjw1O3IrKylsW3QrNSpyXT1yKygyKnQrMypyKSU1KjU7Zm9yKHZhciBvPTEscz0wO3M8MjQ7cysrKXtmb3IodmFyIGM9MCx1PTAsZD0wO2Q8NztkKyspe2lmKDEmbyl7dmFyIHY9KDE8PGQpLTE7djwzMj91Xj0xPDx2OmNePTE8PHYtMzJ9MTI4Jm8/bz1vPDwxXjExMzpvPDw9MX1mW3NdPWEuY3JlYXRlKGMsdSl9fSgpO3ZhciB1PVtdOyFmdW5jdGlvbigpe2Zvcih2YXIgdD0wO3Q8MjU7dCsrKXVbdF09YS5jcmVhdGUoKX0oKTt2YXIgZD1jLlNIQTM9by5leHRlbmQoe2NmZzpvLmNmZy5leHRlbmQoe291dHB1dExlbmd0aDo1MTJ9KSxfZG9SZXNldDpmdW5jdGlvbigpe2Zvcih2YXIgdD10aGlzLl9zdGF0ZT1bXSxyPTA7cjwyNTtyKyspdFtyXT1uZXcgYS5pbml0O3RoaXMuYmxvY2tTaXplPSgxNjAwLTIqdGhpcy5jZmcub3V0cHV0TGVuZ3RoKS8zMn0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7Zm9yKHZhciBlPXRoaXMuX3N0YXRlLGk9dGhpcy5ibG9ja1NpemUvMixuPTA7bjxpO24rKyl7dmFyIG89dFtyKzIqbl0scz10W3IrMipuKzFdO289MTY3MTE5MzUmKG88PDh8bz4+PjI0KXw0Mjc4MjU1MzYwJihvPDwyNHxvPj4+OCkscz0xNjcxMTkzNSYoczw8OHxzPj4+MjQpfDQyNzgyNTUzNjAmKHM8PDI0fHM+Pj44KTt2YXIgYT1lW25dO2EuaGlnaF49cyxhLmxvd149b31mb3IodmFyIGM9MDtjPDI0O2MrKyl7Zm9yKHZhciBkPTA7ZDw1O2QrKyl7Zm9yKHZhciB2PTAscD0wLF89MDtfPDU7XysrKXt2YXIgYT1lW2QrNSpfXTt2Xj1hLmhpZ2gscF49YS5sb3d9dmFyIHk9dVtkXTt5LmhpZ2g9dix5Lmxvdz1wfWZvcih2YXIgZD0wO2Q8NTtkKyspZm9yKHZhciBnPXVbKGQrNCklNV0sQj11WyhkKzEpJTVdLHc9Qi5oaWdoLGs9Qi5sb3csdj1nLmhpZ2heKHc8PDF8az4+PjMxKSxwPWcubG93XihrPDwxfHc+Pj4zMSksXz0wO188NTtfKyspe3ZhciBhPWVbZCs1Kl9dO2EuaGlnaF49dixhLmxvd149cH1mb3IodmFyIFM9MTtTPDI1O1MrKyl7dmFyIGE9ZVtTXSxtPWEuaGlnaCx4PWEubG93LGI9aFtTXTtpZihiPDMyKXZhciB2PW08PGJ8eD4+PjMyLWIscD14PDxifG0+Pj4zMi1iO2Vsc2UgdmFyIHY9eDw8Yi0zMnxtPj4+NjQtYixwPW08PGItMzJ8eD4+PjY0LWI7dmFyIEg9dVtsW1NdXTtILmhpZ2g9dixILmxvdz1wfXZhciB6PXVbMF0sQT1lWzBdO3ouaGlnaD1BLmhpZ2gsei5sb3c9QS5sb3c7Zm9yKHZhciBkPTA7ZDw1O2QrKylmb3IodmFyIF89MDtfPDU7XysrKXt2YXIgUz1kKzUqXyxhPWVbU10sQz11W1NdLEQ9dVsoZCsxKSU1KzUqX10sUj11WyhkKzIpJTUrNSpfXTthLmhpZ2g9Qy5oaWdoXn5ELmhpZ2gmUi5oaWdoLGEubG93PUMubG93Xn5ELmxvdyZSLmxvd312YXIgYT1lWzBdLEU9ZltjXTthLmhpZ2hePUUuaGlnaCxhLmxvd149RS5sb3d9fSxfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2RhdGEsZT10LndvcmRzLGk9KDgqdGhpcy5fbkRhdGFCeXRlcyw4KnQuc2lnQnl0ZXMpLG89MzIqdGhpcy5ibG9ja1NpemU7ZVtpPj4+NV18PTE8PDI0LWklMzIsZVsoci5jZWlsKChpKzEpL28pKm8+Pj41KS0xXXw9MTI4LHQuc2lnQnl0ZXM9NCplLmxlbmd0aCx0aGlzLl9wcm9jZXNzKCk7Zm9yKHZhciBzPXRoaXMuX3N0YXRlLGE9dGhpcy5jZmcub3V0cHV0TGVuZ3RoLzgsYz1hLzgsaD1bXSxsPTA7bDxjO2wrKyl7dmFyIGY9c1tsXSx1PWYuaGlnaCxkPWYubG93O3U9MTY3MTE5MzUmKHU8PDh8dT4+PjI0KXw0Mjc4MjU1MzYwJih1PDwyNHx1Pj4+OCksZD0xNjcxMTkzNSYoZDw8OHxkPj4+MjQpfDQyNzgyNTUzNjAmKGQ8PDI0fGQ+Pj44KSxoLnB1c2goZCksaC5wdXNoKHUpfXJldHVybiBuZXcgbi5pbml0KGgsYSl9LGNsb25lOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PW8uY2xvbmUuY2FsbCh0aGlzKSxyPXQuX3N0YXRlPXRoaXMuX3N0YXRlLnNsaWNlKDApLGU9MDtlPDI1O2UrKylyW2VdPXJbZV0uY2xvbmUoKTtyZXR1cm4gdH19KTtlLlNIQTM9by5fY3JlYXRlSGVscGVyKGQpLGUuSG1hY1NIQTM9by5fY3JlYXRlSG1hY0hlbHBlcihkKX0oTWF0aCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7cmV0dXJuIHMuY3JlYXRlLmFwcGx5KHMsYXJndW1lbnRzKX12YXIgZT10LGk9ZS5saWIsbj1pLkhhc2hlcixvPWUueDY0LHM9by5Xb3JkLGE9by5Xb3JkQXJyYXksYz1lLmFsZ28saD1bcigxMTE2MzUyNDA4LDM2MDk3Njc0NTgpLHIoMTg5OTQ0NzQ0MSw2MDI4OTE3MjUpLHIoMzA0OTMyMzQ3MSwzOTY0NDg0Mzk5KSxyKDM5MjEwMDk1NzMsMjE3MzI5NTU0OCkscig5NjE5ODcxNjMsNDA4MTYyODQ3MikscigxNTA4OTcwOTkzLDMwNTM4MzQyNjUpLHIoMjQ1MzYzNTc0OCwyOTM3NjcxNTc5KSxyKDI4NzA3NjMyMjEsMzY2NDYwOTU2MCkscigzNjI0MzgxMDgwLDI3MzQ4ODMzOTQpLHIoMzEwNTk4NDAxLDExNjQ5OTY1NDIpLHIoNjA3MjI1Mjc4LDEzMjM2MTA3NjQpLHIoMTQyNjg4MTk4NywzNTkwMzA0OTk0KSxyKDE5MjUwNzgzODgsNDA2ODE4MjM4MykscigyMTYyMDc4MjA2LDk5MTMzNjExMykscigyNjE0ODg4MTAzLDYzMzgwMzMxNykscigzMjQ4MjIyNTgwLDM0Nzk3NzQ4NjgpLHIoMzgzNTM5MDQwMSwyNjY2NjEzNDU4KSxyKDQwMjIyMjQ3NzQsOTQ0NzExMTM5KSxyKDI2NDM0NzA3OCwyMzQxMjYyNzczKSxyKDYwNDgwNzYyOCwyMDA3ODAwOTMzKSxyKDc3MDI1NTk4MywxNDk1OTkwOTAxKSxyKDEyNDkxNTAxMjIsMTg1NjQzMTIzNSkscigxNTU1MDgxNjkyLDMxNzUyMTgxMzIpLHIoMTk5NjA2NDk4NiwyMTk4OTUwODM3KSxyKDI1NTQyMjA4ODIsMzk5OTcxOTMzOSkscigyODIxODM0MzQ5LDc2Njc4NDAxNikscigyOTUyOTk2ODA4LDI1NjY1OTQ4NzkpLHIoMzIxMDMxMzY3MSwzMjAzMzM3OTU2KSxyKDMzMzY1NzE4OTEsMTAzNDQ1NzAyNikscigzNTg0NTI4NzExLDI0NjY5NDg5MDEpLHIoMTEzOTI2OTkzLDM3NTgzMjYzODMpLHIoMzM4MjQxODk1LDE2ODcxNzkzNikscig2NjYzMDcyMDUsMTE4ODE3OTk2NCkscig3NzM1Mjk5MTIsMTU0NjA0NTczNCkscigxMjk0NzU3MzcyLDE1MjI4MDU0ODUpLHIoMTM5NjE4MjI5MSwyNjQzODMzODIzKSxyKDE2OTUxODM3MDAsMjM0MzUyNzM5MCkscigxOTg2NjYxMDUxLDEwMTQ0Nzc0ODApLHIoMjE3NzAyNjM1MCwxMjA2NzU5MTQyKSxyKDI0NTY5NTYwMzcsMzQ0MDc3NjI3KSxyKDI3MzA0ODU5MjEsMTI5MDg2MzQ2MCkscigyODIwMzAyNDExLDMxNTg0NTQyNzMpLHIoMzI1OTczMDgwMCwzNTA1OTUyNjU3KSxyKDMzNDU3NjQ3NzEsMTA2MjE3MDA4KSxyKDM1MTYwNjU4MTcsMzYwNjAwODM0NCkscigzNjAwMzUyODA0LDE0MzI3MjU3NzYpLHIoNDA5NDU3MTkwOSwxNDY3MDMxNTk0KSxyKDI3NTQyMzM0NCw4NTExNjk3MjApLHIoNDMwMjI3NzM0LDMxMDA4MjM3NTIpLHIoNTA2OTQ4NjE2LDEzNjMyNTgxOTUpLHIoNjU5MDYwNTU2LDM3NTA2ODU1OTMpLHIoODgzOTk3ODc3LDM3ODUwNTAyODApLHIoOTU4MTM5NTcxLDMzMTgzMDc0MjcpLHIoMTMyMjgyMjIxOCwzODEyNzIzNDAzKSxyKDE1MzcwMDIwNjMsMjAwMzAzNDk5NSkscigxNzQ3ODczNzc5LDM2MDIwMzY4OTkpLHIoMTk1NTU2MjIyMiwxNTc1OTkwMDEyKSxyKDIwMjQxMDQ4MTUsMTEyNTU5MjkyOCkscigyMjI3NzMwNDUyLDI3MTY5MDQzMDYpLHIoMjM2MTg1MjQyNCw0NDI3NzYwNDQpLHIoMjQyODQzNjQ3NCw1OTM2OTgzNDQpLHIoMjc1NjczNDE4NywzNzMzMTEwMjQ5KSxyKDMyMDQwMzE0NzksMjk5OTM1MTU3MykscigzMzI5MzI1Mjk4LDM4MTU5MjA0MjcpLHIoMzM5MTU2OTYxNCwzOTI4MzgzOTAwKSxyKDM1MTUyNjcyNzEsNTY2MjgwNzExKSxyKDM5NDAxODc2MDYsMzQ1NDA2OTUzNCkscig0MTE4NjMwMjcxLDQwMDAyMzk5OTIpLHIoMTE2NDE4NDc0LDE5MTQxMzg1NTQpLHIoMTc0MjkyNDIxLDI3MzEwNTUyNzApLHIoMjg5MzgwMzU2LDMyMDM5OTMwMDYpLHIoNDYwMzkzMjY5LDMyMDYyMDMxNSkscig2ODU0NzE3MzMsNTg3NDk2ODM2KSxyKDg1MjE0Mjk3MSwxMDg2NzkyODUxKSxyKDEwMTcwMzYyOTgsMzY1NTQzMTAwKSxyKDExMjYwMDA1ODAsMjYxODI5NzY3NikscigxMjg4MDMzNDcwLDM0MDk4NTUxNTgpLHIoMTUwMTUwNTk0OCw0MjM0NTA5ODY2KSxyKDE2MDcxNjc5MTUsOTg3MTY3NDY4KSxyKDE4MTY0MDIzMTYsMTI0NjE4OTU5MSldLGw9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PTA7dDw4MDt0KyspbFt0XT1yKCl9KCk7dmFyIGY9Yy5TSEE1MTI9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgYS5pbml0KFtuZXcgcy5pbml0KDE3NzkwMzM3MDMsNDA4OTIzNTcyMCksbmV3IHMuaW5pdCgzMTQ0MTM0Mjc3LDIyMjc4NzM1OTUpLG5ldyBzLmluaXQoMTAxMzkwNDI0Miw0MjcxMTc1NzIzKSxuZXcgcy5pbml0KDI3NzM0ODA3NjIsMTU5NTc1MDEyOSksbmV3IHMuaW5pdCgxMzU5ODkzMTE5LDI5MTc1NjUxMzcpLG5ldyBzLmluaXQoMjYwMDgyMjkyNCw3MjU1MTExOTkpLG5ldyBzLmluaXQoNTI4NzM0NjM1LDQyMTUzODk1NDcpLG5ldyBzLmluaXQoMTU0MTQ1OTIyNSwzMjcwMzMyMDkpXSl9LF9kb1Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe2Zvcih2YXIgZT10aGlzLl9oYXNoLndvcmRzLGk9ZVswXSxuPWVbMV0sbz1lWzJdLHM9ZVszXSxhPWVbNF0sYz1lWzVdLGY9ZVs2XSx1PWVbN10sZD1pLmhpZ2gsdj1pLmxvdyxwPW4uaGlnaCxfPW4ubG93LHk9by5oaWdoLGc9by5sb3csQj1zLmhpZ2gsdz1zLmxvdyxrPWEuaGlnaCxTPWEubG93LG09Yy5oaWdoLHg9Yy5sb3csYj1mLmhpZ2gsSD1mLmxvdyx6PXUuaGlnaCxBPXUubG93LEM9ZCxEPXYsUj1wLEU9XyxNPXksRj1nLFA9QixXPXcsTz1rLFU9UyxJPW0sSz14LFg9YixMPUgsaj16LE49QSxUPTA7VDw4MDtUKyspe3ZhciBaPWxbVF07aWYoVDwxNil2YXIgcT1aLmhpZ2g9MHx0W3IrMipUXSxHPVoubG93PTB8dFtyKzIqVCsxXTtlbHNle3ZhciBKPWxbVC0xNV0sJD1KLmhpZ2gsUT1KLmxvdyxWPSgkPj4+MXxRPDwzMSleKCQ+Pj44fFE8PDI0KV4kPj4+NyxZPShRPj4+MXwkPDwzMSleKFE+Pj44fCQ8PDI0KV4oUT4+Pjd8JDw8MjUpLHR0PWxbVC0yXSxydD10dC5oaWdoLGV0PXR0LmxvdyxpdD0ocnQ+Pj4xOXxldDw8MTMpXihydDw8M3xldD4+PjI5KV5ydD4+PjYsbnQ9KGV0Pj4+MTl8cnQ8PDEzKV4oZXQ8PDN8cnQ+Pj4yOSleKGV0Pj4+NnxydDw8MjYpLG90PWxbVC03XSxzdD1vdC5oaWdoLGF0PW90LmxvdyxjdD1sW1QtMTZdLGh0PWN0LmhpZ2gsbHQ9Y3QubG93LEc9WSthdCxxPVYrc3QrKEc+Pj4wPFk+Pj4wPzE6MCksRz1HK250LHE9cStpdCsoRz4+PjA8bnQ+Pj4wPzE6MCksRz1HK2x0LHE9cStodCsoRz4+PjA8bHQ+Pj4wPzE6MCk7Wi5oaWdoPXEsWi5sb3c9R312YXIgZnQ9TyZJXn5PJlgsdXQ9VSZLXn5VJkwsZHQ9QyZSXkMmTV5SJk0sdnQ9RCZFXkQmRl5FJkYscHQ9KEM+Pj4yOHxEPDw0KV4oQzw8MzB8RD4+PjIpXihDPDwyNXxEPj4+NyksX3Q9KEQ+Pj4yOHxDPDw0KV4oRDw8MzB8Qz4+PjIpXihEPDwyNXxDPj4+NykseXQ9KE8+Pj4xNHxVPDwxOCleKE8+Pj4xOHxVPDwxNCleKE88PDIzfFU+Pj45KSxndD0oVT4+PjE0fE88PDE4KV4oVT4+PjE4fE88PDE0KV4oVTw8MjN8Tz4+PjkpLEJ0PWhbVF0sd3Q9QnQuaGlnaCxrdD1CdC5sb3csU3Q9TitndCxtdD1qK3l0KyhTdD4+PjA8Tj4+PjA/MTowKSxTdD1TdCt1dCxtdD1tdCtmdCsoU3Q+Pj4wPHV0Pj4+MD8xOjApLFN0PVN0K2t0LG10PW10K3d0KyhTdD4+PjA8a3Q+Pj4wPzE6MCksU3Q9U3QrRyxtdD1tdCtxKyhTdD4+PjA8Rz4+PjA/MTowKSx4dD1fdCt2dCxidD1wdCtkdCsoeHQ+Pj4wPF90Pj4+MD8xOjApO2o9WCxOPUwsWD1JLEw9SyxJPU8sSz1VLFU9VytTdHwwLE89UCttdCsoVT4+PjA8Vz4+PjA/MTowKXwwLFA9TSxXPUYsTT1SLEY9RSxSPUMsRT1ELEQ9U3QreHR8MCxDPW10K2J0KyhEPj4+MDxTdD4+PjA/MTowKXwwfXY9aS5sb3c9ditELGkuaGlnaD1kK0MrKHY+Pj4wPEQ+Pj4wPzE6MCksXz1uLmxvdz1fK0Usbi5oaWdoPXArUisoXz4+PjA8RT4+PjA/MTowKSxnPW8ubG93PWcrRixvLmhpZ2g9eStNKyhnPj4+MDxGPj4+MD8xOjApLHc9cy5sb3c9dytXLHMuaGlnaD1CK1ArKHc+Pj4wPFc+Pj4wPzE6MCksUz1hLmxvdz1TK1UsYS5oaWdoPWsrTysoUz4+PjA8VT4+PjA/MTowKSx4PWMubG93PXgrSyxjLmhpZ2g9bStJKyh4Pj4+MDxLPj4+MD8xOjApLEg9Zi5sb3c9SCtMLGYuaGlnaD1iK1grKEg+Pj4wPEw+Pj4wPzE6MCksQT11Lmxvdz1BK04sdS5oaWdoPXoraisoQT4+PjA8Tj4+PjA/MTowKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9kYXRhLHI9dC53b3JkcyxlPTgqdGhpcy5fbkRhdGFCeXRlcyxpPTgqdC5zaWdCeXRlcztyW2k+Pj41XXw9MTI4PDwyNC1pJTMyLHJbKGkrMTI4Pj4+MTA8PDUpKzMwXT1NYXRoLmZsb29yKGUvNDI5NDk2NzI5NiksclsoaSsxMjg+Pj4xMDw8NSkrMzFdPWUsdC5zaWdCeXRlcz00KnIubGVuZ3RoLHRoaXMuX3Byb2Nlc3MoKTt2YXIgbj10aGlzLl9oYXNoLnRvWDMyKCk7cmV0dXJuIG59LGNsb25lOmZ1bmN0aW9uKCl7dmFyIHQ9bi5jbG9uZS5jYWxsKHRoaXMpO3JldHVybiB0Ll9oYXNoPXRoaXMuX2hhc2guY2xvbmUoKSx0fSxibG9ja1NpemU6MzJ9KTtlLlNIQTUxMj1uLl9jcmVhdGVIZWxwZXIoZiksZS5IbWFjU0hBNTEyPW4uX2NyZWF0ZUhtYWNIZWxwZXIoZil9KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci54NjQsaT1lLldvcmQsbj1lLldvcmRBcnJheSxvPXIuYWxnbyxzPW8uU0hBNTEyLGE9by5TSEEzODQ9cy5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5faGFzaD1uZXcgbi5pbml0KFtuZXcgaS5pbml0KDM0MTgwNzAzNjUsMzIzODM3MTAzMiksbmV3IGkuaW5pdCgxNjU0MjcwMjUwLDkxNDE1MDY2MyksbmV3IGkuaW5pdCgyNDM4NTI5MzcwLDgxMjcwMjk5OSksbmV3IGkuaW5pdCgzNTU0NjIzNjAsNDE0NDkxMjY5NyksbmV3IGkuaW5pdCgxNzMxNDA1NDE1LDQyOTA3NzU4NTcpLG5ldyBpLmluaXQoMjM5NDE4MDIzMSwxNzUwNjAzMDI1KSxuZXcgaS5pbml0KDM2NzUwMDg1MjUsMTY5NDA3NjgzOSksbmV3IGkuaW5pdCgxMjAzMDYyODEzLDMyMDQwNzU0MjgpXSl9LF9kb0ZpbmFsaXplOmZ1bmN0aW9uKCl7dmFyIHQ9cy5fZG9GaW5hbGl6ZS5jYWxsKHRoaXMpO3JldHVybiB0LnNpZ0J5dGVzLT0xNix0fX0pO3IuU0hBMzg0PXMuX2NyZWF0ZUhlbHBlcihhKSxyLkhtYWNTSEEzODQ9cy5fY3JlYXRlSG1hY0hlbHBlcihhKX0oKSx0LmxpYi5DaXBoZXJ8fGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQmFzZSxvPWkuV29yZEFycmF5LHM9aS5CdWZmZXJlZEJsb2NrQWxnb3JpdGhtLGE9ZS5lbmMsYz0oYS5VdGY4LGEuQmFzZTY0KSxoPWUuYWxnbyxsPWguRXZwS0RGLGY9aS5DaXBoZXI9cy5leHRlbmQoe2NmZzpuLmV4dGVuZCgpLGNyZWF0ZUVuY3J5cHRvcjpmdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLmNyZWF0ZSh0aGlzLl9FTkNfWEZPUk1fTU9ERSx0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5jcmVhdGUodGhpcy5fREVDX1hGT1JNX01PREUsdCxyKX0saW5pdDpmdW5jdGlvbih0LHIsZSl7dGhpcy5jZmc9dGhpcy5jZmcuZXh0ZW5kKGUpLHRoaXMuX3hmb3JtTW9kZT10LHRoaXMuX2tleT1yLHRoaXMucmVzZXQoKX0scmVzZXQ6ZnVuY3Rpb24oKXtzLnJlc2V0LmNhbGwodGhpcyksdGhpcy5fZG9SZXNldCgpfSxwcm9jZXNzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBlbmQodCksdGhpcy5fcHJvY2VzcygpfSxmaW5hbGl6ZTpmdW5jdGlvbih0KXt0JiZ0aGlzLl9hcHBlbmQodCk7dmFyIHI9dGhpcy5fZG9GaW5hbGl6ZSgpO3JldHVybiByfSxrZXlTaXplOjQsaXZTaXplOjQsX0VOQ19YRk9STV9NT0RFOjEsX0RFQ19YRk9STV9NT0RFOjIsX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/bTp3fXJldHVybiBmdW5jdGlvbihyKXtyZXR1cm57ZW5jcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZW5jcnlwdChyLGUsaSxuKX0sZGVjcnlwdDpmdW5jdGlvbihlLGksbil7cmV0dXJuIHQoaSkuZGVjcnlwdChyLGUsaSxuKX19fX0oKX0pLHU9KGkuU3RyZWFtQ2lwaGVyPWYuZXh0ZW5kKHtfZG9GaW5hbGl6ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3Byb2Nlc3MoITApO3JldHVybiB0fSxibG9ja1NpemU6MX0pLGUubW9kZT17fSksZD1pLkJsb2NrQ2lwaGVyTW9kZT1uLmV4dGVuZCh7Y3JlYXRlRW5jcnlwdG9yOmZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMuRW5jcnlwdG9yLmNyZWF0ZSh0LHIpfSxjcmVhdGVEZWNyeXB0b3I6ZnVuY3Rpb24odCxyKXtyZXR1cm4gdGhpcy5EZWNyeXB0b3IuY3JlYXRlKHQscil9LGluaXQ6ZnVuY3Rpb24odCxyKXt0aGlzLl9jaXBoZXI9dCx0aGlzLl9pdj1yfX0pLHY9dS5DQkM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQsZSxpKXt2YXIgbj10aGlzLl9pdjtpZihuKXt2YXIgbz1uO3RoaXMuX2l2PXJ9ZWxzZSB2YXIgbz10aGlzLl9wcmV2QmxvY2s7Zm9yKHZhciBzPTA7czxpO3MrKyl0W2Urc11ePW9bc119dmFyIGU9ZC5leHRlbmQoKTtyZXR1cm4gZS5FbmNyeXB0b3I9ZS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbihyLGUpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplO3QuY2FsbCh0aGlzLHIsZSxuKSxpLmVuY3J5cHRCbG9jayhyLGUpLHRoaXMuX3ByZXZCbG9jaz1yLnNsaWNlKGUsZStuKX19KSxlLkRlY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHIsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemUsbz1yLnNsaWNlKGUsZStuKTtpLmRlY3J5cHRCbG9jayhyLGUpLHQuY2FsbCh0aGlzLHIsZSxuKSx0aGlzLl9wcmV2QmxvY2s9b319KSxlfSgpLHA9ZS5wYWQ9e30sXz1wLlBrY3M3PXtwYWQ6ZnVuY3Rpb24odCxyKXtmb3IodmFyIGU9NCpyLGk9ZS10LnNpZ0J5dGVzJWUsbj1pPDwyNHxpPDwxNnxpPDw4fGkscz1bXSxhPTA7YTxpO2ErPTQpcy5wdXNoKG4pO3ZhciBjPW8uY3JlYXRlKHMsaSk7dC5jb25jYXQoYyl9LHVucGFkOmZ1bmN0aW9uKHQpe3ZhciByPTI1NSZ0LndvcmRzW3Quc2lnQnl0ZXMtMT4+PjJdO3Quc2lnQnl0ZXMtPXJ9fSx5PShpLkJsb2NrQ2lwaGVyPWYuZXh0ZW5kKHtjZmc6Zi5jZmcuZXh0ZW5kKHttb2RlOnYscGFkZGluZzpffSkscmVzZXQ6ZnVuY3Rpb24oKXtmLnJlc2V0LmNhbGwodGhpcyk7dmFyIHQ9dGhpcy5jZmcscj10Lml2LGU9dC5tb2RlO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpdmFyIGk9ZS5jcmVhdGVFbmNyeXB0b3I7ZWxzZXt2YXIgaT1lLmNyZWF0ZURlY3J5cHRvcjt0aGlzLl9taW5CdWZmZXJTaXplPTF9dGhpcy5fbW9kZSYmdGhpcy5fbW9kZS5fX2NyZWF0b3I9PWk/dGhpcy5fbW9kZS5pbml0KHRoaXMsciYmci53b3Jkcyk6KHRoaXMuX21vZGU9aS5jYWxsKGUsdGhpcyxyJiZyLndvcmRzKSx0aGlzLl9tb2RlLl9fY3JlYXRvcj1pKX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fbW9kZS5wcm9jZXNzQmxvY2sodCxyKX0sX2RvRmluYWxpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLmNmZy5wYWRkaW5nO2lmKHRoaXMuX3hmb3JtTW9kZT09dGhpcy5fRU5DX1hGT1JNX01PREUpe3QucGFkKHRoaXMuX2RhdGEsdGhpcy5ibG9ja1NpemUpO3ZhciByPXRoaXMuX3Byb2Nlc3MoITApfWVsc2V7dmFyIHI9dGhpcy5fcHJvY2VzcyghMCk7dC51bnBhZChyKX1yZXR1cm4gcn0sYmxvY2tTaXplOjR9KSxpLkNpcGhlclBhcmFtcz1uLmV4dGVuZCh7aW5pdDpmdW5jdGlvbih0KXt0aGlzLm1peEluKHQpfSx0b1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4odHx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19KSksZz1lLmZvcm1hdD17fSxCPWcuT3BlblNTTD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciByPXQuY2lwaGVydGV4dCxlPXQuc2FsdDtpZihlKXZhciBpPW8uY3JlYXRlKFsxMzk4ODkzNjg0LDE3MDEwNzY4MzFdKS5jb25jYXQoZSkuY29uY2F0KHIpO2Vsc2UgdmFyIGk9cjtyZXR1cm4gaS50b1N0cmluZyhjKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9Yy5wYXJzZSh0KSxlPXIud29yZHM7aWYoMTM5ODg5MzY4ND09ZVswXSYmMTcwMTA3NjgzMT09ZVsxXSl7dmFyIGk9by5jcmVhdGUoZS5zbGljZSgyLDQpKTtlLnNwbGljZSgwLDQpLHIuc2lnQnl0ZXMtPTE2fXJldHVybiB5LmNyZWF0ZSh7Y2lwaGVydGV4dDpyLHNhbHQ6aX0pfX0sdz1pLlNlcmlhbGl6YWJsZUNpcGhlcj1uLmV4dGVuZCh7Y2ZnOm4uZXh0ZW5kKHtmb3JtYXQ6Qn0pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49dC5jcmVhdGVFbmNyeXB0b3IoZSxpKSxvPW4uZmluYWxpemUocikscz1uLmNmZztyZXR1cm4geS5jcmVhdGUoe2NpcGhlcnRleHQ6byxrZXk6ZSxpdjpzLml2LGFsZ29yaXRobTp0LG1vZGU6cy5tb2RlLHBhZGRpbmc6cy5wYWRkaW5nLGJsb2NrU2l6ZTp0LmJsb2NrU2l6ZSxmb3JtYXR0ZXI6aS5mb3JtYXR9KX0sZGVjcnlwdDpmdW5jdGlvbih0LHIsZSxpKXtpPXRoaXMuY2ZnLmV4dGVuZChpKSxyPXRoaXMuX3BhcnNlKHIsaS5mb3JtYXQpO3ZhciBuPXQuY3JlYXRlRGVjcnlwdG9yKGUsaSkuZmluYWxpemUoci5jaXBoZXJ0ZXh0KTtyZXR1cm4gbn0sX3BhcnNlOmZ1bmN0aW9uKHQscil7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/ci5wYXJzZSh0LHRoaXMpOnR9fSksaz1lLmtkZj17fSxTPWsuT3BlblNTTD17ZXhlY3V0ZTpmdW5jdGlvbih0LHIsZSxpKXtpfHwoaT1vLnJhbmRvbSg4KSk7dmFyIG49bC5jcmVhdGUoe2tleVNpemU6citlfSkuY29tcHV0ZSh0LGkpLHM9by5jcmVhdGUobi53b3Jkcy5zbGljZShyKSw0KmUpO3JldHVybiBuLnNpZ0J5dGVzPTQqcix5LmNyZWF0ZSh7a2V5Om4saXY6cyxzYWx0Oml9KX19LG09aS5QYXNzd29yZEJhc2VkQ2lwaGVyPXcuZXh0ZW5kKHtjZmc6dy5jZmcuZXh0ZW5kKHtrZGY6U30pLGVuY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSk7dmFyIG49aS5rZGYuZXhlY3V0ZShlLHQua2V5U2l6ZSx0Lml2U2l6ZSk7aS5pdj1uLml2O3ZhciBvPXcuZW5jcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvLm1peEluKG4pLG99LGRlY3J5cHQ6ZnVuY3Rpb24odCxyLGUsaSl7aT10aGlzLmNmZy5leHRlbmQoaSkscj10aGlzLl9wYXJzZShyLGkuZm9ybWF0KTt2YXIgbj1pLmtkZi5leGVjdXRlKGUsdC5rZXlTaXplLHQuaXZTaXplLHIuc2FsdCk7aS5pdj1uLml2O3ZhciBvPXcuZGVjcnlwdC5jYWxsKHRoaXMsdCxyLG4ua2V5LGkpO3JldHVybiBvfX0pfSgpLHQubW9kZS5DRkI9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHQscixlLGkpe3ZhciBuPXRoaXMuX2l2O2lmKG4pe3ZhciBvPW4uc2xpY2UoMCk7dGhpcy5faXY9dm9pZCAwfWVsc2UgdmFyIG89dGhpcy5fcHJldkJsb2NrO2kuZW5jcnlwdEJsb2NrKG8sMCk7Zm9yKHZhciBzPTA7czxlO3MrKyl0W3Irc11ePW9bc119dmFyIGU9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpO3JldHVybiBlLkVuY3J5cHRvcj1lLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fY2lwaGVyLG49aS5ibG9ja1NpemU7ci5jYWxsKHRoaXMsdCxlLG4saSksdGhpcy5fcHJldkJsb2NrPXQuc2xpY2UoZSxlK24pfX0pLGUuRGVjcnlwdG9yPWUuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt2YXIgaT10aGlzLl9jaXBoZXIsbj1pLmJsb2NrU2l6ZSxvPXQuc2xpY2UoZSxlK24pO3IuY2FsbCh0aGlzLHQsZSxuLGkpLHRoaXMuX3ByZXZCbG9jaz1vfX0pLGV9KCksdC5tb2RlLkVDQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKTtyZXR1cm4gci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2NpcGhlci5lbmNyeXB0QmxvY2sodCxyKX19KSxyLkRlY3J5cHRvcj1yLmV4dGVuZCh7cHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fY2lwaGVyLmRlY3J5cHRCbG9jayh0LHIpfX0pLHJ9KCksdC5wYWQuQW5zaVg5MjM9e3BhZDpmdW5jdGlvbih0LHIpe3ZhciBlPXQuc2lnQnl0ZXMsaT00KnIsbj1pLWUlaSxvPWUrbi0xO3QuY2xhbXAoKSx0LndvcmRzW28+Pj4yXXw9bjw8MjQtbyU0KjgsdC5zaWdCeXRlcys9bn0sdW5wYWQ6ZnVuY3Rpb24odCl7dmFyIHI9MjU1JnQud29yZHNbdC5zaWdCeXRlcy0xPj4+Ml07dC5zaWdCeXRlcy09cn19LHQucGFkLklzbzEwMTI2PXtwYWQ6ZnVuY3Rpb24ocixlKXt2YXIgaT00KmUsbj1pLXIuc2lnQnl0ZXMlaTtyLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkucmFuZG9tKG4tMSkpLmNvbmNhdCh0LmxpYi5Xb3JkQXJyYXkuY3JlYXRlKFtuPDwyNF0sMSkpfSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgcj0yNTUmdC53b3Jkc1t0LnNpZ0J5dGVzLTE+Pj4yXTt0LnNpZ0J5dGVzLT1yfX0sdC5wYWQuSXNvOTc5NzE9e3BhZDpmdW5jdGlvbihyLGUpe3IuY29uY2F0KHQubGliLldvcmRBcnJheS5jcmVhdGUoWzIxNDc0ODM2NDhdLDEpKSx0LnBhZC5aZXJvUGFkZGluZy5wYWQocixlKX0sdW5wYWQ6ZnVuY3Rpb24ocil7dC5wYWQuWmVyb1BhZGRpbmcudW5wYWQociksci5zaWdCeXRlcy0tfX0sdC5tb2RlLk9GQj1mdW5jdGlvbigpe3ZhciByPXQubGliLkJsb2NrQ2lwaGVyTW9kZS5leHRlbmQoKSxlPXIuRW5jcnlwdG9yPXIuZXh0ZW5kKHtwcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10aGlzLl9jaXBoZXIsaT1lLmJsb2NrU2l6ZSxuPXRoaXMuX2l2LG89dGhpcy5fa2V5c3RyZWFtO24mJihvPXRoaXMuX2tleXN0cmVhbT1uLnNsaWNlKDApLHRoaXMuX2l2PXZvaWQgMCksZS5lbmNyeXB0QmxvY2sobywwKTtmb3IodmFyIHM9MDtzPGk7cysrKXRbcitzXV49b1tzXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLHQucGFkLk5vUGFkZGluZz17cGFkOmZ1bmN0aW9uKCl7fSx1bnBhZDpmdW5jdGlvbigpe319LGZ1bmN0aW9uKHIpe3ZhciBlPXQsaT1lLmxpYixuPWkuQ2lwaGVyUGFyYW1zLG89ZS5lbmMscz1vLkhleCxhPWUuZm9ybWF0O2EuSGV4PXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY2lwaGVydGV4dC50b1N0cmluZyhzKX0scGFyc2U6ZnVuY3Rpb24odCl7dmFyIHI9cy5wYXJzZSh0KTtyZXR1cm4gbi5jcmVhdGUoe2NpcGhlcnRleHQ6cn0pfX19KCksZnVuY3Rpb24oKXt2YXIgcj10LGU9ci5saWIsaT1lLkJsb2NrQ2lwaGVyLG49ci5hbGdvLG89W10scz1bXSxhPVtdLGM9W10saD1bXSxsPVtdLGY9W10sdT1bXSxkPVtdLHY9W107IWZ1bmN0aW9uKCl7Zm9yKHZhciB0PVtdLHI9MDtyPDI1NjtyKyspcjwxMjg/dFtyXT1yPDwxOnRbcl09cjw8MV4yODM7Zm9yKHZhciBlPTAsaT0wLHI9MDtyPDI1NjtyKyspe3ZhciBuPWleaTw8MV5pPDwyXmk8PDNeaTw8NDtuPW4+Pj44XjI1NSZuXjk5LG9bZV09bixzW25dPWU7dmFyIHA9dFtlXSxfPXRbcF0seT10W19dLGc9MjU3KnRbbl1eMTY4NDMwMDgqbjthW2VdPWc8PDI0fGc+Pj44LGNbZV09Zzw8MTZ8Zz4+PjE2LGhbZV09Zzw8OHxnPj4+MjQsbFtlXT1nO3ZhciBnPTE2ODQzMDA5KnleNjU1MzcqX14yNTcqcF4xNjg0MzAwOCplO2Zbbl09Zzw8MjR8Zz4+PjgsdVtuXT1nPDwxNnxnPj4+MTYsZFtuXT1nPDw4fGc+Pj4yNCx2W25dPWcsZT8oZT1wXnRbdFt0W3lecF1dXSxpXj10W3RbaV1dKTplPWk9MX19KCk7dmFyIHA9WzAsMSwyLDQsOCwxNiwzMiw2NCwxMjgsMjcsNTRdLF89bi5BRVM9aS5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7aWYoIXRoaXMuX25Sb3VuZHN8fHRoaXMuX2tleVByaW9yUmVzZXQhPT10aGlzLl9rZXkpe2Zvcih2YXIgdD10aGlzLl9rZXlQcmlvclJlc2V0PXRoaXMuX2tleSxyPXQud29yZHMsZT10LnNpZ0J5dGVzLzQsaT10aGlzLl9uUm91bmRzPWUrNixuPTQqKGkrMSkscz10aGlzLl9rZXlTY2hlZHVsZT1bXSxhPTA7YTxuO2ErKylpZihhPGUpc1thXT1yW2FdO2Vsc2V7dmFyIGM9c1thLTFdO2ElZT9lPjYmJmElZT09NCYmKGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10pOihjPWM8PDh8Yz4+PjI0LGM9b1tjPj4+MjRdPDwyNHxvW2M+Pj4xNiYyNTVdPDwxNnxvW2M+Pj44JjI1NV08PDh8b1syNTUmY10sY149cFthL2V8MF08PDI0KSxzW2FdPXNbYS1lXV5jfWZvcih2YXIgaD10aGlzLl9pbnZLZXlTY2hlZHVsZT1bXSxsPTA7bDxuO2wrKyl7dmFyIGE9bi1sO2lmKGwlNCl2YXIgYz1zW2FdO2Vsc2UgdmFyIGM9c1thLTRdO2w8NHx8YTw9ND9oW2xdPWM6aFtsXT1mW29bYz4+PjI0XV1edVtvW2M+Pj4xNiYyNTVdXV5kW29bYz4+PjgmMjU1XV1edltvWzI1NSZjXV19fX0sZW5jcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZG9DcnlwdEJsb2NrKHQscix0aGlzLl9rZXlTY2hlZHVsZSxhLGMsaCxsLG8pfSxkZWNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt2YXIgZT10W3IrMV07dFtyKzFdPXRbciszXSx0W3IrM109ZSx0aGlzLl9kb0NyeXB0QmxvY2sodCxyLHRoaXMuX2ludktleVNjaGVkdWxlLGYsdSxkLHYscyk7dmFyIGU9dFtyKzFdO3RbcisxXT10W3IrM10sdFtyKzNdPWV9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxyLGUsaSxuLG8scyxhKXtmb3IodmFyIGM9dGhpcy5fblJvdW5kcyxoPXRbcl1eZVswXSxsPXRbcisxXV5lWzFdLGY9dFtyKzJdXmVbMl0sdT10W3IrM11eZVszXSxkPTQsdj0xO3Y8Yzt2Kyspe3ZhciBwPWlbaD4+PjI0XV5uW2w+Pj4xNiYyNTVdXm9bZj4+PjgmMjU1XV5zWzI1NSZ1XV5lW2QrK10sXz1pW2w+Pj4yNF1ebltmPj4+MTYmMjU1XV5vW3U+Pj44JjI1NV1ec1syNTUmaF1eZVtkKytdLHk9aVtmPj4+MjRdXm5bdT4+PjE2JjI1NV1eb1toPj4+OCYyNTVdXnNbMjU1JmxdXmVbZCsrXSxnPWlbdT4+PjI0XV5uW2g+Pj4xNiYyNTVdXm9bbD4+PjgmMjU1XV5zWzI1NSZmXV5lW2QrK107aD1wLGw9XyxmPXksdT1nfXZhciBwPShhW2g+Pj4yNF08PDI0fGFbbD4+PjE2JjI1NV08PDE2fGFbZj4+PjgmMjU1XTw8OHxhWzI1NSZ1XSleZVtkKytdLF89KGFbbD4+PjI0XTw8MjR8YVtmPj4+MTYmMjU1XTw8MTZ8YVt1Pj4+OCYyNTVdPDw4fGFbMjU1JmhdKV5lW2QrK10seT0oYVtmPj4+MjRdPDwyNHxhW3U+Pj4xNiYyNTVdPDwxNnxhW2g+Pj44JjI1NV08PDh8YVsyNTUmbF0pXmVbZCsrXSxnPShhW3U+Pj4yNF08PDI0fGFbaD4+PjE2JjI1NV08PDE2fGFbbD4+PjgmMjU1XTw8OHxhWzI1NSZmXSleZVtkKytdO3Rbcl09cCx0W3IrMV09Xyx0W3IrMl09eSx0W3IrM109Z30sa2V5U2l6ZTo4fSk7ci5BRVM9aS5fY3JlYXRlSGVscGVyKF8pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcih0LHIpe3ZhciBlPSh0aGlzLl9sQmxvY2s+Pj50XnRoaXMuX3JCbG9jaykmcjt0aGlzLl9yQmxvY2tePWUsdGhpcy5fbEJsb2NrXj1lPDx0fWZ1bmN0aW9uIGUodCxyKXt2YXIgZT0odGhpcy5fckJsb2NrPj4+dF50aGlzLl9sQmxvY2spJnI7dGhpcy5fbEJsb2NrXj1lLHRoaXMuX3JCbG9ja149ZTw8dDtcclxufXZhciBpPXQsbj1pLmxpYixvPW4uV29yZEFycmF5LHM9bi5CbG9ja0NpcGhlcixhPWkuYWxnbyxjPVs1Nyw0OSw0MSwzMywyNSwxNyw5LDEsNTgsNTAsNDIsMzQsMjYsMTgsMTAsMiw1OSw1MSw0MywzNSwyNywxOSwxMSwzLDYwLDUyLDQ0LDM2LDYzLDU1LDQ3LDM5LDMxLDIzLDE1LDcsNjIsNTQsNDYsMzgsMzAsMjIsMTQsNiw2MSw1Myw0NSwzNywyOSwyMSwxMyw1LDI4LDIwLDEyLDRdLGg9WzE0LDE3LDExLDI0LDEsNSwzLDI4LDE1LDYsMjEsMTAsMjMsMTksMTIsNCwyNiw4LDE2LDcsMjcsMjAsMTMsMiw0MSw1MiwzMSwzNyw0Nyw1NSwzMCw0MCw1MSw0NSwzMyw0OCw0NCw0OSwzOSw1NiwzNCw1Myw0Niw0Miw1MCwzNiwyOSwzMl0sbD1bMSwyLDQsNiw4LDEwLDEyLDE0LDE1LDE3LDE5LDIxLDIzLDI1LDI3LDI4XSxmPVt7MDo4NDIxODg4LDI2ODQzNTQ1NjozMjc2OCw1MzY4NzA5MTI6ODQyMTM3OCw4MDUzMDYzNjg6MiwxMDczNzQxODI0OjUxMiwxMzQyMTc3MjgwOjg0MjE4OTAsMTYxMDYxMjczNjo4Mzg5MTIyLDE4NzkwNDgxOTI6ODM4ODYwOCwyMTQ3NDgzNjQ4OjUxNCwyNDE1OTE5MTA0OjgzODkxMjAsMjY4NDM1NDU2MDozMzI4MCwyOTUyNzkwMDE2Ojg0MjEzNzYsMzIyMTIyNTQ3MjozMjc3MCwzNDg5NjYwOTI4OjgzODg2MTAsMzc1ODA5NjM4NDowLDQwMjY1MzE4NDA6MzMyODIsMTM0MjE3NzI4OjAsNDAyNjUzMTg0Ojg0MjE4OTAsNjcxMDg4NjQwOjMzMjgyLDkzOTUyNDA5NjozMjc2OCwxMjA3OTU5NTUyOjg0MjE4ODgsMTQ3NjM5NTAwODo1MTIsMTc0NDgzMDQ2NDo4NDIxMzc4LDIwMTMyNjU5MjA6MiwyMjgxNzAxMzc2OjgzODkxMjAsMjU1MDEzNjgzMjozMzI4MCwyODE4NTcyMjg4Ojg0MjEzNzYsMzA4NzAwNzc0NDo4Mzg5MTIyLDMzNTU0NDMyMDA6ODM4ODYxMCwzNjIzODc4NjU2OjMyNzcwLDM4OTIzMTQxMTI6NTE0LDQxNjA3NDk1Njg6ODM4ODYwOCwxOjMyNzY4LDI2ODQzNTQ1NzoyLDUzNjg3MDkxMzo4NDIxODg4LDgwNTMwNjM2OTo4Mzg4NjA4LDEwNzM3NDE4MjU6ODQyMTM3OCwxMzQyMTc3MjgxOjMzMjgwLDE2MTA2MTI3Mzc6NTEyLDE4NzkwNDgxOTM6ODM4OTEyMiwyMTQ3NDgzNjQ5Ojg0MjE4OTAsMjQxNTkxOTEwNTo4NDIxMzc2LDI2ODQzNTQ1NjE6ODM4ODYxMCwyOTUyNzkwMDE3OjMzMjgyLDMyMjEyMjU0NzM6NTE0LDM0ODk2NjA5Mjk6ODM4OTEyMCwzNzU4MDk2Mzg1OjMyNzcwLDQwMjY1MzE4NDE6MCwxMzQyMTc3Mjk6ODQyMTg5MCw0MDI2NTMxODU6ODQyMTM3Niw2NzEwODg2NDE6ODM4ODYwOCw5Mzk1MjQwOTc6NTEyLDEyMDc5NTk1NTM6MzI3NjgsMTQ3NjM5NTAwOTo4Mzg4NjEwLDE3NDQ4MzA0NjU6MiwyMDEzMjY1OTIxOjMzMjgyLDIyODE3MDEzNzc6MzI3NzAsMjU1MDEzNjgzMzo4Mzg5MTIyLDI4MTg1NzIyODk6NTE0LDMwODcwMDc3NDU6ODQyMTg4OCwzMzU1NDQzMjAxOjgzODkxMjAsMzYyMzg3ODY1NzowLDM4OTIzMTQxMTM6MzMyODAsNDE2MDc0OTU2OTo4NDIxMzc4fSx7MDoxMDc0MjgyNTEyLDE2Nzc3MjE2OjE2Mzg0LDMzNTU0NDMyOjUyNDI4OCw1MDMzMTY0ODoxMDc0MjY2MTI4LDY3MTA4ODY0OjEwNzM3NDE4NDAsODM4ODYwODA6MTA3NDI4MjQ5NiwxMDA2NjMyOTY6MTA3Mzc1ODIwOCwxMTc0NDA1MTI6MTYsMTM0MjE3NzI4OjU0MDY3MiwxNTA5OTQ5NDQ6MTA3Mzc1ODIyNCwxNjc3NzIxNjA6MTA3Mzc0MTgyNCwxODQ1NDkzNzY6NTQwNjg4LDIwMTMyNjU5Mjo1MjQzMDQsMjE4MTAzODA4OjAsMjM0ODgxMDI0OjE2NDAwLDI1MTY1ODI0MDoxMDc0MjY2MTEyLDgzODg2MDg6MTA3Mzc1ODIwOCwyNTE2NTgyNDo1NDA2ODgsNDE5NDMwNDA6MTYsNTg3MjAyNTY6MTA3Mzc1ODIyNCw3NTQ5NzQ3MjoxMDc0MjgyNTEyLDkyMjc0Njg4OjEwNzM3NDE4MjQsMTA5MDUxOTA0OjUyNDI4OCwxMjU4MjkxMjA6MTA3NDI2NjEyOCwxNDI2MDYzMzY6NTI0MzA0LDE1OTM4MzU1MjowLDE3NjE2MDc2ODoxNjM4NCwxOTI5Mzc5ODQ6MTA3NDI2NjExMiwyMDk3MTUyMDA6MTA3Mzc0MTg0MCwyMjY0OTI0MTY6NTQwNjcyLDI0MzI2OTYzMjoxMDc0MjgyNDk2LDI2MDA0Njg0ODoxNjQwMCwyNjg0MzU0NTY6MCwyODUyMTI2NzI6MTA3NDI2NjEyOCwzMDE5ODk4ODg6MTA3Mzc1ODIyNCwzMTg3NjcxMDQ6MTA3NDI4MjQ5NiwzMzU1NDQzMjA6MTA3NDI2NjExMiwzNTIzMjE1MzY6MTYsMzY5MDk4NzUyOjU0MDY4OCwzODU4NzU5Njg6MTYzODQsNDAyNjUzMTg0OjE2NDAwLDQxOTQzMDQwMDo1MjQyODgsNDM2MjA3NjE2OjUyNDMwNCw0NTI5ODQ4MzI6MTA3Mzc0MTg0MCw0Njk3NjIwNDg6NTQwNjcyLDQ4NjUzOTI2NDoxMDczNzU4MjA4LDUwMzMxNjQ4MDoxMDczNzQxODI0LDUyMDA5MzY5NjoxMDc0MjgyNTEyLDI3NjgyNDA2NDo1NDA2ODgsMjkzNjAxMjgwOjUyNDI4OCwzMTAzNzg0OTY6MTA3NDI2NjExMiwzMjcxNTU3MTI6MTYzODQsMzQzOTMyOTI4OjEwNzM3NTgyMDgsMzYwNzEwMTQ0OjEwNzQyODI1MTIsMzc3NDg3MzYwOjE2LDM5NDI2NDU3NjoxMDczNzQxODI0LDQxMTA0MTc5MjoxMDc0MjgyNDk2LDQyNzgxOTAwODoxMDczNzQxODQwLDQ0NDU5NjIyNDoxMDczNzU4MjI0LDQ2MTM3MzQ0MDo1MjQzMDQsNDc4MTUwNjU2OjAsNDk0OTI3ODcyOjE2NDAwLDUxMTcwNTA4ODoxMDc0MjY2MTI4LDUyODQ4MjMwNDo1NDA2NzJ9LHswOjI2MCwxMDQ4NTc2OjAsMjA5NzE1Mjo2NzEwOTEyMCwzMTQ1NzI4OjY1Nzk2LDQxOTQzMDQ6NjU1NDAsNTI0Mjg4MDo2NzEwODg2OCw2MjkxNDU2OjY3MTc0NjYwLDczNDAwMzI6NjcxNzQ0MDAsODM4ODYwODo2NzEwODg2NCw5NDM3MTg0OjY3MTc0NjU2LDEwNDg1NzYwOjY1NzkyLDExNTM0MzM2OjY3MTc0NDA0LDEyNTgyOTEyOjY3MTA5MTI0LDEzNjMxNDg4OjY1NTM2LDE0NjgwMDY0OjQsMTU3Mjg2NDA6MjU2LDUyNDI4ODo2NzE3NDY1NiwxNTcyODY0OjY3MTc0NDA0LDI2MjE0NDA6MCwzNjcwMDE2OjY3MTA5MTIwLDQ3MTg1OTI6NjcxMDg4NjgsNTc2NzE2ODo2NTUzNiw2ODE1NzQ0OjY1NTQwLDc4NjQzMjA6MjYwLDg5MTI4OTY6NCw5OTYxNDcyOjI1NiwxMTAxMDA0ODo2NzE3NDQwMCwxMjA1ODYyNDo2NTc5NiwxMzEwNzIwMDo2NTc5MiwxNDE1NTc3Njo2NzEwOTEyNCwxNTIwNDM1Mjo2NzE3NDY2MCwxNjI1MjkyODo2NzEwODg2NCwxNjc3NzIxNjo2NzE3NDY1NiwxNzgyNTc5Mjo2NTU0MCwxODg3NDM2ODo2NTUzNiwxOTkyMjk0NDo2NzEwOTEyMCwyMDk3MTUyMDoyNTYsMjIwMjAwOTY6NjcxNzQ2NjAsMjMwNjg2NzI6NjcxMDg4NjgsMjQxMTcyNDg6MCwyNTE2NTgyNDo2NzEwOTEyNCwyNjIxNDQwMDo2NzEwODg2NCwyNzI2Mjk3Njo0LDI4MzExNTUyOjY1NzkyLDI5MzYwMTI4OjY3MTc0NDAwLDMwNDA4NzA0OjI2MCwzMTQ1NzI4MDo2NTc5NiwzMjUwNTg1Njo2NzE3NDQwNCwxNzMwMTUwNDo2NzEwODg2NCwxODM1MDA4MDoyNjAsMTkzOTg2NTY6NjcxNzQ2NTYsMjA0NDcyMzI6MCwyMTQ5NTgwODo2NTU0MCwyMjU0NDM4NDo2NzEwOTEyMCwyMzU5Mjk2MDoyNTYsMjQ2NDE1MzY6NjcxNzQ0MDQsMjU2OTAxMTI6NjU1MzYsMjY3Mzg2ODg6NjcxNzQ2NjAsMjc3ODcyNjQ6NjU3OTYsMjg4MzU4NDA6NjcxMDg4NjgsMjk4ODQ0MTY6NjcxMDkxMjQsMzA5MzI5OTI6NjcxNzQ0MDAsMzE5ODE1Njg6NCwzMzAzMDE0NDo2NTc5Mn0sezA6MjE1MTY4MjA0OCw2NTUzNjoyMTQ3NDg3ODA4LDEzMTA3Mjo0MTk4NDY0LDE5NjYwODoyMTUxNjc3OTUyLDI2MjE0NDowLDMyNzY4MDo0MTk4NDAwLDM5MzIxNjoyMTQ3NDgzNzEyLDQ1ODc1Mjo0MTk0MzY4LDUyNDI4ODoyMTQ3NDgzNjQ4LDU4OTgyNDo0MTk0MzA0LDY1NTM2MDo2NCw3MjA4OTY6MjE0NzQ4Nzc0NCw3ODY0MzI6MjE1MTY3ODAxNiw4NTE5Njg6NDE2MCw5MTc1MDQ6NDA5Niw5ODMwNDA6MjE1MTY4MjExMiwzMjc2ODoyMTQ3NDg3ODA4LDk4MzA0OjY0LDE2Mzg0MDoyMTUxNjc4MDE2LDIyOTM3NjoyMTQ3NDg3NzQ0LDI5NDkxMjo0MTk4NDAwLDM2MDQ0ODoyMTUxNjgyMTEyLDQyNTk4NDowLDQ5MTUyMDoyMTUxNjc3OTUyLDU1NzA1Njo0MDk2LDYyMjU5MjoyMTUxNjgyMDQ4LDY4ODEyODo0MTk0MzA0LDc1MzY2NDo0MTYwLDgxOTIwMDoyMTQ3NDgzNjQ4LDg4NDczNjo0MTk0MzY4LDk1MDI3Mjo0MTk4NDY0LDEwMTU4MDg6MjE0NzQ4MzcxMiwxMDQ4NTc2OjQxOTQzNjgsMTExNDExMjo0MTk4NDAwLDExNzk2NDg6MjE0NzQ4MzcxMiwxMjQ1MTg0OjAsMTMxMDcyMDo0MTYwLDEzNzYyNTY6MjE1MTY3ODAxNiwxNDQxNzkyOjIxNTE2ODIwNDgsMTUwNzMyODoyMTQ3NDg3ODA4LDE1NzI4NjQ6MjE1MTY4MjExMiwxNjM4NDAwOjIxNDc0ODM2NDgsMTcwMzkzNjoyMTUxNjc3OTUyLDE3Njk0NzI6NDE5ODQ2NCwxODM1MDA4OjIxNDc0ODc3NDQsMTkwMDU0NDo0MTk0MzA0LDE5NjYwODA6NjQsMjAzMTYxNjo0MDk2LDEwODEzNDQ6MjE1MTY3Nzk1MiwxMTQ2ODgwOjIxNTE2ODIxMTIsMTIxMjQxNjowLDEyNzc5NTI6NDE5ODQwMCwxMzQzNDg4OjQxOTQzNjgsMTQwOTAyNDoyMTQ3NDgzNjQ4LDE0NzQ1NjA6MjE0NzQ4NzgwOCwxNTQwMDk2OjY0LDE2MDU2MzI6MjE0NzQ4MzcxMiwxNjcxMTY4OjQwOTYsMTczNjcwNDoyMTQ3NDg3NzQ0LDE4MDIyNDA6MjE1MTY3ODAxNiwxODY3Nzc2OjQxNjAsMTkzMzMxMjoyMTUxNjgyMDQ4LDE5OTg4NDg6NDE5NDMwNCwyMDY0Mzg0OjQxOTg0NjR9LHswOjEyOCw0MDk2OjE3MDM5MzYwLDgxOTI6MjYyMTQ0LDEyMjg4OjUzNjg3MDkxMiwxNjM4NDo1MzcxMzMxODQsMjA0ODA6MTY3NzczNDQsMjQ1NzY6NTUzNjQ4MjU2LDI4NjcyOjI2MjI3MiwzMjc2ODoxNjc3NzIxNiwzNjg2NDo1MzcxMzMwNTYsNDA5NjA6NTM2ODcxMDQwLDQ1MDU2OjU1MzkxMDQwMCw0OTE1Mjo1NTM5MTAyNzIsNTMyNDg6MCw1NzM0NDoxNzAzOTQ4OCw2MTQ0MDo1NTM2NDgxMjgsMjA0ODoxNzAzOTQ4OCw2MTQ0OjU1MzY0ODI1NiwxMDI0MDoxMjgsMTQzMzY6MTcwMzkzNjAsMTg0MzI6MjYyMTQ0LDIyNTI4OjUzNzEzMzE4NCwyNjYyNDo1NTM5MTAyNzIsMzA3MjA6NTM2ODcwOTEyLDM0ODE2OjUzNzEzMzA1NiwzODkxMjowLDQzMDA4OjU1MzkxMDQwMCw0NzEwNDoxNjc3NzM0NCw1MTIwMDo1MzY4NzEwNDAsNTUyOTY6NTUzNjQ4MTI4LDU5MzkyOjE2Nzc3MjE2LDYzNDg4OjI2MjI3Miw2NTUzNjoyNjIxNDQsNjk2MzI6MTI4LDczNzI4OjUzNjg3MDkxMiw3NzgyNDo1NTM2NDgyNTYsODE5MjA6MTY3NzczNDQsODYwMTY6NTUzOTEwMjcyLDkwMTEyOjUzNzEzMzE4NCw5NDIwODoxNjc3NzIxNiw5ODMwNDo1NTM5MTA0MDAsMTAyNDAwOjU1MzY0ODEyOCwxMDY0OTY6MTcwMzkzNjAsMTEwNTkyOjUzNzEzMzA1NiwxMTQ2ODg6MjYyMjcyLDExODc4NDo1MzY4NzEwNDAsMTIyODgwOjAsMTI2OTc2OjE3MDM5NDg4LDY3NTg0OjU1MzY0ODI1Niw3MTY4MDoxNjc3NzIxNiw3NTc3NjoxNzAzOTM2MCw3OTg3Mjo1MzcxMzMxODQsODM5Njg6NTM2ODcwOTEyLDg4MDY0OjE3MDM5NDg4LDkyMTYwOjEyOCw5NjI1Njo1NTM5MTAyNzIsMTAwMzUyOjI2MjI3MiwxMDQ0NDg6NTUzOTEwNDAwLDEwODU0NDowLDExMjY0MDo1NTM2NDgxMjgsMTE2NzM2OjE2Nzc3MzQ0LDEyMDgzMjoyNjIxNDQsMTI0OTI4OjUzNzEzMzA1NiwxMjkwMjQ6NTM2ODcxMDQwfSx7MDoyNjg0MzU0NjQsMjU2OjgxOTIsNTEyOjI3MDUzMjYwOCw3Njg6MjcwNTQwODA4LDEwMjQ6MjY4NDQzNjQ4LDEyODA6MjA5NzE1MiwxNTM2OjIwOTcxNjAsMTc5MjoyNjg0MzU0NTYsMjA0ODowLDIzMDQ6MjY4NDQzNjU2LDI1NjA6MjEwNTM0NCwyODE2OjgsMzA3MjoyNzA1MzI2MTYsMzMyODoyMTA1MzUyLDM1ODQ6ODIwMCwzODQwOjI3MDU0MDgwMCwxMjg6MjcwNTMyNjA4LDM4NDoyNzA1NDA4MDgsNjQwOjgsODk2OjIwOTcxNTIsMTE1MjoyMTA1MzUyLDE0MDg6MjY4NDM1NDY0LDE2NjQ6MjY4NDQzNjQ4LDE5MjA6ODIwMCwyMTc2OjIwOTcxNjAsMjQzMjo4MTkyLDI2ODg6MjY4NDQzNjU2LDI5NDQ6MjcwNTMyNjE2LDMyMDA6MCwzNDU2OjI3MDU0MDgwMCwzNzEyOjIxMDUzNDQsMzk2ODoyNjg0MzU0NTYsNDA5NjoyNjg0NDM2NDgsNDM1MjoyNzA1MzI2MTYsNDYwODoyNzA1NDA4MDgsNDg2NDo4MjAwLDUxMjA6MjA5NzE1Miw1Mzc2OjI2ODQzNTQ1Niw1NjMyOjI2ODQzNTQ2NCw1ODg4OjIxMDUzNDQsNjE0NDoyMTA1MzUyLDY0MDA6MCw2NjU2OjgsNjkxMjoyNzA1MzI2MDgsNzE2ODo4MTkyLDc0MjQ6MjY4NDQzNjU2LDc2ODA6MjcwNTQwODAwLDc5MzY6MjA5NzE2MCw0MjI0OjgsNDQ4MDoyMTA1MzQ0LDQ3MzY6MjA5NzE1Miw0OTkyOjI2ODQzNTQ2NCw1MjQ4OjI2ODQ0MzY0OCw1NTA0OjgyMDAsNTc2MDoyNzA1NDA4MDgsNjAxNjoyNzA1MzI2MDgsNjI3MjoyNzA1NDA4MDAsNjUyODoyNzA1MzI2MTYsNjc4NDo4MTkyLDcwNDA6MjEwNTM1Miw3Mjk2OjIwOTcxNjAsNzU1MjowLDc4MDg6MjY4NDM1NDU2LDgwNjQ6MjY4NDQzNjU2fSx7MDoxMDQ4NTc2LDE2OjMzNTU1NDU3LDMyOjEwMjQsNDg6MTA0OTYwMSw2NDozNDYwNDAzMyw4MDowLDk2OjEsMTEyOjM0NjAzMDA5LDEyODozMzU1NTQ1NiwxNDQ6MTA0ODU3NywxNjA6MzM1NTQ0MzMsMTc2OjM0NjA0MDMyLDE5MjozNDYwMzAwOCwyMDg6MTAyNSwyMjQ6MTA0OTYwMCwyNDA6MzM1NTQ0MzIsODozNDYwMzAwOSwyNDowLDQwOjMzNTU1NDU3LDU2OjM0NjA0MDMyLDcyOjEwNDg1NzYsODg6MzM1NTQ0MzMsMTA0OjMzNTU0NDMyLDEyMDoxMDI1LDEzNjoxMDQ5NjAxLDE1MjozMzU1NTQ1NiwxNjg6MzQ2MDMwMDgsMTg0OjEwNDg1NzcsMjAwOjEwMjQsMjE2OjM0NjA0MDMzLDIzMjoxLDI0ODoxMDQ5NjAwLDI1NjozMzU1NDQzMiwyNzI6MTA0ODU3NiwyODg6MzM1NTU0NTcsMzA0OjM0NjAzMDA5LDMyMDoxMDQ4NTc3LDMzNjozMzU1NTQ1NiwzNTI6MzQ2MDQwMzIsMzY4OjEwNDk2MDEsMzg0OjEwMjUsNDAwOjM0NjA0MDMzLDQxNjoxMDQ5NjAwLDQzMjoxLDQ0ODowLDQ2NDozNDYwMzAwOCw0ODA6MzM1NTQ0MzMsNDk2OjEwMjQsMjY0OjEwNDk2MDAsMjgwOjMzNTU1NDU3LDI5NjozNDYwMzAwOSwzMTI6MSwzMjg6MzM1NTQ0MzIsMzQ0OjEwNDg1NzYsMzYwOjEwMjUsMzc2OjM0NjA0MDMyLDM5MjozMzU1NDQzMyw0MDg6MzQ2MDMwMDgsNDI0OjAsNDQwOjM0NjA0MDMzLDQ1NjoxMDQ5NjAxLDQ3MjoxMDI0LDQ4ODozMzU1NTQ1Niw1MDQ6MTA0ODU3N30sezA6MTM0MjE5ODA4LDE6MTMxMDcyLDI6MTM0MjE3NzI4LDM6MzIsNDoxMzExMDQsNToxMzQzNTA4ODAsNjoxMzQzNTA4NDgsNzoyMDQ4LDg6MTM0MzQ4ODAwLDk6MTM0MjE5Nzc2LDEwOjEzMzEyMCwxMToxMzQzNDg4MzIsMTI6MjA4MCwxMzowLDE0OjEzNDIxNzc2MCwxNToxMzMxNTIsMjE0NzQ4MzY0ODoyMDQ4LDIxNDc0ODM2NDk6MTM0MzUwODgwLDIxNDc0ODM2NTA6MTM0MjE5ODA4LDIxNDc0ODM2NTE6MTM0MjE3NzI4LDIxNDc0ODM2NTI6MTM0MzQ4ODAwLDIxNDc0ODM2NTM6MTMzMTIwLDIxNDc0ODM2NTQ6MTMzMTUyLDIxNDc0ODM2NTU6MzIsMjE0NzQ4MzY1NjoxMzQyMTc3NjAsMjE0NzQ4MzY1NzoyMDgwLDIxNDc0ODM2NTg6MTMxMTA0LDIxNDc0ODM2NTk6MTM0MzUwODQ4LDIxNDc0ODM2NjA6MCwyMTQ3NDgzNjYxOjEzNDM0ODgzMiwyMTQ3NDgzNjYyOjEzNDIxOTc3NiwyMTQ3NDgzNjYzOjEzMTA3MiwxNjoxMzMxNTIsMTc6MTM0MzUwODQ4LDE4OjMyLDE5OjIwNDgsMjA6MTM0MjE5Nzc2LDIxOjEzNDIxNzc2MCwyMjoxMzQzNDg4MzIsMjM6MTMxMDcyLDI0OjAsMjU6MTMxMTA0LDI2OjEzNDM0ODgwMCwyNzoxMzQyMTk4MDgsMjg6MTM0MzUwODgwLDI5OjEzMzEyMCwzMDoyMDgwLDMxOjEzNDIxNzcyOCwyMTQ3NDgzNjY0OjEzMTA3MiwyMTQ3NDgzNjY1OjIwNDgsMjE0NzQ4MzY2NjoxMzQzNDg4MzIsMjE0NzQ4MzY2NzoxMzMxNTIsMjE0NzQ4MzY2ODozMiwyMTQ3NDgzNjY5OjEzNDM0ODgwMCwyMTQ3NDgzNjcwOjEzNDIxNzcyOCwyMTQ3NDgzNjcxOjEzNDIxOTgwOCwyMTQ3NDgzNjcyOjEzNDM1MDg4MCwyMTQ3NDgzNjczOjEzNDIxNzc2MCwyMTQ3NDgzNjc0OjEzNDIxOTc3NiwyMTQ3NDgzNjc1OjAsMjE0NzQ4MzY3NjoxMzMxMjAsMjE0NzQ4MzY3NzoyMDgwLDIxNDc0ODM2Nzg6MTMxMTA0LDIxNDc0ODM2Nzk6MTM0MzUwODQ4fV0sdT1bNDE2MDc0OTU2OSw1Mjg0ODIzMDQsMzMwMzAxNDQsMjA2NDM4NCwxMjkwMjQsODA2NCw1MDQsMjE0NzQ4MzY3OV0sZD1hLkRFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPVtdLGk9MDtpPDU2O2krKyl7dmFyIG49Y1tpXS0xO2VbaV09cltuPj4+NV0+Pj4zMS1uJTMyJjF9Zm9yKHZhciBvPXRoaXMuX3N1YktleXM9W10scz0wO3M8MTY7cysrKXtmb3IodmFyIGE9b1tzXT1bXSxmPWxbc10saT0wO2k8MjQ7aSsrKWFbaS82fDBdfD1lWyhoW2ldLTErZiklMjhdPDwzMS1pJTYsYVs0KyhpLzZ8MCldfD1lWzI4KyhoW2krMjRdLTErZiklMjhdPDwzMS1pJTY7YVswXT1hWzBdPDwxfGFbMF0+Pj4zMTtmb3IodmFyIGk9MTtpPDc7aSsrKWFbaV09YVtpXT4+PjQqKGktMSkrMzthWzddPWFbN108PDV8YVs3XT4+PjI3fWZvcih2YXIgdT10aGlzLl9pbnZTdWJLZXlzPVtdLGk9MDtpPDE2O2krKyl1W2ldPW9bMTUtaV19LGVuY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5fc3ViS2V5cyl9LGRlY3J5cHRCbG9jazpmdW5jdGlvbih0LHIpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LHIsdGhpcy5faW52U3ViS2V5cyl9LF9kb0NyeXB0QmxvY2s6ZnVuY3Rpb24odCxpLG4pe3RoaXMuX2xCbG9jaz10W2ldLHRoaXMuX3JCbG9jaz10W2krMV0sci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHIuY2FsbCh0aGlzLDE2LDY1NTM1KSxlLmNhbGwodGhpcywyLDg1ODk5MzQ1OSksZS5jYWxsKHRoaXMsOCwxNjcxMTkzNSksci5jYWxsKHRoaXMsMSwxNDMxNjU1NzY1KTtmb3IodmFyIG89MDtvPDE2O28rKyl7Zm9yKHZhciBzPW5bb10sYT10aGlzLl9sQmxvY2ssYz10aGlzLl9yQmxvY2ssaD0wLGw9MDtsPDg7bCsrKWh8PWZbbF1bKChjXnNbbF0pJnVbbF0pPj4+MF07dGhpcy5fbEJsb2NrPWMsdGhpcy5fckJsb2NrPWFeaH12YXIgZD10aGlzLl9sQmxvY2s7dGhpcy5fbEJsb2NrPXRoaXMuX3JCbG9jayx0aGlzLl9yQmxvY2s9ZCxyLmNhbGwodGhpcywxLDE0MzE2NTU3NjUpLGUuY2FsbCh0aGlzLDgsMTY3MTE5MzUpLGUuY2FsbCh0aGlzLDIsODU4OTkzNDU5KSxyLmNhbGwodGhpcywxNiw2NTUzNSksci5jYWxsKHRoaXMsNCwyNTI2NDUxMzUpLHRbaV09dGhpcy5fbEJsb2NrLHRbaSsxXT10aGlzLl9yQmxvY2t9LGtleVNpemU6MixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuREVTPXMuX2NyZWF0ZUhlbHBlcihkKTt2YXIgdj1hLlRyaXBsZURFUz1zLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl9rZXkscj10LndvcmRzO3RoaXMuX2RlczE9ZC5jcmVhdGVFbmNyeXB0b3Ioby5jcmVhdGUoci5zbGljZSgwLDIpKSksdGhpcy5fZGVzMj1kLmNyZWF0ZUVuY3J5cHRvcihvLmNyZWF0ZShyLnNsaWNlKDIsNCkpKSx0aGlzLl9kZXMzPWQuY3JlYXRlRW5jcnlwdG9yKG8uY3JlYXRlKHIuc2xpY2UoNCw2KSkpfSxlbmNyeXB0QmxvY2s6ZnVuY3Rpb24odCxyKXt0aGlzLl9kZXMxLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczIuZGVjcnlwdEJsb2NrKHQsciksdGhpcy5fZGVzMy5lbmNyeXB0QmxvY2sodCxyKX0sZGVjcnlwdEJsb2NrOmZ1bmN0aW9uKHQscil7dGhpcy5fZGVzMy5kZWNyeXB0QmxvY2sodCxyKSx0aGlzLl9kZXMyLmVuY3J5cHRCbG9jayh0LHIpLHRoaXMuX2RlczEuZGVjcnlwdEJsb2NrKHQscil9LGtleVNpemU6NixpdlNpemU6MixibG9ja1NpemU6Mn0pO2kuVHJpcGxlREVTPXMuX2NyZWF0ZUhlbHBlcih2KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXtmb3IodmFyIHQ9dGhpcy5fUyxyPXRoaXMuX2ksZT10aGlzLl9qLGk9MCxuPTA7bjw0O24rKyl7cj0ocisxKSUyNTYsZT0oZSt0W3JdKSUyNTY7dmFyIG89dFtyXTt0W3JdPXRbZV0sdFtlXT1vLGl8PXRbKHRbcl0rdFtlXSklMjU2XTw8MjQtOCpufXJldHVybiB0aGlzLl9pPXIsdGhpcy5faj1lLGl9dmFyIGU9dCxpPWUubGliLG49aS5TdHJlYW1DaXBoZXIsbz1lLmFsZ28scz1vLlJDND1uLmV4dGVuZCh7X2RvUmVzZXQ6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcy5fa2V5LHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMsaT10aGlzLl9TPVtdLG49MDtuPDI1NjtuKyspaVtuXT1uO2Zvcih2YXIgbj0wLG89MDtuPDI1NjtuKyspe3ZhciBzPW4lZSxhPXJbcz4+PjJdPj4+MjQtcyU0KjgmMjU1O289KG8raVtuXSthKSUyNTY7dmFyIGM9aVtuXTtpW25dPWlbb10saVtvXT1jfXRoaXMuX2k9dGhpcy5faj0wfSxfZG9Qcm9jZXNzQmxvY2s6ZnVuY3Rpb24odCxlKXt0W2VdXj1yLmNhbGwodGhpcyl9LGtleVNpemU6OCxpdlNpemU6MH0pO2UuUkM0PW4uX2NyZWF0ZUhlbHBlcihzKTt2YXIgYT1vLlJDNERyb3A9cy5leHRlbmQoe2NmZzpzLmNmZy5leHRlbmQoe2Ryb3A6MTkyfSksX2RvUmVzZXQ6ZnVuY3Rpb24oKXtzLl9kb1Jlc2V0LmNhbGwodGhpcyk7Zm9yKHZhciB0PXRoaXMuY2ZnLmRyb3A7dD4wO3QtLSlyLmNhbGwodGhpcyl9fSk7ZS5SQzREcm9wPW4uX2NyZWF0ZUhlbHBlcihhKX0oKSx0Lm1vZGUuQ1RSR2xhZG1hbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIodCl7aWYoMjU1PT09KHQ+PjI0JjI1NSkpe3ZhciByPXQ+PjE2JjI1NSxlPXQ+PjgmMjU1LGk9MjU1JnQ7MjU1PT09cj8ocj0wLDI1NT09PWU/KGU9MCwyNTU9PT1pP2k9MDorK2kpOisrZSk6KytyLHQ9MCx0Kz1yPDwxNix0Kz1lPDw4LHQrPWl9ZWxzZSB0Kz0xPDwyNDtyZXR1cm4gdH1mdW5jdGlvbiBlKHQpe3JldHVybiAwPT09KHRbMF09cih0WzBdKSkmJih0WzFdPXIodFsxXSkpLHR9dmFyIGk9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLG49aS5FbmNyeXB0b3I9aS5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBpPXRoaXMuX2NpcGhlcixuPWkuYmxvY2tTaXplLG89dGhpcy5faXYscz10aGlzLl9jb3VudGVyO28mJihzPXRoaXMuX2NvdW50ZXI9by5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApLGUocyk7dmFyIGE9cy5zbGljZSgwKTtpLmVuY3J5cHRCbG9jayhhLDApO2Zvcih2YXIgYz0wO2M8bjtjKyspdFtyK2NdXj1hW2NdfX0pO3JldHVybiBpLkRlY3J5cHRvcj1uLGl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiByKCl7Zm9yKHZhciB0PXRoaXMuX1gscj10aGlzLl9DLGU9MDtlPDg7ZSsrKWFbZV09cltlXTtyWzBdPXJbMF0rMTI5NTMwNzU5Nyt0aGlzLl9ifDAsclsxXT1yWzFdKzM1NDUwNTIzNzErKHJbMF0+Pj4wPGFbMF0+Pj4wPzE6MCl8MCxyWzJdPXJbMl0rODg2MjYzMDkyKyhyWzFdPj4+MDxhWzFdPj4+MD8xOjApfDAsclszXT1yWzNdKzEyOTUzMDc1OTcrKHJbMl0+Pj4wPGFbMl0+Pj4wPzE6MCl8MCxyWzRdPXJbNF0rMzU0NTA1MjM3MSsoclszXT4+PjA8YVszXT4+PjA/MTowKXwwLHJbNV09cls1XSs4ODYyNjMwOTIrKHJbNF0+Pj4wPGFbNF0+Pj4wPzE6MCl8MCxyWzZdPXJbNl0rMTI5NTMwNzU5Nysocls1XT4+PjA8YVs1XT4+PjA/MTowKXwwLHJbN109cls3XSszNTQ1MDUyMzcxKyhyWzZdPj4+MDxhWzZdPj4+MD8xOjApfDAsdGhpcy5fYj1yWzddPj4+MDxhWzddPj4+MD8xOjA7Zm9yKHZhciBlPTA7ZTw4O2UrKyl7dmFyIGk9dFtlXStyW2VdLG49NjU1MzUmaSxvPWk+Pj4xNixzPSgobipuPj4+MTcpK24qbz4+PjE1KStvKm8saD0oKDQyOTQ5MDE3NjAmaSkqaXwwKSsoKDY1NTM1JmkpKml8MCk7Y1tlXT1zXmh9dFswXT1jWzBdKyhjWzddPDwxNnxjWzddPj4+MTYpKyhjWzZdPDwxNnxjWzZdPj4+MTYpfDAsdFsxXT1jWzFdKyhjWzBdPDw4fGNbMF0+Pj4yNCkrY1s3XXwwLHRbMl09Y1syXSsoY1sxXTw8MTZ8Y1sxXT4+PjE2KSsoY1swXTw8MTZ8Y1swXT4+PjE2KXwwLHRbM109Y1szXSsoY1syXTw8OHxjWzJdPj4+MjQpK2NbMV18MCx0WzRdPWNbNF0rKGNbM108PDE2fGNbM10+Pj4xNikrKGNbMl08PDE2fGNbMl0+Pj4xNil8MCx0WzVdPWNbNV0rKGNbNF08PDh8Y1s0XT4+PjI0KStjWzNdfDAsdFs2XT1jWzZdKyhjWzVdPDwxNnxjWzVdPj4+MTYpKyhjWzRdPDwxNnxjWzRdPj4+MTYpfDAsdFs3XT1jWzddKyhjWzZdPDw4fGNbNl0+Pj4yNCkrY1s1XXwwfXZhciBlPXQsaT1lLmxpYixuPWkuU3RyZWFtQ2lwaGVyLG89ZS5hbGdvLHM9W10sYT1bXSxjPVtdLGg9by5SYWJiaXQ9bi5leHRlbmQoe19kb1Jlc2V0OmZ1bmN0aW9uKCl7Zm9yKHZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9MDtpPDQ7aSsrKXRbaV09MTY3MTE5MzUmKHRbaV08PDh8dFtpXT4+PjI0KXw0Mjc4MjU1MzYwJih0W2ldPDwyNHx0W2ldPj4+OCk7dmFyIG49dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG89dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBpPTA7aTw0O2krKylyLmNhbGwodGhpcyk7Zm9yKHZhciBpPTA7aTw4O2krKylvW2ldXj1uW2krNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7b1swXV49aCxvWzFdXj1mLG9bMl1ePWwsb1szXV49dSxvWzRdXj1oLG9bNV1ePWYsb1s2XV49bCxvWzddXj11O2Zvcih2YXIgaT0wO2k8NDtpKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0Lm1vZGUuQ1RSPWZ1bmN0aW9uKCl7dmFyIHI9dC5saWIuQmxvY2tDaXBoZXJNb2RlLmV4dGVuZCgpLGU9ci5FbmNyeXB0b3I9ci5leHRlbmQoe3Byb2Nlc3NCbG9jazpmdW5jdGlvbih0LHIpe3ZhciBlPXRoaXMuX2NpcGhlcixpPWUuYmxvY2tTaXplLG49dGhpcy5faXYsbz10aGlzLl9jb3VudGVyO24mJihvPXRoaXMuX2NvdW50ZXI9bi5zbGljZSgwKSx0aGlzLl9pdj12b2lkIDApO3ZhciBzPW8uc2xpY2UoMCk7ZS5lbmNyeXB0QmxvY2socywwKSxvW2ktMV09b1tpLTFdKzF8MDtmb3IodmFyIGE9MDthPGk7YSsrKXRbcithXV49c1thXX19KTtyZXR1cm4gci5EZWNyeXB0b3I9ZSxyfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcigpe2Zvcih2YXIgdD10aGlzLl9YLHI9dGhpcy5fQyxlPTA7ZTw4O2UrKylhW2VdPXJbZV07clswXT1yWzBdKzEyOTUzMDc1OTcrdGhpcy5fYnwwLHJbMV09clsxXSszNTQ1MDUyMzcxKyhyWzBdPj4+MDxhWzBdPj4+MD8xOjApfDAsclsyXT1yWzJdKzg4NjI2MzA5MisoclsxXT4+PjA8YVsxXT4+PjA/MTowKXwwLHJbM109clszXSsxMjk1MzA3NTk3KyhyWzJdPj4+MDxhWzJdPj4+MD8xOjApfDAscls0XT1yWzRdKzM1NDUwNTIzNzErKHJbM10+Pj4wPGFbM10+Pj4wPzE6MCl8MCxyWzVdPXJbNV0rODg2MjYzMDkyKyhyWzRdPj4+MDxhWzRdPj4+MD8xOjApfDAscls2XT1yWzZdKzEyOTUzMDc1OTcrKHJbNV0+Pj4wPGFbNV0+Pj4wPzE6MCl8MCxyWzddPXJbN10rMzU0NTA1MjM3MSsocls2XT4+PjA8YVs2XT4+PjA/MTowKXwwLHRoaXMuX2I9cls3XT4+PjA8YVs3XT4+PjA/MTowO2Zvcih2YXIgZT0wO2U8ODtlKyspe3ZhciBpPXRbZV0rcltlXSxuPTY1NTM1Jmksbz1pPj4+MTYscz0oKG4qbj4+PjE3KStuKm8+Pj4xNSkrbypvLGg9KCg0Mjk0OTAxNzYwJmkpKml8MCkrKCg2NTUzNSZpKSppfDApO2NbZV09c15ofXRbMF09Y1swXSsoY1s3XTw8MTZ8Y1s3XT4+PjE2KSsoY1s2XTw8MTZ8Y1s2XT4+PjE2KXwwLHRbMV09Y1sxXSsoY1swXTw8OHxjWzBdPj4+MjQpK2NbN118MCx0WzJdPWNbMl0rKGNbMV08PDE2fGNbMV0+Pj4xNikrKGNbMF08PDE2fGNbMF0+Pj4xNil8MCx0WzNdPWNbM10rKGNbMl08PDh8Y1syXT4+PjI0KStjWzFdfDAsdFs0XT1jWzRdKyhjWzNdPDwxNnxjWzNdPj4+MTYpKyhjWzJdPDwxNnxjWzJdPj4+MTYpfDAsdFs1XT1jWzVdKyhjWzRdPDw4fGNbNF0+Pj4yNCkrY1szXXwwLHRbNl09Y1s2XSsoY1s1XTw8MTZ8Y1s1XT4+PjE2KSsoY1s0XTw8MTZ8Y1s0XT4+PjE2KXwwLHRbN109Y1s3XSsoY1s2XTw8OHxjWzZdPj4+MjQpK2NbNV18MH12YXIgZT10LGk9ZS5saWIsbj1pLlN0cmVhbUNpcGhlcixvPWUuYWxnbyxzPVtdLGE9W10sYz1bXSxoPW8uUmFiYml0TGVnYWN5PW4uZXh0ZW5kKHtfZG9SZXNldDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2tleS53b3JkcyxlPXRoaXMuY2ZnLml2LGk9dGhpcy5fWD1bdFswXSx0WzNdPDwxNnx0WzJdPj4+MTYsdFsxXSx0WzBdPDwxNnx0WzNdPj4+MTYsdFsyXSx0WzFdPDwxNnx0WzBdPj4+MTYsdFszXSx0WzJdPDwxNnx0WzFdPj4+MTZdLG49dGhpcy5fQz1bdFsyXTw8MTZ8dFsyXT4+PjE2LDQyOTQ5MDE3NjAmdFswXXw2NTUzNSZ0WzFdLHRbM108PDE2fHRbM10+Pj4xNiw0Mjk0OTAxNzYwJnRbMV18NjU1MzUmdFsyXSx0WzBdPDwxNnx0WzBdPj4+MTYsNDI5NDkwMTc2MCZ0WzJdfDY1NTM1JnRbM10sdFsxXTw8MTZ8dFsxXT4+PjE2LDQyOTQ5MDE3NjAmdFszXXw2NTUzNSZ0WzBdXTt0aGlzLl9iPTA7Zm9yKHZhciBvPTA7bzw0O28rKylyLmNhbGwodGhpcyk7Zm9yKHZhciBvPTA7bzw4O28rKyluW29dXj1pW28rNCY3XTtpZihlKXt2YXIgcz1lLndvcmRzLGE9c1swXSxjPXNbMV0saD0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSxsPTE2NzExOTM1JihjPDw4fGM+Pj4yNCl8NDI3ODI1NTM2MCYoYzw8MjR8Yz4+PjgpLGY9aD4+PjE2fDQyOTQ5MDE3NjAmbCx1PWw8PDE2fDY1NTM1Jmg7blswXV49aCxuWzFdXj1mLG5bMl1ePWwsblszXV49dSxuWzRdXj1oLG5bNV1ePWYsbls2XV49bCxuWzddXj11O2Zvcih2YXIgbz0wO288NDtvKyspci5jYWxsKHRoaXMpfX0sX2RvUHJvY2Vzc0Jsb2NrOmZ1bmN0aW9uKHQsZSl7dmFyIGk9dGhpcy5fWDtyLmNhbGwodGhpcyksc1swXT1pWzBdXmlbNV0+Pj4xNl5pWzNdPDwxNixzWzFdPWlbMl1eaVs3XT4+PjE2XmlbNV08PDE2LHNbMl09aVs0XV5pWzFdPj4+MTZeaVs3XTw8MTYsc1szXT1pWzZdXmlbM10+Pj4xNl5pWzFdPDwxNjtmb3IodmFyIG49MDtuPDQ7bisrKXNbbl09MTY3MTE5MzUmKHNbbl08PDh8c1tuXT4+PjI0KXw0Mjc4MjU1MzYwJihzW25dPDwyNHxzW25dPj4+OCksdFtlK25dXj1zW25dfSxibG9ja1NpemU6NCxpdlNpemU6Mn0pO2UuUmFiYml0TGVnYWN5PW4uX2NyZWF0ZUhlbHBlcihoKX0oKSx0LnBhZC5aZXJvUGFkZGluZz17cGFkOmZ1bmN0aW9uKHQscil7dmFyIGU9NCpyO3QuY2xhbXAoKSx0LnNpZ0J5dGVzKz1lLSh0LnNpZ0J5dGVzJWV8fGUpfSx1bnBhZDpmdW5jdGlvbih0KXtmb3IodmFyIHI9dC53b3JkcyxlPXQuc2lnQnl0ZXMtMTshKHJbZT4+PjJdPj4+MjQtZSU0KjgmMjU1KTspZS0tO3Quc2lnQnl0ZXM9ZSsxfX0sdH0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1jcnlwdG8tanMubWluLmpzLm1hcCJdfQ== } diff --git a/temp/startup.json b/temp/startup.json index 088307f..15d7d11 100644 --- a/temp/startup.json +++ b/temp/startup.json @@ -1 +1 @@ -{"pid":20800} +{"pid":14632}