trretretret commited on
Commit
27da860
·
0 Parent(s):

🚀 Clean deploy: Removed canvaskit folder and updated frontend UI

Browse files
.gitignore ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ canvaskit/
2
+ build/
3
+ .dart_tool/
assets/AssetManifest.bin ADDED
Binary file (2 Bytes). View file
 
assets/AssetManifest.bin.json ADDED
@@ -0,0 +1 @@
 
 
1
+ "DQA="
assets/AssetManifest.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {}
assets/FontManifest.json ADDED
@@ -0,0 +1 @@
 
 
1
+ [{"family":"MaterialIcons","fonts":[{"asset":"fonts/MaterialIcons-Regular.otf"}]}]
assets/NOTICES ADDED
The diff for this file is too large to render. See raw diff
 
assets/fonts/MaterialIcons-Regular.otf ADDED
Binary file (8.82 kB). View file
 
assets/packages/cupertino_icons/assets/CupertinoIcons.ttf ADDED
Binary file (1.47 kB). View file
 
assets/packages/fluttertoast/assets/toastify.css ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Minified by jsDelivr using clean-css v4.2.3.
3
+ * Original file: /npm/toastify-js@1.9.3/src/toastify.css
4
+ *
5
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
6
+ */
7
+ /*!
8
+ * Toastify js 1.9.3
9
+ * https://github.com/apvarun/toastify-js
10
+ * @license MIT licensed
11
+ *
12
+ * Copyright (C) 2018 Varun A P
13
+ */
14
+ .toastify{padding:12px 20px;color:#fff;display:inline-block;box-shadow:0 3px 6px -1px rgba(0,0,0,.12),0 10px 36px -4px rgba(77,96,232,.3);background:-webkit-linear-gradient(315deg,#73a5ff,#5477f5);background:linear-gradient(135deg,#73a5ff,#5477f5);position:fixed;opacity:0;transition:all .4s cubic-bezier(.215,.61,.355,1);border-radius:2px;cursor:pointer;text-decoration:none;max-width:calc(50% - 20px);z-index:2147483647}.toastify.on{opacity:1}.toast-close{opacity:.4;padding:0 5px}.toastify-right{right:15px}.toastify-left{left:15px}.toastify-top{top:-150px}.toastify-bottom{bottom:-150px}.toastify-rounded{border-radius:25px}.toastify-avatar{width:1.5em;height:1.5em;margin:-7px 5px;border-radius:2px}.toastify-center{margin-left:auto;margin-right:auto;left:0;right:0;max-width:fit-content;max-width:-moz-fit-content}@media only screen and (max-width:360px){.toastify-left,.toastify-right{margin-left:auto;margin-right:auto;left:0;right:0;max-width:fit-content}}
assets/packages/fluttertoast/assets/toastify.js ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * Minified by jsDelivr using Terser v5.3.0.
3
+ * Original file: /npm/toastify-js@1.9.3/src/toastify.js
4
+ *
5
+ * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
6
+ */
7
+ /*!
8
+ * Toastify js 1.9.3
9
+ * https://github.com/apvarun/toastify-js
10
+ * @license MIT licensed
11
+ *
12
+ * Copyright (C) 2018 Varun A P
13
+ */
14
+ !function(t,o){"object"==typeof module && module && module.exports?module.exports=o():t.Toastify=o()}(this,(function(t){var o=function(t){return new o.lib.init(t)};function i(t,o){return o.offset[t]?isNaN(o.offset[t])?o.offset[t]:o.offset[t]+"px":"0px"}function s(t,o){return!(!t||"string"!=typeof o)&&!!(t.className&&t.className.trim().split(/\s+/gi).indexOf(o)>-1)}return o.lib=o.prototype={toastify:"1.9.3",constructor:o,init:function(t){return t||(t={}),this.options={},this.toastElement=null,this.options.text=t.text||"Hi there!",this.options.node=t.node,this.options.duration=0===t.duration?0:t.duration||3e3,this.options.selector=t.selector,this.options.callback=t.callback||function(){},this.options.destination=t.destination,this.options.newWindow=t.newWindow||!1,this.options.close=t.close||!1,this.options.gravity="bottom"===t.gravity?"toastify-bottom":"toastify-top",this.options.positionLeft=t.positionLeft||!1,this.options.position=t.position||"",this.options.backgroundColor=t.backgroundColor,this.options.avatar=t.avatar||"",this.options.className=t.className||"",this.options.stopOnFocus=void 0===t.stopOnFocus||t.stopOnFocus,this.options.onClick=t.onClick,this.options.offset=t.offset||{x:0,y:0},this},buildToast:function(){if(!this.options)throw"Toastify is not initialized";var t=document.createElement("div");if(t.className="toastify on "+this.options.className,this.options.position?t.className+=" toastify-"+this.options.position:!0===this.options.positionLeft?(t.className+=" toastify-left",console.warn("Property `positionLeft` will be depreciated in further versions. Please use `position` instead.")):t.className+=" toastify-right",t.className+=" "+this.options.gravity,this.options.backgroundColor&&(t.style.background=this.options.backgroundColor),this.options.node&&this.options.node.nodeType===Node.ELEMENT_NODE)t.appendChild(this.options.node);else if(t.innerHTML=this.options.text,""!==this.options.avatar){var o=document.createElement("img");o.src=this.options.avatar,o.className="toastify-avatar","left"==this.options.position||!0===this.options.positionLeft?t.appendChild(o):t.insertAdjacentElement("afterbegin",o)}if(!0===this.options.close){var s=document.createElement("span");s.innerHTML="&#10006;",s.className="toast-close",s.addEventListener("click",function(t){t.stopPropagation(),this.removeElement(this.toastElement),window.clearTimeout(this.toastElement.timeOutValue)}.bind(this));var n=window.innerWidth>0?window.innerWidth:screen.width;("left"==this.options.position||!0===this.options.positionLeft)&&n>360?t.insertAdjacentElement("afterbegin",s):t.appendChild(s)}if(this.options.stopOnFocus&&this.options.duration>0){var e=this;t.addEventListener("mouseover",(function(o){window.clearTimeout(t.timeOutValue)})),t.addEventListener("mouseleave",(function(){t.timeOutValue=window.setTimeout((function(){e.removeElement(t)}),e.options.duration)}))}if(void 0!==this.options.destination&&t.addEventListener("click",function(t){t.stopPropagation(),!0===this.options.newWindow?window.open(this.options.destination,"_blank"):window.location=this.options.destination}.bind(this)),"function"==typeof this.options.onClick&&void 0===this.options.destination&&t.addEventListener("click",function(t){t.stopPropagation(),this.options.onClick()}.bind(this)),"object"==typeof this.options.offset){var a=i("x",this.options),p=i("y",this.options),r="left"==this.options.position?a:"-"+a,l="toastify-top"==this.options.gravity?p:"-"+p;t.style.transform="translate("+r+","+l+")"}return t},showToast:function(){var t;if(this.toastElement=this.buildToast(),!(t=void 0===this.options.selector?document.body:document.getElementById(this.options.selector)))throw"Root element is not defined";return t.insertBefore(this.toastElement,t.firstChild),o.reposition(),this.options.duration>0&&(this.toastElement.timeOutValue=window.setTimeout(function(){this.removeElement(this.toastElement)}.bind(this),this.options.duration)),this},hideToast:function(){this.toastElement.timeOutValue&&clearTimeout(this.toastElement.timeOutValue),this.removeElement(this.toastElement)},removeElement:function(t){t.className=t.className.replace(" on",""),window.setTimeout(function(){this.options.node&&this.options.node.parentNode&&this.options.node.parentNode.removeChild(this.options.node),t.parentNode&&t.parentNode.removeChild(t),this.options.callback.call(t),o.reposition()}.bind(this),400)}},o.reposition=function(){for(var t,o={top:15,bottom:15},i={top:15,bottom:15},n={top:15,bottom:15},e=document.getElementsByClassName("toastify"),a=0;a<e.length;a++){t=!0===s(e[a],"toastify-top")?"toastify-top":"toastify-bottom";var p=e[a].offsetHeight;t=t.substr(9,t.length-1);(window.innerWidth>0?window.innerWidth:screen.width)<=360?(e[a].style[t]=n[t]+"px",n[t]+=p+15):!0===s(e[a],"toastify-left")?(e[a].style[t]=o[t]+"px",o[t]+=p+15):(e[a].style[t]=i[t]+"px",i[t]+=p+15)}return this},o.lib.init.prototype=o.lib,o}));
assets/shaders/ink_sparkle.frag ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "sksl": {
3
+ "entrypoint": "ink_sparkle_fragment_main",
4
+ "shader": "// This SkSL shader is autogenerated by spirv-cross.\n\nfloat4 flutter_FragCoord;\n\nuniform vec4 u_color;\nuniform vec4 u_composite_1;\nuniform vec2 u_center;\nuniform float u_max_radius;\nuniform vec2 u_resolution_scale;\nuniform vec2 u_noise_scale;\nuniform float u_noise_phase;\nuniform vec2 u_circle1;\nuniform vec2 u_circle2;\nuniform vec2 u_circle3;\nuniform vec2 u_rotation1;\nuniform vec2 u_rotation2;\nuniform vec2 u_rotation3;\n\nvec4 fragColor;\n\nfloat u_alpha;\nfloat u_sparkle_alpha;\nfloat u_blur;\nfloat u_radius_scale;\n\nvec2 FLT_flutter_local_FlutterFragCoord()\n{\n return flutter_FragCoord.xy;\n}\n\nmat2 FLT_flutter_local_rotate2d(vec2 rad)\n{\n return mat2(vec2(rad.x, -rad.y), vec2(rad.y, rad.x));\n}\n\nfloat FLT_flutter_local_soft_circle(vec2 uv, vec2 xy, float radius, float blur)\n{\n float blur_half = blur * 0.5;\n float d = distance(uv, xy);\n return 1.0 - smoothstep(1.0 - blur_half, 1.0 + blur_half, d / radius);\n}\n\nfloat FLT_flutter_local_circle_grid(vec2 resolution, inout vec2 p, vec2 xy, vec2 rotation, float cell_diameter)\n{\n vec2 param = rotation;\n p = (FLT_flutter_local_rotate2d(param) * (xy - p)) + xy;\n p = mod(p, vec2(cell_diameter)) / resolution;\n float cell_uv = (cell_diameter / resolution.y) * 0.5;\n float r = 0.64999997615814208984375 * cell_uv;\n vec2 param_1 = p;\n vec2 param_2 = vec2(cell_uv);\n float param_3 = r;\n float param_4 = r * 50.0;\n return FLT_flutter_local_soft_circle(param_1, param_2, param_3, param_4);\n}\n\nfloat FLT_flutter_local_turbulence(vec2 uv)\n{\n vec2 uv_scale = uv * vec2(0.800000011920928955078125);\n vec2 param = vec2(0.800000011920928955078125);\n vec2 param_1 = uv_scale;\n vec2 param_2 = u_circle1;\n vec2 param_3 = u_rotation1;\n float param_4 = 0.17000000178813934326171875;\n float _319 = FLT_flutter_local_circle_grid(param, param_1, param_2, param_3, param_4);\n float g1 = _319;\n vec2 param_5 = vec2(0.800000011920928955078125);\n vec2 param_6 = uv_scale;\n vec2 param_7 = u_circle2;\n vec2 param_8 = u_rotation2;\n float param_9 = 0.20000000298023223876953125;\n float _331 = FLT_flutter_local_circle_grid(param_5, param_6, param_7, param_8, param_9);\n float g2 = _331;\n vec2 param_10 = vec2(0.800000011920928955078125);\n vec2 param_11 = uv_scale;\n vec2 param_12 = u_circle3;\n vec2 param_13 = u_rotation3;\n float param_14 = 0.2750000059604644775390625;\n float _344 = FLT_flutter_local_circle_grid(param_10, param_11, param_12, param_13, param_14);\n float g3 = _344;\n float v = (((g1 * g1) + g2) - g3) * 0.5;\n return clamp(0.449999988079071044921875 + (0.800000011920928955078125 * v), 0.0, 1.0);\n}\n\nfloat FLT_flutter_local_soft_ring(vec2 uv, vec2 xy, float radius, float thickness, float blur)\n{\n vec2 param = uv;\n vec2 param_1 = xy;\n float param_2 = radius + thickness;\n float param_3 = blur;\n float circle_outer = FLT_flutter_local_soft_circle(param, param_1, param_2, param_3);\n vec2 param_4 = uv;\n vec2 param_5 = xy;\n float param_6 = max(radius - thickness, 0.0);\n float param_7 = blur;\n float circle_inner = FLT_flutter_local_soft_circle(param_4, param_5, param_6, param_7);\n return clamp(circle_outer - circle_inner, 0.0, 1.0);\n}\n\nfloat FLT_flutter_local_triangle_noise(inout vec2 n)\n{\n n = fract(n * vec2(5.398700237274169921875, 5.442100048065185546875));\n n += vec2(dot(n.yx, n + vec2(21.5351009368896484375, 14.3136997222900390625)));\n float xy = n.x * n.y;\n return (fract(xy * 95.43070220947265625) + fract(xy * 75.0496063232421875)) - 1.0;\n}\n\nfloat FLT_flutter_local_threshold(float v, float l, float h)\n{\n return step(l, v) * (1.0 - step(h, v));\n}\n\nfloat FLT_flutter_local_sparkle(vec2 uv, float t)\n{\n vec2 param = uv;\n float _242 = FLT_flutter_local_triangle_noise(param);\n float n = _242;\n float param_1 = n;\n float param_2 = 0.0;\n float param_3 = 0.0500000007450580596923828125;\n float s = FLT_flutter_local_threshold(param_1, param_2, param_3);\n float param_4 = n + sin(3.1415927410125732421875 * (t + 0.3499999940395355224609375));\n float param_5 = 0.100000001490116119384765625;\n float param_6 = 0.1500000059604644775390625;\n s += FLT_flutter_local_threshold(param_4, param_5, param_6);\n float param_7 = n + sin(3.1415927410125732421875 * (t + 0.699999988079071044921875));\n float param_8 = 0.20000000298023223876953125;\n float param_9 = 0.25;\n s += FLT_flutter_local_threshold(param_7, param_8, param_9);\n float param_10 = n + sin(3.1415927410125732421875 * (t + 1.0499999523162841796875));\n float param_11 = 0.300000011920928955078125;\n float param_12 = 0.3499999940395355224609375;\n s += FLT_flutter_local_threshold(param_10, param_11, param_12);\n return clamp(s, 0.0, 1.0) * 0.550000011920928955078125;\n}\n\nvoid FLT_main()\n{\n u_alpha = u_composite_1.x;\n u_sparkle_alpha = u_composite_1.y;\n u_blur = u_composite_1.z;\n u_radius_scale = u_composite_1.w;\n vec2 p = FLT_flutter_local_FlutterFragCoord();\n vec2 uv_1 = p * u_resolution_scale;\n vec2 density_uv = uv_1 - mod(p, u_noise_scale);\n float radius = u_max_radius * u_radius_scale;\n vec2 param_13 = uv_1;\n float turbulence = FLT_flutter_local_turbulence(param_13);\n vec2 param_14 = p;\n vec2 param_15 = u_center;\n float param_16 = radius;\n float param_17 = 0.0500000007450580596923828125 * u_max_radius;\n float param_18 = u_blur;\n float ring = FLT_flutter_local_soft_ring(param_14, param_15, param_16, param_17, param_18);\n vec2 param_19 = density_uv;\n float param_20 = u_noise_phase;\n float sparkle = ((FLT_flutter_local_sparkle(param_19, param_20) * ring) * turbulence) * u_sparkle_alpha;\n vec2 param_21 = p;\n vec2 param_22 = u_center;\n float param_23 = radius;\n float param_24 = u_blur;\n float wave_alpha = (FLT_flutter_local_soft_circle(param_21, param_22, param_23, param_24) * u_alpha) * u_color.w;\n vec4 wave_color = vec4(u_color.xyz * wave_alpha, wave_alpha);\n fragColor = mix(wave_color, vec4(1.0), vec4(sparkle));\n}\n\nhalf4 main(float2 iFragCoord)\n{\n flutter_FragCoord = float4(iFragCoord, 0, 0);\n FLT_main();\n return fragColor;\n}\n",
5
+ "stage": 1,
6
+ "uniforms": [
7
+ {
8
+ "array_elements": 0,
9
+ "bit_width": 32,
10
+ "columns": 1,
11
+ "location": 0,
12
+ "name": "u_color",
13
+ "rows": 4,
14
+ "type": 10
15
+ },
16
+ {
17
+ "array_elements": 0,
18
+ "bit_width": 32,
19
+ "columns": 1,
20
+ "location": 1,
21
+ "name": "u_composite_1",
22
+ "rows": 4,
23
+ "type": 10
24
+ },
25
+ {
26
+ "array_elements": 0,
27
+ "bit_width": 32,
28
+ "columns": 1,
29
+ "location": 2,
30
+ "name": "u_center",
31
+ "rows": 2,
32
+ "type": 10
33
+ },
34
+ {
35
+ "array_elements": 0,
36
+ "bit_width": 32,
37
+ "columns": 1,
38
+ "location": 3,
39
+ "name": "u_max_radius",
40
+ "rows": 1,
41
+ "type": 10
42
+ },
43
+ {
44
+ "array_elements": 0,
45
+ "bit_width": 32,
46
+ "columns": 1,
47
+ "location": 4,
48
+ "name": "u_resolution_scale",
49
+ "rows": 2,
50
+ "type": 10
51
+ },
52
+ {
53
+ "array_elements": 0,
54
+ "bit_width": 32,
55
+ "columns": 1,
56
+ "location": 5,
57
+ "name": "u_noise_scale",
58
+ "rows": 2,
59
+ "type": 10
60
+ },
61
+ {
62
+ "array_elements": 0,
63
+ "bit_width": 32,
64
+ "columns": 1,
65
+ "location": 6,
66
+ "name": "u_noise_phase",
67
+ "rows": 1,
68
+ "type": 10
69
+ },
70
+ {
71
+ "array_elements": 0,
72
+ "bit_width": 32,
73
+ "columns": 1,
74
+ "location": 7,
75
+ "name": "u_circle1",
76
+ "rows": 2,
77
+ "type": 10
78
+ },
79
+ {
80
+ "array_elements": 0,
81
+ "bit_width": 32,
82
+ "columns": 1,
83
+ "location": 8,
84
+ "name": "u_circle2",
85
+ "rows": 2,
86
+ "type": 10
87
+ },
88
+ {
89
+ "array_elements": 0,
90
+ "bit_width": 32,
91
+ "columns": 1,
92
+ "location": 9,
93
+ "name": "u_circle3",
94
+ "rows": 2,
95
+ "type": 10
96
+ },
97
+ {
98
+ "array_elements": 0,
99
+ "bit_width": 32,
100
+ "columns": 1,
101
+ "location": 10,
102
+ "name": "u_rotation1",
103
+ "rows": 2,
104
+ "type": 10
105
+ },
106
+ {
107
+ "array_elements": 0,
108
+ "bit_width": 32,
109
+ "columns": 1,
110
+ "location": 11,
111
+ "name": "u_rotation2",
112
+ "rows": 2,
113
+ "type": 10
114
+ },
115
+ {
116
+ "array_elements": 0,
117
+ "bit_width": 32,
118
+ "columns": 1,
119
+ "location": 12,
120
+ "name": "u_rotation3",
121
+ "rows": 2,
122
+ "type": 10
123
+ }
124
+ ]
125
+ }
126
+ }
favicon.png ADDED
flutter.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (()=>{var U=()=>navigator.vendor==="Google Inc."||navigator.agent==="Edg/",E=()=>typeof ImageDecoder>"u"?!1:U(),W=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",P=()=>{let s=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(s))},p={hasImageCodecs:E(),hasChromiumBreakIterators:W(),supportsWasmGC:P(),crossOriginIsolated:window.crossOriginIsolated};function l(...s){return new URL(_(...s),document.baseURI).toString()}function _(...s){return s.filter(e=>!!e).map((e,i)=>i===0?C(e):j(C(e))).filter(e=>e.length).join("/")}function j(s){let e=0;for(;e<s.length&&s.charAt(e)==="/";)e++;return s.substring(e)}function C(s){let e=s.length;for(;e>0&&s.charAt(e-1)==="/";)e--;return s.substring(0,e)}function L(s,e){return s.canvasKitBaseUrl?s.canvasKitBaseUrl:e.engineRevision&&!e.useLocalCanvasKit?_("https://www.gstatic.com/flutter-canvaskit",e.engineRevision):"canvaskit"}var h=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:i=l("main.dart.js"),onEntrypointLoaded:r,nonce:t}=e||{};return this._loadJSEntrypoint(i,r,t)}async load(e,i,r,t,n){n??=o=>{o.initializeEngine(r).then(c=>c.runApp())};let{entryPointBaseUrl:a}=r;if(e.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(e,i,a,n);{let o=e.mainJsPath??"main.dart.js",c=l(a,o);return this._loadJSEntrypoint(c,n,t)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,i,r){let t=typeof i=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(t)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=i,document.head.append(n);else return new Promise((a,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=a,n.addEventListener("error",o),document.head.append(n)})}}async _loadWasmEntrypoint(e,i,r,t){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=t;let{mainWasmPath:n,jsSupportRuntimePath:a}=e,o=l(r,n),c=l(r,a);this._ttPolicy!=null&&(c=this._ttPolicy.createScriptURL(c));let d=(await import(c)).compileStreaming(fetch(o)),w;e.renderer==="skwasm"?w=(async()=>{let f=await i.skwasm;return window._flutter_skwasmInstance=f,{skwasm:f.wasmExports,skwasmWrapper:f,ffi:{memory:f.wasmMemory}}})():w=Promise.resolve({}),await(await(await d).instantiate(await w)).invokeMain()}}_createScriptTag(e,i){let r=document.createElement("script");r.type="application/javascript",i&&(r.nonce=i);let t=e;return this._ttPolicy!=null&&(t=this._ttPolicy.createScriptURL(e)),r.src=t,r}};async function T(s,e,i){if(e<0)return s;let r,t=new Promise((n,a)=>{r=setTimeout(()=>{a(new Error(`${i} took more than ${e}ms to resolve. Moving on.`,{cause:T}))},e)});return Promise.race([s,t]).finally(()=>{clearTimeout(r)})}var g=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return console.debug("Null serviceWorker configuration. Skipping."),Promise.resolve();if(!("serviceWorker"in navigator)){let o="Service Worker API unavailable.";return window.isSecureContext||(o+=`
2
+ The current context is NOT secure.`,o+=`
3
+ Read more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts`),Promise.reject(new Error(o))}let{serviceWorkerVersion:i,serviceWorkerUrl:r=l(`flutter_service_worker.js?v=${i}`),timeoutMillis:t=4e3}=e,n=r;this._ttPolicy!=null&&(n=this._ttPolicy.createScriptURL(n));let a=navigator.serviceWorker.register(n).then(o=>this._getNewServiceWorker(o,i)).then(this._waitForServiceWorkerActivation);return T(a,t,"prepareServiceWorker")}async _getNewServiceWorker(e,i){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(i))return console.debug("Loading from existing service worker."),e.active;{let r=await e.update();return console.debug("Updating service worker."),r.installing||r.waiting||r.active}}async _waitForServiceWorkerActivation(e){if(!e||e.state==="activated")if(e){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((i,r)=>{e.addEventListener("statechange",()=>{e.state==="activated"&&(console.debug("Activated new service worker."),i())})})}};var y=class{constructor(e,i="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(i,{createScriptURL:function(t){if(t.startsWith("blob:"))return t;let n=new URL(t,window.location),a=n.pathname.split("/").pop();if(r.some(c=>c.test(a)))return n.toString();console.error("URL rejected by TrustedTypes policy",i,":",t,"(download prevented)")}}))}};var k=s=>{let e=WebAssembly.compileStreaming(fetch(s));return(i,r)=>((async()=>{let t=await e,n=await WebAssembly.instantiate(t,i);r(n,t)})(),{})};var I=(s,e,i,r)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let t=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!t&&e.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let n=t&&e.canvasKitVariant!=="full",a=r;n&&(a=l(a,"chromium"));let o=l(a,"canvaskit.js");s.flutterTT.policy&&(o=s.flutterTT.policy.createScriptURL(o));let c=k(l(a,"canvaskit.wasm")),u=await import(o);return window.flutterCanvasKit=await u.default({instantiateWasm:c}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var b=async(s,e,i,r)=>{let t=l(r,"skwasm.js"),n=t;s.flutterTT.policy&&(n=s.flutterTT.policy.createScriptURL(n));let a=k(l(r,"skwasm.wasm"));return await(await import(n)).default({skwasmSingleThreaded:!i.crossOriginIsolated||e.forceSingleThreadedSkwasm,instantiateWasm:a,locateFile:(c,u)=>{if(c.endsWith(".ww.js")){let d=l(r,c);return URL.createObjectURL(new Blob([`
4
+ "use strict";
5
+
6
+ let eventListener;
7
+ eventListener = (message) => {
8
+ const pendingMessages = [];
9
+ const data = message.data;
10
+ data["instantiateWasm"] = (info,receiveInstance) => {
11
+ const instance = new WebAssembly.Instance(data["wasm"], info);
12
+ return receiveInstance(instance, data["wasm"])
13
+ };
14
+ import(data.js).then(async (skwasm) => {
15
+ await skwasm.default(data);
16
+
17
+ removeEventListener("message", eventListener);
18
+ for (const message of pendingMessages) {
19
+ dispatchEvent(message);
20
+ }
21
+ });
22
+ removeEventListener("message", eventListener);
23
+ eventListener = (message) => {
24
+
25
+ pendingMessages.push(message);
26
+ };
27
+
28
+ addEventListener("message", eventListener);
29
+ };
30
+ addEventListener("message", eventListener);
31
+ `],{type:"application/javascript"}))}return url},mainScriptUrlOrBlob:t})};var S=class{async loadEntrypoint(e){let{serviceWorker:i,...r}=e||{},t=new y,n=new g;n.setTrustedTypesPolicy(t.policy),await n.loadServiceWorker(i).catch(o=>{console.warn("Exception while loading service worker:",o)});let a=new h;return a.setTrustedTypesPolicy(t.policy),this.didCreateEngineInitializer=a.didCreateEngineInitializer.bind(a),a.loadEntrypoint(r)}async load({serviceWorkerSettings:e,onEntrypointLoaded:i,nonce:r,config:t}={}){t??={};let n=_flutter.buildConfig;if(!n)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let a=m=>{switch(m){case"skwasm":return p.hasChromiumBreakIterators&&p.hasImageCodecs&&p.supportsWasmGC;default:return!0}},o=(m,f)=>m.renderer==f,c=m=>m.compileTarget==="dart2wasm"&&!p.supportsWasmGC||t.renderer&&!o(m,t.renderer)?!1:a(m.renderer),u=n.builds.find(c);if(!u)throw"FlutterLoader could not find a build compatible with configuration and environment.";let d={};d.flutterTT=new y,e&&(d.serviceWorkerLoader=new g,d.serviceWorkerLoader.setTrustedTypesPolicy(d.flutterTT.policy),await d.serviceWorkerLoader.loadServiceWorker(e).catch(m=>{console.warn("Exception while loading service worker:",m)}));let w=L(t,n);u.renderer==="canvaskit"?d.canvasKit=I(d,t,p,w):u.renderer==="skwasm"&&(d.skwasm=b(d,t,p,w));let v=new h;return v.setTrustedTypesPolicy(d.flutterTT.policy),this.didCreateEngineInitializer=v.didCreateEngineInitializer.bind(v),v.load(u,d,t,r,i)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new S);})();
32
+ //# sourceMappingURL=flutter.js.map
flutter_bootstrap.js ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (()=>{var U=()=>navigator.vendor==="Google Inc."||navigator.agent==="Edg/",E=()=>typeof ImageDecoder>"u"?!1:U(),W=()=>typeof Intl.v8BreakIterator<"u"&&typeof Intl.Segmenter<"u",P=()=>{let s=[0,97,115,109,1,0,0,0,1,5,1,95,1,120,0];return WebAssembly.validate(new Uint8Array(s))},p={hasImageCodecs:E(),hasChromiumBreakIterators:W(),supportsWasmGC:P(),crossOriginIsolated:window.crossOriginIsolated};function l(...s){return new URL(_(...s),document.baseURI).toString()}function _(...s){return s.filter(e=>!!e).map((e,i)=>i===0?C(e):j(C(e))).filter(e=>e.length).join("/")}function j(s){let e=0;for(;e<s.length&&s.charAt(e)==="/";)e++;return s.substring(e)}function C(s){let e=s.length;for(;e>0&&s.charAt(e-1)==="/";)e--;return s.substring(0,e)}function L(s,e){return s.canvasKitBaseUrl?s.canvasKitBaseUrl:e.engineRevision&&!e.useLocalCanvasKit?_("https://www.gstatic.com/flutter-canvaskit",e.engineRevision):"canvaskit"}var h=class{constructor(){this._scriptLoaded=!1}setTrustedTypesPolicy(e){this._ttPolicy=e}async loadEntrypoint(e){let{entrypointUrl:i=l("main.dart.js"),onEntrypointLoaded:r,nonce:t}=e||{};return this._loadJSEntrypoint(i,r,t)}async load(e,i,r,t,n){n??=o=>{o.initializeEngine(r).then(c=>c.runApp())};let{entryPointBaseUrl:a}=r;if(e.compileTarget==="dart2wasm")return this._loadWasmEntrypoint(e,i,a,n);{let o=e.mainJsPath??"main.dart.js",c=l(a,o);return this._loadJSEntrypoint(c,n,t)}}didCreateEngineInitializer(e){typeof this._didCreateEngineInitializerResolve=="function"&&(this._didCreateEngineInitializerResolve(e),this._didCreateEngineInitializerResolve=null,delete _flutter.loader.didCreateEngineInitializer),typeof this._onEntrypointLoaded=="function"&&this._onEntrypointLoaded(e)}_loadJSEntrypoint(e,i,r){let t=typeof i=="function";if(!this._scriptLoaded){this._scriptLoaded=!0;let n=this._createScriptTag(e,r);if(t)console.debug("Injecting <script> tag. Using callback."),this._onEntrypointLoaded=i,document.head.append(n);else return new Promise((a,o)=>{console.debug("Injecting <script> tag. Using Promises. Use the callback approach instead!"),this._didCreateEngineInitializerResolve=a,n.addEventListener("error",o),document.head.append(n)})}}async _loadWasmEntrypoint(e,i,r,t){if(!this._scriptLoaded){this._scriptLoaded=!0,this._onEntrypointLoaded=t;let{mainWasmPath:n,jsSupportRuntimePath:a}=e,o=l(r,n),c=l(r,a);this._ttPolicy!=null&&(c=this._ttPolicy.createScriptURL(c));let d=(await import(c)).compileStreaming(fetch(o)),w;e.renderer==="skwasm"?w=(async()=>{let f=await i.skwasm;return window._flutter_skwasmInstance=f,{skwasm:f.wasmExports,skwasmWrapper:f,ffi:{memory:f.wasmMemory}}})():w=Promise.resolve({}),await(await(await d).instantiate(await w)).invokeMain()}}_createScriptTag(e,i){let r=document.createElement("script");r.type="application/javascript",i&&(r.nonce=i);let t=e;return this._ttPolicy!=null&&(t=this._ttPolicy.createScriptURL(e)),r.src=t,r}};async function T(s,e,i){if(e<0)return s;let r,t=new Promise((n,a)=>{r=setTimeout(()=>{a(new Error(`${i} took more than ${e}ms to resolve. Moving on.`,{cause:T}))},e)});return Promise.race([s,t]).finally(()=>{clearTimeout(r)})}var g=class{setTrustedTypesPolicy(e){this._ttPolicy=e}loadServiceWorker(e){if(!e)return console.debug("Null serviceWorker configuration. Skipping."),Promise.resolve();if(!("serviceWorker"in navigator)){let o="Service Worker API unavailable.";return window.isSecureContext||(o+=`
2
+ The current context is NOT secure.`,o+=`
3
+ Read more: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts`),Promise.reject(new Error(o))}let{serviceWorkerVersion:i,serviceWorkerUrl:r=l(`flutter_service_worker.js?v=${i}`),timeoutMillis:t=4e3}=e,n=r;this._ttPolicy!=null&&(n=this._ttPolicy.createScriptURL(n));let a=navigator.serviceWorker.register(n).then(o=>this._getNewServiceWorker(o,i)).then(this._waitForServiceWorkerActivation);return T(a,t,"prepareServiceWorker")}async _getNewServiceWorker(e,i){if(!e.active&&(e.installing||e.waiting))return console.debug("Installing/Activating first service worker."),e.installing||e.waiting;if(e.active.scriptURL.endsWith(i))return console.debug("Loading from existing service worker."),e.active;{let r=await e.update();return console.debug("Updating service worker."),r.installing||r.waiting||r.active}}async _waitForServiceWorkerActivation(e){if(!e||e.state==="activated")if(e){console.debug("Service worker already active.");return}else throw new Error("Cannot activate a null service worker!");return new Promise((i,r)=>{e.addEventListener("statechange",()=>{e.state==="activated"&&(console.debug("Activated new service worker."),i())})})}};var y=class{constructor(e,i="flutter-js"){let r=e||[/\.js$/,/\.mjs$/];window.trustedTypes&&(this.policy=trustedTypes.createPolicy(i,{createScriptURL:function(t){if(t.startsWith("blob:"))return t;let n=new URL(t,window.location),a=n.pathname.split("/").pop();if(r.some(c=>c.test(a)))return n.toString();console.error("URL rejected by TrustedTypes policy",i,":",t,"(download prevented)")}}))}};var k=s=>{let e=WebAssembly.compileStreaming(fetch(s));return(i,r)=>((async()=>{let t=await e,n=await WebAssembly.instantiate(t,i);r(n,t)})(),{})};var I=(s,e,i,r)=>(window.flutterCanvasKitLoaded=(async()=>{if(window.flutterCanvasKit)return window.flutterCanvasKit;let t=i.hasChromiumBreakIterators&&i.hasImageCodecs;if(!t&&e.canvasKitVariant=="chromium")throw"Chromium CanvasKit variant specifically requested, but unsupported in this browser";let n=t&&e.canvasKitVariant!=="full",a=r;n&&(a=l(a,"chromium"));let o=l(a,"canvaskit.js");s.flutterTT.policy&&(o=s.flutterTT.policy.createScriptURL(o));let c=k(l(a,"canvaskit.wasm")),u=await import(o);return window.flutterCanvasKit=await u.default({instantiateWasm:c}),window.flutterCanvasKit})(),window.flutterCanvasKitLoaded);var b=async(s,e,i,r)=>{let t=l(r,"skwasm.js"),n=t;s.flutterTT.policy&&(n=s.flutterTT.policy.createScriptURL(n));let a=k(l(r,"skwasm.wasm"));return await(await import(n)).default({skwasmSingleThreaded:!i.crossOriginIsolated||e.forceSingleThreadedSkwasm,instantiateWasm:a,locateFile:(c,u)=>{if(c.endsWith(".ww.js")){let d=l(r,c);return URL.createObjectURL(new Blob([`
4
+ "use strict";
5
+
6
+ let eventListener;
7
+ eventListener = (message) => {
8
+ const pendingMessages = [];
9
+ const data = message.data;
10
+ data["instantiateWasm"] = (info,receiveInstance) => {
11
+ const instance = new WebAssembly.Instance(data["wasm"], info);
12
+ return receiveInstance(instance, data["wasm"])
13
+ };
14
+ import(data.js).then(async (skwasm) => {
15
+ await skwasm.default(data);
16
+
17
+ removeEventListener("message", eventListener);
18
+ for (const message of pendingMessages) {
19
+ dispatchEvent(message);
20
+ }
21
+ });
22
+ removeEventListener("message", eventListener);
23
+ eventListener = (message) => {
24
+
25
+ pendingMessages.push(message);
26
+ };
27
+
28
+ addEventListener("message", eventListener);
29
+ };
30
+ addEventListener("message", eventListener);
31
+ `],{type:"application/javascript"}))}return url},mainScriptUrlOrBlob:t})};var S=class{async loadEntrypoint(e){let{serviceWorker:i,...r}=e||{},t=new y,n=new g;n.setTrustedTypesPolicy(t.policy),await n.loadServiceWorker(i).catch(o=>{console.warn("Exception while loading service worker:",o)});let a=new h;return a.setTrustedTypesPolicy(t.policy),this.didCreateEngineInitializer=a.didCreateEngineInitializer.bind(a),a.loadEntrypoint(r)}async load({serviceWorkerSettings:e,onEntrypointLoaded:i,nonce:r,config:t}={}){t??={};let n=_flutter.buildConfig;if(!n)throw"FlutterLoader.load requires _flutter.buildConfig to be set";let a=m=>{switch(m){case"skwasm":return p.hasChromiumBreakIterators&&p.hasImageCodecs&&p.supportsWasmGC;default:return!0}},o=(m,f)=>m.renderer==f,c=m=>m.compileTarget==="dart2wasm"&&!p.supportsWasmGC||t.renderer&&!o(m,t.renderer)?!1:a(m.renderer),u=n.builds.find(c);if(!u)throw"FlutterLoader could not find a build compatible with configuration and environment.";let d={};d.flutterTT=new y,e&&(d.serviceWorkerLoader=new g,d.serviceWorkerLoader.setTrustedTypesPolicy(d.flutterTT.policy),await d.serviceWorkerLoader.loadServiceWorker(e).catch(m=>{console.warn("Exception while loading service worker:",m)}));let w=L(t,n);u.renderer==="canvaskit"?d.canvasKit=I(d,t,p,w):u.renderer==="skwasm"&&(d.skwasm=b(d,t,p,w));let v=new h;return v.setTrustedTypesPolicy(d.flutterTT.policy),this.didCreateEngineInitializer=v.didCreateEngineInitializer.bind(v),v.load(u,d,t,r,i)}};window._flutter||(window._flutter={});window._flutter.loader||(window._flutter.loader=new S);})();
32
+ //# sourceMappingURL=flutter.js.map
33
+
34
+ if (!window._flutter) {
35
+ window._flutter = {};
36
+ }
37
+ _flutter.buildConfig = {"engineRevision":"dd93de6fb1776398bf586cbd477deade1391c7e4","builds":[{"compileTarget":"dart2js","renderer":"canvaskit","mainJsPath":"main.dart.js"}]};
38
+
39
+
40
+ _flutter.loader.load({
41
+ serviceWorkerSettings: {
42
+ serviceWorkerVersion: "3595413538"
43
+ }
44
+ });
flutter_service_worker.js ADDED
@@ -0,0 +1,206 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ 'use strict';
2
+ const MANIFEST = 'flutter-app-manifest';
3
+ const TEMP = 'flutter-temp-cache';
4
+ const CACHE_NAME = 'flutter-app-cache';
5
+
6
+ const RESOURCES = {"assets/shaders/ink_sparkle.frag": "ecc85a2e95f5e9f53123dcaf8cb9b6ce",
7
+ "assets/AssetManifest.json": "99914b932bd37a50b983c5e7c90ae93b",
8
+ "assets/AssetManifest.bin.json": "a1fee2517bf598633e2f67fcf3e26c94",
9
+ "assets/NOTICES": "895f15cd35e0a80eb753cc18252ce478",
10
+ "assets/packages/cupertino_icons/assets/CupertinoIcons.ttf": "33b7d9392238c04c131b6ce224e13711",
11
+ "assets/packages/fluttertoast/assets/toastify.js": "56e2c9cedd97f10e7e5f1cebd85d53e3",
12
+ "assets/packages/fluttertoast/assets/toastify.css": "a85675050054f179444bc5ad70ffc635",
13
+ "assets/fonts/MaterialIcons-Regular.otf": "0edef33c1e687628719b49d6b8a4c4a0",
14
+ "assets/AssetManifest.bin": "0b0a3415aad49b6e9bf965ff578614f9",
15
+ "assets/FontManifest.json": "7b2a36307916a9721811788013e65289",
16
+ "main.dart.js": "e4b85822f2316fab26a112d79405f428",
17
+ "favicon.png": "5dcef449791fa27946b3d35ad8803796",
18
+ "icons/Icon-512.png": "96e752610906ba2a93c65f8abe1645f1",
19
+ "icons/Icon-maskable-192.png": "c457ef57daa1d16f64b27b786ec2ea3c",
20
+ "icons/Icon-maskable-512.png": "301a7604d45b3e739efc881eb04896ea",
21
+ "icons/Icon-192.png": "ac9a721a12bbc803b44f645561ecb1e1",
22
+ "manifest.json": "5c5c863764dadce171ba12ec5928000e",
23
+ "flutter_bootstrap.js": "842230edd36db21ff208ece302dc9fa6",
24
+ "version.json": "d04b6c60b898924adbfbf7b9685639fb",
25
+ "index.html": "5ff9e295fc0d751cce860398b401cbed",
26
+ "/": "5ff9e295fc0d751cce860398b401cbed",
27
+ "flutter.js": "83d881c1dbb6d6bcd6b42e274605b69c",
28
+ "canvaskit/canvaskit.js.symbols": "bdcd3835edf8586b6d6edfce8749fb77",
29
+ "canvaskit/chromium/canvaskit.js.symbols": "b61b5f4673c9698029fa0a746a9ad581",
30
+ "canvaskit/chromium/canvaskit.js": "8191e843020c832c9cf8852a4b909d4c",
31
+ "canvaskit/chromium/canvaskit.wasm": "f504de372e31c8031018a9ec0a9ef5f0",
32
+ "canvaskit/skwasm.wasm": "39dd80367a4e71582d234948adc521c0",
33
+ "canvaskit/canvaskit.js": "728b2d477d9b8c14593d4f9b82b484f3",
34
+ "canvaskit/skwasm.js": "ea559890a088fe28b4ddf70e17e60052",
35
+ "canvaskit/skwasm.js.symbols": "e72c79950c8a8483d826a7f0560573a1",
36
+ "canvaskit/canvaskit.wasm": "7a3f4ae7d65fc1de6a6e7ddd3224bc93"};
37
+ // The application shell files that are downloaded before a service worker can
38
+ // start.
39
+ const CORE = ["main.dart.js",
40
+ "index.html",
41
+ "flutter_bootstrap.js",
42
+ "assets/AssetManifest.bin.json",
43
+ "assets/FontManifest.json"];
44
+
45
+ // During install, the TEMP cache is populated with the application shell files.
46
+ self.addEventListener("install", (event) => {
47
+ self.skipWaiting();
48
+ return event.waitUntil(
49
+ caches.open(TEMP).then((cache) => {
50
+ return cache.addAll(
51
+ CORE.map((value) => new Request(value, {'cache': 'reload'})));
52
+ })
53
+ );
54
+ });
55
+ // During activate, the cache is populated with the temp files downloaded in
56
+ // install. If this service worker is upgrading from one with a saved
57
+ // MANIFEST, then use this to retain unchanged resource files.
58
+ self.addEventListener("activate", function(event) {
59
+ return event.waitUntil(async function() {
60
+ try {
61
+ var contentCache = await caches.open(CACHE_NAME);
62
+ var tempCache = await caches.open(TEMP);
63
+ var manifestCache = await caches.open(MANIFEST);
64
+ var manifest = await manifestCache.match('manifest');
65
+ // When there is no prior manifest, clear the entire cache.
66
+ if (!manifest) {
67
+ await caches.delete(CACHE_NAME);
68
+ contentCache = await caches.open(CACHE_NAME);
69
+ for (var request of await tempCache.keys()) {
70
+ var response = await tempCache.match(request);
71
+ await contentCache.put(request, response);
72
+ }
73
+ await caches.delete(TEMP);
74
+ // Save the manifest to make future upgrades efficient.
75
+ await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES)));
76
+ // Claim client to enable caching on first launch
77
+ self.clients.claim();
78
+ return;
79
+ }
80
+ var oldManifest = await manifest.json();
81
+ var origin = self.location.origin;
82
+ for (var request of await contentCache.keys()) {
83
+ var key = request.url.substring(origin.length + 1);
84
+ if (key == "") {
85
+ key = "/";
86
+ }
87
+ // If a resource from the old manifest is not in the new cache, or if
88
+ // the MD5 sum has changed, delete it. Otherwise the resource is left
89
+ // in the cache and can be reused by the new service worker.
90
+ if (!RESOURCES[key] || RESOURCES[key] != oldManifest[key]) {
91
+ await contentCache.delete(request);
92
+ }
93
+ }
94
+ // Populate the cache with the app shell TEMP files, potentially overwriting
95
+ // cache files preserved above.
96
+ for (var request of await tempCache.keys()) {
97
+ var response = await tempCache.match(request);
98
+ await contentCache.put(request, response);
99
+ }
100
+ await caches.delete(TEMP);
101
+ // Save the manifest to make future upgrades efficient.
102
+ await manifestCache.put('manifest', new Response(JSON.stringify(RESOURCES)));
103
+ // Claim client to enable caching on first launch
104
+ self.clients.claim();
105
+ return;
106
+ } catch (err) {
107
+ // On an unhandled exception the state of the cache cannot be guaranteed.
108
+ console.error('Failed to upgrade service worker: ' + err);
109
+ await caches.delete(CACHE_NAME);
110
+ await caches.delete(TEMP);
111
+ await caches.delete(MANIFEST);
112
+ }
113
+ }());
114
+ });
115
+ // The fetch handler redirects requests for RESOURCE files to the service
116
+ // worker cache.
117
+ self.addEventListener("fetch", (event) => {
118
+ if (event.request.method !== 'GET') {
119
+ return;
120
+ }
121
+ var origin = self.location.origin;
122
+ var key = event.request.url.substring(origin.length + 1);
123
+ // Redirect URLs to the index.html
124
+ if (key.indexOf('?v=') != -1) {
125
+ key = key.split('?v=')[0];
126
+ }
127
+ if (event.request.url == origin || event.request.url.startsWith(origin + '/#') || key == '') {
128
+ key = '/';
129
+ }
130
+ // If the URL is not the RESOURCE list then return to signal that the
131
+ // browser should take over.
132
+ if (!RESOURCES[key]) {
133
+ return;
134
+ }
135
+ // If the URL is the index.html, perform an online-first request.
136
+ if (key == '/') {
137
+ return onlineFirst(event);
138
+ }
139
+ event.respondWith(caches.open(CACHE_NAME)
140
+ .then((cache) => {
141
+ return cache.match(event.request).then((response) => {
142
+ // Either respond with the cached resource, or perform a fetch and
143
+ // lazily populate the cache only if the resource was successfully fetched.
144
+ return response || fetch(event.request).then((response) => {
145
+ if (response && Boolean(response.ok)) {
146
+ cache.put(event.request, response.clone());
147
+ }
148
+ return response;
149
+ });
150
+ })
151
+ })
152
+ );
153
+ });
154
+ self.addEventListener('message', (event) => {
155
+ // SkipWaiting can be used to immediately activate a waiting service worker.
156
+ // This will also require a page refresh triggered by the main worker.
157
+ if (event.data === 'skipWaiting') {
158
+ self.skipWaiting();
159
+ return;
160
+ }
161
+ if (event.data === 'downloadOffline') {
162
+ downloadOffline();
163
+ return;
164
+ }
165
+ });
166
+ // Download offline will check the RESOURCES for all files not in the cache
167
+ // and populate them.
168
+ async function downloadOffline() {
169
+ var resources = [];
170
+ var contentCache = await caches.open(CACHE_NAME);
171
+ var currentContent = {};
172
+ for (var request of await contentCache.keys()) {
173
+ var key = request.url.substring(origin.length + 1);
174
+ if (key == "") {
175
+ key = "/";
176
+ }
177
+ currentContent[key] = true;
178
+ }
179
+ for (var resourceKey of Object.keys(RESOURCES)) {
180
+ if (!currentContent[resourceKey]) {
181
+ resources.push(resourceKey);
182
+ }
183
+ }
184
+ return contentCache.addAll(resources);
185
+ }
186
+ // Attempt to download the resource online before falling back to
187
+ // the offline cache.
188
+ function onlineFirst(event) {
189
+ return event.respondWith(
190
+ fetch(event.request).then((response) => {
191
+ return caches.open(CACHE_NAME).then((cache) => {
192
+ cache.put(event.request, response.clone());
193
+ return response;
194
+ });
195
+ }).catch((error) => {
196
+ return caches.open(CACHE_NAME).then((cache) => {
197
+ return cache.match(event.request).then((response) => {
198
+ if (response != null) {
199
+ return response;
200
+ }
201
+ throw error;
202
+ });
203
+ });
204
+ })
205
+ );
206
+ }
icons/Icon-192.png ADDED
icons/Icon-512.png ADDED
icons/Icon-maskable-192.png ADDED
icons/Icon-maskable-512.png ADDED
index.html ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <!--
5
+ If you are serving your web app in a path other than the root, change the
6
+ href value below to reflect the base path you are serving from.
7
+
8
+ The path provided below has to start and end with a slash "/" in order for
9
+ it to work correctly.
10
+
11
+ For more details:
12
+ * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
13
+
14
+ This is a placeholder for base href that will be replaced by the value of
15
+ the `--base-href` argument provided to `flutter build`.
16
+ -->
17
+ <base href="/">
18
+
19
+ <meta charset="UTF-8">
20
+ <meta content="IE=Edge" http-equiv="X-UA-Compatible">
21
+ <meta name="description" content="A new Flutter project.">
22
+
23
+ <!-- iOS meta tags & icons -->
24
+ <meta name="mobile-web-app-capable" content="yes">
25
+ <meta name="apple-mobile-web-app-status-bar-style" content="black">
26
+ <meta name="apple-mobile-web-app-title" content="hackathon_frontend">
27
+ <link rel="apple-touch-icon" href="icons/Icon-192.png">
28
+
29
+ <!-- Favicon -->
30
+ <link rel="icon" type="image/png" href="favicon.png"/>
31
+
32
+ <title>hackathon_frontend</title>
33
+ <link rel="manifest" href="manifest.json">
34
+ </head>
35
+ <body>
36
+ <script src="flutter_bootstrap.js" async></script>
37
+ </body>
38
+ </html>
main.dart.js ADDED
The diff for this file is too large to render. See raw diff
 
manifest.json ADDED
@@ -0,0 +1,35 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "hackathon_frontend",
3
+ "short_name": "hackathon_frontend",
4
+ "start_url": ".",
5
+ "display": "standalone",
6
+ "background_color": "#0175C2",
7
+ "theme_color": "#0175C2",
8
+ "description": "A new Flutter project.",
9
+ "orientation": "portrait-primary",
10
+ "prefer_related_applications": false,
11
+ "icons": [
12
+ {
13
+ "src": "icons/Icon-192.png",
14
+ "sizes": "192x192",
15
+ "type": "image/png"
16
+ },
17
+ {
18
+ "src": "icons/Icon-512.png",
19
+ "sizes": "512x512",
20
+ "type": "image/png"
21
+ },
22
+ {
23
+ "src": "icons/Icon-maskable-192.png",
24
+ "sizes": "192x192",
25
+ "type": "image/png",
26
+ "purpose": "maskable"
27
+ },
28
+ {
29
+ "src": "icons/Icon-maskable-512.png",
30
+ "sizes": "512x512",
31
+ "type": "image/png",
32
+ "purpose": "maskable"
33
+ }
34
+ ]
35
+ }
version.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"app_name":"wikilingo_frontend","version":"1.0.0","build_number":"1","package_name":"wikilingo_frontend"}