From 9ac0a0b8c627d8dcf4b84a930d6cd706fd413592 Mon Sep 17 00:00:00 2001 From: Alexander Sullivan Date: Wed, 30 Mar 2022 22:40:09 -0400 Subject: [PATCH] Updated service workers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Optimizations: • Updated service workers --- .gitignore | 3 -- cgi-bin/core/serviceWorker/sw.js | 2 +- cgi-bin/core/serviceWorker/sw.js.map | 2 +- ...orkbox-ed5f60f5.js => workbox-74df4e21.js} | 4 +-- .../serviceWorker/workbox-74df4e21.js.map | 1 + .../serviceWorker/workbox-ed5f60f5.js.map | 1 - package.json | 3 +- workbox-config.js | 32 +++++++++++++++++++ 8 files changed, 39 insertions(+), 9 deletions(-) rename cgi-bin/core/serviceWorker/{workbox-ed5f60f5.js => workbox-74df4e21.js} (98%) create mode 100644 cgi-bin/core/serviceWorker/workbox-74df4e21.js.map delete mode 100644 cgi-bin/core/serviceWorker/workbox-ed5f60f5.js.map create mode 100644 workbox-config.js diff --git a/.gitignore b/.gitignore index 597c226..09252ba 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,3 @@ cgi-bin/gDriveMountFast.pl .env.test.local .env.production.local .vscode - -# workbox -workbox-config.js diff --git a/cgi-bin/core/serviceWorker/sw.js b/cgi-bin/core/serviceWorker/sw.js index 3dff816..4582a96 100644 --- a/cgi-bin/core/serviceWorker/sw.js +++ b/cgi-bin/core/serviceWorker/sw.js @@ -1,2 +1,2 @@ -if(!self.define){let i,e={};const a=(a,c)=>(a=new URL(a+".js",c).href,e[a]||new Promise((e=>{if("document"in self){const i=document.createElement("script");i.src=a,i.onload=e,document.head.appendChild(i)}else i=a,importScripts(a),e()})).then((()=>{let i=e[a];if(!i)throw new Error(`Module ${a} didn’t register its module`);return i})));self.define=(c,b)=>{const d=i||("document"in self?document.currentScript.src:"")||location.href;if(e[d])return;let r={};const n=i=>a(i,d),s={module:{uri:d},exports:r,require:n};e[d]=Promise.all(c.map((i=>s[i]||n(i)))).then((i=>(b(...i),r)))}}define(["./workbox-ed5f60f5"],(function(i){"use strict";self.addEventListener("message",(i=>{i.data&&"SKIP_WAITING"===i.data.type&&self.skipWaiting()})),i.precacheAndRoute([{url:"../../../cgi-bin/core/custom.js",revision:"dc01a450f2a48f37ba6c7b06b2a58cb6"},{url:"../../../cgi-bin/core/custom.min.js",revision:"a3f05a80b124fbe781d64a16e4827f04"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.css",revision:"a62459a7eb63f39415876be696bd6118"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.min.css",revision:"a92ffe0efac491b009a7c8e4e15b6861"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.rtl.css",revision:"20f75e24001ca5ca7b074a2f30587424"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.rtl.min.css",revision:"e2fc2c59953cdae3468ce175351c7ee7"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.css",revision:"8fff8325874c2aa6fb8fd5988919a132"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.min.css",revision:"185ea8d03d4ca4a29061bb874e888bf0"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.rtl.css",revision:"986ce35c2b5555e18433587b2c098454"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.rtl.min.css",revision:"93530896b671920b6abc0d35c13fcedd"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.css",revision:"dad106626326e17a6156072bf75251da"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.min.css",revision:"e26b2acc296db4ca8056301f8933260c"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.rtl.css",revision:"1d8910ba73226c80ab585479b65bbc81"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.rtl.min.css",revision:"87671032915d6842953cc42d1b115dc4"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap.css",revision:"346152dfe092ca2554e4c1c31817461d"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap.min.css",revision:"94994c66fec8c3468b269dc0cc242151"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap.rtl.css",revision:"c89fe4420c13b8f3a61b318eaa28505b"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap.rtl.min.css",revision:"665c3cacfdb309d6ae1c58c959598d5b"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.bundle.js",revision:"bb2ab2f5bb58154ca9cc11ea437bfdbb"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.bundle.min.js",revision:"7ccd9d390d31af98110f74f842ea9b32"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.esm.js",revision:"7c5450bd1e09b3176e598a835aab0ed3"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.esm.min.js",revision:"feadf83193b853084d9820170c4178d5"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.js",revision:"4706e3135214d1a3f6c28e98c40c0724"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.min.js",revision:"259e416ef6833be43801b8b68a93b008"},{url:"../../../cgi-bin/core/packages/ddslick/jquery.ddslick.min.js",revision:"579aa1a3e6a9fef62be6317cf344ce40"},{url:"../../../cgi-bin/core/packages/GoogleAnalytics/js.js",revision:"718970ffdb8f3387fe3b75dea712d2b3"},{url:"../../../cgi-bin/core/packages/GoogleIdentity/platform.js",revision:"5721b901edea93fd86f9e9e0c2018cf1"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/icon.css",revision:"6f8634256d85226258b50650fc224cd2"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/material.green-pink.min.css",revision:"4f6e9c3486ab96d3ac0fcf978d4ca689"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/material.min.js",revision:"e2c95ee10e7d144e8d80783e2fe066cf"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIcons-Regular.codepoints",revision:"09b7f603303209865f4d96b2bd55ffc4"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsOutlined-Regular.codepoints",revision:"0376ada9f56916f3a17d1146e41ad087"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsOutlined-Regular.otf",revision:"4b937d057e6da6a4fac02b42784fdb6a"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsRound-Regular.codepoints",revision:"a3c8569c42beebbce1b9e65781b872ea"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsRound-Regular.otf",revision:"f8d5e69de9cdc901dab69da2d6463217"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsSharp-Regular.codepoints",revision:"a3c8569c42beebbce1b9e65781b872ea"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsSharp-Regular.otf",revision:"5257f80b95fdba0a233f61fef096b3f2"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsTwoTone-Regular.codepoints",revision:"9e882805fd29cf0fb3db1d4a70d44ef2"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsTwoTone-Regular.otf",revision:"f2472d5074320cb86f3db2bbf403939d"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/README.md",revision:"25a552d91155358d3b566d7e453463d3"},{url:"../../../cgi-bin/core/packages/html2canvas/html2canvas.min.js",revision:"4c522c363d0c7bd7d1b74cf3d7069d3a"},{url:"../../../cgi-bin/core/packages/jQuery-ui/AUTHORS.txt",revision:"1794c5f87b271c1c770d0262432280b3"},{url:"../../../cgi-bin/core/packages/jQuery-ui/external/jquery/jquery.js",revision:"2849239b95f5a9a2aea3f6ed9420bb88"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_444444_256x240.png",revision:"1124739a0c2c6627cb0f5d7ba2899301"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_555555_256x240.png",revision:"0d03ef9ce2fa942463faf9b52ce317d7"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_777620_256x240.png",revision:"8ad4071b99569fdd95c6139a70dd6d93"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_777777_256x240.png",revision:"2782ca0a313283679253862ccc18c9f3"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_cc0000_256x240.png",revision:"80b90ea803c44ef645d16a492daeb42d"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_ffffff_256x240.png",revision:"062a9bca06ab2b8bcdd37041e9a25a48"},{url:"../../../cgi-bin/core/packages/jQuery-ui/index.html",revision:"126b7673a608fef2405e35be7c7dc8e8"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.css",revision:"9ae98810985d9ba34f30e29479ae5ca4"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.js",revision:"c870ccb2a1254499c48abc8cc3406bc5"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.min.css",revision:"7772d9eb820e49b45323c9754a8bb645"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.min.js",revision:"44eba758ef31708556233c0183cf11d4"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.structure.css",revision:"2333b49b152895a293b9663499276f82"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.structure.min.css",revision:"1f9b0525f08663481f0180eb0d1bbada"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.theme.css",revision:"d4a268bcf7093abbca43c64a63086a50"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.theme.min.css",revision:"4524765c76a459c232153948ec996c4b"},{url:"../../../cgi-bin/core/packages/jQuery-ui/LICENSE.txt",revision:"e0c0d3d883e83f19efa64feb54d5f63d"},{url:"../../../cgi-bin/core/packages/jQuery-ui/package.json",revision:"8f611bd349e956bd7f1ef5dd44537ab5"},{url:"../../../cgi-bin/core/packages/jQuery/jquery.min.js",revision:"8fb8fee4fcc3cc86ff6c724154c49c42"},{url:"../../../cgi-bin/core/packages/mathJS/math.min.js",revision:"e0f3a7dcae9396a25b25f9ca5735cdb3"},{url:"../../../cgi-bin/core/packages/tableFilter/style/colsVisibility.css",revision:"85cb69538a2f16c8e8c75a0c8ed58819"},{url:"../../../cgi-bin/core/packages/tableFilter/style/filtersVisibility.css",revision:"03b19930bd5fab0c6ad7fd58d45391c0"},{url:"../../../cgi-bin/core/packages/tableFilter/style/tablefilter.css",revision:"5c120507e1203d85b4bc9e9ae8649dd9"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/default/default.css",revision:"0bcdf34c350ed0f243d8ae1248c7a7e6"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/default/images/bg_infDiv.jpg",revision:"aeedf37de581787ecb9e35c4d12a7b89"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/default/images/bg_th.jpg",revision:"b222875b84265f479c6d26ed00fa52ac"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/images/bg_headers.jpg",revision:"33b05bbced387c265f4b396f168c467e"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/images/bg_infDiv.jpg",revision:"aeedf37de581787ecb9e35c4d12a7b89"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/mytheme.css",revision:"2eaef0e87a73cfe26ce63dc6aa67fce0"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/skyblue/skyblue.css",revision:"7493a5cd4dc78b9ffa9936a39f56813a"},{url:"../../../cgi-bin/core/packages/tableFilter/tablefilter.js",revision:"cce18982cf35d7c5e3c9d18f6a30192d"},{url:"../../../cgi-bin/core/packages/tableFilter/tablefilter.min.js",revision:"ad5c2e306c5efad996d0648ad86e220c"},{url:"../../../cgi-bin/core/packages/tableFilter/tf-1.js",revision:"f501a5b6c8b7dc0d51e7575bbb009764"},{url:"../../../cgi-bin/core/packages/tableSorter/tablesorter.js",revision:"d227e92e7f4d51bd7486f94d931a0fb0"},{url:"../../../cgi-bin/core/packages/tableSorter/tablesorter.min.js",revision:"26e652b67ab8cad90da399065df0f44f"},{url:"../../../cgi-bin/core/packages/tableSorter/tsorter.min.js",revision:"9d40a761a46ac7195dd34ecbc5ecb39f"},{url:"../../../cgi-bin/core/packages/tableToCSV/bower.json",revision:"79787e672bb7dc33e2a2e0bdc8467a38"},{url:"../../../cgi-bin/core/packages/tableToCSV/dist/jquery.tabletoCSV.js",revision:"be2d4e46a4d6e02526a1be7609baa5a9"},{url:"../../../cgi-bin/core/packages/tableToCSV/example.html",revision:"9b17ab0cdbf7acd33dfcfff87c410d2b"},{url:"../../../cgi-bin/core/packages/tableToCSV/gulpfile.js",revision:"865db57f0fbd64c80b24c7a327e2416c"},{url:"../../../cgi-bin/core/packages/tableToCSV/jquery.tabletoCSV.js",revision:"5e99208056679f61875af2d4762f05fb"},{url:"../../../cgi-bin/core/packages/tableToCSV/package.json",revision:"ef0258ebdf3f9d244d7d38c4c35ec723"},{url:"../../../cgi-bin/core/packages/tableToCSV/README.md",revision:"d581efd7f3de48bdf77206307df41034"},{url:"../../../cgi-bin/core/serviceWorker/sw.js",revision:"a6a52b4f57e9b45ecde0c4d7b7d6facd"},{url:"../../../cgi-bin/core/style.css",revision:"896d8dfa6eb2226945d16df9a73792e3"},{url:"../../../cgi-bin/core/style.min.css",revision:"873a2590206b58e52ed3e12e9ef2b1f1"},{url:"../../../cgi-bin/data/aerial/ERR274310/accepted_hits.bam.bai",revision:"d8ff8e5c3f9e5d57dd6752e8a4ce4d70"},{url:"../../../cgi-bin/data/aerial/SRR547531/accepted_hits.bam.bai",revision:"78a71ec4d37648170e140ee08fbd9d8e"},{url:"../../../cgi-bin/data/aerial/SRR548277/accepted_hits.bam.bai",revision:"fb90c6ea2957278570f1568a25c986b9"},{url:"../../../cgi-bin/data/aerial/SRR847503/accepted_hits.bam.bai",revision:"75c9f450e79682c3b13b2024cf0ee3a4"},{url:"../../../cgi-bin/data/aerial/SRR847504/accepted_hits.bam.bai",revision:"deb7e829dfe7fd832b58dbfcb6672c99"},{url:"../../../cgi-bin/data/aerial/SRR847505/accepted_hits.bam.bai",revision:"d5746341a9b0e55858c2b6c9de591c93"},{url:"../../../cgi-bin/data/aerial/SRR847506/accepted_hits.bam.bai",revision:"f069609fe7f95444b6a7c9e5ae18e8de"},{url:"../../../cgi-bin/data/bamdata_araport11.xml",revision:"a5df10ccc83203d3919709be0b83c3b3"},{url:"../../../cgi-bin/data/bamdata_Developmental_transcriptome.xml",revision:"b08eb7a10c0b7ce002844fa61d95fbdd"},{url:"../../../cgi-bin/data/carpel/SRR1207194/accepted_hits.bam.bai",revision:"870f3b85d4f868f4fdbe05fb1863c2fc"},{url:"../../../cgi-bin/data/carpel/SRR1207195/accepted_hits.bam.bai",revision:"5c52f9ca7b4a4dada15a4388af05667a"},{url:"../../../cgi-bin/data/dark/SRR1019436/accepted_hits.bam.bai",revision:"c508519aaf261bbe4bae0850ae07cdf1"},{url:"../../../cgi-bin/data/dark/SRR1019437/accepted_hits.bam.bai",revision:"7c51952c497f17c4bb411145823f2e5f"},{url:"../../../cgi-bin/data/dark/SRR1049784/accepted_hits.bam.bai",revision:"d7fe2ac77b8b6de07a9c879d5e6439b9"},{url:"../../../cgi-bin/data/dark/SRR477075/accepted_hits.bam.bai",revision:"30f3e1434baca24f28a5e864e1a55460"},{url:"../../../cgi-bin/data/dark/SRR477076/accepted_hits.bam.bai",revision:"43f02a5a6992516f004b79b466438a60"},{url:"../../../cgi-bin/data/dark/SRR493237/accepted_hits.bam.bai",revision:"f8f55d8ae90fe7906153f7418c2544fe"},{url:"../../../cgi-bin/data/dark/SRR493238/accepted_hits.bam.bai",revision:"63add683654ca734f2a475cb01c41338"},{url:"../../../cgi-bin/data/flower/SRR314815/accepted_hits.bam.bai",revision:"e3f8417ab8bda67e6c89b85373a32b57"},{url:"../../../cgi-bin/data/flower/SRR800753/accepted_hits.bam.bai",revision:"5c6cf8e55d8a5c2610fc8efc989e741f"},{url:"../../../cgi-bin/data/flower/SRR800754/accepted_hits.bam.bai",revision:"3fa881db3c490718c6da12945a1ba515"},{url:"../../../cgi-bin/data/Klepikova/SRR3581336/accepted_hits.bam.bai",revision:"2aad838806229e82f39ca6abf4c2be39"},{url:"../../../cgi-bin/data/Klepikova/SRR3581345/accepted_hits.bam.bai",revision:"487fb21dd9e7c98a92fbcd2086496d31"},{url:"../../../cgi-bin/data/Klepikova/SRR3581346/accepted_hits.bam.bai",revision:"d973b32bd023a007b0f31cd091f0d081"},{url:"../../../cgi-bin/data/Klepikova/SRR3581347/accepted_hits.bam.bai",revision:"488595888b723be2b990fc9b9c81aef4"},{url:"../../../cgi-bin/data/Klepikova/SRR3581352/accepted_hits.bam.bai",revision:"6949c25a40caadf298f33ac95535a508"},{url:"../../../cgi-bin/data/Klepikova/SRR3581356/accepted_hits.bam.bai",revision:"77170d227901be28b37c59949590a77f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581383/accepted_hits.bam.bai",revision:"9b46c6746aab2804696866bf21388f67"},{url:"../../../cgi-bin/data/Klepikova/SRR3581388/accepted_hits.bam.bai",revision:"388e486448c30405987a1d9fc4aef94a"},{url:"../../../cgi-bin/data/Klepikova/SRR3581499/accepted_hits.bam.bai",revision:"8cc4b6a99129f40efce166ef8ac4d8b1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581591/accepted_hits.bam.bai",revision:"59646ccc0570f9cdd9df0f0c20035e0a"},{url:"../../../cgi-bin/data/Klepikova/SRR3581639/accepted_hits.bam.bai",revision:"9ab4c753c18e3a2c732fd4f0eec1f552"},{url:"../../../cgi-bin/data/Klepikova/SRR3581672/accepted_hits.bam.bai",revision:"0200f9733451f8f5b414109c654c8a64"},{url:"../../../cgi-bin/data/Klepikova/SRR3581676/accepted_hits.bam.bai",revision:"440ce86e6787bb141ab78e5486314b16"},{url:"../../../cgi-bin/data/Klepikova/SRR3581678/accepted_hits.bam.bai",revision:"8521fb87df46fb22e55d1bf06c4eea67"},{url:"../../../cgi-bin/data/Klepikova/SRR3581679/accepted_hits.bam.bai",revision:"570e4432eb389dd63099ece98bfbcb86"},{url:"../../../cgi-bin/data/Klepikova/SRR3581680/accepted_hits.bam.bai",revision:"652e0c03f1cefc3984c737c66f693a16"},{url:"../../../cgi-bin/data/Klepikova/SRR3581681/accepted_hits.bam.bai",revision:"0471de078fb53ddff3f114d2b0a8c177"},{url:"../../../cgi-bin/data/Klepikova/SRR3581682/accepted_hits.bam.bai",revision:"5d13fbff7da906223a6d05fff5a0a74c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581683/accepted_hits.bam.bai",revision:"5642dc33c845a6944a53fb5d0e3a055e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581684/accepted_hits.bam.bai",revision:"180ccd8f61146dc4853a087ea2cbb11d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581685/accepted_hits.bam.bai",revision:"7839f7ef2462f74a24550cba8bd332ed"},{url:"../../../cgi-bin/data/Klepikova/SRR3581686/accepted_hits.bam.bai",revision:"9c48d2772c343dde967720075fdc837d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581687/accepted_hits.bam.bai",revision:"5d1e1423fd72026edce33eda174ed214"},{url:"../../../cgi-bin/data/Klepikova/SRR3581688/accepted_hits.bam.bai",revision:"7077699948ed771450f49307a8ee5ebd"},{url:"../../../cgi-bin/data/Klepikova/SRR3581689/accepted_hits.bam.bai",revision:"09e893deca8b5e8baf92861a8d34a998"},{url:"../../../cgi-bin/data/Klepikova/SRR3581690/accepted_hits.bam.bai",revision:"c94b530cb81772bf9ce7aece36fe12a5"},{url:"../../../cgi-bin/data/Klepikova/SRR3581691/accepted_hits.bam.bai",revision:"b3d1c828dfee796b1f4e5dc75309441e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581692/accepted_hits.bam.bai",revision:"33006ddb1d2aa2bb2a1110c33b3f6ee7"},{url:"../../../cgi-bin/data/Klepikova/SRR3581693/accepted_hits.bam.bai",revision:"7e4c8d1d04f57c35da745ab8449b2ccc"},{url:"../../../cgi-bin/data/Klepikova/SRR3581694/accepted_hits.bam.bai",revision:"cee838e97c0d0bdaeca1f084280de0f7"},{url:"../../../cgi-bin/data/Klepikova/SRR3581695/accepted_hits.bam.bai",revision:"488b347be08057d992408c4ab68a292b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581696/accepted_hits.bam.bai",revision:"a8d5692b9e39dadba35b0d8c35bdcbfb"},{url:"../../../cgi-bin/data/Klepikova/SRR3581697/accepted_hits.bam.bai",revision:"78d6e0f412dd9687427aad3f914c8a8b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581698/accepted_hits.bam.bai",revision:"8e4b80c61c86a64a835d8d954ea738cf"},{url:"../../../cgi-bin/data/Klepikova/SRR3581699/accepted_hits.bam.bai",revision:"505ee58d728cc0eca73b57d49f20f33e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581700/accepted_hits.bam.bai",revision:"78e547956c95af206abc66f6ab77701d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581701/accepted_hits.bam.bai",revision:"c9902e9e76b879845b666e30cf0399c1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581702/accepted_hits.bam.bai",revision:"b157bbb93fa14c04c5c3da8c93541d0e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581703/accepted_hits.bam.bai",revision:"4df3f8bd8ad8ca83fa12b8533b0ac2ea"},{url:"../../../cgi-bin/data/Klepikova/SRR3581704/accepted_hits.bam.bai",revision:"92914db2852ad3aafc0e3dad5fd524a4"},{url:"../../../cgi-bin/data/Klepikova/SRR3581705/accepted_hits.bam.bai",revision:"a33ced7b8900bca138c2bdab938456f2"},{url:"../../../cgi-bin/data/Klepikova/SRR3581706/accepted_hits.bam.bai",revision:"66b2d4aa967446f1d2ec4f0cab84ec0a"},{url:"../../../cgi-bin/data/Klepikova/SRR3581707/accepted_hits.bam.bai",revision:"d1c39413154c03d534dd6f70c6e0f1ce"},{url:"../../../cgi-bin/data/Klepikova/SRR3581708/accepted_hits.bam.bai",revision:"835b7eb56eff3696d97f1d3745a83d41"},{url:"../../../cgi-bin/data/Klepikova/SRR3581709/accepted_hits.bam.bai",revision:"6d166a6e8b52a7cfa299c7ae16755a1b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581710/accepted_hits.bam.bai",revision:"c6032b9db761caebadd78e778faa4bcf"},{url:"../../../cgi-bin/data/Klepikova/SRR3581711/accepted_hits.bam.bai",revision:"a9215e6dcbc3fd3f80ada793452e5b10"},{url:"../../../cgi-bin/data/Klepikova/SRR3581712/accepted_hits.bam.bai",revision:"ab1976edab1deb750c3bf4f296ada0d1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581713/accepted_hits.bam.bai",revision:"636f3211b89e72b469cf625086d68006"},{url:"../../../cgi-bin/data/Klepikova/SRR3581714/accepted_hits.bam.bai",revision:"52b32b3baf1eb9327cb80033552cb969"},{url:"../../../cgi-bin/data/Klepikova/SRR3581715/accepted_hits.bam.bai",revision:"91ac3109fccfda58d27f5b167c2f0805"},{url:"../../../cgi-bin/data/Klepikova/SRR3581716/accepted_hits.bam.bai",revision:"74dc20248bae563aec599238fe35453e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581717/accepted_hits.bam.bai",revision:"8640331f5ff7b4e612e9acc5a5e50977"},{url:"../../../cgi-bin/data/Klepikova/SRR3581719/accepted_hits.bam.bai",revision:"8cde9d7d535b523741197fd625cfa8b9"},{url:"../../../cgi-bin/data/Klepikova/SRR3581720/accepted_hits.bam.bai",revision:"618c617c4985ebcb204c5d9e99bf9bbc"},{url:"../../../cgi-bin/data/Klepikova/SRR3581721/accepted_hits.bam.bai",revision:"2930a5d860636a531d78a4f438d58707"},{url:"../../../cgi-bin/data/Klepikova/SRR3581724/accepted_hits.bam.bai",revision:"a69f849b85f8c267a03a7b204cbbdf7b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581726/accepted_hits.bam.bai",revision:"d8d40289ae1f2cf050ae4700919df7db"},{url:"../../../cgi-bin/data/Klepikova/SRR3581727/accepted_hits.bam.bai",revision:"a6af224459198943e2aebff55a8dece1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581728/accepted_hits.bam.bai",revision:"2e86bba53e3ce6bca05156f97bccb3e6"},{url:"../../../cgi-bin/data/Klepikova/SRR3581730/accepted_hits.bam.bai",revision:"310e41fb56d3d0e1ef80ba2e8336bf85"},{url:"../../../cgi-bin/data/Klepikova/SRR3581731/accepted_hits.bam.bai",revision:"09107906661194d4dfcd804962edb88e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581732/accepted_hits.bam.bai",revision:"36b422ade169eddc32e1e864feadf12b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581733/accepted_hits.bam.bai",revision:"704e3417e99199a509915484c919355f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581734/accepted_hits.bam.bai",revision:"f3f30f6fc9aff334bfc59c0e3f54f401"},{url:"../../../cgi-bin/data/Klepikova/SRR3581735/accepted_hits.bam.bai",revision:"b4abd243467ec21606984ad4bc30cbe8"},{url:"../../../cgi-bin/data/Klepikova/SRR3581736/accepted_hits.bam.bai",revision:"e103ce27d1c4265fcf2918d8a31a247f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581737/accepted_hits.bam.bai",revision:"b9c93ab8f75bb6d1db371adc9b52784d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581738/accepted_hits.bam.bai",revision:"6eb5a0be35f2f495081dfafeb1958192"},{url:"../../../cgi-bin/data/Klepikova/SRR3581740/accepted_hits.bam.bai",revision:"57cfb501d4e8cf400caecdda54c44802"},{url:"../../../cgi-bin/data/Klepikova/SRR3581831/accepted_hits.bam.bai",revision:"1fbab6615945082f91adf71a14534761"},{url:"../../../cgi-bin/data/Klepikova/SRR3581833/accepted_hits.bam.bai",revision:"9e6df907513395dee880e2d389d566b6"},{url:"../../../cgi-bin/data/Klepikova/SRR3581834/accepted_hits.bam.bai",revision:"971f3be532a2067cd0d00f8f281e8f8b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581835/accepted_hits.bam.bai",revision:"ddac6d0152d39a5f094f4f01f67c6f9f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581836/accepted_hits.bam.bai",revision:"afe55c01af26aee2810d0d0c1f29418e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581837/accepted_hits.bam.bai",revision:"fadf9d90005b7b31e8af13190d5e532b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581838/accepted_hits.bam.bai",revision:"1dc83e108f17822a283afeedb4d56d4b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581839/accepted_hits.bam.bai",revision:"da5258dc67cfcfbb98659a8a582438ea"},{url:"../../../cgi-bin/data/Klepikova/SRR3581840/accepted_hits.bam.bai",revision:"0eb861b1083f7256f2e81d2ec65c6d8c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581841/accepted_hits.bam.bai",revision:"ce929ae66c3fa306200ba9ce66cfd029"},{url:"../../../cgi-bin/data/Klepikova/SRR3581842/accepted_hits.bam.bai",revision:"b29d65973e658c219ff995bda3b399f7"},{url:"../../../cgi-bin/data/Klepikova/SRR3581843/accepted_hits.bam.bai",revision:"b87d15a5d529a16d51861ff952bc194c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581844/accepted_hits.bam.bai",revision:"03655cbde5d7c89442c2667a9065f68e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581845/accepted_hits.bam.bai",revision:"0f7dc11b370d2fb2e4e62b777b17c3f8"},{url:"../../../cgi-bin/data/Klepikova/SRR3581846/accepted_hits.bam.bai",revision:"184305447b5e39bd0d57daa91f9474cb"},{url:"../../../cgi-bin/data/Klepikova/SRR3581847/accepted_hits.bam.bai",revision:"07553f3a6b5538eb886d9d67e4aa7333"},{url:"../../../cgi-bin/data/Klepikova/SRR3581848/accepted_hits.bam.bai",revision:"fccac4c7fcd296e9a521106ec36d57f2"},{url:"../../../cgi-bin/data/Klepikova/SRR3581849/accepted_hits.bam.bai",revision:"0c6252fbc89bdbaeaa9120261a012aaf"},{url:"../../../cgi-bin/data/Klepikova/SRR3581850/accepted_hits.bam.bai",revision:"860370410e3e482648a32e0554e54a27"},{url:"../../../cgi-bin/data/Klepikova/SRR3581851/accepted_hits.bam.bai",revision:"c397db1086e1add97b208d238f5a6b82"},{url:"../../../cgi-bin/data/Klepikova/SRR3581852/accepted_hits.bam.bai",revision:"474b5872ff0b1f350204d0f602ce00fd"},{url:"../../../cgi-bin/data/Klepikova/SRR3581853/accepted_hits.bam.bai",revision:"9f9154f89bd85e73351540c8390e556c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581854/accepted_hits.bam.bai",revision:"d5a82d9c3fe4d53604a8f0196bc0de80"},{url:"../../../cgi-bin/data/Klepikova/SRR3581855/accepted_hits.bam.bai",revision:"c70bfc603643c365151c24e3a628b7e1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581856/accepted_hits.bam.bai",revision:"8ff962507f8820742f374be11fd1ca6d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581857/accepted_hits.bam.bai",revision:"ee0bc291ab07d844b48dbd0d793b8619"},{url:"../../../cgi-bin/data/Klepikova/SRR3581858/accepted_hits.bam.bai",revision:"e736b944ea00165f7874bb250797d477"},{url:"../../../cgi-bin/data/Klepikova/SRR3581859/accepted_hits.bam.bai",revision:"d572af99f51493d17ef602c6f59aadef"},{url:"../../../cgi-bin/data/Klepikova/SRR3581860/accepted_hits.bam.bai",revision:"e5ac1c2f394872073ffe748ba04cb0a0"},{url:"../../../cgi-bin/data/Klepikova/SRR3581861/accepted_hits.bam.bai",revision:"7932a0481ba9d7552efff8161539c251"},{url:"../../../cgi-bin/data/Klepikova/SRR3581862/accepted_hits.bam.bai",revision:"4b77cb6e1f1f0d4fcf4b9ffaa502b128"},{url:"../../../cgi-bin/data/Klepikova/SRR3581863/accepted_hits.bam.bai",revision:"c6f233420cc67cc63b762b53f583abf1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581864/accepted_hits.bam.bai",revision:"366d829918a077f69b803391f14a06ba"},{url:"../../../cgi-bin/data/Klepikova/SRR3581865/accepted_hits.bam.bai",revision:"3fec4452f463c61d1d7f796042c00f37"},{url:"../../../cgi-bin/data/Klepikova/SRR3581866/accepted_hits.bam.bai",revision:"ced32108c5c55f0912810208ea91a34c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581867/accepted_hits.bam.bai",revision:"bb34514f1897edef1c4374f44bc29f7e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581868/accepted_hits.bam.bai",revision:"c7bc60a6a54361275bd1f021bf581b9e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581869/accepted_hits.bam.bai",revision:"0a7b079b87d10246885cf669b1da4813"},{url:"../../../cgi-bin/data/Klepikova/SRR3581870/accepted_hits.bam.bai",revision:"4a26a725b44d82ec54fa41f32f22ab78"},{url:"../../../cgi-bin/data/Klepikova/SRR3581871/accepted_hits.bam.bai",revision:"f0f0a01cf6ab707cfad1f530ad67cb7d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581872/accepted_hits.bam.bai",revision:"05cfcf7ef950f00d486e84666fc3ad53"},{url:"../../../cgi-bin/data/Klepikova/SRR3581873/accepted_hits.bam.bai",revision:"9ed51190a0a0aa7cba089e588f9f7f66"},{url:"../../../cgi-bin/data/Klepikova/SRR3581874/accepted_hits.bam.bai",revision:"dc8af3f8a26a69b788ccc9d3fec3c29e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581875/accepted_hits.bam.bai",revision:"aebee6b065bbae492dae8e68711b7fe8"},{url:"../../../cgi-bin/data/Klepikova/SRR3581876/accepted_hits.bam.bai",revision:"2f505fa0bb1376a49311645afc86a5f4"},{url:"../../../cgi-bin/data/Klepikova/SRR3581877/accepted_hits.bam.bai",revision:"03a30a89fa8853122efc4775fe07a509"},{url:"../../../cgi-bin/data/Klepikova/SRR3581878/accepted_hits.bam.bai",revision:"054faa0faf034728ebac3711db6f1432"},{url:"../../../cgi-bin/data/Klepikova/SRR3581879/accepted_hits.bam.bai",revision:"923b66da670d0c8c7edcf6c0899b5dee"},{url:"../../../cgi-bin/data/Klepikova/SRR3581880/accepted_hits.bam.bai",revision:"db42ad0a672ffad4b4df243b655aeb8f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581881/accepted_hits.bam.bai",revision:"6bb77dd0f8efa2b62f3661c3471ae92c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581882/accepted_hits.bam.bai",revision:"ba56ffbe86b118a90f8e83e62ba2948f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581883/accepted_hits.bam.bai",revision:"bec9cc75981bd29a3f3f1ca584aa20e1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581884/accepted_hits.bam.bai",revision:"08e29049e70b6ab901005f50a71ed73b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581885/accepted_hits.bam.bai",revision:"17d09c7b79e1492e79606c4e57dfe515"},{url:"../../../cgi-bin/data/Klepikova/SRR3581886/accepted_hits.bam.bai",revision:"391e780261c28960836778970f53fda9"},{url:"../../../cgi-bin/data/Klepikova/SRR3581887/accepted_hits.bam.bai",revision:"795feb34895e7539c7af987d2f86d72f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581888/accepted_hits.bam.bai",revision:"44495c91e78cea2358fd99afc519ea78"},{url:"../../../cgi-bin/data/Klepikova/SRR3581889/accepted_hits.bam.bai",revision:"9c41c5af458228b23fc18021e2aab107"},{url:"../../../cgi-bin/data/Klepikova/SRR3581890/accepted_hits.bam.bai",revision:"c1280398bbe5480c99d56a92120d23a9"},{url:"../../../cgi-bin/data/Klepikova/SRR3581891/accepted_hits.bam.bai",revision:"fb2b44a6951eb303835775bc25ed7367"},{url:"../../../cgi-bin/data/Klepikova/SRR3581892/accepted_hits.bam.bai",revision:"96ec3ac57ddf7ddabb51b999562b2886"},{url:"../../../cgi-bin/data/Klepikova/SRR3581893/accepted_hits.bam.bai",revision:"220a1f9506b669a01aa7b135bba30499"},{url:"../../../cgi-bin/data/Klepikova/SRR3581894/accepted_hits.bam.bai",revision:"767e98c3404cad841d09f3949856e5c3"},{url:"../../../cgi-bin/data/Klepikova/SRR3581895/accepted_hits.bam.bai",revision:"04495589b536ddd994f8c7966dabe5f1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581896/accepted_hits.bam.bai",revision:"28954f7aa615a6cabdf8e6e12f5fdf8e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581897/accepted_hits.bam.bai",revision:"cc83124a4ecc62643b4a0ed584b070df"},{url:"../../../cgi-bin/data/Klepikova/SRR3581898/accepted_hits.bam.bai",revision:"a8a4147389df536f32b281993dc2e26e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581899/accepted_hits.bam.bai",revision:"89b326f5425969ba5d9b1d3d56362676"},{url:"../../../cgi-bin/data/Klepikova/SRR3724649/accepted_hits.bam.bai",revision:"8baa4f21c5956c58f0f1fdd947a5a7a8"},{url:"../../../cgi-bin/data/Klepikova/SRR3724650/accepted_hits.bam.bai",revision:"0cd349d26d33bac76a6ba7cc02a9f7ce"},{url:"../../../cgi-bin/data/Klepikova/SRR3724651/accepted_hits.bam.bai",revision:"43535acea7c38adaac38f99b65b055ed"},{url:"../../../cgi-bin/data/Klepikova/SRR3724652/accepted_hits.bam.bai",revision:"06c5f5abcb7d62c9a667943f8173a8e1"},{url:"../../../cgi-bin/data/Klepikova/SRR3724663/accepted_hits.bam.bai",revision:"5cf07e5cef90fe80931333379f239e62"},{url:"../../../cgi-bin/data/Klepikova/SRR3724668/accepted_hits.bam.bai",revision:"556998139485bbaa76df19c1e17eac13"},{url:"../../../cgi-bin/data/Klepikova/SRR3724737/accepted_hits.bam.bai",revision:"b4edd498c3872994295129df84199381"},{url:"../../../cgi-bin/data/Klepikova/SRR3724739/accepted_hits.bam.bai",revision:"17bcf5e4f46a924e8e7ff88558b983d0"},{url:"../../../cgi-bin/data/Klepikova/SRR3724741/accepted_hits.bam.bai",revision:"fa291751450abd9743680d71140d60af"},{url:"../../../cgi-bin/data/Klepikova/SRR3724768/accepted_hits.bam.bai",revision:"12d0e17110c65474208131e4c29f1cf6"},{url:"../../../cgi-bin/data/Klepikova/SRR3724774/accepted_hits.bam.bai",revision:"ee127920880f9b686fc2985f03b4e3e6"},{url:"../../../cgi-bin/data/Klepikova/SRR3724778/accepted_hits.bam.bai",revision:"fc59d363965ee5d9e4d435ad4409ec7c"},{url:"../../../cgi-bin/data/Klepikova/SRR3724782/accepted_hits.bam.bai",revision:"2408bd4c49bfc546cc17eae41819e5f1"},{url:"../../../cgi-bin/data/Klepikova/SRR3724785/accepted_hits.bam.bai",revision:"f56203f5e8560818a44be74cbdce952b"},{url:"../../../cgi-bin/data/Klepikova/SRR3724786/accepted_hits.bam.bai",revision:"4251fbd2e0727b157e290b4fb3b371ff"},{url:"../../../cgi-bin/data/Klepikova/SRR3724787/accepted_hits.bam.bai",revision:"d4b7b16cbd4c2e41585f0869a3842d17"},{url:"../../../cgi-bin/data/Klepikova/SRR3724798/accepted_hits.bam.bai",revision:"c781661b68ff3cd0d1fa5aa0786c102a"},{url:"../../../cgi-bin/data/Klepikova/SRR3724806/accepted_hits.bam.bai",revision:"a2f3dbf70a549a9c20274299aa50199e"},{url:"../../../cgi-bin/data/Klepikova/SRR3724814/accepted_hits.bam.bai",revision:"c90091646dc7f2f9c690a991b3157bed"},{url:"../../../cgi-bin/data/Klepikova/SRR3725446/accepted_hits.bam.bai",revision:"3a20a84fe3333bddcad49a74d6bb7bf9"},{url:"../../../cgi-bin/data/Klepikova/SRR3725458/accepted_hits.bam.bai",revision:"50c830b0eb15515e4b65201c452cb2fb"},{url:"../../../cgi-bin/data/Klepikova/SRR3725471/accepted_hits.bam.bai",revision:"f6427d97f49604538efa669329cbb740"},{url:"../../../cgi-bin/data/Klepikova/SRR3725482/accepted_hits.bam.bai",revision:"b4d0ea04b6bdb0939bee8973fe29900d"},{url:"../../../cgi-bin/data/Klepikova/SRR3725493/accepted_hits.bam.bai",revision:"8e6cafd4dde819c51808c6bc041b4970"},{url:"../../../cgi-bin/data/Klepikova/SRR3725503/accepted_hits.bam.bai",revision:"f2ea494bca260f8f410c4af6ef17c0c2"},{url:"../../../cgi-bin/data/Klepikova/SRR3725516/accepted_hits.bam.bai",revision:"42b43c459060805ee53db2ef1a205743"},{url:"../../../cgi-bin/data/Klepikova/SRR3725527/accepted_hits.bam.bai",revision:"5a16a028294ddcce1baee37c68d22e6e"},{url:"../../../cgi-bin/data/Klepikova/SRR3725538/accepted_hits.bam.bai",revision:"5f1e89581f2f9e102d9376095c2ca385"},{url:"../../../cgi-bin/data/Klepikova/SRR3725550/accepted_hits.bam.bai",revision:"8d72055c5cb84569ffade08a4a7b53a1"},{url:"../../../cgi-bin/data/Klepikova/SRR3725561/accepted_hits.bam.bai",revision:"ac491f41f4cec20467dbeced8ffe29a8"},{url:"../../../cgi-bin/data/Klepikova/SRR847501/accepted_hits.bam.bai",revision:"1786f46eeb38171f37ca9244d8cb4e70"},{url:"../../../cgi-bin/data/Klepikova/SRR847502/accepted_hits.bam.bai",revision:"0ab4f36580722140c539faa58755c45b"},{url:"../../../cgi-bin/data/leaf/SRR1105822/accepted_hits.bam.bai",revision:"1f59203e7e4ef21a90df9de277af42e9"},{url:"../../../cgi-bin/data/leaf/SRR1105823/accepted_hits.bam.bai",revision:"3f8117df3e1f23fa8014a9e16ace9d50"},{url:"../../../cgi-bin/data/leaf/SRR1159821/accepted_hits.bam.bai",revision:"6fceded0b219c6f48d25d83c9602c530"},{url:"../../../cgi-bin/data/leaf/SRR1159827/accepted_hits.bam.bai",revision:"e6249e031b0cfab6fc2e0eb5f038d7a9"},{url:"../../../cgi-bin/data/leaf/SRR1159837/accepted_hits.bam.bai",revision:"df333cd81caeff1ee3c80e0e9aac451b"},{url:"../../../cgi-bin/data/leaf/SRR314813/accepted_hits.bam.bai",revision:"c3dae9dfcd5939f53febb58b99ad6358"},{url:"../../../cgi-bin/data/leaf/SRR446027/accepted_hits.bam.bai",revision:"58547866c1feb44d34a9dcb2faa02b07"},{url:"../../../cgi-bin/data/leaf/SRR446028/accepted_hits.bam.bai",revision:"d605894f0b05f858f73ec7de7fb3bfc9"},{url:"../../../cgi-bin/data/leaf/SRR446033/accepted_hits.bam.bai",revision:"8bb76fecb54e558f07830f826dc0ef21"},{url:"../../../cgi-bin/data/leaf/SRR446034/accepted_hits.bam.bai",revision:"e978cf50eeec836ba7ec871c6cb599f7"},{url:"../../../cgi-bin/data/leaf/SRR446039/accepted_hits.bam.bai",revision:"8fcc2d21df295b917b37b86aaa43eed1"},{url:"../../../cgi-bin/data/leaf/SRR446040/accepted_hits.bam.bai",revision:"41e4d4e4d25127017b93ee5cf737d26a"},{url:"../../../cgi-bin/data/leaf/SRR446484/accepted_hits.bam.bai",revision:"0bac90204e0f8f659e4aa7163184d3e8"},{url:"../../../cgi-bin/data/leaf/SRR446485/accepted_hits.bam.bai",revision:"826092002208472ac62f1242c2bd7c8f"},{url:"../../../cgi-bin/data/leaf/SRR446486/accepted_hits.bam.bai",revision:"094540bb352f5d0d8c1cf4cbd3359651"},{url:"../../../cgi-bin/data/leaf/SRR446487/accepted_hits.bam.bai",revision:"b09303aa7c5bc090597a6029c589d6fc"},{url:"../../../cgi-bin/data/leaf/SRR493036/accepted_hits.bam.bai",revision:"ec40f2e69a1ac9d779c432f29881d275"},{url:"../../../cgi-bin/data/leaf/SRR493097/accepted_hits.bam.bai",revision:"f3019bd4b6435fc864ef6e54b1d40896"},{url:"../../../cgi-bin/data/leaf/SRR493098/accepted_hits.bam.bai",revision:"3b9cf2e84c411d2f61dd959a327fcad9"},{url:"../../../cgi-bin/data/leaf/SRR493101/accepted_hits.bam.bai",revision:"972a5b0c96d3b9b2677606db5292c756"},{url:"../../../cgi-bin/data/leaf/SRR764885/accepted_hits.bam.bai",revision:"3e7bdeb3c9c126bc4fa8f5785dc5d8f7"},{url:"../../../cgi-bin/data/leaf/SRR924656/accepted_hits.bam.bai",revision:"9e51595e33b3931e043105c076fcc513"},{url:"../../../cgi-bin/data/leaf/SRR934391/accepted_hits.bam.bai",revision:"54804fe3e5a5568eaf4b9cd993731dd0"},{url:"../../../cgi-bin/data/leaf/SRR942022/accepted_hits.bam.bai",revision:"af83e38f1a885527c5ea88c1deb54985"},{url:"../../../cgi-bin/data/light/SRR070570/accepted_hits.bam.bai",revision:"253a622fbd7b15730a85f46f9de217ab"},{url:"../../../cgi-bin/data/light/SRR070571/accepted_hits.bam.bai",revision:"a4a7d70a2a5d6790230f14117069920b"},{url:"../../../cgi-bin/data/light/SRR1001909/accepted_hits.bam.bai",revision:"00b95124ac0bad8b3b0514cb5392ab0d"},{url:"../../../cgi-bin/data/light/SRR1001910/accepted_hits.bam.bai",revision:"bf5c80add2ebaf3eaac41b6b4ac753ab"},{url:"../../../cgi-bin/data/light/SRR1019221/accepted_hits.bam.bai",revision:"c3ab9a0f264ce038994b448e8e210a24"},{url:"../../../cgi-bin/data/light/SRR345561/accepted_hits.bam.bai",revision:"352ad71d4b0b2661214c376dedd1f507"},{url:"../../../cgi-bin/data/light/SRR345562/accepted_hits.bam.bai",revision:"87356040f53ae67d60f8128835a01777"},{url:"../../../cgi-bin/data/light/SRR346552/accepted_hits.bam.bai",revision:"d9aef462648ec0271fa1dc2088b0e7af"},{url:"../../../cgi-bin/data/light/SRR346553/accepted_hits.bam.bai",revision:"691e6bd9eda925f13420716cf13cf54e"},{url:"../../../cgi-bin/data/light/SRR394082/accepted_hits.bam.bai",revision:"fb4ac4b98e5a93ba0282a9acf69d77e5"},{url:"../../../cgi-bin/data/light/SRR504179/accepted_hits.bam.bai",revision:"66ff5551328a2ee8b8b1f9f375d99eb4"},{url:"../../../cgi-bin/data/light/SRR504180/accepted_hits.bam.bai",revision:"9b82c3a83372fd7dea005dd5dc4a2b63"},{url:"../../../cgi-bin/data/light/SRR504181/accepted_hits.bam.bai",revision:"188411c66586bad65187f8dba8c730ec"},{url:"../../../cgi-bin/data/light/SRR515073/accepted_hits.bam.bai",revision:"5d24f2df4d013fee1d036b8d1734beeb"},{url:"../../../cgi-bin/data/light/SRR515074/accepted_hits.bam.bai",revision:"1d1cea0d2451daa8e70354308ce70c44"},{url:"../../../cgi-bin/data/light/SRR527164/accepted_hits.bam.bai",revision:"9ec43b81497b19c111923e5e79d78277"},{url:"../../../cgi-bin/data/light/SRR527165/accepted_hits.bam.bai",revision:"adb3fae17b08eeda152883c26580e20a"},{url:"../../../cgi-bin/data/light/SRR584115/accepted_hits.bam.bai",revision:"7400525012004e68bd52e5d2bbfa141c"},{url:"../../../cgi-bin/data/light/SRR584121/accepted_hits.bam.bai",revision:"ee964b622cab2ecc6109abc9428bfaa8"},{url:"../../../cgi-bin/data/light/SRR584129/accepted_hits.bam.bai",revision:"01c635ec5fdc12f4cbfab52cc7806542"},{url:"../../../cgi-bin/data/light/SRR584134/accepted_hits.bam.bai",revision:"0f0cad62ae473ad66bf24ff674add1d6"},{url:"../../../cgi-bin/data/light/SRR653555/accepted_hits.bam.bai",revision:"3b1a341a7473577ba673be1aa1669cc8"},{url:"../../../cgi-bin/data/light/SRR653556/accepted_hits.bam.bai",revision:"24de0f8a0c67cd6574983ba45e85b92b"},{url:"../../../cgi-bin/data/light/SRR653557/accepted_hits.bam.bai",revision:"9db6d46a42228a4ec0305745a63ba69d"},{url:"../../../cgi-bin/data/light/SRR653561/accepted_hits.bam.bai",revision:"fa37f25b5cfd8d715cad359490d30718"},{url:"../../../cgi-bin/data/light/SRR653562/accepted_hits.bam.bai",revision:"a46d3b87ec2ca397214593cb18d8a1ef"},{url:"../../../cgi-bin/data/light/SRR653563/accepted_hits.bam.bai",revision:"a548597961db9d7673e2b39b46c7da5e"},{url:"../../../cgi-bin/data/light/SRR653564/accepted_hits.bam.bai",revision:"6d221fe1e7e6210a91f1c6d109828346"},{url:"../../../cgi-bin/data/light/SRR653565/accepted_hits.bam.bai",revision:"f272c81e2da94d9658f8dbd1f1275bfb"},{url:"../../../cgi-bin/data/light/SRR653566/accepted_hits.bam.bai",revision:"232da2bd399f00b0bae9e1ebb48f6ec8"},{url:"../../../cgi-bin/data/light/SRR653567/accepted_hits.bam.bai",revision:"a1da73954d0235572da3494ab0fdfe1c"},{url:"../../../cgi-bin/data/light/SRR653568/accepted_hits.bam.bai",revision:"3722d0f942c435fa2b1692e29aeb280c"},{url:"../../../cgi-bin/data/light/SRR653569/accepted_hits.bam.bai",revision:"500616f990bd93198665b838d6912237"},{url:"../../../cgi-bin/data/light/SRR653570/accepted_hits.bam.bai",revision:"418da1b3b92e0e17e65cd856376c8826"},{url:"../../../cgi-bin/data/light/SRR653571/accepted_hits.bam.bai",revision:"8e01bd9ba6b7657dd6382dde31dcc6b1"},{url:"../../../cgi-bin/data/light/SRR653572/accepted_hits.bam.bai",revision:"e7310649f000c637c86f1c14a82e17fd"},{url:"../../../cgi-bin/data/light/SRR653573/accepted_hits.bam.bai",revision:"ccfe9ea83af958f7e1569c6a286b8af2"},{url:"../../../cgi-bin/data/light/SRR653574/accepted_hits.bam.bai",revision:"aca14870d5fd007dac23fd31d0a5a29b"},{url:"../../../cgi-bin/data/light/SRR653575/accepted_hits.bam.bai",revision:"261f43be2af3d979b6e8c9862acbe1b0"},{url:"../../../cgi-bin/data/light/SRR653576/accepted_hits.bam.bai",revision:"fb871e4c3ae5712a1aa29183e9e2763f"},{url:"../../../cgi-bin/data/light/SRR653577/accepted_hits.bam.bai",revision:"1e77eeb194d6800471943dd43cbd48f1"},{url:"../../../cgi-bin/data/light/SRR653578/accepted_hits.bam.bai",revision:"8c8edf8c27885a6db191428a9b8d488d"},{url:"../../../cgi-bin/data/light/SRR797194/accepted_hits.bam.bai",revision:"f3d525e421eb46ba85b4bee2b1de7d11"},{url:"../../../cgi-bin/data/light/SRR797230/accepted_hits.bam.bai",revision:"bac1da05ebeffa9efe92dddc52f3f154"},{url:"../../../cgi-bin/data/light/SRR833246/accepted_hits.bam.bai",revision:"22af78cd960848cdafd011189bb772e1"},{url:"../../../cgi-bin/data/pollen/SRR847501/accepted_hits.bam.bai",revision:"ce884bf17bd69e891c1f6096f8e3fb53"},{url:"../../../cgi-bin/data/pollen/SRR847502/accepted_hits.bam.bai",revision:"80d8fb863f5d84bddbf0adbf30d08957"},{url:"../../../cgi-bin/data/RAM/SRR1260032/accepted_hits.bam.bai",revision:"f2be3c072459c2fc01370e4ae05a1a48"},{url:"../../../cgi-bin/data/RAM/SRR1260033/accepted_hits.bam.bai",revision:"89dfc110834c249f6f12a84888c629fe"},{url:"../../../cgi-bin/data/RAM/SRR1261509/accepted_hits.bam.bai",revision:"cdc7376677d280fa65112d53e83b4839"},{url:"../../../cgi-bin/data/receptacle/SRR401413/accepted_hits.bam.bai",revision:"e84df8b1900612a62be329b1e5aff079"},{url:"../../../cgi-bin/data/receptacle/SRR401414/accepted_hits.bam.bai",revision:"d5a98622a5b0532db79cb3cf03c44fac"},{url:"../../../cgi-bin/data/receptacle/SRR401415/accepted_hits.bam.bai",revision:"1576be1f1b1d098f9a3eda42c5ff178d"},{url:"../../../cgi-bin/data/receptacle/SRR401416/accepted_hits.bam.bai",revision:"1c8288c1340a1e47876dc658280fecac"},{url:"../../../cgi-bin/data/receptacle/SRR401417/accepted_hits.bam.bai",revision:"5c28720a2241d533ef8be526f9dce343"},{url:"../../../cgi-bin/data/receptacle/SRR401418/accepted_hits.bam.bai",revision:"6d8e83c385c5c873e09957288020b6b6"},{url:"../../../cgi-bin/data/receptacle/SRR401419/accepted_hits.bam.bai",revision:"bf3364e1b8dd0be87d1e549b7f2c5641"},{url:"../../../cgi-bin/data/receptacle/SRR401420/accepted_hits.bam.bai",revision:"5f0b7ffe4eb51644ec176a64448fa73e"},{url:"../../../cgi-bin/data/receptacle/SRR401421/accepted_hits.bam.bai",revision:"5fda291436659903ed652ec1c34b6900"},{url:"../../../cgi-bin/data/root/ERR274309/accepted_hits.bam.bai",revision:"bb50e2ae0ff7d66bfbb9f84d068ecde7"},{url:"../../../cgi-bin/data/root/SRR1046909/accepted_hits.bam.bai",revision:"7058550eeac33d8019da041f8b6f5069"},{url:"../../../cgi-bin/data/root/SRR1046910/accepted_hits.bam.bai",revision:"879d2d40c7b657f60eaa63e1d795a98a"},{url:"../../../cgi-bin/data/root/SRR1524935/accepted_hits.bam.bai",revision:"aed5a151f3fdaab9fd7225dba3d5940a"},{url:"../../../cgi-bin/data/root/SRR1524938/accepted_hits.bam.bai",revision:"ae00f12c934ae8681d0142c650480a7b"},{url:"../../../cgi-bin/data/root/SRR1524940/accepted_hits.bam.bai",revision:"3f2b2207bf7b40abe57b916b77075353"},{url:"../../../cgi-bin/data/root/SRR314814/accepted_hits.bam.bai",revision:"879f37f50fda5726eb79d43b9c3be3dd"},{url:"../../../cgi-bin/data/SAM/SRR949956/accepted_hits.bam.bai",revision:"40ce9854110d2a13f37aa98575d046b4"},{url:"../../../cgi-bin/data/SAM/SRR949965/accepted_hits.bam.bai",revision:"ad8895257f945dd2208d5442ac880a96"},{url:"../../../cgi-bin/data/SAM/SRR949988/accepted_hits.bam.bai",revision:"61270aaa529f4ddb3725882fc8d18768"},{url:"../../../cgi-bin/data/SAM/SRR949989/accepted_hits.bam.bai",revision:"09eea158d0dac8d977f6aa4dd54a36bb"},{url:"../../../cgi-bin/get_exon_base64_exongraph.png",revision:"bc8188977bc489350c900ad26bc272fb"},{url:"../../../cgi-bin/get_gene_structures.cgi",revision:"26b4acf6db75474d7e6103a25385fed1"},{url:"../../../cgi-bin/get_gene_structures.html",revision:"3f4219d93053fa4584de35cf9f4db7ad"},{url:"../../../cgi-bin/icon/android-chrome-144x144.png",revision:"6aa216b232a25383e5b374fa92649f8e"},{url:"../../../cgi-bin/icon/android-chrome-192x192.png",revision:"9a3171627fb93c14b45814508213f4fc"},{url:"../../../cgi-bin/icon/android-chrome-256x256.png",revision:"1ae7955a2611f1bf46c1ba8b7ec169f1"},{url:"../../../cgi-bin/icon/android-chrome-36x36.png",revision:"7410a290c1537082c7c3cf8ffccd6917"},{url:"../../../cgi-bin/icon/android-chrome-384x384.png",revision:"82426ddd9dc183454ddf5e6e36b1afbb"},{url:"../../../cgi-bin/icon/android-chrome-48x48.png",revision:"f602e0082bbcc7de9f975f58d2d6de85"},{url:"../../../cgi-bin/icon/android-chrome-512x512.png",revision:"437bb1be87cdb0feddb00d9c44fcce41"},{url:"../../../cgi-bin/icon/android-chrome-72x72.png",revision:"35d48d22cf7e2f1efc5736d44602e6a7"},{url:"../../../cgi-bin/icon/android-chrome-96x96.png",revision:"c9ba5d290339fb492d3fc8c2d24a1e79"},{url:"../../../cgi-bin/icon/apple-touch-icon-114x114-precomposed.png",revision:"f93f4ea7b8e7b67a3335dd3bb581da17"},{url:"../../../cgi-bin/icon/apple-touch-icon-114x114.png",revision:"1eff9b0569d780c80c1df71f5164eec3"},{url:"../../../cgi-bin/icon/apple-touch-icon-120x120-precomposed.png",revision:"4ec14dcc7185e95229335e65671366ce"},{url:"../../../cgi-bin/icon/apple-touch-icon-120x120.png",revision:"6d0f888cc80dad397ea55bf1d473a028"},{url:"../../../cgi-bin/icon/apple-touch-icon-144x144-precomposed.png",revision:"0ec9769ea9f4447b15caecba3191938a"},{url:"../../../cgi-bin/icon/apple-touch-icon-144x144.png",revision:"40fd9584b9d30b31740f76fa8ca1235c"},{url:"../../../cgi-bin/icon/apple-touch-icon-152x152-precomposed.png",revision:"c46229f4a4c1b3beb147ffb8ece33040"},{url:"../../../cgi-bin/icon/apple-touch-icon-152x152.png",revision:"be6138eec66a53b3384297e0cf15db39"},{url:"../../../cgi-bin/icon/apple-touch-icon-180x180-precomposed.png",revision:"d4d7ccec62c79ecf32034ad632cd6231"},{url:"../../../cgi-bin/icon/apple-touch-icon-180x180.png",revision:"3eae3e68773828dd6f783cdc5281fc66"},{url:"../../../cgi-bin/icon/apple-touch-icon-57x57-precomposed.png",revision:"bfe3d340d1da05a22158e8d63d75b646"},{url:"../../../cgi-bin/icon/apple-touch-icon-57x57.png",revision:"932f18fa0f0b708d24ad185664251055"},{url:"../../../cgi-bin/icon/apple-touch-icon-60x60-precomposed.png",revision:"1dccb7114c4888de8b71622bbbb41a02"},{url:"../../../cgi-bin/icon/apple-touch-icon-60x60.png",revision:"38f6fdd2f70eb7385f245195d75c38c4"},{url:"../../../cgi-bin/icon/apple-touch-icon-72x72-precomposed.png",revision:"cd799bf2df7eb07cfc4af6a486c0d0bc"},{url:"../../../cgi-bin/icon/apple-touch-icon-72x72.png",revision:"7cff9a362d0ac807dd6ca8ae738e8836"},{url:"../../../cgi-bin/icon/apple-touch-icon-76x76-precomposed.png",revision:"454271b7b29164d430fa790e9e450dff"},{url:"../../../cgi-bin/icon/apple-touch-icon-76x76.png",revision:"de8f88f28e367a284fc39dd360fe00b2"},{url:"../../../cgi-bin/icon/apple-touch-icon-precomposed.png",revision:"d4d7ccec62c79ecf32034ad632cd6231"},{url:"../../../cgi-bin/icon/apple-touch-icon.png",revision:"3eae3e68773828dd6f783cdc5281fc66"},{url:"../../../cgi-bin/icon/browserconfig.xml",revision:"6a2fcd1a52a6cb53a9ff5317d8e2ad96"},{url:"../../../cgi-bin/icon/favicon-16x16.png",revision:"778e2a523b867301222f390f5ee7dcca"},{url:"../../../cgi-bin/icon/favicon-32x32.png",revision:"083534383d3f008b5890448ca54940a7"},{url:"../../../cgi-bin/icon/favicon.ico",revision:"f3dc2bf19ab26151c3717363be75fac5"},{url:"../../../cgi-bin/icon/maskable_icon_x128.png",revision:"899c43b186582a63324516c2c1e5f048"},{url:"../../../cgi-bin/icon/maskable_icon_x192.png",revision:"04e99dc63a424ea33de8eff9f2e1df83"},{url:"../../../cgi-bin/icon/maskable_icon_x384.png",revision:"c4c8bb30b6bab2bab15fd75eb6f678f5"},{url:"../../../cgi-bin/icon/maskable_icon_x48.png",revision:"89470a5e6d25c711c40d54ea30dee034"},{url:"../../../cgi-bin/icon/maskable_icon_x512.png",revision:"dfa6ac52dac80a2938a3adf2bbdda46d"},{url:"../../../cgi-bin/icon/maskable_icon_x72.png",revision:"b4d2d67802a700229a8731931fd698b0"},{url:"../../../cgi-bin/icon/maskable_icon_x96.png",revision:"6365ad9cc32211d3c6476eea2893355c"},{url:"../../../cgi-bin/icon/maskable_icon.png",revision:"4a6a9e89a616e4868e36a695a408222a"},{url:"../../../cgi-bin/icon/mstile-144x144.png",revision:"1134e80a6e3730bd468c0798a14e14e0"},{url:"../../../cgi-bin/icon/mstile-150x150.png",revision:"476a61c0d9c59411ae779eb81376ebaf"},{url:"../../../cgi-bin/icon/mstile-310x150.png",revision:"3a23b4170779ab61f432268956969271"},{url:"../../../cgi-bin/icon/mstile-310x310.png",revision:"3224651e0961dd7a643c35da88f50807"},{url:"../../../cgi-bin/icon/mstile-70x70.png",revision:"48decad196c52519ffe63de28f90f0dc"},{url:"../../../cgi-bin/icon/og-image.jpg",revision:"a11a25eb7e78f676e6cab288a9bd0453"},{url:"../../../cgi-bin/icon/safari-pinned-tab.svg",revision:"9229710b0428548ddc2663b4c217ebac"},{url:"../../../cgi-bin/icon/site.webmanifest",revision:"0bc00e6d551509f64a770cbb581ca4a9"},{url:"../../../cgi-bin/img/BAR-logo.png",revision:"dfcd25ffc15bfc733819e6a4dc157a0f"},{url:"../../../cgi-bin/img/BAR-logo.svg",revision:"d2ba3a8d47f53bcbaf7e255e1c849a85"},{url:"../../../cgi-bin/img/error.png",revision:"1d71f786ed428e61081422d063ea7c83"},{url:"../../../cgi-bin/img/googleSignin/btn_google_light_normal_ios.svg",revision:"3f8823279b3f25e18a4a115a2fc5e638"},{url:"../../../cgi-bin/img/helpModal/0001_geneLocusAutofill.png",revision:"c655ed3804b930b15f4e52e724541c47"},{url:"../../../cgi-bin/img/helpModal/0002_selectDataset.png",revision:"4d7c835d62240505ff5b3383609f6acb"},{url:"../../../cgi-bin/img/helpModal/0003_selectOptions.png",revision:"eb4d429a942a7bbff6b35524604272f1"},{url:"../../../cgi-bin/img/helpModal/0004_yAxisScale.png",revision:"535b1d4ffcfb53331db9773c8bfa9099"},{url:"../../../cgi-bin/img/helpModal/0005_absoluteMax.png",revision:"95ae278d3cb23909348695d53a1e31c9"},{url:"../../../cgi-bin/img/helpModal/0006_loadData.png",revision:"27dbfe5f82dcb5c3ba3e23eb237c4c13"},{url:"../../../cgi-bin/img/helpModal/0007_hideNav.png",revision:"f365b3ecc3c6c4d9f3912653161f94f9"},{url:"../../../cgi-bin/img/helpModal/0008_eFPOverviewGeneral.png",revision:"746af3110d4a52bed910cd5872e7359a"},{url:"../../../cgi-bin/img/helpModal/0009_eFPOverviewHover.png",revision:"beda2c842b8fe6eec7de1a355bf19c2c"},{url:"../../../cgi-bin/img/helpModal/0010_GenerateData.png",revision:"c09552da9c3f592b8b49c04f3e6224e5"},{url:"../../../cgi-bin/img/helpModal/0011_UploadExcel.png",revision:"e4f73dff004a2b862054a0bcadfa0895"},{url:"../../../cgi-bin/img/helpModal/0012_TissueSelect.png",revision:"d69adf3b6251f067d4717379ee2b659d"},{url:"../../../cgi-bin/img/helpModal/0013_bulkTemplate.png",revision:"86ec9b93d271627c7a1268ac7f534d6d"},{url:"../../../cgi-bin/img/helpModal/0014_manageAccount.png",revision:"5cd787c97e64bbc4a433a7a5fb2000b5"},{url:"../../../cgi-bin/img/helpModal/0015_downloadTableAsImage.png",revision:"8fbe6889ad3620c224c97527db855ae6"},{url:"../../../cgi-bin/img/helpModal/0016_downloadeFPOverviewAsImage.png",revision:"7aca546f9df28f39aaa6481c14c6b880"},{url:"../../../cgi-bin/img/helpModal/0017_toggleTable.png",revision:"66074449a6773d785a2be0d86b53b504"},{url:"../../../cgi-bin/img/helpModal/0018_eFPOverviewScrollTo.png",revision:"a3e44414f7bb90f6a85f89eb7f6c88cb"},{url:"../../../cgi-bin/img/helpModal/0019_eFPImagesFilter.png",revision:"784bdd049f913a2f1d9d04c7753c77f7"},{url:"../../../cgi-bin/img/helpModal/0020_compareGeneVariants.png",revision:"79d4919f55b2428acff2327fe02350e0"},{url:"../../../cgi-bin/img/helpModal/0020_sharingSession.png",revision:"6e5ecf270f9f781260d19a6612bf9fc9"},{url:"../../../cgi-bin/img/landingPage.jpg",revision:"874a480d4121f46051a5ff66b3141f2f"},{url:"../../../cgi-bin/rnaSeqMapCoverage.cgi",revision:"a38075859721206ce856c465687fc76e"},{url:"../../../cgi-bin/rnaSeqMapCoverage.html",revision:"3a3b309931466b805687e7b624cfcb3c"},{url:"../../../cgi-bin/Submission_page.html",revision:"d138fd92151cccedbdf43ddccef76bcb"},{url:"../../../cgi-bin/Submission_page/bulk_template-protection.txt",revision:"8b5a8d10c337f4f9b74cdc6c466f1e11"},{url:"../../../cgi-bin/Submission_page/bulk_template.xlsx",revision:"9a592c19313d16189dc90b7a51e467ed"},{url:"../../../cgi-bin/Submission_page/Images/dropArrow.png",revision:"fc9faee89a24136d2ba232bfe59e619a"},{url:"../../../cgi-bin/Submission_page/submissionStyle.css",revision:"f3b9a932f869d8530d67a2d4ec07003e"},{url:"../../../cgi-bin/Submission_page/submissionStyle.min.css",revision:"c5397bba845dbad26de1336fa9d25d30"},{url:"../../../cgi-bin/Submission_page/XMLgenerator.js",revision:"6cebb84e82ee217f4b5928cd04b907df"},{url:"../../../cgi-bin/Submission_page/XMLgenerator.min.js",revision:"6ea4923e0753e4646f13c3a83753aac5"},{url:"../../../cgi-bin/SVGs/__README.txt",revision:"06800956c4ef38dc31c48cd713de296c"},{url:"../../../cgi-bin/SVGs/10dayOldSeedling.min.svg",revision:"9f31c942892426c75ec6c499fa88ff1d"},{url:"../../../cgi-bin/SVGs/10dayOldSeedling.svg",revision:"e7d8f9b74c6218e5d3f0fdd92b9a6c49"},{url:"../../../cgi-bin/SVGs/15dayOldSeedling.min.svg",revision:"ec4aaed66e50685be22fdfb4d388fb38"},{url:"../../../cgi-bin/SVGs/15dayOldSeedling.svg",revision:"5985ad1dbde89a3efca2b706a8bf12ae"},{url:"../../../cgi-bin/SVGs/arrowDefault.min.svg",revision:"4319ab16a880baa3faf273fb4e0c3cb9"},{url:"../../../cgi-bin/SVGs/arrowDefault.svg",revision:"1fb973904ae245ab5dbbbc7c2def3501"},{url:"../../../cgi-bin/SVGs/arrowSortDown.min.svg",revision:"4733ce9fde412229984e4259c3dc6402"},{url:"../../../cgi-bin/SVGs/arrowSortDown.svg",revision:"af42ec3c56b64fddcef50142d9213347"},{url:"../../../cgi-bin/SVGs/arrowSortUp.min.svg",revision:"c5b271cfa1e67b33b48e8d1083661885"},{url:"../../../cgi-bin/SVGs/arrowSortUp.svg",revision:"8f0a05c8335f61bf8f5a670c09dae32a"},{url:"../../../cgi-bin/SVGs/EarlyBuddingFlower.min.svg",revision:"2f31eee63a2f2a8995aa41df36343f5c"},{url:"../../../cgi-bin/SVGs/EarlyBuddingFlower.svg",revision:"1fc5560ee23ff302cd7c9874f4ac7e1b"},{url:"../../../cgi-bin/SVGs/etiolatedSeedling.min.svg",revision:"b07700d578a62fddba77e794f4f0152f"},{url:"../../../cgi-bin/SVGs/etiolatedSeedling.svg",revision:"acf5481e52e88001991e5ab051e63f29"},{url:"../../../cgi-bin/SVGs/Flower.min.svg",revision:"9fcce16d0ddc53938da621818ab49180"},{url:"../../../cgi-bin/SVGs/Flower.svg",revision:"f9732ba6d23200a74a1f34bff512c17f"},{url:"../../../cgi-bin/SVGs/FlowerBud.min.svg",revision:"97d3a2f4639568e946ffff75e4d6919c"},{url:"../../../cgi-bin/SVGs/FlowerBud.svg",revision:"982a4a66d11e4c5abeb43ffc2bf3a492"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment1.min.svg",revision:"143dcc5ae5e99dd7cd845ad351f536e9"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment1.svg",revision:"958f6c24ba4d3f1723a1ff31a175275c"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment12-14.min.svg",revision:"dfd30d4f05ced82fdecebfb498123b4f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment12-14.svg",revision:"515d18d42e02fc615542d90ad6fa2c37"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment15-18.min.svg",revision:"d50c60ee81fbc50cada035eedb13d15f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment15-18.svg",revision:"428887ce400b435b4ed9f18048a1a41f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment19.min.svg",revision:"12ace2c4f8789aed058861b5223a0e3f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment19.svg",revision:"9ee52eaeda7aed787d415cfedcad576d"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment2.min.svg",revision:"e6f3ec29c5f529eea796613d56b02081"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment2.svg",revision:"a2784c197770ed567aff53038ecc2df5"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment3.min.svg",revision:"e78e2c4621584ffd5e9887317e0c3e07"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment3.svg",revision:"2356db079d1e2aeff4cb3f780127c61f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment4.min.svg",revision:"e39d10520e1b473d504f40ab94f30355"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment4.svg",revision:"38f4377170162b5b9050735685b8b3e7"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment5.min.svg",revision:"daa0d6aeec611e7d329a393d05249d98"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment5.svg",revision:"47c537bd7656646271c3058fab5b604c"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment6-8.min.svg",revision:"227cecf683601c5481b3b23ea4dae352"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment6-8.svg",revision:"40884a50f3ee158df2654876975c9239"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment9-11.min.svg",revision:"fd28130137874c03684972ea25df46b6"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment9-11.svg",revision:"0162c9dd7ff64951045ca9c11593d8cb"},{url:"../../../cgi-bin/SVGs/FlowerParts.min.svg",revision:"00fa5e2b2a9421119d3da588ae6863c4"},{url:"../../../cgi-bin/SVGs/FlowerParts.svg",revision:"b4b5f2a9eb596b9f65226c0a4eae6e4d"},{url:"../../../cgi-bin/SVGs/GerminatingSeed.min.svg",revision:"1554ed3908e2ab727759159b7233a9e9"},{url:"../../../cgi-bin/SVGs/GerminatingSeed.svg",revision:"cd60ab9fa57755fec57d5f525eaac997"},{url:"../../../cgi-bin/SVGs/Internode.min.svg",revision:"dd7cfc194d99bbfdef0dd21be527c22c"},{url:"../../../cgi-bin/SVGs/Internode.svg",revision:"8521a31d2618b5c0515f22c0971cf1da"},{url:"../../../cgi-bin/SVGs/leaf.min.svg",revision:"d6180cfad5b56e135eb3390dca8cd920"},{url:"../../../cgi-bin/SVGs/leaf.svg",revision:"3ad98b0b0df53cfea67ae7a3704fdc69"},{url:"../../../cgi-bin/SVGs/LeafParts.min.svg",revision:"9153dad52413cc82342b03537692503c"},{url:"../../../cgi-bin/SVGs/LeafParts.svg",revision:"832a80b998b15d29518b95988af951a4"},{url:"../../../cgi-bin/SVGs/OpenMenu.min.svg",revision:"9e594db2cb5ce470d55d3d646ec6ff2b"},{url:"../../../cgi-bin/SVGs/OpenMenu.svg",revision:"43067421eb8d322c14d67282e68dd022"},{url:"../../../cgi-bin/SVGs/Other.min.svg",revision:"19742061f618c8e93094f3d520501cd4"},{url:"../../../cgi-bin/SVGs/Other.svg",revision:"ebf43d746577c5c380c66b069cab1511"},{url:"../../../cgi-bin/SVGs/Pollen.min.svg",revision:"3a2d573a3aabdd921eb9f62a41351739"},{url:"../../../cgi-bin/SVGs/Pollen.svg",revision:"0520ad69c33a4a7f44d83124489ae177"},{url:"../../../cgi-bin/SVGs/RootTip.min.svg",revision:"d0c8035d19e75e6061bf85ef283ffdc5"},{url:"../../../cgi-bin/SVGs/RootTip.svg",revision:"065ee0e32637a626323cd1355d8bcd98"},{url:"../../../cgi-bin/SVGs/rosettePlusRoot.min.svg",revision:"01629f245fc9770d1cf307eeb76a288a"},{url:"../../../cgi-bin/SVGs/rosettePlusRoot.svg",revision:"b8f9d68fab16c8e1551aed3560e6b0b5"},{url:"../../../cgi-bin/SVGs/Seed1-4.min.svg",revision:"8f4d22249e0e49ea1989611e2bdecd6e"},{url:"../../../cgi-bin/SVGs/Seed1-4.svg",revision:"ab3c09c00dcda1eab05cf9d2eed42299"},{url:"../../../cgi-bin/SVGs/Seed5-7.min.svg",revision:"e9d48d8e0ab38da1c7eb28a4ee9eb7d9"},{url:"../../../cgi-bin/SVGs/Seed5-7.svg",revision:"e5118ad11087384001358333481f1db4"},{url:"../../../cgi-bin/SVGs/Seed8+.min.svg",revision:"7f9aa8b624378e0b51086a3be05e98d9"},{url:"../../../cgi-bin/SVGs/Seed8+.svg",revision:"79a2db7427367f5e904b2d91fb7f65bb"},{url:"../../../cgi-bin/SVGs/SenescentLeaf.min.svg",revision:"4ad2e62a2c07d8ea22689bf15d49c1e4"},{url:"../../../cgi-bin/SVGs/SenescentLeaf.svg",revision:"b18e0970629fe6719fc6489732d8ddcc"},{url:"../../../cgi-bin/SVGs/ShootApexInflorescense.min.svg",revision:"231e10fca505aded308007081cb4f769"},{url:"../../../cgi-bin/SVGs/ShootApexInflorescense.svg",revision:"74cda237197df019a2bb712bc864f60c"},{url:"../../../cgi-bin/SVGs/ShootApexVegetative-Transition.min.svg",revision:"7aa6768353eab59ccbebe03bbeb3b699"},{url:"../../../cgi-bin/SVGs/ShootApexVegetative-Transition.svg",revision:"d814a9174a3add197e8e94a6f56be2ba"},{url:"../../../cgi-bin/SVGs/Silique1-5.min.svg",revision:"55dad36e25ef03e608f8fb6930ee28ac"},{url:"../../../cgi-bin/SVGs/Silique1-5.svg",revision:"e7423203710a25731ff482612b96cb7b"},{url:"../../../cgi-bin/SVGs/Silique6-10.min.svg",revision:"3aa8fc2376199272178de148b40cbe01"},{url:"../../../cgi-bin/SVGs/Silique6-10.svg",revision:"e0b2582bb9014c51680e7af02fd169a9"},{url:"../../../cgi-bin/SVGs/Stamen.min.svg",revision:"0b15f28ac1f0fe60ab2ebbda3b994cfc"},{url:"../../../cgi-bin/SVGs/Stamen.svg",revision:"48c83749a615cb2e910e3798a8f7823a"},{url:"../../../cgi-bin/SVGs/StigmaAndOvaries.min.svg",revision:"ace4babdf063e4f10afd89ad1b7bf33f"},{url:"../../../cgi-bin/SVGs/StigmaAndOvaries.svg",revision:"261cff0f306ddf17ada8259c1a2e5886"},{url:"../../../cgi-bin/SVGs/WholeSilique.min.svg",revision:"019ebb1f885a12ba47d4d3cc8ffe6660"},{url:"../../../cgi-bin/SVGs/WholeSilique.svg",revision:"aad5c0471dc31efa5f02e9b8da25004e"},{url:"../../../cgi-bin/SVGs/YoungLeaf1-4.min.svg",revision:"ed2b105cba6fc7088cea073d24b5356e"},{url:"../../../cgi-bin/SVGs/YoungLeaf1-4.svg",revision:"2bcead9ed8032bcd82c4482c8f5925dd"},{url:"../../../cgi-bin/SVGs/youngSeedling.min.svg",revision:"1b440a064be9ce47cc6c6a40c89316e2"},{url:"../../../cgi-bin/SVGs/youngSeedling.svg",revision:"d20b1192c8ed306f4b463897fe443098"}],{}),i.registerRoute(/\.(?:png)$/,new i.CacheFirst({cacheName:"images",plugins:[new i.ExpirationPlugin({maxEntries:10})]}),"GET")})); +if(!self.define){let i,e={};const a=(a,c)=>(a=new URL(a+".js",c).href,e[a]||new Promise((e=>{if("document"in self){const i=document.createElement("script");i.src=a,i.onload=e,document.head.appendChild(i)}else i=a,importScripts(a),e()})).then((()=>{let i=e[a];if(!i)throw new Error(`Module ${a} didn’t register its module`);return i})));self.define=(c,b)=>{const d=i||("document"in self?document.currentScript.src:"")||location.href;if(e[d])return;let r={};const n=i=>a(i,d),s={module:{uri:d},exports:r,require:n};e[d]=Promise.all(c.map((i=>s[i]||n(i)))).then((i=>(b(...i),r)))}}define(["./workbox-74df4e21"],(function(i){"use strict";self.addEventListener("message",(i=>{i.data&&"SKIP_WAITING"===i.data.type&&self.skipWaiting()})),i.precacheAndRoute([{url:"../../../cgi-bin/core/custom.js",revision:"cf3b95315b65a8323a165565c4efbde6"},{url:"../../../cgi-bin/core/custom.min.js",revision:"565ddd685c759569b8c644eca71ba742"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.css",revision:"8cb8cd8bc1c1e1cb28ffc89b3c9bb38a"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.min.css",revision:"a92ffe0efac491b009a7c8e4e15b6861"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.rtl.css",revision:"d73f1c67d5c1b2d8f49a25a547afd5c9"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.rtl.min.css",revision:"e2fc2c59953cdae3468ce175351c7ee7"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.css",revision:"7fd3f75a990aa424845997e1aabe8e58"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.min.css",revision:"185ea8d03d4ca4a29061bb874e888bf0"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.rtl.css",revision:"b4d2ab0d31d85f490fd4530110bb01c5"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.rtl.min.css",revision:"93530896b671920b6abc0d35c13fcedd"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.css",revision:"c39f03ef80ab72f69669edecbc9de141"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.min.css",revision:"e26b2acc296db4ca8056301f8933260c"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.rtl.css",revision:"959747add181ce30bdb55810fdbde1af"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.rtl.min.css",revision:"87671032915d6842953cc42d1b115dc4"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap.css",revision:"5aa7bfe43f3ecaa688920b448f5065b4"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap.min.css",revision:"94994c66fec8c3468b269dc0cc242151"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap.rtl.css",revision:"c89fe4420c13b8f3a61b318eaa28505b"},{url:"../../../cgi-bin/core/packages/boostrap/css/bootstrap.rtl.min.css",revision:"665c3cacfdb309d6ae1c58c959598d5b"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.bundle.js",revision:"bb2ab2f5bb58154ca9cc11ea437bfdbb"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.bundle.min.js",revision:"7ccd9d390d31af98110f74f842ea9b32"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.esm.js",revision:"7c5450bd1e09b3176e598a835aab0ed3"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.esm.min.js",revision:"feadf83193b853084d9820170c4178d5"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.js",revision:"4706e3135214d1a3f6c28e98c40c0724"},{url:"../../../cgi-bin/core/packages/boostrap/js/bootstrap.min.js",revision:"259e416ef6833be43801b8b68a93b008"},{url:"../../../cgi-bin/core/packages/ddslick/jquery.ddslick.min.js",revision:"579aa1a3e6a9fef62be6317cf344ce40"},{url:"../../../cgi-bin/core/packages/GoogleAnalytics/js.js",revision:"331b106a16c42bfe823b964298da474c"},{url:"../../../cgi-bin/core/packages/GoogleIdentity/platform.js",revision:"44e522a850a0ebb98da5ff47f55add42"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/icon.css",revision:"5cb7755496ddcbfb518246cedb4a3084"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/material.green-pink.min.css",revision:"4f6e9c3486ab96d3ac0fcf978d4ca689"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/material.min.js",revision:"e2c95ee10e7d144e8d80783e2fe066cf"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIcons-Regular.codepoints",revision:"09b7f603303209865f4d96b2bd55ffc4"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsOutlined-Regular.codepoints",revision:"0376ada9f56916f3a17d1146e41ad087"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsOutlined-Regular.otf",revision:"4b937d057e6da6a4fac02b42784fdb6a"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsRound-Regular.codepoints",revision:"a3c8569c42beebbce1b9e65781b872ea"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsRound-Regular.otf",revision:"f8d5e69de9cdc901dab69da2d6463217"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsSharp-Regular.codepoints",revision:"a3c8569c42beebbce1b9e65781b872ea"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsSharp-Regular.otf",revision:"5257f80b95fdba0a233f61fef096b3f2"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsTwoTone-Regular.codepoints",revision:"9e882805fd29cf0fb3db1d4a70d44ef2"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsTwoTone-Regular.otf",revision:"f2472d5074320cb86f3db2bbf403939d"},{url:"../../../cgi-bin/core/packages/GoogleMaterial/README.md",revision:"25a552d91155358d3b566d7e453463d3"},{url:"../../../cgi-bin/core/packages/html2canvas/html2canvas.min.js",revision:"4c522c363d0c7bd7d1b74cf3d7069d3a"},{url:"../../../cgi-bin/core/packages/jQuery-ui/AUTHORS.txt",revision:"9b705a38e30997ca21b50e8329228057"},{url:"../../../cgi-bin/core/packages/jQuery-ui/external/jquery/jquery.js",revision:"2849239b95f5a9a2aea3f6ed9420bb88"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_444444_256x240.png",revision:"30d01fcc9e4f0f659b94b43ffa32660a"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_555555_256x240.png",revision:"53409b70d727190214e577dda4573592"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_777620_256x240.png",revision:"66ebb6203eb56c2b130b1e9ac8c39074"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_777777_256x240.png",revision:"966e35edfe4c61d7815d3ab9a3d7aa6c"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_cc0000_256x240.png",revision:"57aca802c35454863276a841024b238c"},{url:"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_ffffff_256x240.png",revision:"e75fbfaf3e27ec96b267f67b4ca231e3"},{url:"../../../cgi-bin/core/packages/jQuery-ui/index.html",revision:"126b7673a608fef2405e35be7c7dc8e8"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.css",revision:"e931b3568f1111782d6e1cc5fa0ed479"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.js",revision:"dd5c979b802f985cefb36d3e4239977f"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.min.css",revision:"637f462476d4d838f45acd6e3c88998c"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.min.js",revision:"842e3946fa938e62f185abb29ab00dc7"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.structure.css",revision:"fbda995dfc24f2ed88444eb8065d4ea9"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.structure.min.css",revision:"3333d9634f7c35f62c25a9f05ac67d67"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.theme.css",revision:"02f8ccffb3b64acf52918fc6c0ffe720"},{url:"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.theme.min.css",revision:"eb9d458abf1af7555412aeb86bf94964"},{url:"../../../cgi-bin/core/packages/jQuery-ui/LICENSE.txt",revision:"e0c0d3d883e83f19efa64feb54d5f63d"},{url:"../../../cgi-bin/core/packages/jQuery-ui/package.json",revision:"2f98699d52284ffe9456b4dd02baad33"},{url:"../../../cgi-bin/core/packages/jQuery/jquery.min.js",revision:"8fb8fee4fcc3cc86ff6c724154c49c42"},{url:"../../../cgi-bin/core/packages/mathJS/math.min.js",revision:"65cbdb73b2dc51c31a1929cb34c9597e"},{url:"../../../cgi-bin/core/packages/tableFilter/style/colsVisibility.css",revision:"85cb69538a2f16c8e8c75a0c8ed58819"},{url:"../../../cgi-bin/core/packages/tableFilter/style/filtersVisibility.css",revision:"03b19930bd5fab0c6ad7fd58d45391c0"},{url:"../../../cgi-bin/core/packages/tableFilter/style/tablefilter.css",revision:"5c120507e1203d85b4bc9e9ae8649dd9"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/default/default.css",revision:"0bcdf34c350ed0f243d8ae1248c7a7e6"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/default/images/bg_infDiv.jpg",revision:"aeedf37de581787ecb9e35c4d12a7b89"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/default/images/bg_th.jpg",revision:"b222875b84265f479c6d26ed00fa52ac"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/images/bg_headers.jpg",revision:"33b05bbced387c265f4b396f168c467e"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/images/bg_infDiv.jpg",revision:"aeedf37de581787ecb9e35c4d12a7b89"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/mytheme.css",revision:"2eaef0e87a73cfe26ce63dc6aa67fce0"},{url:"../../../cgi-bin/core/packages/tableFilter/style/themes/skyblue/skyblue.css",revision:"7493a5cd4dc78b9ffa9936a39f56813a"},{url:"../../../cgi-bin/core/packages/tableFilter/tablefilter.js",revision:"cce18982cf35d7c5e3c9d18f6a30192d"},{url:"../../../cgi-bin/core/packages/tableFilter/tablefilter.min.js",revision:"ad5c2e306c5efad996d0648ad86e220c"},{url:"../../../cgi-bin/core/packages/tableFilter/tf-1.js",revision:"f501a5b6c8b7dc0d51e7575bbb009764"},{url:"../../../cgi-bin/core/packages/tableSorter/tablesorter.js",revision:"d227e92e7f4d51bd7486f94d931a0fb0"},{url:"../../../cgi-bin/core/packages/tableSorter/tablesorter.min.js",revision:"26e652b67ab8cad90da399065df0f44f"},{url:"../../../cgi-bin/core/packages/tableSorter/tsorter.min.js",revision:"9d40a761a46ac7195dd34ecbc5ecb39f"},{url:"../../../cgi-bin/core/packages/tableToCSV/bower.json",revision:"79787e672bb7dc33e2a2e0bdc8467a38"},{url:"../../../cgi-bin/core/packages/tableToCSV/dist/jquery.tabletoCSV.js",revision:"be2d4e46a4d6e02526a1be7609baa5a9"},{url:"../../../cgi-bin/core/packages/tableToCSV/example.html",revision:"9b17ab0cdbf7acd33dfcfff87c410d2b"},{url:"../../../cgi-bin/core/packages/tableToCSV/gulpfile.js",revision:"865db57f0fbd64c80b24c7a327e2416c"},{url:"../../../cgi-bin/core/packages/tableToCSV/jquery.tabletoCSV.js",revision:"5e99208056679f61875af2d4762f05fb"},{url:"../../../cgi-bin/core/packages/tableToCSV/package.json",revision:"ef0258ebdf3f9d244d7d38c4c35ec723"},{url:"../../../cgi-bin/core/packages/tableToCSV/README.md",revision:"d581efd7f3de48bdf77206307df41034"},{url:"../../../cgi-bin/core/serviceWorker/sw.js",revision:"35c8c8daab3d8edc35776a8d22e58051"},{url:"../../../cgi-bin/core/style.css",revision:"d9f8ebbfb167e11d54c099c93b70f15c"},{url:"../../../cgi-bin/core/style.min.css",revision:"feb45ed2d7ba2ef6992db31cb5cb4f25"},{url:"../../../cgi-bin/data/aerial/ERR274310/accepted_hits.bam.bai",revision:"d8ff8e5c3f9e5d57dd6752e8a4ce4d70"},{url:"../../../cgi-bin/data/aerial/SRR547531/accepted_hits.bam.bai",revision:"78a71ec4d37648170e140ee08fbd9d8e"},{url:"../../../cgi-bin/data/aerial/SRR548277/accepted_hits.bam.bai",revision:"fb90c6ea2957278570f1568a25c986b9"},{url:"../../../cgi-bin/data/aerial/SRR847503/accepted_hits.bam.bai",revision:"75c9f450e79682c3b13b2024cf0ee3a4"},{url:"../../../cgi-bin/data/aerial/SRR847504/accepted_hits.bam.bai",revision:"deb7e829dfe7fd832b58dbfcb6672c99"},{url:"../../../cgi-bin/data/aerial/SRR847505/accepted_hits.bam.bai",revision:"d5746341a9b0e55858c2b6c9de591c93"},{url:"../../../cgi-bin/data/aerial/SRR847506/accepted_hits.bam.bai",revision:"f069609fe7f95444b6a7c9e5ae18e8de"},{url:"../../../cgi-bin/data/bamdata_araport11.xml",revision:"a5df10ccc83203d3919709be0b83c3b3"},{url:"../../../cgi-bin/data/bamdata_Developmental_transcriptome.xml",revision:"b08eb7a10c0b7ce002844fa61d95fbdd"},{url:"../../../cgi-bin/data/carpel/SRR1207194/accepted_hits.bam.bai",revision:"870f3b85d4f868f4fdbe05fb1863c2fc"},{url:"../../../cgi-bin/data/carpel/SRR1207195/accepted_hits.bam.bai",revision:"5c52f9ca7b4a4dada15a4388af05667a"},{url:"../../../cgi-bin/data/dark/SRR1019436/accepted_hits.bam.bai",revision:"c508519aaf261bbe4bae0850ae07cdf1"},{url:"../../../cgi-bin/data/dark/SRR1019437/accepted_hits.bam.bai",revision:"7c51952c497f17c4bb411145823f2e5f"},{url:"../../../cgi-bin/data/dark/SRR1049784/accepted_hits.bam.bai",revision:"d7fe2ac77b8b6de07a9c879d5e6439b9"},{url:"../../../cgi-bin/data/dark/SRR477075/accepted_hits.bam.bai",revision:"30f3e1434baca24f28a5e864e1a55460"},{url:"../../../cgi-bin/data/dark/SRR477076/accepted_hits.bam.bai",revision:"43f02a5a6992516f004b79b466438a60"},{url:"../../../cgi-bin/data/dark/SRR493237/accepted_hits.bam.bai",revision:"f8f55d8ae90fe7906153f7418c2544fe"},{url:"../../../cgi-bin/data/dark/SRR493238/accepted_hits.bam.bai",revision:"63add683654ca734f2a475cb01c41338"},{url:"../../../cgi-bin/data/flower/SRR314815/accepted_hits.bam.bai",revision:"e3f8417ab8bda67e6c89b85373a32b57"},{url:"../../../cgi-bin/data/flower/SRR800753/accepted_hits.bam.bai",revision:"5c6cf8e55d8a5c2610fc8efc989e741f"},{url:"../../../cgi-bin/data/flower/SRR800754/accepted_hits.bam.bai",revision:"3fa881db3c490718c6da12945a1ba515"},{url:"../../../cgi-bin/data/Klepikova/SRR3581336/accepted_hits.bam.bai",revision:"2aad838806229e82f39ca6abf4c2be39"},{url:"../../../cgi-bin/data/Klepikova/SRR3581345/accepted_hits.bam.bai",revision:"487fb21dd9e7c98a92fbcd2086496d31"},{url:"../../../cgi-bin/data/Klepikova/SRR3581346/accepted_hits.bam.bai",revision:"d973b32bd023a007b0f31cd091f0d081"},{url:"../../../cgi-bin/data/Klepikova/SRR3581347/accepted_hits.bam.bai",revision:"488595888b723be2b990fc9b9c81aef4"},{url:"../../../cgi-bin/data/Klepikova/SRR3581352/accepted_hits.bam.bai",revision:"6949c25a40caadf298f33ac95535a508"},{url:"../../../cgi-bin/data/Klepikova/SRR3581356/accepted_hits.bam.bai",revision:"77170d227901be28b37c59949590a77f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581383/accepted_hits.bam.bai",revision:"9b46c6746aab2804696866bf21388f67"},{url:"../../../cgi-bin/data/Klepikova/SRR3581388/accepted_hits.bam.bai",revision:"388e486448c30405987a1d9fc4aef94a"},{url:"../../../cgi-bin/data/Klepikova/SRR3581499/accepted_hits.bam.bai",revision:"8cc4b6a99129f40efce166ef8ac4d8b1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581591/accepted_hits.bam.bai",revision:"59646ccc0570f9cdd9df0f0c20035e0a"},{url:"../../../cgi-bin/data/Klepikova/SRR3581639/accepted_hits.bam.bai",revision:"9ab4c753c18e3a2c732fd4f0eec1f552"},{url:"../../../cgi-bin/data/Klepikova/SRR3581672/accepted_hits.bam.bai",revision:"0200f9733451f8f5b414109c654c8a64"},{url:"../../../cgi-bin/data/Klepikova/SRR3581676/accepted_hits.bam.bai",revision:"440ce86e6787bb141ab78e5486314b16"},{url:"../../../cgi-bin/data/Klepikova/SRR3581678/accepted_hits.bam.bai",revision:"8521fb87df46fb22e55d1bf06c4eea67"},{url:"../../../cgi-bin/data/Klepikova/SRR3581679/accepted_hits.bam.bai",revision:"570e4432eb389dd63099ece98bfbcb86"},{url:"../../../cgi-bin/data/Klepikova/SRR3581680/accepted_hits.bam.bai",revision:"652e0c03f1cefc3984c737c66f693a16"},{url:"../../../cgi-bin/data/Klepikova/SRR3581681/accepted_hits.bam.bai",revision:"0471de078fb53ddff3f114d2b0a8c177"},{url:"../../../cgi-bin/data/Klepikova/SRR3581682/accepted_hits.bam.bai",revision:"5d13fbff7da906223a6d05fff5a0a74c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581683/accepted_hits.bam.bai",revision:"5642dc33c845a6944a53fb5d0e3a055e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581684/accepted_hits.bam.bai",revision:"180ccd8f61146dc4853a087ea2cbb11d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581685/accepted_hits.bam.bai",revision:"7839f7ef2462f74a24550cba8bd332ed"},{url:"../../../cgi-bin/data/Klepikova/SRR3581686/accepted_hits.bam.bai",revision:"9c48d2772c343dde967720075fdc837d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581687/accepted_hits.bam.bai",revision:"5d1e1423fd72026edce33eda174ed214"},{url:"../../../cgi-bin/data/Klepikova/SRR3581688/accepted_hits.bam.bai",revision:"7077699948ed771450f49307a8ee5ebd"},{url:"../../../cgi-bin/data/Klepikova/SRR3581689/accepted_hits.bam.bai",revision:"09e893deca8b5e8baf92861a8d34a998"},{url:"../../../cgi-bin/data/Klepikova/SRR3581690/accepted_hits.bam.bai",revision:"c94b530cb81772bf9ce7aece36fe12a5"},{url:"../../../cgi-bin/data/Klepikova/SRR3581691/accepted_hits.bam.bai",revision:"b3d1c828dfee796b1f4e5dc75309441e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581692/accepted_hits.bam.bai",revision:"33006ddb1d2aa2bb2a1110c33b3f6ee7"},{url:"../../../cgi-bin/data/Klepikova/SRR3581693/accepted_hits.bam.bai",revision:"7e4c8d1d04f57c35da745ab8449b2ccc"},{url:"../../../cgi-bin/data/Klepikova/SRR3581694/accepted_hits.bam.bai",revision:"cee838e97c0d0bdaeca1f084280de0f7"},{url:"../../../cgi-bin/data/Klepikova/SRR3581695/accepted_hits.bam.bai",revision:"488b347be08057d992408c4ab68a292b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581696/accepted_hits.bam.bai",revision:"a8d5692b9e39dadba35b0d8c35bdcbfb"},{url:"../../../cgi-bin/data/Klepikova/SRR3581697/accepted_hits.bam.bai",revision:"78d6e0f412dd9687427aad3f914c8a8b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581698/accepted_hits.bam.bai",revision:"8e4b80c61c86a64a835d8d954ea738cf"},{url:"../../../cgi-bin/data/Klepikova/SRR3581699/accepted_hits.bam.bai",revision:"505ee58d728cc0eca73b57d49f20f33e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581700/accepted_hits.bam.bai",revision:"78e547956c95af206abc66f6ab77701d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581701/accepted_hits.bam.bai",revision:"c9902e9e76b879845b666e30cf0399c1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581702/accepted_hits.bam.bai",revision:"b157bbb93fa14c04c5c3da8c93541d0e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581703/accepted_hits.bam.bai",revision:"4df3f8bd8ad8ca83fa12b8533b0ac2ea"},{url:"../../../cgi-bin/data/Klepikova/SRR3581704/accepted_hits.bam.bai",revision:"92914db2852ad3aafc0e3dad5fd524a4"},{url:"../../../cgi-bin/data/Klepikova/SRR3581705/accepted_hits.bam.bai",revision:"a33ced7b8900bca138c2bdab938456f2"},{url:"../../../cgi-bin/data/Klepikova/SRR3581706/accepted_hits.bam.bai",revision:"66b2d4aa967446f1d2ec4f0cab84ec0a"},{url:"../../../cgi-bin/data/Klepikova/SRR3581707/accepted_hits.bam.bai",revision:"d1c39413154c03d534dd6f70c6e0f1ce"},{url:"../../../cgi-bin/data/Klepikova/SRR3581708/accepted_hits.bam.bai",revision:"835b7eb56eff3696d97f1d3745a83d41"},{url:"../../../cgi-bin/data/Klepikova/SRR3581709/accepted_hits.bam.bai",revision:"6d166a6e8b52a7cfa299c7ae16755a1b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581710/accepted_hits.bam.bai",revision:"c6032b9db761caebadd78e778faa4bcf"},{url:"../../../cgi-bin/data/Klepikova/SRR3581711/accepted_hits.bam.bai",revision:"a9215e6dcbc3fd3f80ada793452e5b10"},{url:"../../../cgi-bin/data/Klepikova/SRR3581712/accepted_hits.bam.bai",revision:"ab1976edab1deb750c3bf4f296ada0d1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581713/accepted_hits.bam.bai",revision:"636f3211b89e72b469cf625086d68006"},{url:"../../../cgi-bin/data/Klepikova/SRR3581714/accepted_hits.bam.bai",revision:"52b32b3baf1eb9327cb80033552cb969"},{url:"../../../cgi-bin/data/Klepikova/SRR3581715/accepted_hits.bam.bai",revision:"91ac3109fccfda58d27f5b167c2f0805"},{url:"../../../cgi-bin/data/Klepikova/SRR3581716/accepted_hits.bam.bai",revision:"74dc20248bae563aec599238fe35453e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581717/accepted_hits.bam.bai",revision:"8640331f5ff7b4e612e9acc5a5e50977"},{url:"../../../cgi-bin/data/Klepikova/SRR3581719/accepted_hits.bam.bai",revision:"8cde9d7d535b523741197fd625cfa8b9"},{url:"../../../cgi-bin/data/Klepikova/SRR3581720/accepted_hits.bam.bai",revision:"618c617c4985ebcb204c5d9e99bf9bbc"},{url:"../../../cgi-bin/data/Klepikova/SRR3581721/accepted_hits.bam.bai",revision:"2930a5d860636a531d78a4f438d58707"},{url:"../../../cgi-bin/data/Klepikova/SRR3581724/accepted_hits.bam.bai",revision:"a69f849b85f8c267a03a7b204cbbdf7b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581726/accepted_hits.bam.bai",revision:"d8d40289ae1f2cf050ae4700919df7db"},{url:"../../../cgi-bin/data/Klepikova/SRR3581727/accepted_hits.bam.bai",revision:"a6af224459198943e2aebff55a8dece1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581728/accepted_hits.bam.bai",revision:"2e86bba53e3ce6bca05156f97bccb3e6"},{url:"../../../cgi-bin/data/Klepikova/SRR3581730/accepted_hits.bam.bai",revision:"310e41fb56d3d0e1ef80ba2e8336bf85"},{url:"../../../cgi-bin/data/Klepikova/SRR3581731/accepted_hits.bam.bai",revision:"09107906661194d4dfcd804962edb88e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581732/accepted_hits.bam.bai",revision:"36b422ade169eddc32e1e864feadf12b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581733/accepted_hits.bam.bai",revision:"704e3417e99199a509915484c919355f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581734/accepted_hits.bam.bai",revision:"f3f30f6fc9aff334bfc59c0e3f54f401"},{url:"../../../cgi-bin/data/Klepikova/SRR3581735/accepted_hits.bam.bai",revision:"b4abd243467ec21606984ad4bc30cbe8"},{url:"../../../cgi-bin/data/Klepikova/SRR3581736/accepted_hits.bam.bai",revision:"e103ce27d1c4265fcf2918d8a31a247f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581737/accepted_hits.bam.bai",revision:"b9c93ab8f75bb6d1db371adc9b52784d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581738/accepted_hits.bam.bai",revision:"6eb5a0be35f2f495081dfafeb1958192"},{url:"../../../cgi-bin/data/Klepikova/SRR3581740/accepted_hits.bam.bai",revision:"57cfb501d4e8cf400caecdda54c44802"},{url:"../../../cgi-bin/data/Klepikova/SRR3581831/accepted_hits.bam.bai",revision:"1fbab6615945082f91adf71a14534761"},{url:"../../../cgi-bin/data/Klepikova/SRR3581833/accepted_hits.bam.bai",revision:"9e6df907513395dee880e2d389d566b6"},{url:"../../../cgi-bin/data/Klepikova/SRR3581834/accepted_hits.bam.bai",revision:"971f3be532a2067cd0d00f8f281e8f8b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581835/accepted_hits.bam.bai",revision:"ddac6d0152d39a5f094f4f01f67c6f9f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581836/accepted_hits.bam.bai",revision:"afe55c01af26aee2810d0d0c1f29418e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581837/accepted_hits.bam.bai",revision:"fadf9d90005b7b31e8af13190d5e532b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581838/accepted_hits.bam.bai",revision:"1dc83e108f17822a283afeedb4d56d4b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581839/accepted_hits.bam.bai",revision:"da5258dc67cfcfbb98659a8a582438ea"},{url:"../../../cgi-bin/data/Klepikova/SRR3581840/accepted_hits.bam.bai",revision:"0eb861b1083f7256f2e81d2ec65c6d8c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581841/accepted_hits.bam.bai",revision:"ce929ae66c3fa306200ba9ce66cfd029"},{url:"../../../cgi-bin/data/Klepikova/SRR3581842/accepted_hits.bam.bai",revision:"b29d65973e658c219ff995bda3b399f7"},{url:"../../../cgi-bin/data/Klepikova/SRR3581843/accepted_hits.bam.bai",revision:"b87d15a5d529a16d51861ff952bc194c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581844/accepted_hits.bam.bai",revision:"03655cbde5d7c89442c2667a9065f68e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581845/accepted_hits.bam.bai",revision:"0f7dc11b370d2fb2e4e62b777b17c3f8"},{url:"../../../cgi-bin/data/Klepikova/SRR3581846/accepted_hits.bam.bai",revision:"184305447b5e39bd0d57daa91f9474cb"},{url:"../../../cgi-bin/data/Klepikova/SRR3581847/accepted_hits.bam.bai",revision:"07553f3a6b5538eb886d9d67e4aa7333"},{url:"../../../cgi-bin/data/Klepikova/SRR3581848/accepted_hits.bam.bai",revision:"fccac4c7fcd296e9a521106ec36d57f2"},{url:"../../../cgi-bin/data/Klepikova/SRR3581849/accepted_hits.bam.bai",revision:"0c6252fbc89bdbaeaa9120261a012aaf"},{url:"../../../cgi-bin/data/Klepikova/SRR3581850/accepted_hits.bam.bai",revision:"860370410e3e482648a32e0554e54a27"},{url:"../../../cgi-bin/data/Klepikova/SRR3581851/accepted_hits.bam.bai",revision:"c397db1086e1add97b208d238f5a6b82"},{url:"../../../cgi-bin/data/Klepikova/SRR3581852/accepted_hits.bam.bai",revision:"474b5872ff0b1f350204d0f602ce00fd"},{url:"../../../cgi-bin/data/Klepikova/SRR3581853/accepted_hits.bam.bai",revision:"9f9154f89bd85e73351540c8390e556c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581854/accepted_hits.bam.bai",revision:"d5a82d9c3fe4d53604a8f0196bc0de80"},{url:"../../../cgi-bin/data/Klepikova/SRR3581855/accepted_hits.bam.bai",revision:"c70bfc603643c365151c24e3a628b7e1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581856/accepted_hits.bam.bai",revision:"8ff962507f8820742f374be11fd1ca6d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581857/accepted_hits.bam.bai",revision:"ee0bc291ab07d844b48dbd0d793b8619"},{url:"../../../cgi-bin/data/Klepikova/SRR3581858/accepted_hits.bam.bai",revision:"e736b944ea00165f7874bb250797d477"},{url:"../../../cgi-bin/data/Klepikova/SRR3581859/accepted_hits.bam.bai",revision:"d572af99f51493d17ef602c6f59aadef"},{url:"../../../cgi-bin/data/Klepikova/SRR3581860/accepted_hits.bam.bai",revision:"e5ac1c2f394872073ffe748ba04cb0a0"},{url:"../../../cgi-bin/data/Klepikova/SRR3581861/accepted_hits.bam.bai",revision:"7932a0481ba9d7552efff8161539c251"},{url:"../../../cgi-bin/data/Klepikova/SRR3581862/accepted_hits.bam.bai",revision:"4b77cb6e1f1f0d4fcf4b9ffaa502b128"},{url:"../../../cgi-bin/data/Klepikova/SRR3581863/accepted_hits.bam.bai",revision:"c6f233420cc67cc63b762b53f583abf1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581864/accepted_hits.bam.bai",revision:"366d829918a077f69b803391f14a06ba"},{url:"../../../cgi-bin/data/Klepikova/SRR3581865/accepted_hits.bam.bai",revision:"3fec4452f463c61d1d7f796042c00f37"},{url:"../../../cgi-bin/data/Klepikova/SRR3581866/accepted_hits.bam.bai",revision:"ced32108c5c55f0912810208ea91a34c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581867/accepted_hits.bam.bai",revision:"bb34514f1897edef1c4374f44bc29f7e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581868/accepted_hits.bam.bai",revision:"c7bc60a6a54361275bd1f021bf581b9e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581869/accepted_hits.bam.bai",revision:"0a7b079b87d10246885cf669b1da4813"},{url:"../../../cgi-bin/data/Klepikova/SRR3581870/accepted_hits.bam.bai",revision:"4a26a725b44d82ec54fa41f32f22ab78"},{url:"../../../cgi-bin/data/Klepikova/SRR3581871/accepted_hits.bam.bai",revision:"f0f0a01cf6ab707cfad1f530ad67cb7d"},{url:"../../../cgi-bin/data/Klepikova/SRR3581872/accepted_hits.bam.bai",revision:"05cfcf7ef950f00d486e84666fc3ad53"},{url:"../../../cgi-bin/data/Klepikova/SRR3581873/accepted_hits.bam.bai",revision:"9ed51190a0a0aa7cba089e588f9f7f66"},{url:"../../../cgi-bin/data/Klepikova/SRR3581874/accepted_hits.bam.bai",revision:"dc8af3f8a26a69b788ccc9d3fec3c29e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581875/accepted_hits.bam.bai",revision:"aebee6b065bbae492dae8e68711b7fe8"},{url:"../../../cgi-bin/data/Klepikova/SRR3581876/accepted_hits.bam.bai",revision:"2f505fa0bb1376a49311645afc86a5f4"},{url:"../../../cgi-bin/data/Klepikova/SRR3581877/accepted_hits.bam.bai",revision:"03a30a89fa8853122efc4775fe07a509"},{url:"../../../cgi-bin/data/Klepikova/SRR3581878/accepted_hits.bam.bai",revision:"054faa0faf034728ebac3711db6f1432"},{url:"../../../cgi-bin/data/Klepikova/SRR3581879/accepted_hits.bam.bai",revision:"923b66da670d0c8c7edcf6c0899b5dee"},{url:"../../../cgi-bin/data/Klepikova/SRR3581880/accepted_hits.bam.bai",revision:"db42ad0a672ffad4b4df243b655aeb8f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581881/accepted_hits.bam.bai",revision:"6bb77dd0f8efa2b62f3661c3471ae92c"},{url:"../../../cgi-bin/data/Klepikova/SRR3581882/accepted_hits.bam.bai",revision:"ba56ffbe86b118a90f8e83e62ba2948f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581883/accepted_hits.bam.bai",revision:"bec9cc75981bd29a3f3f1ca584aa20e1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581884/accepted_hits.bam.bai",revision:"08e29049e70b6ab901005f50a71ed73b"},{url:"../../../cgi-bin/data/Klepikova/SRR3581885/accepted_hits.bam.bai",revision:"17d09c7b79e1492e79606c4e57dfe515"},{url:"../../../cgi-bin/data/Klepikova/SRR3581886/accepted_hits.bam.bai",revision:"391e780261c28960836778970f53fda9"},{url:"../../../cgi-bin/data/Klepikova/SRR3581887/accepted_hits.bam.bai",revision:"795feb34895e7539c7af987d2f86d72f"},{url:"../../../cgi-bin/data/Klepikova/SRR3581888/accepted_hits.bam.bai",revision:"44495c91e78cea2358fd99afc519ea78"},{url:"../../../cgi-bin/data/Klepikova/SRR3581889/accepted_hits.bam.bai",revision:"9c41c5af458228b23fc18021e2aab107"},{url:"../../../cgi-bin/data/Klepikova/SRR3581890/accepted_hits.bam.bai",revision:"c1280398bbe5480c99d56a92120d23a9"},{url:"../../../cgi-bin/data/Klepikova/SRR3581891/accepted_hits.bam.bai",revision:"fb2b44a6951eb303835775bc25ed7367"},{url:"../../../cgi-bin/data/Klepikova/SRR3581892/accepted_hits.bam.bai",revision:"96ec3ac57ddf7ddabb51b999562b2886"},{url:"../../../cgi-bin/data/Klepikova/SRR3581893/accepted_hits.bam.bai",revision:"220a1f9506b669a01aa7b135bba30499"},{url:"../../../cgi-bin/data/Klepikova/SRR3581894/accepted_hits.bam.bai",revision:"767e98c3404cad841d09f3949856e5c3"},{url:"../../../cgi-bin/data/Klepikova/SRR3581895/accepted_hits.bam.bai",revision:"04495589b536ddd994f8c7966dabe5f1"},{url:"../../../cgi-bin/data/Klepikova/SRR3581896/accepted_hits.bam.bai",revision:"28954f7aa615a6cabdf8e6e12f5fdf8e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581897/accepted_hits.bam.bai",revision:"cc83124a4ecc62643b4a0ed584b070df"},{url:"../../../cgi-bin/data/Klepikova/SRR3581898/accepted_hits.bam.bai",revision:"a8a4147389df536f32b281993dc2e26e"},{url:"../../../cgi-bin/data/Klepikova/SRR3581899/accepted_hits.bam.bai",revision:"89b326f5425969ba5d9b1d3d56362676"},{url:"../../../cgi-bin/data/Klepikova/SRR3724649/accepted_hits.bam.bai",revision:"8baa4f21c5956c58f0f1fdd947a5a7a8"},{url:"../../../cgi-bin/data/Klepikova/SRR3724650/accepted_hits.bam.bai",revision:"0cd349d26d33bac76a6ba7cc02a9f7ce"},{url:"../../../cgi-bin/data/Klepikova/SRR3724651/accepted_hits.bam.bai",revision:"43535acea7c38adaac38f99b65b055ed"},{url:"../../../cgi-bin/data/Klepikova/SRR3724652/accepted_hits.bam.bai",revision:"06c5f5abcb7d62c9a667943f8173a8e1"},{url:"../../../cgi-bin/data/Klepikova/SRR3724663/accepted_hits.bam.bai",revision:"5cf07e5cef90fe80931333379f239e62"},{url:"../../../cgi-bin/data/Klepikova/SRR3724668/accepted_hits.bam.bai",revision:"556998139485bbaa76df19c1e17eac13"},{url:"../../../cgi-bin/data/Klepikova/SRR3724737/accepted_hits.bam.bai",revision:"b4edd498c3872994295129df84199381"},{url:"../../../cgi-bin/data/Klepikova/SRR3724739/accepted_hits.bam.bai",revision:"17bcf5e4f46a924e8e7ff88558b983d0"},{url:"../../../cgi-bin/data/Klepikova/SRR3724741/accepted_hits.bam.bai",revision:"fa291751450abd9743680d71140d60af"},{url:"../../../cgi-bin/data/Klepikova/SRR3724768/accepted_hits.bam.bai",revision:"12d0e17110c65474208131e4c29f1cf6"},{url:"../../../cgi-bin/data/Klepikova/SRR3724774/accepted_hits.bam.bai",revision:"ee127920880f9b686fc2985f03b4e3e6"},{url:"../../../cgi-bin/data/Klepikova/SRR3724778/accepted_hits.bam.bai",revision:"fc59d363965ee5d9e4d435ad4409ec7c"},{url:"../../../cgi-bin/data/Klepikova/SRR3724782/accepted_hits.bam.bai",revision:"2408bd4c49bfc546cc17eae41819e5f1"},{url:"../../../cgi-bin/data/Klepikova/SRR3724785/accepted_hits.bam.bai",revision:"f56203f5e8560818a44be74cbdce952b"},{url:"../../../cgi-bin/data/Klepikova/SRR3724786/accepted_hits.bam.bai",revision:"4251fbd2e0727b157e290b4fb3b371ff"},{url:"../../../cgi-bin/data/Klepikova/SRR3724787/accepted_hits.bam.bai",revision:"d4b7b16cbd4c2e41585f0869a3842d17"},{url:"../../../cgi-bin/data/Klepikova/SRR3724798/accepted_hits.bam.bai",revision:"c781661b68ff3cd0d1fa5aa0786c102a"},{url:"../../../cgi-bin/data/Klepikova/SRR3724806/accepted_hits.bam.bai",revision:"a2f3dbf70a549a9c20274299aa50199e"},{url:"../../../cgi-bin/data/Klepikova/SRR3724814/accepted_hits.bam.bai",revision:"c90091646dc7f2f9c690a991b3157bed"},{url:"../../../cgi-bin/data/Klepikova/SRR3725446/accepted_hits.bam.bai",revision:"3a20a84fe3333bddcad49a74d6bb7bf9"},{url:"../../../cgi-bin/data/Klepikova/SRR3725458/accepted_hits.bam.bai",revision:"50c830b0eb15515e4b65201c452cb2fb"},{url:"../../../cgi-bin/data/Klepikova/SRR3725471/accepted_hits.bam.bai",revision:"f6427d97f49604538efa669329cbb740"},{url:"../../../cgi-bin/data/Klepikova/SRR3725482/accepted_hits.bam.bai",revision:"b4d0ea04b6bdb0939bee8973fe29900d"},{url:"../../../cgi-bin/data/Klepikova/SRR3725493/accepted_hits.bam.bai",revision:"8e6cafd4dde819c51808c6bc041b4970"},{url:"../../../cgi-bin/data/Klepikova/SRR3725503/accepted_hits.bam.bai",revision:"f2ea494bca260f8f410c4af6ef17c0c2"},{url:"../../../cgi-bin/data/Klepikova/SRR3725516/accepted_hits.bam.bai",revision:"42b43c459060805ee53db2ef1a205743"},{url:"../../../cgi-bin/data/Klepikova/SRR3725527/accepted_hits.bam.bai",revision:"5a16a028294ddcce1baee37c68d22e6e"},{url:"../../../cgi-bin/data/Klepikova/SRR3725538/accepted_hits.bam.bai",revision:"5f1e89581f2f9e102d9376095c2ca385"},{url:"../../../cgi-bin/data/Klepikova/SRR3725550/accepted_hits.bam.bai",revision:"8d72055c5cb84569ffade08a4a7b53a1"},{url:"../../../cgi-bin/data/Klepikova/SRR3725561/accepted_hits.bam.bai",revision:"ac491f41f4cec20467dbeced8ffe29a8"},{url:"../../../cgi-bin/data/Klepikova/SRR847501/accepted_hits.bam.bai",revision:"1786f46eeb38171f37ca9244d8cb4e70"},{url:"../../../cgi-bin/data/Klepikova/SRR847502/accepted_hits.bam.bai",revision:"0ab4f36580722140c539faa58755c45b"},{url:"../../../cgi-bin/data/leaf/SRR1105822/accepted_hits.bam.bai",revision:"1f59203e7e4ef21a90df9de277af42e9"},{url:"../../../cgi-bin/data/leaf/SRR1105823/accepted_hits.bam.bai",revision:"3f8117df3e1f23fa8014a9e16ace9d50"},{url:"../../../cgi-bin/data/leaf/SRR1159821/accepted_hits.bam.bai",revision:"6fceded0b219c6f48d25d83c9602c530"},{url:"../../../cgi-bin/data/leaf/SRR1159827/accepted_hits.bam.bai",revision:"e6249e031b0cfab6fc2e0eb5f038d7a9"},{url:"../../../cgi-bin/data/leaf/SRR1159837/accepted_hits.bam.bai",revision:"df333cd81caeff1ee3c80e0e9aac451b"},{url:"../../../cgi-bin/data/leaf/SRR314813/accepted_hits.bam.bai",revision:"c3dae9dfcd5939f53febb58b99ad6358"},{url:"../../../cgi-bin/data/leaf/SRR446027/accepted_hits.bam.bai",revision:"58547866c1feb44d34a9dcb2faa02b07"},{url:"../../../cgi-bin/data/leaf/SRR446028/accepted_hits.bam.bai",revision:"d605894f0b05f858f73ec7de7fb3bfc9"},{url:"../../../cgi-bin/data/leaf/SRR446033/accepted_hits.bam.bai",revision:"8bb76fecb54e558f07830f826dc0ef21"},{url:"../../../cgi-bin/data/leaf/SRR446034/accepted_hits.bam.bai",revision:"e978cf50eeec836ba7ec871c6cb599f7"},{url:"../../../cgi-bin/data/leaf/SRR446039/accepted_hits.bam.bai",revision:"8fcc2d21df295b917b37b86aaa43eed1"},{url:"../../../cgi-bin/data/leaf/SRR446040/accepted_hits.bam.bai",revision:"41e4d4e4d25127017b93ee5cf737d26a"},{url:"../../../cgi-bin/data/leaf/SRR446484/accepted_hits.bam.bai",revision:"0bac90204e0f8f659e4aa7163184d3e8"},{url:"../../../cgi-bin/data/leaf/SRR446485/accepted_hits.bam.bai",revision:"826092002208472ac62f1242c2bd7c8f"},{url:"../../../cgi-bin/data/leaf/SRR446486/accepted_hits.bam.bai",revision:"094540bb352f5d0d8c1cf4cbd3359651"},{url:"../../../cgi-bin/data/leaf/SRR446487/accepted_hits.bam.bai",revision:"b09303aa7c5bc090597a6029c589d6fc"},{url:"../../../cgi-bin/data/leaf/SRR493036/accepted_hits.bam.bai",revision:"ec40f2e69a1ac9d779c432f29881d275"},{url:"../../../cgi-bin/data/leaf/SRR493097/accepted_hits.bam.bai",revision:"f3019bd4b6435fc864ef6e54b1d40896"},{url:"../../../cgi-bin/data/leaf/SRR493098/accepted_hits.bam.bai",revision:"3b9cf2e84c411d2f61dd959a327fcad9"},{url:"../../../cgi-bin/data/leaf/SRR493101/accepted_hits.bam.bai",revision:"972a5b0c96d3b9b2677606db5292c756"},{url:"../../../cgi-bin/data/leaf/SRR764885/accepted_hits.bam.bai",revision:"3e7bdeb3c9c126bc4fa8f5785dc5d8f7"},{url:"../../../cgi-bin/data/leaf/SRR924656/accepted_hits.bam.bai",revision:"9e51595e33b3931e043105c076fcc513"},{url:"../../../cgi-bin/data/leaf/SRR934391/accepted_hits.bam.bai",revision:"54804fe3e5a5568eaf4b9cd993731dd0"},{url:"../../../cgi-bin/data/leaf/SRR942022/accepted_hits.bam.bai",revision:"af83e38f1a885527c5ea88c1deb54985"},{url:"../../../cgi-bin/data/light/SRR070570/accepted_hits.bam.bai",revision:"253a622fbd7b15730a85f46f9de217ab"},{url:"../../../cgi-bin/data/light/SRR070571/accepted_hits.bam.bai",revision:"a4a7d70a2a5d6790230f14117069920b"},{url:"../../../cgi-bin/data/light/SRR1001909/accepted_hits.bam.bai",revision:"00b95124ac0bad8b3b0514cb5392ab0d"},{url:"../../../cgi-bin/data/light/SRR1001910/accepted_hits.bam.bai",revision:"bf5c80add2ebaf3eaac41b6b4ac753ab"},{url:"../../../cgi-bin/data/light/SRR1019221/accepted_hits.bam.bai",revision:"c3ab9a0f264ce038994b448e8e210a24"},{url:"../../../cgi-bin/data/light/SRR345561/accepted_hits.bam.bai",revision:"352ad71d4b0b2661214c376dedd1f507"},{url:"../../../cgi-bin/data/light/SRR345562/accepted_hits.bam.bai",revision:"87356040f53ae67d60f8128835a01777"},{url:"../../../cgi-bin/data/light/SRR346552/accepted_hits.bam.bai",revision:"d9aef462648ec0271fa1dc2088b0e7af"},{url:"../../../cgi-bin/data/light/SRR346553/accepted_hits.bam.bai",revision:"691e6bd9eda925f13420716cf13cf54e"},{url:"../../../cgi-bin/data/light/SRR394082/accepted_hits.bam.bai",revision:"fb4ac4b98e5a93ba0282a9acf69d77e5"},{url:"../../../cgi-bin/data/light/SRR504179/accepted_hits.bam.bai",revision:"66ff5551328a2ee8b8b1f9f375d99eb4"},{url:"../../../cgi-bin/data/light/SRR504180/accepted_hits.bam.bai",revision:"9b82c3a83372fd7dea005dd5dc4a2b63"},{url:"../../../cgi-bin/data/light/SRR504181/accepted_hits.bam.bai",revision:"188411c66586bad65187f8dba8c730ec"},{url:"../../../cgi-bin/data/light/SRR515073/accepted_hits.bam.bai",revision:"5d24f2df4d013fee1d036b8d1734beeb"},{url:"../../../cgi-bin/data/light/SRR515074/accepted_hits.bam.bai",revision:"1d1cea0d2451daa8e70354308ce70c44"},{url:"../../../cgi-bin/data/light/SRR527164/accepted_hits.bam.bai",revision:"9ec43b81497b19c111923e5e79d78277"},{url:"../../../cgi-bin/data/light/SRR527165/accepted_hits.bam.bai",revision:"adb3fae17b08eeda152883c26580e20a"},{url:"../../../cgi-bin/data/light/SRR584115/accepted_hits.bam.bai",revision:"7400525012004e68bd52e5d2bbfa141c"},{url:"../../../cgi-bin/data/light/SRR584121/accepted_hits.bam.bai",revision:"ee964b622cab2ecc6109abc9428bfaa8"},{url:"../../../cgi-bin/data/light/SRR584129/accepted_hits.bam.bai",revision:"01c635ec5fdc12f4cbfab52cc7806542"},{url:"../../../cgi-bin/data/light/SRR584134/accepted_hits.bam.bai",revision:"0f0cad62ae473ad66bf24ff674add1d6"},{url:"../../../cgi-bin/data/light/SRR653555/accepted_hits.bam.bai",revision:"3b1a341a7473577ba673be1aa1669cc8"},{url:"../../../cgi-bin/data/light/SRR653556/accepted_hits.bam.bai",revision:"24de0f8a0c67cd6574983ba45e85b92b"},{url:"../../../cgi-bin/data/light/SRR653557/accepted_hits.bam.bai",revision:"9db6d46a42228a4ec0305745a63ba69d"},{url:"../../../cgi-bin/data/light/SRR653561/accepted_hits.bam.bai",revision:"fa37f25b5cfd8d715cad359490d30718"},{url:"../../../cgi-bin/data/light/SRR653562/accepted_hits.bam.bai",revision:"a46d3b87ec2ca397214593cb18d8a1ef"},{url:"../../../cgi-bin/data/light/SRR653563/accepted_hits.bam.bai",revision:"a548597961db9d7673e2b39b46c7da5e"},{url:"../../../cgi-bin/data/light/SRR653564/accepted_hits.bam.bai",revision:"6d221fe1e7e6210a91f1c6d109828346"},{url:"../../../cgi-bin/data/light/SRR653565/accepted_hits.bam.bai",revision:"f272c81e2da94d9658f8dbd1f1275bfb"},{url:"../../../cgi-bin/data/light/SRR653566/accepted_hits.bam.bai",revision:"232da2bd399f00b0bae9e1ebb48f6ec8"},{url:"../../../cgi-bin/data/light/SRR653567/accepted_hits.bam.bai",revision:"a1da73954d0235572da3494ab0fdfe1c"},{url:"../../../cgi-bin/data/light/SRR653568/accepted_hits.bam.bai",revision:"3722d0f942c435fa2b1692e29aeb280c"},{url:"../../../cgi-bin/data/light/SRR653569/accepted_hits.bam.bai",revision:"500616f990bd93198665b838d6912237"},{url:"../../../cgi-bin/data/light/SRR653570/accepted_hits.bam.bai",revision:"418da1b3b92e0e17e65cd856376c8826"},{url:"../../../cgi-bin/data/light/SRR653571/accepted_hits.bam.bai",revision:"8e01bd9ba6b7657dd6382dde31dcc6b1"},{url:"../../../cgi-bin/data/light/SRR653572/accepted_hits.bam.bai",revision:"e7310649f000c637c86f1c14a82e17fd"},{url:"../../../cgi-bin/data/light/SRR653573/accepted_hits.bam.bai",revision:"ccfe9ea83af958f7e1569c6a286b8af2"},{url:"../../../cgi-bin/data/light/SRR653574/accepted_hits.bam.bai",revision:"aca14870d5fd007dac23fd31d0a5a29b"},{url:"../../../cgi-bin/data/light/SRR653575/accepted_hits.bam.bai",revision:"261f43be2af3d979b6e8c9862acbe1b0"},{url:"../../../cgi-bin/data/light/SRR653576/accepted_hits.bam.bai",revision:"fb871e4c3ae5712a1aa29183e9e2763f"},{url:"../../../cgi-bin/data/light/SRR653577/accepted_hits.bam.bai",revision:"1e77eeb194d6800471943dd43cbd48f1"},{url:"../../../cgi-bin/data/light/SRR653578/accepted_hits.bam.bai",revision:"8c8edf8c27885a6db191428a9b8d488d"},{url:"../../../cgi-bin/data/light/SRR797194/accepted_hits.bam.bai",revision:"f3d525e421eb46ba85b4bee2b1de7d11"},{url:"../../../cgi-bin/data/light/SRR797230/accepted_hits.bam.bai",revision:"bac1da05ebeffa9efe92dddc52f3f154"},{url:"../../../cgi-bin/data/light/SRR833246/accepted_hits.bam.bai",revision:"22af78cd960848cdafd011189bb772e1"},{url:"../../../cgi-bin/data/pollen/SRR847501/accepted_hits.bam.bai",revision:"ce884bf17bd69e891c1f6096f8e3fb53"},{url:"../../../cgi-bin/data/pollen/SRR847502/accepted_hits.bam.bai",revision:"80d8fb863f5d84bddbf0adbf30d08957"},{url:"../../../cgi-bin/data/RAM/SRR1260032/accepted_hits.bam.bai",revision:"f2be3c072459c2fc01370e4ae05a1a48"},{url:"../../../cgi-bin/data/RAM/SRR1260033/accepted_hits.bam.bai",revision:"89dfc110834c249f6f12a84888c629fe"},{url:"../../../cgi-bin/data/RAM/SRR1261509/accepted_hits.bam.bai",revision:"cdc7376677d280fa65112d53e83b4839"},{url:"../../../cgi-bin/data/receptacle/SRR401413/accepted_hits.bam.bai",revision:"e84df8b1900612a62be329b1e5aff079"},{url:"../../../cgi-bin/data/receptacle/SRR401414/accepted_hits.bam.bai",revision:"d5a98622a5b0532db79cb3cf03c44fac"},{url:"../../../cgi-bin/data/receptacle/SRR401415/accepted_hits.bam.bai",revision:"1576be1f1b1d098f9a3eda42c5ff178d"},{url:"../../../cgi-bin/data/receptacle/SRR401416/accepted_hits.bam.bai",revision:"1c8288c1340a1e47876dc658280fecac"},{url:"../../../cgi-bin/data/receptacle/SRR401417/accepted_hits.bam.bai",revision:"5c28720a2241d533ef8be526f9dce343"},{url:"../../../cgi-bin/data/receptacle/SRR401418/accepted_hits.bam.bai",revision:"6d8e83c385c5c873e09957288020b6b6"},{url:"../../../cgi-bin/data/receptacle/SRR401419/accepted_hits.bam.bai",revision:"bf3364e1b8dd0be87d1e549b7f2c5641"},{url:"../../../cgi-bin/data/receptacle/SRR401420/accepted_hits.bam.bai",revision:"5f0b7ffe4eb51644ec176a64448fa73e"},{url:"../../../cgi-bin/data/receptacle/SRR401421/accepted_hits.bam.bai",revision:"5fda291436659903ed652ec1c34b6900"},{url:"../../../cgi-bin/data/root/ERR274309/accepted_hits.bam.bai",revision:"bb50e2ae0ff7d66bfbb9f84d068ecde7"},{url:"../../../cgi-bin/data/root/SRR1046909/accepted_hits.bam.bai",revision:"7058550eeac33d8019da041f8b6f5069"},{url:"../../../cgi-bin/data/root/SRR1046910/accepted_hits.bam.bai",revision:"879d2d40c7b657f60eaa63e1d795a98a"},{url:"../../../cgi-bin/data/root/SRR1524935/accepted_hits.bam.bai",revision:"aed5a151f3fdaab9fd7225dba3d5940a"},{url:"../../../cgi-bin/data/root/SRR1524938/accepted_hits.bam.bai",revision:"ae00f12c934ae8681d0142c650480a7b"},{url:"../../../cgi-bin/data/root/SRR1524940/accepted_hits.bam.bai",revision:"3f2b2207bf7b40abe57b916b77075353"},{url:"../../../cgi-bin/data/root/SRR314814/accepted_hits.bam.bai",revision:"879f37f50fda5726eb79d43b9c3be3dd"},{url:"../../../cgi-bin/data/SAM/SRR949956/accepted_hits.bam.bai",revision:"40ce9854110d2a13f37aa98575d046b4"},{url:"../../../cgi-bin/data/SAM/SRR949965/accepted_hits.bam.bai",revision:"ad8895257f945dd2208d5442ac880a96"},{url:"../../../cgi-bin/data/SAM/SRR949988/accepted_hits.bam.bai",revision:"61270aaa529f4ddb3725882fc8d18768"},{url:"../../../cgi-bin/data/SAM/SRR949989/accepted_hits.bam.bai",revision:"09eea158d0dac8d977f6aa4dd54a36bb"},{url:"../../../cgi-bin/get_exon_base64_exongraph.png",revision:"bc8188977bc489350c900ad26bc272fb"},{url:"../../../cgi-bin/get_gene_structures.cgi",revision:"26b4acf6db75474d7e6103a25385fed1"},{url:"../../../cgi-bin/get_gene_structures.html",revision:"4cdbaefb9ac893c21e6c030fa5aba92d"},{url:"../../../cgi-bin/icon/android-chrome-144x144.png",revision:"6aa216b232a25383e5b374fa92649f8e"},{url:"../../../cgi-bin/icon/android-chrome-192x192.png",revision:"9a3171627fb93c14b45814508213f4fc"},{url:"../../../cgi-bin/icon/android-chrome-256x256.png",revision:"1ae7955a2611f1bf46c1ba8b7ec169f1"},{url:"../../../cgi-bin/icon/android-chrome-36x36.png",revision:"7410a290c1537082c7c3cf8ffccd6917"},{url:"../../../cgi-bin/icon/android-chrome-384x384.png",revision:"82426ddd9dc183454ddf5e6e36b1afbb"},{url:"../../../cgi-bin/icon/android-chrome-48x48.png",revision:"f602e0082bbcc7de9f975f58d2d6de85"},{url:"../../../cgi-bin/icon/android-chrome-512x512.png",revision:"437bb1be87cdb0feddb00d9c44fcce41"},{url:"../../../cgi-bin/icon/android-chrome-72x72.png",revision:"35d48d22cf7e2f1efc5736d44602e6a7"},{url:"../../../cgi-bin/icon/android-chrome-96x96.png",revision:"c9ba5d290339fb492d3fc8c2d24a1e79"},{url:"../../../cgi-bin/icon/apple-touch-icon-114x114-precomposed.png",revision:"f93f4ea7b8e7b67a3335dd3bb581da17"},{url:"../../../cgi-bin/icon/apple-touch-icon-114x114.png",revision:"1eff9b0569d780c80c1df71f5164eec3"},{url:"../../../cgi-bin/icon/apple-touch-icon-120x120-precomposed.png",revision:"4ec14dcc7185e95229335e65671366ce"},{url:"../../../cgi-bin/icon/apple-touch-icon-120x120.png",revision:"6d0f888cc80dad397ea55bf1d473a028"},{url:"../../../cgi-bin/icon/apple-touch-icon-144x144-precomposed.png",revision:"0ec9769ea9f4447b15caecba3191938a"},{url:"../../../cgi-bin/icon/apple-touch-icon-144x144.png",revision:"40fd9584b9d30b31740f76fa8ca1235c"},{url:"../../../cgi-bin/icon/apple-touch-icon-152x152-precomposed.png",revision:"c46229f4a4c1b3beb147ffb8ece33040"},{url:"../../../cgi-bin/icon/apple-touch-icon-152x152.png",revision:"be6138eec66a53b3384297e0cf15db39"},{url:"../../../cgi-bin/icon/apple-touch-icon-180x180-precomposed.png",revision:"d4d7ccec62c79ecf32034ad632cd6231"},{url:"../../../cgi-bin/icon/apple-touch-icon-180x180.png",revision:"3eae3e68773828dd6f783cdc5281fc66"},{url:"../../../cgi-bin/icon/apple-touch-icon-57x57-precomposed.png",revision:"bfe3d340d1da05a22158e8d63d75b646"},{url:"../../../cgi-bin/icon/apple-touch-icon-57x57.png",revision:"932f18fa0f0b708d24ad185664251055"},{url:"../../../cgi-bin/icon/apple-touch-icon-60x60-precomposed.png",revision:"1dccb7114c4888de8b71622bbbb41a02"},{url:"../../../cgi-bin/icon/apple-touch-icon-60x60.png",revision:"38f6fdd2f70eb7385f245195d75c38c4"},{url:"../../../cgi-bin/icon/apple-touch-icon-72x72-precomposed.png",revision:"cd799bf2df7eb07cfc4af6a486c0d0bc"},{url:"../../../cgi-bin/icon/apple-touch-icon-72x72.png",revision:"7cff9a362d0ac807dd6ca8ae738e8836"},{url:"../../../cgi-bin/icon/apple-touch-icon-76x76-precomposed.png",revision:"454271b7b29164d430fa790e9e450dff"},{url:"../../../cgi-bin/icon/apple-touch-icon-76x76.png",revision:"de8f88f28e367a284fc39dd360fe00b2"},{url:"../../../cgi-bin/icon/apple-touch-icon-precomposed.png",revision:"d4d7ccec62c79ecf32034ad632cd6231"},{url:"../../../cgi-bin/icon/apple-touch-icon.png",revision:"3eae3e68773828dd6f783cdc5281fc66"},{url:"../../../cgi-bin/icon/browserconfig.xml",revision:"6a2fcd1a52a6cb53a9ff5317d8e2ad96"},{url:"../../../cgi-bin/icon/favicon-16x16.png",revision:"778e2a523b867301222f390f5ee7dcca"},{url:"../../../cgi-bin/icon/favicon-32x32.png",revision:"083534383d3f008b5890448ca54940a7"},{url:"../../../cgi-bin/icon/favicon.ico",revision:"f3dc2bf19ab26151c3717363be75fac5"},{url:"../../../cgi-bin/icon/maskable_icon_x128.png",revision:"899c43b186582a63324516c2c1e5f048"},{url:"../../../cgi-bin/icon/maskable_icon_x192.png",revision:"04e99dc63a424ea33de8eff9f2e1df83"},{url:"../../../cgi-bin/icon/maskable_icon_x384.png",revision:"c4c8bb30b6bab2bab15fd75eb6f678f5"},{url:"../../../cgi-bin/icon/maskable_icon_x48.png",revision:"89470a5e6d25c711c40d54ea30dee034"},{url:"../../../cgi-bin/icon/maskable_icon_x512.png",revision:"dfa6ac52dac80a2938a3adf2bbdda46d"},{url:"../../../cgi-bin/icon/maskable_icon_x72.png",revision:"b4d2d67802a700229a8731931fd698b0"},{url:"../../../cgi-bin/icon/maskable_icon_x96.png",revision:"6365ad9cc32211d3c6476eea2893355c"},{url:"../../../cgi-bin/icon/maskable_icon.png",revision:"4a6a9e89a616e4868e36a695a408222a"},{url:"../../../cgi-bin/icon/mstile-144x144.png",revision:"1134e80a6e3730bd468c0798a14e14e0"},{url:"../../../cgi-bin/icon/mstile-150x150.png",revision:"476a61c0d9c59411ae779eb81376ebaf"},{url:"../../../cgi-bin/icon/mstile-310x150.png",revision:"3a23b4170779ab61f432268956969271"},{url:"../../../cgi-bin/icon/mstile-310x310.png",revision:"3224651e0961dd7a643c35da88f50807"},{url:"../../../cgi-bin/icon/mstile-70x70.png",revision:"48decad196c52519ffe63de28f90f0dc"},{url:"../../../cgi-bin/icon/og-image.jpg",revision:"a11a25eb7e78f676e6cab288a9bd0453"},{url:"../../../cgi-bin/icon/resoc.png",revision:"1eef07e183884f512fccf7199e399e3f"},{url:"../../../cgi-bin/icon/safari-pinned-tab.svg",revision:"9229710b0428548ddc2663b4c217ebac"},{url:"../../../cgi-bin/icon/site.webmanifest",revision:"cac55327a2672b63c4a97aa288f64ced"},{url:"../../../cgi-bin/img/BAR-logo.png",revision:"dfcd25ffc15bfc733819e6a4dc157a0f"},{url:"../../../cgi-bin/img/BAR-logo.svg",revision:"e8df5b65bfed1fa05645922b584e4914"},{url:"../../../cgi-bin/img/BAR-logo.webp",revision:"9d8cb12084dbd0e177210c87170c9e63"},{url:"../../../cgi-bin/img/error.png",revision:"1d71f786ed428e61081422d063ea7c83"},{url:"../../../cgi-bin/img/error.webp",revision:"8879a22bc144f7e1d64ff967f21f2914"},{url:"../../../cgi-bin/img/googleSignin/btn_google_light_normal_ios.svg",revision:"3f8823279b3f25e18a4a115a2fc5e638"},{url:"../../../cgi-bin/img/helpModal/0001_geneLocusAutofill.png",revision:"c655ed3804b930b15f4e52e724541c47"},{url:"../../../cgi-bin/img/helpModal/0001_geneLocusAutofill.webp",revision:"861bb56ec43cd78bb5173247aa03fa73"},{url:"../../../cgi-bin/img/helpModal/0002_selectDataset.png",revision:"4d7c835d62240505ff5b3383609f6acb"},{url:"../../../cgi-bin/img/helpModal/0002_selectDataset.webp",revision:"4fbc4b7be83153359f2038baa0642196"},{url:"../../../cgi-bin/img/helpModal/0003_selectOptions.png",revision:"eb4d429a942a7bbff6b35524604272f1"},{url:"../../../cgi-bin/img/helpModal/0004_yAxisScale.png",revision:"535b1d4ffcfb53331db9773c8bfa9099"},{url:"../../../cgi-bin/img/helpModal/0005_absoluteMax.png",revision:"95ae278d3cb23909348695d53a1e31c9"},{url:"../../../cgi-bin/img/helpModal/0006_loadData.png",revision:"27dbfe5f82dcb5c3ba3e23eb237c4c13"},{url:"../../../cgi-bin/img/helpModal/0007_hideNav.png",revision:"f365b3ecc3c6c4d9f3912653161f94f9"},{url:"../../../cgi-bin/img/helpModal/0008_eFPOverviewGeneral.png",revision:"746af3110d4a52bed910cd5872e7359a"},{url:"../../../cgi-bin/img/helpModal/0009_eFPOverviewHover.png",revision:"beda2c842b8fe6eec7de1a355bf19c2c"},{url:"../../../cgi-bin/img/helpModal/0010_GenerateData.png",revision:"c09552da9c3f592b8b49c04f3e6224e5"},{url:"../../../cgi-bin/img/helpModal/0011_UploadExcel.png",revision:"e4f73dff004a2b862054a0bcadfa0895"},{url:"../../../cgi-bin/img/helpModal/0012_TissueSelect.png",revision:"d69adf3b6251f067d4717379ee2b659d"},{url:"../../../cgi-bin/img/helpModal/0013_bulkTemplate.png",revision:"86ec9b93d271627c7a1268ac7f534d6d"},{url:"../../../cgi-bin/img/helpModal/0014_manageAccount.png",revision:"5cd787c97e64bbc4a433a7a5fb2000b5"},{url:"../../../cgi-bin/img/helpModal/0015_downloadTableAsImage.png",revision:"8fbe6889ad3620c224c97527db855ae6"},{url:"../../../cgi-bin/img/helpModal/0016_downloadeFPOverviewAsImage.png",revision:"7aca546f9df28f39aaa6481c14c6b880"},{url:"../../../cgi-bin/img/helpModal/0017_toggleTable.png",revision:"66074449a6773d785a2be0d86b53b504"},{url:"../../../cgi-bin/img/helpModal/0018_eFPOverviewScrollTo.png",revision:"a3e44414f7bb90f6a85f89eb7f6c88cb"},{url:"../../../cgi-bin/img/helpModal/0019_eFPImagesFilter.png",revision:"784bdd049f913a2f1d9d04c7753c77f7"},{url:"../../../cgi-bin/img/helpModal/0020_compareGeneVariants.png",revision:"79d4919f55b2428acff2327fe02350e0"},{url:"../../../cgi-bin/img/helpModal/0020_compareGeneVariants.webp",revision:"ad09c4a0371ec0bffe346945e49f8794"},{url:"../../../cgi-bin/img/helpModal/0020_sharingSession.png",revision:"6e5ecf270f9f781260d19a6612bf9fc9"},{url:"../../../cgi-bin/img/helpModal/0020_sharingSession.webp",revision:"78e21989ddfca4d510706727a5b8992a"},{url:"../../../cgi-bin/img/landingPage.jpg",revision:"874a480d4121f46051a5ff66b3141f2f"},{url:"../../../cgi-bin/img/landingPage.webp",revision:"a851acf23fb70bc7a781a6a3fc951e1a"},{url:"../../../cgi-bin/rnaSeqMapCoverage.cgi",revision:"e2e5e17d98897a048b3ae0e65b4eb5c1"},{url:"../../../cgi-bin/rnaSeqMapCoverage.html",revision:"93d862f25a6082897824ecc51f2efaac"},{url:"../../../cgi-bin/Submission_page.html",revision:"35289c70fda9c3b6cd0e820be4b15d1a"},{url:"../../../cgi-bin/Submission_page/bulk_template-protection.txt",revision:"8b5a8d10c337f4f9b74cdc6c466f1e11"},{url:"../../../cgi-bin/Submission_page/bulk_template.xlsx",revision:"9a592c19313d16189dc90b7a51e467ed"},{url:"../../../cgi-bin/Submission_page/Images/dropArrow.png",revision:"fc9faee89a24136d2ba232bfe59e619a"},{url:"../../../cgi-bin/Submission_page/submissionStyle.css",revision:"502ac23a2f099a8d1c5a5371cc95f5cc"},{url:"../../../cgi-bin/Submission_page/submissionStyle.min.css",revision:"7ae04fb69283bbdd3a9070afed1079b1"},{url:"../../../cgi-bin/Submission_page/XMLgenerator.js",revision:"75dfd2619cb6006fa40510f30c4166c1"},{url:"../../../cgi-bin/Submission_page/XMLgenerator.min.js",revision:"191739abe40b1a98363a882f6ace52bc"},{url:"../../../cgi-bin/SVGs/__README.txt",revision:"06800956c4ef38dc31c48cd713de296c"},{url:"../../../cgi-bin/SVGs/10dayOldSeedling.min.svg",revision:"9f31c942892426c75ec6c499fa88ff1d"},{url:"../../../cgi-bin/SVGs/10dayOldSeedling.svg",revision:"e7d8f9b74c6218e5d3f0fdd92b9a6c49"},{url:"../../../cgi-bin/SVGs/15dayOldSeedling.min.svg",revision:"ec4aaed66e50685be22fdfb4d388fb38"},{url:"../../../cgi-bin/SVGs/15dayOldSeedling.svg",revision:"5985ad1dbde89a3efca2b706a8bf12ae"},{url:"../../../cgi-bin/SVGs/arrowDefault.min.svg",revision:"4319ab16a880baa3faf273fb4e0c3cb9"},{url:"../../../cgi-bin/SVGs/arrowDefault.svg",revision:"1fb973904ae245ab5dbbbc7c2def3501"},{url:"../../../cgi-bin/SVGs/arrowSortDown.min.svg",revision:"4733ce9fde412229984e4259c3dc6402"},{url:"../../../cgi-bin/SVGs/arrowSortDown.svg",revision:"af42ec3c56b64fddcef50142d9213347"},{url:"../../../cgi-bin/SVGs/arrowSortUp.min.svg",revision:"c5b271cfa1e67b33b48e8d1083661885"},{url:"../../../cgi-bin/SVGs/arrowSortUp.svg",revision:"8f0a05c8335f61bf8f5a670c09dae32a"},{url:"../../../cgi-bin/SVGs/EarlyBuddingFlower.min.svg",revision:"2f31eee63a2f2a8995aa41df36343f5c"},{url:"../../../cgi-bin/SVGs/EarlyBuddingFlower.svg",revision:"1fc5560ee23ff302cd7c9874f4ac7e1b"},{url:"../../../cgi-bin/SVGs/etiolatedSeedling.min.svg",revision:"b07700d578a62fddba77e794f4f0152f"},{url:"../../../cgi-bin/SVGs/etiolatedSeedling.svg",revision:"acf5481e52e88001991e5ab051e63f29"},{url:"../../../cgi-bin/SVGs/Flower.min.svg",revision:"9fcce16d0ddc53938da621818ab49180"},{url:"../../../cgi-bin/SVGs/Flower.svg",revision:"f9732ba6d23200a74a1f34bff512c17f"},{url:"../../../cgi-bin/SVGs/FlowerBud.min.svg",revision:"97d3a2f4639568e946ffff75e4d6919c"},{url:"../../../cgi-bin/SVGs/FlowerBud.svg",revision:"982a4a66d11e4c5abeb43ffc2bf3a492"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment1.min.svg",revision:"143dcc5ae5e99dd7cd845ad351f536e9"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment1.svg",revision:"958f6c24ba4d3f1723a1ff31a175275c"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment12-14.min.svg",revision:"dfd30d4f05ced82fdecebfb498123b4f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment12-14.svg",revision:"515d18d42e02fc615542d90ad6fa2c37"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment15-18.min.svg",revision:"d50c60ee81fbc50cada035eedb13d15f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment15-18.svg",revision:"428887ce400b435b4ed9f18048a1a41f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment19.min.svg",revision:"12ace2c4f8789aed058861b5223a0e3f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment19.svg",revision:"9ee52eaeda7aed787d415cfedcad576d"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment2.min.svg",revision:"e6f3ec29c5f529eea796613d56b02081"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment2.svg",revision:"a2784c197770ed567aff53038ecc2df5"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment3.min.svg",revision:"e78e2c4621584ffd5e9887317e0c3e07"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment3.svg",revision:"2356db079d1e2aeff4cb3f780127c61f"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment4.min.svg",revision:"e39d10520e1b473d504f40ab94f30355"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment4.svg",revision:"38f4377170162b5b9050735685b8b3e7"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment5.min.svg",revision:"daa0d6aeec611e7d329a393d05249d98"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment5.svg",revision:"47c537bd7656646271c3058fab5b604c"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment6-8.min.svg",revision:"227cecf683601c5481b3b23ea4dae352"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment6-8.svg",revision:"40884a50f3ee158df2654876975c9239"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment9-11.min.svg",revision:"fd28130137874c03684972ea25df46b6"},{url:"../../../cgi-bin/SVGs/FlowerDevelopment9-11.svg",revision:"0162c9dd7ff64951045ca9c11593d8cb"},{url:"../../../cgi-bin/SVGs/FlowerParts.min.svg",revision:"00fa5e2b2a9421119d3da588ae6863c4"},{url:"../../../cgi-bin/SVGs/FlowerParts.svg",revision:"b4b5f2a9eb596b9f65226c0a4eae6e4d"},{url:"../../../cgi-bin/SVGs/GerminatingSeed.min.svg",revision:"1554ed3908e2ab727759159b7233a9e9"},{url:"../../../cgi-bin/SVGs/GerminatingSeed.svg",revision:"cd60ab9fa57755fec57d5f525eaac997"},{url:"../../../cgi-bin/SVGs/Internode.min.svg",revision:"dd7cfc194d99bbfdef0dd21be527c22c"},{url:"../../../cgi-bin/SVGs/Internode.svg",revision:"8521a31d2618b5c0515f22c0971cf1da"},{url:"../../../cgi-bin/SVGs/leaf.min.svg",revision:"d6180cfad5b56e135eb3390dca8cd920"},{url:"../../../cgi-bin/SVGs/leaf.svg",revision:"3ad98b0b0df53cfea67ae7a3704fdc69"},{url:"../../../cgi-bin/SVGs/LeafParts.min.svg",revision:"9153dad52413cc82342b03537692503c"},{url:"../../../cgi-bin/SVGs/LeafParts.svg",revision:"832a80b998b15d29518b95988af951a4"},{url:"../../../cgi-bin/SVGs/OpenMenu.min.svg",revision:"9e594db2cb5ce470d55d3d646ec6ff2b"},{url:"../../../cgi-bin/SVGs/OpenMenu.svg",revision:"43067421eb8d322c14d67282e68dd022"},{url:"../../../cgi-bin/SVGs/Other.min.svg",revision:"19742061f618c8e93094f3d520501cd4"},{url:"../../../cgi-bin/SVGs/Other.svg",revision:"ebf43d746577c5c380c66b069cab1511"},{url:"../../../cgi-bin/SVGs/Pollen.min.svg",revision:"3a2d573a3aabdd921eb9f62a41351739"},{url:"../../../cgi-bin/SVGs/Pollen.svg",revision:"0520ad69c33a4a7f44d83124489ae177"},{url:"../../../cgi-bin/SVGs/RootTip.min.svg",revision:"d0c8035d19e75e6061bf85ef283ffdc5"},{url:"../../../cgi-bin/SVGs/RootTip.svg",revision:"065ee0e32637a626323cd1355d8bcd98"},{url:"../../../cgi-bin/SVGs/rosettePlusRoot.min.svg",revision:"01629f245fc9770d1cf307eeb76a288a"},{url:"../../../cgi-bin/SVGs/rosettePlusRoot.svg",revision:"b8f9d68fab16c8e1551aed3560e6b0b5"},{url:"../../../cgi-bin/SVGs/Seed1-4.min.svg",revision:"8f4d22249e0e49ea1989611e2bdecd6e"},{url:"../../../cgi-bin/SVGs/Seed1-4.svg",revision:"ab3c09c00dcda1eab05cf9d2eed42299"},{url:"../../../cgi-bin/SVGs/Seed5-7.min.svg",revision:"e9d48d8e0ab38da1c7eb28a4ee9eb7d9"},{url:"../../../cgi-bin/SVGs/Seed5-7.svg",revision:"e5118ad11087384001358333481f1db4"},{url:"../../../cgi-bin/SVGs/Seed8+.min.svg",revision:"7f9aa8b624378e0b51086a3be05e98d9"},{url:"../../../cgi-bin/SVGs/Seed8+.svg",revision:"79a2db7427367f5e904b2d91fb7f65bb"},{url:"../../../cgi-bin/SVGs/SenescentLeaf.min.svg",revision:"4ad2e62a2c07d8ea22689bf15d49c1e4"},{url:"../../../cgi-bin/SVGs/SenescentLeaf.svg",revision:"b18e0970629fe6719fc6489732d8ddcc"},{url:"../../../cgi-bin/SVGs/ShootApexInflorescense.min.svg",revision:"231e10fca505aded308007081cb4f769"},{url:"../../../cgi-bin/SVGs/ShootApexInflorescense.svg",revision:"74cda237197df019a2bb712bc864f60c"},{url:"../../../cgi-bin/SVGs/ShootApexVegetative-Transition.min.svg",revision:"7aa6768353eab59ccbebe03bbeb3b699"},{url:"../../../cgi-bin/SVGs/ShootApexVegetative-Transition.svg",revision:"d814a9174a3add197e8e94a6f56be2ba"},{url:"../../../cgi-bin/SVGs/Silique1-5.min.svg",revision:"55dad36e25ef03e608f8fb6930ee28ac"},{url:"../../../cgi-bin/SVGs/Silique1-5.svg",revision:"e7423203710a25731ff482612b96cb7b"},{url:"../../../cgi-bin/SVGs/Silique6-10.min.svg",revision:"3aa8fc2376199272178de148b40cbe01"},{url:"../../../cgi-bin/SVGs/Silique6-10.svg",revision:"e0b2582bb9014c51680e7af02fd169a9"},{url:"../../../cgi-bin/SVGs/Stamen.min.svg",revision:"0b15f28ac1f0fe60ab2ebbda3b994cfc"},{url:"../../../cgi-bin/SVGs/Stamen.svg",revision:"48c83749a615cb2e910e3798a8f7823a"},{url:"../../../cgi-bin/SVGs/StigmaAndOvaries.min.svg",revision:"ace4babdf063e4f10afd89ad1b7bf33f"},{url:"../../../cgi-bin/SVGs/StigmaAndOvaries.svg",revision:"261cff0f306ddf17ada8259c1a2e5886"},{url:"../../../cgi-bin/SVGs/WholeSilique.min.svg",revision:"019ebb1f885a12ba47d4d3cc8ffe6660"},{url:"../../../cgi-bin/SVGs/WholeSilique.svg",revision:"aad5c0471dc31efa5f02e9b8da25004e"},{url:"../../../cgi-bin/SVGs/YoungLeaf1-4.min.svg",revision:"ed2b105cba6fc7088cea073d24b5356e"},{url:"../../../cgi-bin/SVGs/YoungLeaf1-4.svg",revision:"2bcead9ed8032bcd82c4482c8f5925dd"},{url:"../../../cgi-bin/SVGs/youngSeedling.min.svg",revision:"1b440a064be9ce47cc6c6a40c89316e2"},{url:"../../../cgi-bin/SVGs/youngSeedling.svg",revision:"d20b1192c8ed306f4b463897fe443098"}],{}),i.registerRoute(/\.(?:png|jpg|jpeg|webp|ico|svg)$/,new i.CacheFirst({cacheName:"images",plugins:[new i.ExpirationPlugin({maxEntries:10})]}),"GET")})); //# sourceMappingURL=sw.js.map diff --git a/cgi-bin/core/serviceWorker/sw.js.map b/cgi-bin/core/serviceWorker/sw.js.map index 0399106..d3c52aa 100644 --- a/cgi-bin/core/serviceWorker/sw.js.map +++ b/cgi-bin/core/serviceWorker/sw.js.map @@ -1 +1 @@ -{"version":3,"file":"sw.js","sources":["../../../../../AppData/Local/Temp/1605e3c93d46a8f8fbaa56835433b58e/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from 'C:/Users/JooHyun/AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from 'C:/Users/JooHyun/AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from 'C:/Users/JooHyun/AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from 'C:/Users/JooHyun/AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"../../../cgi-bin/core/custom.js\",\n \"revision\": \"dc01a450f2a48f37ba6c7b06b2a58cb6\"\n },\n {\n \"url\": \"../../../cgi-bin/core/custom.min.js\",\n \"revision\": \"a3f05a80b124fbe781d64a16e4827f04\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.css\",\n \"revision\": \"a62459a7eb63f39415876be696bd6118\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.min.css\",\n \"revision\": \"a92ffe0efac491b009a7c8e4e15b6861\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.rtl.css\",\n \"revision\": \"20f75e24001ca5ca7b074a2f30587424\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.rtl.min.css\",\n \"revision\": \"e2fc2c59953cdae3468ce175351c7ee7\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.css\",\n \"revision\": \"8fff8325874c2aa6fb8fd5988919a132\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.min.css\",\n \"revision\": \"185ea8d03d4ca4a29061bb874e888bf0\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.rtl.css\",\n \"revision\": \"986ce35c2b5555e18433587b2c098454\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.rtl.min.css\",\n \"revision\": \"93530896b671920b6abc0d35c13fcedd\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.css\",\n \"revision\": \"dad106626326e17a6156072bf75251da\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.min.css\",\n \"revision\": \"e26b2acc296db4ca8056301f8933260c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.rtl.css\",\n \"revision\": \"1d8910ba73226c80ab585479b65bbc81\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.rtl.min.css\",\n \"revision\": \"87671032915d6842953cc42d1b115dc4\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap.css\",\n \"revision\": \"346152dfe092ca2554e4c1c31817461d\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap.min.css\",\n \"revision\": \"94994c66fec8c3468b269dc0cc242151\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap.rtl.css\",\n \"revision\": \"c89fe4420c13b8f3a61b318eaa28505b\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap.rtl.min.css\",\n \"revision\": \"665c3cacfdb309d6ae1c58c959598d5b\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.bundle.js\",\n \"revision\": \"bb2ab2f5bb58154ca9cc11ea437bfdbb\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.bundle.min.js\",\n \"revision\": \"7ccd9d390d31af98110f74f842ea9b32\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.esm.js\",\n \"revision\": \"7c5450bd1e09b3176e598a835aab0ed3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.esm.min.js\",\n \"revision\": \"feadf83193b853084d9820170c4178d5\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.js\",\n \"revision\": \"4706e3135214d1a3f6c28e98c40c0724\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.min.js\",\n \"revision\": \"259e416ef6833be43801b8b68a93b008\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/ddslick/jquery.ddslick.min.js\",\n \"revision\": \"579aa1a3e6a9fef62be6317cf344ce40\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleAnalytics/js.js\",\n \"revision\": \"718970ffdb8f3387fe3b75dea712d2b3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleIdentity/platform.js\",\n \"revision\": \"5721b901edea93fd86f9e9e0c2018cf1\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/icon.css\",\n \"revision\": \"6f8634256d85226258b50650fc224cd2\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/material.green-pink.min.css\",\n \"revision\": \"4f6e9c3486ab96d3ac0fcf978d4ca689\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/material.min.js\",\n \"revision\": \"e2c95ee10e7d144e8d80783e2fe066cf\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIcons-Regular.codepoints\",\n \"revision\": \"09b7f603303209865f4d96b2bd55ffc4\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsOutlined-Regular.codepoints\",\n \"revision\": \"0376ada9f56916f3a17d1146e41ad087\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsOutlined-Regular.otf\",\n \"revision\": \"4b937d057e6da6a4fac02b42784fdb6a\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsRound-Regular.codepoints\",\n \"revision\": \"a3c8569c42beebbce1b9e65781b872ea\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsRound-Regular.otf\",\n \"revision\": \"f8d5e69de9cdc901dab69da2d6463217\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsSharp-Regular.codepoints\",\n \"revision\": \"a3c8569c42beebbce1b9e65781b872ea\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsSharp-Regular.otf\",\n \"revision\": \"5257f80b95fdba0a233f61fef096b3f2\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsTwoTone-Regular.codepoints\",\n \"revision\": \"9e882805fd29cf0fb3db1d4a70d44ef2\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsTwoTone-Regular.otf\",\n \"revision\": \"f2472d5074320cb86f3db2bbf403939d\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/README.md\",\n \"revision\": \"25a552d91155358d3b566d7e453463d3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/html2canvas/html2canvas.min.js\",\n \"revision\": \"4c522c363d0c7bd7d1b74cf3d7069d3a\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/AUTHORS.txt\",\n \"revision\": \"1794c5f87b271c1c770d0262432280b3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/external/jquery/jquery.js\",\n \"revision\": \"2849239b95f5a9a2aea3f6ed9420bb88\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_444444_256x240.png\",\n \"revision\": \"1124739a0c2c6627cb0f5d7ba2899301\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_555555_256x240.png\",\n \"revision\": \"0d03ef9ce2fa942463faf9b52ce317d7\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_777620_256x240.png\",\n \"revision\": \"8ad4071b99569fdd95c6139a70dd6d93\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_777777_256x240.png\",\n \"revision\": \"2782ca0a313283679253862ccc18c9f3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_cc0000_256x240.png\",\n \"revision\": \"80b90ea803c44ef645d16a492daeb42d\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_ffffff_256x240.png\",\n \"revision\": \"062a9bca06ab2b8bcdd37041e9a25a48\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/index.html\",\n \"revision\": \"126b7673a608fef2405e35be7c7dc8e8\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.css\",\n \"revision\": \"9ae98810985d9ba34f30e29479ae5ca4\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.js\",\n \"revision\": \"c870ccb2a1254499c48abc8cc3406bc5\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.min.css\",\n \"revision\": \"7772d9eb820e49b45323c9754a8bb645\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.min.js\",\n \"revision\": \"44eba758ef31708556233c0183cf11d4\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.structure.css\",\n \"revision\": \"2333b49b152895a293b9663499276f82\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.structure.min.css\",\n \"revision\": \"1f9b0525f08663481f0180eb0d1bbada\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.theme.css\",\n \"revision\": \"d4a268bcf7093abbca43c64a63086a50\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.theme.min.css\",\n \"revision\": \"4524765c76a459c232153948ec996c4b\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/LICENSE.txt\",\n \"revision\": \"e0c0d3d883e83f19efa64feb54d5f63d\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/package.json\",\n \"revision\": \"8f611bd349e956bd7f1ef5dd44537ab5\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery/jquery.min.js\",\n \"revision\": \"8fb8fee4fcc3cc86ff6c724154c49c42\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/mathJS/math.min.js\",\n \"revision\": \"e0f3a7dcae9396a25b25f9ca5735cdb3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/colsVisibility.css\",\n \"revision\": \"85cb69538a2f16c8e8c75a0c8ed58819\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/filtersVisibility.css\",\n \"revision\": \"03b19930bd5fab0c6ad7fd58d45391c0\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/tablefilter.css\",\n \"revision\": \"5c120507e1203d85b4bc9e9ae8649dd9\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/default/default.css\",\n \"revision\": \"0bcdf34c350ed0f243d8ae1248c7a7e6\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/default/images/bg_infDiv.jpg\",\n \"revision\": \"aeedf37de581787ecb9e35c4d12a7b89\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/default/images/bg_th.jpg\",\n \"revision\": \"b222875b84265f479c6d26ed00fa52ac\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/images/bg_headers.jpg\",\n \"revision\": \"33b05bbced387c265f4b396f168c467e\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/images/bg_infDiv.jpg\",\n \"revision\": \"aeedf37de581787ecb9e35c4d12a7b89\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/mytheme.css\",\n \"revision\": \"2eaef0e87a73cfe26ce63dc6aa67fce0\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/skyblue/skyblue.css\",\n \"revision\": \"7493a5cd4dc78b9ffa9936a39f56813a\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/tablefilter.js\",\n \"revision\": \"cce18982cf35d7c5e3c9d18f6a30192d\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/tablefilter.min.js\",\n \"revision\": \"ad5c2e306c5efad996d0648ad86e220c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/tf-1.js\",\n \"revision\": \"f501a5b6c8b7dc0d51e7575bbb009764\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableSorter/tablesorter.js\",\n \"revision\": \"d227e92e7f4d51bd7486f94d931a0fb0\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableSorter/tablesorter.min.js\",\n \"revision\": \"26e652b67ab8cad90da399065df0f44f\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableSorter/tsorter.min.js\",\n \"revision\": \"9d40a761a46ac7195dd34ecbc5ecb39f\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/bower.json\",\n \"revision\": \"79787e672bb7dc33e2a2e0bdc8467a38\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/dist/jquery.tabletoCSV.js\",\n \"revision\": \"be2d4e46a4d6e02526a1be7609baa5a9\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/example.html\",\n \"revision\": \"9b17ab0cdbf7acd33dfcfff87c410d2b\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/gulpfile.js\",\n \"revision\": \"865db57f0fbd64c80b24c7a327e2416c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/jquery.tabletoCSV.js\",\n \"revision\": \"5e99208056679f61875af2d4762f05fb\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/package.json\",\n \"revision\": \"ef0258ebdf3f9d244d7d38c4c35ec723\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/README.md\",\n \"revision\": \"d581efd7f3de48bdf77206307df41034\"\n },\n {\n \"url\": \"../../../cgi-bin/core/serviceWorker/sw.js\",\n \"revision\": \"a6a52b4f57e9b45ecde0c4d7b7d6facd\"\n },\n {\n \"url\": \"../../../cgi-bin/core/style.css\",\n \"revision\": \"896d8dfa6eb2226945d16df9a73792e3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/style.min.css\",\n \"revision\": \"873a2590206b58e52ed3e12e9ef2b1f1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/ERR274310/accepted_hits.bam.bai\",\n \"revision\": \"d8ff8e5c3f9e5d57dd6752e8a4ce4d70\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR547531/accepted_hits.bam.bai\",\n \"revision\": \"78a71ec4d37648170e140ee08fbd9d8e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR548277/accepted_hits.bam.bai\",\n \"revision\": \"fb90c6ea2957278570f1568a25c986b9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR847503/accepted_hits.bam.bai\",\n \"revision\": \"75c9f450e79682c3b13b2024cf0ee3a4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR847504/accepted_hits.bam.bai\",\n \"revision\": \"deb7e829dfe7fd832b58dbfcb6672c99\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR847505/accepted_hits.bam.bai\",\n \"revision\": \"d5746341a9b0e55858c2b6c9de591c93\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR847506/accepted_hits.bam.bai\",\n \"revision\": \"f069609fe7f95444b6a7c9e5ae18e8de\"\n },\n {\n \"url\": \"../../../cgi-bin/data/bamdata_araport11.xml\",\n \"revision\": \"a5df10ccc83203d3919709be0b83c3b3\"\n },\n {\n \"url\": \"../../../cgi-bin/data/bamdata_Developmental_transcriptome.xml\",\n \"revision\": \"b08eb7a10c0b7ce002844fa61d95fbdd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/carpel/SRR1207194/accepted_hits.bam.bai\",\n \"revision\": \"870f3b85d4f868f4fdbe05fb1863c2fc\"\n },\n {\n \"url\": \"../../../cgi-bin/data/carpel/SRR1207195/accepted_hits.bam.bai\",\n \"revision\": \"5c52f9ca7b4a4dada15a4388af05667a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR1019436/accepted_hits.bam.bai\",\n \"revision\": \"c508519aaf261bbe4bae0850ae07cdf1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR1019437/accepted_hits.bam.bai\",\n \"revision\": \"7c51952c497f17c4bb411145823f2e5f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR1049784/accepted_hits.bam.bai\",\n \"revision\": \"d7fe2ac77b8b6de07a9c879d5e6439b9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR477075/accepted_hits.bam.bai\",\n \"revision\": \"30f3e1434baca24f28a5e864e1a55460\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR477076/accepted_hits.bam.bai\",\n \"revision\": \"43f02a5a6992516f004b79b466438a60\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR493237/accepted_hits.bam.bai\",\n \"revision\": \"f8f55d8ae90fe7906153f7418c2544fe\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR493238/accepted_hits.bam.bai\",\n \"revision\": \"63add683654ca734f2a475cb01c41338\"\n },\n {\n \"url\": \"../../../cgi-bin/data/flower/SRR314815/accepted_hits.bam.bai\",\n \"revision\": \"e3f8417ab8bda67e6c89b85373a32b57\"\n },\n {\n \"url\": \"../../../cgi-bin/data/flower/SRR800753/accepted_hits.bam.bai\",\n \"revision\": \"5c6cf8e55d8a5c2610fc8efc989e741f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/flower/SRR800754/accepted_hits.bam.bai\",\n \"revision\": \"3fa881db3c490718c6da12945a1ba515\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581336/accepted_hits.bam.bai\",\n \"revision\": \"2aad838806229e82f39ca6abf4c2be39\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581345/accepted_hits.bam.bai\",\n \"revision\": \"487fb21dd9e7c98a92fbcd2086496d31\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581346/accepted_hits.bam.bai\",\n \"revision\": \"d973b32bd023a007b0f31cd091f0d081\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581347/accepted_hits.bam.bai\",\n \"revision\": \"488595888b723be2b990fc9b9c81aef4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581352/accepted_hits.bam.bai\",\n \"revision\": \"6949c25a40caadf298f33ac95535a508\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581356/accepted_hits.bam.bai\",\n \"revision\": \"77170d227901be28b37c59949590a77f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581383/accepted_hits.bam.bai\",\n \"revision\": \"9b46c6746aab2804696866bf21388f67\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581388/accepted_hits.bam.bai\",\n \"revision\": \"388e486448c30405987a1d9fc4aef94a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581499/accepted_hits.bam.bai\",\n \"revision\": \"8cc4b6a99129f40efce166ef8ac4d8b1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581591/accepted_hits.bam.bai\",\n \"revision\": \"59646ccc0570f9cdd9df0f0c20035e0a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581639/accepted_hits.bam.bai\",\n \"revision\": \"9ab4c753c18e3a2c732fd4f0eec1f552\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581672/accepted_hits.bam.bai\",\n \"revision\": \"0200f9733451f8f5b414109c654c8a64\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581676/accepted_hits.bam.bai\",\n \"revision\": \"440ce86e6787bb141ab78e5486314b16\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581678/accepted_hits.bam.bai\",\n \"revision\": \"8521fb87df46fb22e55d1bf06c4eea67\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581679/accepted_hits.bam.bai\",\n \"revision\": \"570e4432eb389dd63099ece98bfbcb86\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581680/accepted_hits.bam.bai\",\n \"revision\": \"652e0c03f1cefc3984c737c66f693a16\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581681/accepted_hits.bam.bai\",\n \"revision\": \"0471de078fb53ddff3f114d2b0a8c177\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581682/accepted_hits.bam.bai\",\n \"revision\": \"5d13fbff7da906223a6d05fff5a0a74c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581683/accepted_hits.bam.bai\",\n \"revision\": \"5642dc33c845a6944a53fb5d0e3a055e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581684/accepted_hits.bam.bai\",\n \"revision\": \"180ccd8f61146dc4853a087ea2cbb11d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581685/accepted_hits.bam.bai\",\n \"revision\": \"7839f7ef2462f74a24550cba8bd332ed\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581686/accepted_hits.bam.bai\",\n \"revision\": \"9c48d2772c343dde967720075fdc837d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581687/accepted_hits.bam.bai\",\n \"revision\": \"5d1e1423fd72026edce33eda174ed214\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581688/accepted_hits.bam.bai\",\n \"revision\": \"7077699948ed771450f49307a8ee5ebd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581689/accepted_hits.bam.bai\",\n \"revision\": \"09e893deca8b5e8baf92861a8d34a998\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581690/accepted_hits.bam.bai\",\n \"revision\": \"c94b530cb81772bf9ce7aece36fe12a5\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581691/accepted_hits.bam.bai\",\n \"revision\": \"b3d1c828dfee796b1f4e5dc75309441e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581692/accepted_hits.bam.bai\",\n \"revision\": \"33006ddb1d2aa2bb2a1110c33b3f6ee7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581693/accepted_hits.bam.bai\",\n \"revision\": \"7e4c8d1d04f57c35da745ab8449b2ccc\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581694/accepted_hits.bam.bai\",\n \"revision\": \"cee838e97c0d0bdaeca1f084280de0f7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581695/accepted_hits.bam.bai\",\n \"revision\": \"488b347be08057d992408c4ab68a292b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581696/accepted_hits.bam.bai\",\n \"revision\": \"a8d5692b9e39dadba35b0d8c35bdcbfb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581697/accepted_hits.bam.bai\",\n \"revision\": \"78d6e0f412dd9687427aad3f914c8a8b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581698/accepted_hits.bam.bai\",\n \"revision\": \"8e4b80c61c86a64a835d8d954ea738cf\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581699/accepted_hits.bam.bai\",\n \"revision\": \"505ee58d728cc0eca73b57d49f20f33e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581700/accepted_hits.bam.bai\",\n \"revision\": \"78e547956c95af206abc66f6ab77701d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581701/accepted_hits.bam.bai\",\n \"revision\": \"c9902e9e76b879845b666e30cf0399c1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581702/accepted_hits.bam.bai\",\n \"revision\": \"b157bbb93fa14c04c5c3da8c93541d0e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581703/accepted_hits.bam.bai\",\n \"revision\": \"4df3f8bd8ad8ca83fa12b8533b0ac2ea\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581704/accepted_hits.bam.bai\",\n \"revision\": \"92914db2852ad3aafc0e3dad5fd524a4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581705/accepted_hits.bam.bai\",\n \"revision\": \"a33ced7b8900bca138c2bdab938456f2\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581706/accepted_hits.bam.bai\",\n \"revision\": \"66b2d4aa967446f1d2ec4f0cab84ec0a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581707/accepted_hits.bam.bai\",\n \"revision\": \"d1c39413154c03d534dd6f70c6e0f1ce\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581708/accepted_hits.bam.bai\",\n \"revision\": \"835b7eb56eff3696d97f1d3745a83d41\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581709/accepted_hits.bam.bai\",\n \"revision\": \"6d166a6e8b52a7cfa299c7ae16755a1b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581710/accepted_hits.bam.bai\",\n \"revision\": \"c6032b9db761caebadd78e778faa4bcf\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581711/accepted_hits.bam.bai\",\n \"revision\": \"a9215e6dcbc3fd3f80ada793452e5b10\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581712/accepted_hits.bam.bai\",\n \"revision\": \"ab1976edab1deb750c3bf4f296ada0d1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581713/accepted_hits.bam.bai\",\n \"revision\": \"636f3211b89e72b469cf625086d68006\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581714/accepted_hits.bam.bai\",\n \"revision\": \"52b32b3baf1eb9327cb80033552cb969\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581715/accepted_hits.bam.bai\",\n \"revision\": \"91ac3109fccfda58d27f5b167c2f0805\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581716/accepted_hits.bam.bai\",\n \"revision\": \"74dc20248bae563aec599238fe35453e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581717/accepted_hits.bam.bai\",\n \"revision\": \"8640331f5ff7b4e612e9acc5a5e50977\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581719/accepted_hits.bam.bai\",\n \"revision\": \"8cde9d7d535b523741197fd625cfa8b9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581720/accepted_hits.bam.bai\",\n \"revision\": \"618c617c4985ebcb204c5d9e99bf9bbc\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581721/accepted_hits.bam.bai\",\n \"revision\": \"2930a5d860636a531d78a4f438d58707\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581724/accepted_hits.bam.bai\",\n \"revision\": \"a69f849b85f8c267a03a7b204cbbdf7b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581726/accepted_hits.bam.bai\",\n \"revision\": \"d8d40289ae1f2cf050ae4700919df7db\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581727/accepted_hits.bam.bai\",\n \"revision\": \"a6af224459198943e2aebff55a8dece1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581728/accepted_hits.bam.bai\",\n \"revision\": \"2e86bba53e3ce6bca05156f97bccb3e6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581730/accepted_hits.bam.bai\",\n \"revision\": \"310e41fb56d3d0e1ef80ba2e8336bf85\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581731/accepted_hits.bam.bai\",\n \"revision\": \"09107906661194d4dfcd804962edb88e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581732/accepted_hits.bam.bai\",\n \"revision\": \"36b422ade169eddc32e1e864feadf12b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581733/accepted_hits.bam.bai\",\n \"revision\": \"704e3417e99199a509915484c919355f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581734/accepted_hits.bam.bai\",\n \"revision\": \"f3f30f6fc9aff334bfc59c0e3f54f401\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581735/accepted_hits.bam.bai\",\n \"revision\": \"b4abd243467ec21606984ad4bc30cbe8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581736/accepted_hits.bam.bai\",\n \"revision\": \"e103ce27d1c4265fcf2918d8a31a247f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581737/accepted_hits.bam.bai\",\n \"revision\": \"b9c93ab8f75bb6d1db371adc9b52784d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581738/accepted_hits.bam.bai\",\n \"revision\": \"6eb5a0be35f2f495081dfafeb1958192\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581740/accepted_hits.bam.bai\",\n \"revision\": \"57cfb501d4e8cf400caecdda54c44802\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581831/accepted_hits.bam.bai\",\n \"revision\": \"1fbab6615945082f91adf71a14534761\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581833/accepted_hits.bam.bai\",\n \"revision\": \"9e6df907513395dee880e2d389d566b6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581834/accepted_hits.bam.bai\",\n \"revision\": \"971f3be532a2067cd0d00f8f281e8f8b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581835/accepted_hits.bam.bai\",\n \"revision\": \"ddac6d0152d39a5f094f4f01f67c6f9f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581836/accepted_hits.bam.bai\",\n \"revision\": \"afe55c01af26aee2810d0d0c1f29418e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581837/accepted_hits.bam.bai\",\n \"revision\": \"fadf9d90005b7b31e8af13190d5e532b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581838/accepted_hits.bam.bai\",\n \"revision\": \"1dc83e108f17822a283afeedb4d56d4b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581839/accepted_hits.bam.bai\",\n \"revision\": \"da5258dc67cfcfbb98659a8a582438ea\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581840/accepted_hits.bam.bai\",\n \"revision\": \"0eb861b1083f7256f2e81d2ec65c6d8c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581841/accepted_hits.bam.bai\",\n \"revision\": \"ce929ae66c3fa306200ba9ce66cfd029\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581842/accepted_hits.bam.bai\",\n \"revision\": \"b29d65973e658c219ff995bda3b399f7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581843/accepted_hits.bam.bai\",\n \"revision\": \"b87d15a5d529a16d51861ff952bc194c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581844/accepted_hits.bam.bai\",\n \"revision\": \"03655cbde5d7c89442c2667a9065f68e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581845/accepted_hits.bam.bai\",\n \"revision\": \"0f7dc11b370d2fb2e4e62b777b17c3f8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581846/accepted_hits.bam.bai\",\n \"revision\": \"184305447b5e39bd0d57daa91f9474cb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581847/accepted_hits.bam.bai\",\n \"revision\": \"07553f3a6b5538eb886d9d67e4aa7333\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581848/accepted_hits.bam.bai\",\n \"revision\": \"fccac4c7fcd296e9a521106ec36d57f2\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581849/accepted_hits.bam.bai\",\n \"revision\": \"0c6252fbc89bdbaeaa9120261a012aaf\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581850/accepted_hits.bam.bai\",\n \"revision\": \"860370410e3e482648a32e0554e54a27\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581851/accepted_hits.bam.bai\",\n \"revision\": \"c397db1086e1add97b208d238f5a6b82\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581852/accepted_hits.bam.bai\",\n \"revision\": \"474b5872ff0b1f350204d0f602ce00fd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581853/accepted_hits.bam.bai\",\n \"revision\": \"9f9154f89bd85e73351540c8390e556c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581854/accepted_hits.bam.bai\",\n \"revision\": \"d5a82d9c3fe4d53604a8f0196bc0de80\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581855/accepted_hits.bam.bai\",\n \"revision\": \"c70bfc603643c365151c24e3a628b7e1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581856/accepted_hits.bam.bai\",\n \"revision\": \"8ff962507f8820742f374be11fd1ca6d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581857/accepted_hits.bam.bai\",\n \"revision\": \"ee0bc291ab07d844b48dbd0d793b8619\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581858/accepted_hits.bam.bai\",\n \"revision\": \"e736b944ea00165f7874bb250797d477\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581859/accepted_hits.bam.bai\",\n \"revision\": \"d572af99f51493d17ef602c6f59aadef\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581860/accepted_hits.bam.bai\",\n \"revision\": \"e5ac1c2f394872073ffe748ba04cb0a0\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581861/accepted_hits.bam.bai\",\n \"revision\": \"7932a0481ba9d7552efff8161539c251\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581862/accepted_hits.bam.bai\",\n \"revision\": \"4b77cb6e1f1f0d4fcf4b9ffaa502b128\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581863/accepted_hits.bam.bai\",\n \"revision\": \"c6f233420cc67cc63b762b53f583abf1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581864/accepted_hits.bam.bai\",\n \"revision\": \"366d829918a077f69b803391f14a06ba\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581865/accepted_hits.bam.bai\",\n \"revision\": \"3fec4452f463c61d1d7f796042c00f37\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581866/accepted_hits.bam.bai\",\n \"revision\": \"ced32108c5c55f0912810208ea91a34c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581867/accepted_hits.bam.bai\",\n \"revision\": \"bb34514f1897edef1c4374f44bc29f7e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581868/accepted_hits.bam.bai\",\n \"revision\": \"c7bc60a6a54361275bd1f021bf581b9e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581869/accepted_hits.bam.bai\",\n \"revision\": \"0a7b079b87d10246885cf669b1da4813\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581870/accepted_hits.bam.bai\",\n \"revision\": \"4a26a725b44d82ec54fa41f32f22ab78\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581871/accepted_hits.bam.bai\",\n \"revision\": \"f0f0a01cf6ab707cfad1f530ad67cb7d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581872/accepted_hits.bam.bai\",\n \"revision\": \"05cfcf7ef950f00d486e84666fc3ad53\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581873/accepted_hits.bam.bai\",\n \"revision\": \"9ed51190a0a0aa7cba089e588f9f7f66\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581874/accepted_hits.bam.bai\",\n \"revision\": \"dc8af3f8a26a69b788ccc9d3fec3c29e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581875/accepted_hits.bam.bai\",\n \"revision\": \"aebee6b065bbae492dae8e68711b7fe8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581876/accepted_hits.bam.bai\",\n \"revision\": \"2f505fa0bb1376a49311645afc86a5f4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581877/accepted_hits.bam.bai\",\n \"revision\": \"03a30a89fa8853122efc4775fe07a509\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581878/accepted_hits.bam.bai\",\n \"revision\": \"054faa0faf034728ebac3711db6f1432\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581879/accepted_hits.bam.bai\",\n \"revision\": \"923b66da670d0c8c7edcf6c0899b5dee\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581880/accepted_hits.bam.bai\",\n \"revision\": \"db42ad0a672ffad4b4df243b655aeb8f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581881/accepted_hits.bam.bai\",\n \"revision\": \"6bb77dd0f8efa2b62f3661c3471ae92c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581882/accepted_hits.bam.bai\",\n \"revision\": \"ba56ffbe86b118a90f8e83e62ba2948f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581883/accepted_hits.bam.bai\",\n \"revision\": \"bec9cc75981bd29a3f3f1ca584aa20e1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581884/accepted_hits.bam.bai\",\n \"revision\": \"08e29049e70b6ab901005f50a71ed73b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581885/accepted_hits.bam.bai\",\n \"revision\": \"17d09c7b79e1492e79606c4e57dfe515\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581886/accepted_hits.bam.bai\",\n \"revision\": \"391e780261c28960836778970f53fda9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581887/accepted_hits.bam.bai\",\n \"revision\": \"795feb34895e7539c7af987d2f86d72f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581888/accepted_hits.bam.bai\",\n \"revision\": \"44495c91e78cea2358fd99afc519ea78\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581889/accepted_hits.bam.bai\",\n \"revision\": \"9c41c5af458228b23fc18021e2aab107\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581890/accepted_hits.bam.bai\",\n \"revision\": \"c1280398bbe5480c99d56a92120d23a9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581891/accepted_hits.bam.bai\",\n \"revision\": \"fb2b44a6951eb303835775bc25ed7367\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581892/accepted_hits.bam.bai\",\n \"revision\": \"96ec3ac57ddf7ddabb51b999562b2886\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581893/accepted_hits.bam.bai\",\n \"revision\": \"220a1f9506b669a01aa7b135bba30499\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581894/accepted_hits.bam.bai\",\n \"revision\": \"767e98c3404cad841d09f3949856e5c3\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581895/accepted_hits.bam.bai\",\n \"revision\": \"04495589b536ddd994f8c7966dabe5f1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581896/accepted_hits.bam.bai\",\n \"revision\": \"28954f7aa615a6cabdf8e6e12f5fdf8e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581897/accepted_hits.bam.bai\",\n \"revision\": \"cc83124a4ecc62643b4a0ed584b070df\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581898/accepted_hits.bam.bai\",\n \"revision\": \"a8a4147389df536f32b281993dc2e26e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581899/accepted_hits.bam.bai\",\n \"revision\": \"89b326f5425969ba5d9b1d3d56362676\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724649/accepted_hits.bam.bai\",\n \"revision\": \"8baa4f21c5956c58f0f1fdd947a5a7a8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724650/accepted_hits.bam.bai\",\n \"revision\": \"0cd349d26d33bac76a6ba7cc02a9f7ce\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724651/accepted_hits.bam.bai\",\n \"revision\": \"43535acea7c38adaac38f99b65b055ed\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724652/accepted_hits.bam.bai\",\n \"revision\": \"06c5f5abcb7d62c9a667943f8173a8e1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724663/accepted_hits.bam.bai\",\n \"revision\": \"5cf07e5cef90fe80931333379f239e62\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724668/accepted_hits.bam.bai\",\n \"revision\": \"556998139485bbaa76df19c1e17eac13\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724737/accepted_hits.bam.bai\",\n \"revision\": \"b4edd498c3872994295129df84199381\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724739/accepted_hits.bam.bai\",\n \"revision\": \"17bcf5e4f46a924e8e7ff88558b983d0\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724741/accepted_hits.bam.bai\",\n \"revision\": \"fa291751450abd9743680d71140d60af\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724768/accepted_hits.bam.bai\",\n \"revision\": \"12d0e17110c65474208131e4c29f1cf6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724774/accepted_hits.bam.bai\",\n \"revision\": \"ee127920880f9b686fc2985f03b4e3e6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724778/accepted_hits.bam.bai\",\n \"revision\": \"fc59d363965ee5d9e4d435ad4409ec7c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724782/accepted_hits.bam.bai\",\n \"revision\": \"2408bd4c49bfc546cc17eae41819e5f1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724785/accepted_hits.bam.bai\",\n \"revision\": \"f56203f5e8560818a44be74cbdce952b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724786/accepted_hits.bam.bai\",\n \"revision\": \"4251fbd2e0727b157e290b4fb3b371ff\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724787/accepted_hits.bam.bai\",\n \"revision\": \"d4b7b16cbd4c2e41585f0869a3842d17\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724798/accepted_hits.bam.bai\",\n \"revision\": \"c781661b68ff3cd0d1fa5aa0786c102a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724806/accepted_hits.bam.bai\",\n \"revision\": \"a2f3dbf70a549a9c20274299aa50199e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724814/accepted_hits.bam.bai\",\n \"revision\": \"c90091646dc7f2f9c690a991b3157bed\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725446/accepted_hits.bam.bai\",\n \"revision\": \"3a20a84fe3333bddcad49a74d6bb7bf9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725458/accepted_hits.bam.bai\",\n \"revision\": \"50c830b0eb15515e4b65201c452cb2fb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725471/accepted_hits.bam.bai\",\n \"revision\": \"f6427d97f49604538efa669329cbb740\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725482/accepted_hits.bam.bai\",\n \"revision\": \"b4d0ea04b6bdb0939bee8973fe29900d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725493/accepted_hits.bam.bai\",\n \"revision\": \"8e6cafd4dde819c51808c6bc041b4970\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725503/accepted_hits.bam.bai\",\n \"revision\": \"f2ea494bca260f8f410c4af6ef17c0c2\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725516/accepted_hits.bam.bai\",\n \"revision\": \"42b43c459060805ee53db2ef1a205743\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725527/accepted_hits.bam.bai\",\n \"revision\": \"5a16a028294ddcce1baee37c68d22e6e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725538/accepted_hits.bam.bai\",\n \"revision\": \"5f1e89581f2f9e102d9376095c2ca385\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725550/accepted_hits.bam.bai\",\n \"revision\": \"8d72055c5cb84569ffade08a4a7b53a1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725561/accepted_hits.bam.bai\",\n \"revision\": \"ac491f41f4cec20467dbeced8ffe29a8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR847501/accepted_hits.bam.bai\",\n \"revision\": \"1786f46eeb38171f37ca9244d8cb4e70\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR847502/accepted_hits.bam.bai\",\n \"revision\": \"0ab4f36580722140c539faa58755c45b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1105822/accepted_hits.bam.bai\",\n \"revision\": \"1f59203e7e4ef21a90df9de277af42e9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1105823/accepted_hits.bam.bai\",\n \"revision\": \"3f8117df3e1f23fa8014a9e16ace9d50\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1159821/accepted_hits.bam.bai\",\n \"revision\": \"6fceded0b219c6f48d25d83c9602c530\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1159827/accepted_hits.bam.bai\",\n \"revision\": \"e6249e031b0cfab6fc2e0eb5f038d7a9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1159837/accepted_hits.bam.bai\",\n \"revision\": \"df333cd81caeff1ee3c80e0e9aac451b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR314813/accepted_hits.bam.bai\",\n \"revision\": \"c3dae9dfcd5939f53febb58b99ad6358\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446027/accepted_hits.bam.bai\",\n \"revision\": \"58547866c1feb44d34a9dcb2faa02b07\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446028/accepted_hits.bam.bai\",\n \"revision\": \"d605894f0b05f858f73ec7de7fb3bfc9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446033/accepted_hits.bam.bai\",\n \"revision\": \"8bb76fecb54e558f07830f826dc0ef21\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446034/accepted_hits.bam.bai\",\n \"revision\": \"e978cf50eeec836ba7ec871c6cb599f7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446039/accepted_hits.bam.bai\",\n \"revision\": \"8fcc2d21df295b917b37b86aaa43eed1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446040/accepted_hits.bam.bai\",\n \"revision\": \"41e4d4e4d25127017b93ee5cf737d26a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446484/accepted_hits.bam.bai\",\n \"revision\": \"0bac90204e0f8f659e4aa7163184d3e8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446485/accepted_hits.bam.bai\",\n \"revision\": \"826092002208472ac62f1242c2bd7c8f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446486/accepted_hits.bam.bai\",\n \"revision\": \"094540bb352f5d0d8c1cf4cbd3359651\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446487/accepted_hits.bam.bai\",\n \"revision\": \"b09303aa7c5bc090597a6029c589d6fc\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR493036/accepted_hits.bam.bai\",\n \"revision\": \"ec40f2e69a1ac9d779c432f29881d275\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR493097/accepted_hits.bam.bai\",\n \"revision\": \"f3019bd4b6435fc864ef6e54b1d40896\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR493098/accepted_hits.bam.bai\",\n \"revision\": \"3b9cf2e84c411d2f61dd959a327fcad9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR493101/accepted_hits.bam.bai\",\n \"revision\": \"972a5b0c96d3b9b2677606db5292c756\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR764885/accepted_hits.bam.bai\",\n \"revision\": \"3e7bdeb3c9c126bc4fa8f5785dc5d8f7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR924656/accepted_hits.bam.bai\",\n \"revision\": \"9e51595e33b3931e043105c076fcc513\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR934391/accepted_hits.bam.bai\",\n \"revision\": \"54804fe3e5a5568eaf4b9cd993731dd0\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR942022/accepted_hits.bam.bai\",\n \"revision\": \"af83e38f1a885527c5ea88c1deb54985\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR070570/accepted_hits.bam.bai\",\n \"revision\": \"253a622fbd7b15730a85f46f9de217ab\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR070571/accepted_hits.bam.bai\",\n \"revision\": \"a4a7d70a2a5d6790230f14117069920b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR1001909/accepted_hits.bam.bai\",\n \"revision\": \"00b95124ac0bad8b3b0514cb5392ab0d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR1001910/accepted_hits.bam.bai\",\n \"revision\": \"bf5c80add2ebaf3eaac41b6b4ac753ab\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR1019221/accepted_hits.bam.bai\",\n \"revision\": \"c3ab9a0f264ce038994b448e8e210a24\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR345561/accepted_hits.bam.bai\",\n \"revision\": \"352ad71d4b0b2661214c376dedd1f507\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR345562/accepted_hits.bam.bai\",\n \"revision\": \"87356040f53ae67d60f8128835a01777\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR346552/accepted_hits.bam.bai\",\n \"revision\": \"d9aef462648ec0271fa1dc2088b0e7af\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR346553/accepted_hits.bam.bai\",\n \"revision\": \"691e6bd9eda925f13420716cf13cf54e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR394082/accepted_hits.bam.bai\",\n \"revision\": \"fb4ac4b98e5a93ba0282a9acf69d77e5\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR504179/accepted_hits.bam.bai\",\n \"revision\": \"66ff5551328a2ee8b8b1f9f375d99eb4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR504180/accepted_hits.bam.bai\",\n \"revision\": \"9b82c3a83372fd7dea005dd5dc4a2b63\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR504181/accepted_hits.bam.bai\",\n \"revision\": \"188411c66586bad65187f8dba8c730ec\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR515073/accepted_hits.bam.bai\",\n \"revision\": \"5d24f2df4d013fee1d036b8d1734beeb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR515074/accepted_hits.bam.bai\",\n \"revision\": \"1d1cea0d2451daa8e70354308ce70c44\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR527164/accepted_hits.bam.bai\",\n \"revision\": \"9ec43b81497b19c111923e5e79d78277\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR527165/accepted_hits.bam.bai\",\n \"revision\": \"adb3fae17b08eeda152883c26580e20a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR584115/accepted_hits.bam.bai\",\n \"revision\": \"7400525012004e68bd52e5d2bbfa141c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR584121/accepted_hits.bam.bai\",\n \"revision\": \"ee964b622cab2ecc6109abc9428bfaa8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR584129/accepted_hits.bam.bai\",\n \"revision\": \"01c635ec5fdc12f4cbfab52cc7806542\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR584134/accepted_hits.bam.bai\",\n \"revision\": \"0f0cad62ae473ad66bf24ff674add1d6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653555/accepted_hits.bam.bai\",\n \"revision\": \"3b1a341a7473577ba673be1aa1669cc8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653556/accepted_hits.bam.bai\",\n \"revision\": \"24de0f8a0c67cd6574983ba45e85b92b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653557/accepted_hits.bam.bai\",\n \"revision\": \"9db6d46a42228a4ec0305745a63ba69d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653561/accepted_hits.bam.bai\",\n \"revision\": \"fa37f25b5cfd8d715cad359490d30718\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653562/accepted_hits.bam.bai\",\n \"revision\": \"a46d3b87ec2ca397214593cb18d8a1ef\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653563/accepted_hits.bam.bai\",\n \"revision\": \"a548597961db9d7673e2b39b46c7da5e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653564/accepted_hits.bam.bai\",\n \"revision\": \"6d221fe1e7e6210a91f1c6d109828346\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653565/accepted_hits.bam.bai\",\n \"revision\": \"f272c81e2da94d9658f8dbd1f1275bfb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653566/accepted_hits.bam.bai\",\n \"revision\": \"232da2bd399f00b0bae9e1ebb48f6ec8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653567/accepted_hits.bam.bai\",\n \"revision\": \"a1da73954d0235572da3494ab0fdfe1c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653568/accepted_hits.bam.bai\",\n \"revision\": \"3722d0f942c435fa2b1692e29aeb280c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653569/accepted_hits.bam.bai\",\n \"revision\": \"500616f990bd93198665b838d6912237\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653570/accepted_hits.bam.bai\",\n \"revision\": \"418da1b3b92e0e17e65cd856376c8826\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653571/accepted_hits.bam.bai\",\n \"revision\": \"8e01bd9ba6b7657dd6382dde31dcc6b1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653572/accepted_hits.bam.bai\",\n \"revision\": \"e7310649f000c637c86f1c14a82e17fd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653573/accepted_hits.bam.bai\",\n \"revision\": \"ccfe9ea83af958f7e1569c6a286b8af2\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653574/accepted_hits.bam.bai\",\n \"revision\": \"aca14870d5fd007dac23fd31d0a5a29b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653575/accepted_hits.bam.bai\",\n \"revision\": \"261f43be2af3d979b6e8c9862acbe1b0\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653576/accepted_hits.bam.bai\",\n \"revision\": \"fb871e4c3ae5712a1aa29183e9e2763f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653577/accepted_hits.bam.bai\",\n \"revision\": \"1e77eeb194d6800471943dd43cbd48f1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653578/accepted_hits.bam.bai\",\n \"revision\": \"8c8edf8c27885a6db191428a9b8d488d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR797194/accepted_hits.bam.bai\",\n \"revision\": \"f3d525e421eb46ba85b4bee2b1de7d11\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR797230/accepted_hits.bam.bai\",\n \"revision\": \"bac1da05ebeffa9efe92dddc52f3f154\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR833246/accepted_hits.bam.bai\",\n \"revision\": \"22af78cd960848cdafd011189bb772e1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/pollen/SRR847501/accepted_hits.bam.bai\",\n \"revision\": \"ce884bf17bd69e891c1f6096f8e3fb53\"\n },\n {\n \"url\": \"../../../cgi-bin/data/pollen/SRR847502/accepted_hits.bam.bai\",\n \"revision\": \"80d8fb863f5d84bddbf0adbf30d08957\"\n },\n {\n \"url\": \"../../../cgi-bin/data/RAM/SRR1260032/accepted_hits.bam.bai\",\n \"revision\": \"f2be3c072459c2fc01370e4ae05a1a48\"\n },\n {\n \"url\": \"../../../cgi-bin/data/RAM/SRR1260033/accepted_hits.bam.bai\",\n \"revision\": \"89dfc110834c249f6f12a84888c629fe\"\n },\n {\n \"url\": \"../../../cgi-bin/data/RAM/SRR1261509/accepted_hits.bam.bai\",\n \"revision\": \"cdc7376677d280fa65112d53e83b4839\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401413/accepted_hits.bam.bai\",\n \"revision\": \"e84df8b1900612a62be329b1e5aff079\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401414/accepted_hits.bam.bai\",\n \"revision\": \"d5a98622a5b0532db79cb3cf03c44fac\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401415/accepted_hits.bam.bai\",\n \"revision\": \"1576be1f1b1d098f9a3eda42c5ff178d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401416/accepted_hits.bam.bai\",\n \"revision\": \"1c8288c1340a1e47876dc658280fecac\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401417/accepted_hits.bam.bai\",\n \"revision\": \"5c28720a2241d533ef8be526f9dce343\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401418/accepted_hits.bam.bai\",\n \"revision\": \"6d8e83c385c5c873e09957288020b6b6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401419/accepted_hits.bam.bai\",\n \"revision\": \"bf3364e1b8dd0be87d1e549b7f2c5641\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401420/accepted_hits.bam.bai\",\n \"revision\": \"5f0b7ffe4eb51644ec176a64448fa73e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401421/accepted_hits.bam.bai\",\n \"revision\": \"5fda291436659903ed652ec1c34b6900\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/ERR274309/accepted_hits.bam.bai\",\n \"revision\": \"bb50e2ae0ff7d66bfbb9f84d068ecde7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1046909/accepted_hits.bam.bai\",\n \"revision\": \"7058550eeac33d8019da041f8b6f5069\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1046910/accepted_hits.bam.bai\",\n \"revision\": \"879d2d40c7b657f60eaa63e1d795a98a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1524935/accepted_hits.bam.bai\",\n \"revision\": \"aed5a151f3fdaab9fd7225dba3d5940a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1524938/accepted_hits.bam.bai\",\n \"revision\": \"ae00f12c934ae8681d0142c650480a7b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1524940/accepted_hits.bam.bai\",\n \"revision\": \"3f2b2207bf7b40abe57b916b77075353\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR314814/accepted_hits.bam.bai\",\n \"revision\": \"879f37f50fda5726eb79d43b9c3be3dd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/SAM/SRR949956/accepted_hits.bam.bai\",\n \"revision\": \"40ce9854110d2a13f37aa98575d046b4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/SAM/SRR949965/accepted_hits.bam.bai\",\n \"revision\": \"ad8895257f945dd2208d5442ac880a96\"\n },\n {\n \"url\": \"../../../cgi-bin/data/SAM/SRR949988/accepted_hits.bam.bai\",\n \"revision\": \"61270aaa529f4ddb3725882fc8d18768\"\n },\n {\n \"url\": \"../../../cgi-bin/data/SAM/SRR949989/accepted_hits.bam.bai\",\n \"revision\": \"09eea158d0dac8d977f6aa4dd54a36bb\"\n },\n {\n \"url\": \"../../../cgi-bin/get_exon_base64_exongraph.png\",\n \"revision\": \"bc8188977bc489350c900ad26bc272fb\"\n },\n {\n \"url\": \"../../../cgi-bin/get_gene_structures.cgi\",\n \"revision\": \"26b4acf6db75474d7e6103a25385fed1\"\n },\n {\n \"url\": \"../../../cgi-bin/get_gene_structures.html\",\n \"revision\": \"3f4219d93053fa4584de35cf9f4db7ad\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-144x144.png\",\n \"revision\": \"6aa216b232a25383e5b374fa92649f8e\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-192x192.png\",\n \"revision\": \"9a3171627fb93c14b45814508213f4fc\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-256x256.png\",\n \"revision\": \"1ae7955a2611f1bf46c1ba8b7ec169f1\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-36x36.png\",\n \"revision\": \"7410a290c1537082c7c3cf8ffccd6917\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-384x384.png\",\n \"revision\": \"82426ddd9dc183454ddf5e6e36b1afbb\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-48x48.png\",\n \"revision\": \"f602e0082bbcc7de9f975f58d2d6de85\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-512x512.png\",\n \"revision\": \"437bb1be87cdb0feddb00d9c44fcce41\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-72x72.png\",\n \"revision\": \"35d48d22cf7e2f1efc5736d44602e6a7\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-96x96.png\",\n \"revision\": \"c9ba5d290339fb492d3fc8c2d24a1e79\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-114x114-precomposed.png\",\n \"revision\": \"f93f4ea7b8e7b67a3335dd3bb581da17\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-114x114.png\",\n \"revision\": \"1eff9b0569d780c80c1df71f5164eec3\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-120x120-precomposed.png\",\n \"revision\": \"4ec14dcc7185e95229335e65671366ce\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-120x120.png\",\n \"revision\": \"6d0f888cc80dad397ea55bf1d473a028\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-144x144-precomposed.png\",\n \"revision\": \"0ec9769ea9f4447b15caecba3191938a\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-144x144.png\",\n \"revision\": \"40fd9584b9d30b31740f76fa8ca1235c\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-152x152-precomposed.png\",\n \"revision\": \"c46229f4a4c1b3beb147ffb8ece33040\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-152x152.png\",\n \"revision\": \"be6138eec66a53b3384297e0cf15db39\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-180x180-precomposed.png\",\n \"revision\": \"d4d7ccec62c79ecf32034ad632cd6231\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-180x180.png\",\n \"revision\": \"3eae3e68773828dd6f783cdc5281fc66\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-57x57-precomposed.png\",\n \"revision\": \"bfe3d340d1da05a22158e8d63d75b646\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-57x57.png\",\n \"revision\": \"932f18fa0f0b708d24ad185664251055\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-60x60-precomposed.png\",\n \"revision\": \"1dccb7114c4888de8b71622bbbb41a02\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-60x60.png\",\n \"revision\": \"38f6fdd2f70eb7385f245195d75c38c4\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-72x72-precomposed.png\",\n \"revision\": \"cd799bf2df7eb07cfc4af6a486c0d0bc\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-72x72.png\",\n \"revision\": \"7cff9a362d0ac807dd6ca8ae738e8836\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-76x76-precomposed.png\",\n \"revision\": \"454271b7b29164d430fa790e9e450dff\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-76x76.png\",\n \"revision\": \"de8f88f28e367a284fc39dd360fe00b2\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-precomposed.png\",\n \"revision\": \"d4d7ccec62c79ecf32034ad632cd6231\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon.png\",\n \"revision\": \"3eae3e68773828dd6f783cdc5281fc66\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/browserconfig.xml\",\n \"revision\": \"6a2fcd1a52a6cb53a9ff5317d8e2ad96\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/favicon-16x16.png\",\n \"revision\": \"778e2a523b867301222f390f5ee7dcca\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/favicon-32x32.png\",\n \"revision\": \"083534383d3f008b5890448ca54940a7\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/favicon.ico\",\n \"revision\": \"f3dc2bf19ab26151c3717363be75fac5\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x128.png\",\n \"revision\": \"899c43b186582a63324516c2c1e5f048\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x192.png\",\n \"revision\": \"04e99dc63a424ea33de8eff9f2e1df83\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x384.png\",\n \"revision\": \"c4c8bb30b6bab2bab15fd75eb6f678f5\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x48.png\",\n \"revision\": \"89470a5e6d25c711c40d54ea30dee034\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x512.png\",\n \"revision\": \"dfa6ac52dac80a2938a3adf2bbdda46d\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x72.png\",\n \"revision\": \"b4d2d67802a700229a8731931fd698b0\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x96.png\",\n \"revision\": \"6365ad9cc32211d3c6476eea2893355c\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon.png\",\n \"revision\": \"4a6a9e89a616e4868e36a695a408222a\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-144x144.png\",\n \"revision\": \"1134e80a6e3730bd468c0798a14e14e0\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-150x150.png\",\n \"revision\": \"476a61c0d9c59411ae779eb81376ebaf\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-310x150.png\",\n \"revision\": \"3a23b4170779ab61f432268956969271\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-310x310.png\",\n \"revision\": \"3224651e0961dd7a643c35da88f50807\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-70x70.png\",\n \"revision\": \"48decad196c52519ffe63de28f90f0dc\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/og-image.jpg\",\n \"revision\": \"a11a25eb7e78f676e6cab288a9bd0453\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/safari-pinned-tab.svg\",\n \"revision\": \"9229710b0428548ddc2663b4c217ebac\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/site.webmanifest\",\n \"revision\": \"0bc00e6d551509f64a770cbb581ca4a9\"\n },\n {\n \"url\": \"../../../cgi-bin/img/BAR-logo.png\",\n \"revision\": \"dfcd25ffc15bfc733819e6a4dc157a0f\"\n },\n {\n \"url\": \"../../../cgi-bin/img/BAR-logo.svg\",\n \"revision\": \"d2ba3a8d47f53bcbaf7e255e1c849a85\"\n },\n {\n \"url\": \"../../../cgi-bin/img/error.png\",\n \"revision\": \"1d71f786ed428e61081422d063ea7c83\"\n },\n {\n \"url\": \"../../../cgi-bin/img/googleSignin/btn_google_light_normal_ios.svg\",\n \"revision\": \"3f8823279b3f25e18a4a115a2fc5e638\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0001_geneLocusAutofill.png\",\n \"revision\": \"c655ed3804b930b15f4e52e724541c47\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0002_selectDataset.png\",\n \"revision\": \"4d7c835d62240505ff5b3383609f6acb\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0003_selectOptions.png\",\n \"revision\": \"eb4d429a942a7bbff6b35524604272f1\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0004_yAxisScale.png\",\n \"revision\": \"535b1d4ffcfb53331db9773c8bfa9099\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0005_absoluteMax.png\",\n \"revision\": \"95ae278d3cb23909348695d53a1e31c9\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0006_loadData.png\",\n \"revision\": \"27dbfe5f82dcb5c3ba3e23eb237c4c13\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0007_hideNav.png\",\n \"revision\": \"f365b3ecc3c6c4d9f3912653161f94f9\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0008_eFPOverviewGeneral.png\",\n \"revision\": \"746af3110d4a52bed910cd5872e7359a\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0009_eFPOverviewHover.png\",\n \"revision\": \"beda2c842b8fe6eec7de1a355bf19c2c\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0010_GenerateData.png\",\n \"revision\": \"c09552da9c3f592b8b49c04f3e6224e5\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0011_UploadExcel.png\",\n \"revision\": \"e4f73dff004a2b862054a0bcadfa0895\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0012_TissueSelect.png\",\n \"revision\": \"d69adf3b6251f067d4717379ee2b659d\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0013_bulkTemplate.png\",\n \"revision\": \"86ec9b93d271627c7a1268ac7f534d6d\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0014_manageAccount.png\",\n \"revision\": \"5cd787c97e64bbc4a433a7a5fb2000b5\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0015_downloadTableAsImage.png\",\n \"revision\": \"8fbe6889ad3620c224c97527db855ae6\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0016_downloadeFPOverviewAsImage.png\",\n \"revision\": \"7aca546f9df28f39aaa6481c14c6b880\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0017_toggleTable.png\",\n \"revision\": \"66074449a6773d785a2be0d86b53b504\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0018_eFPOverviewScrollTo.png\",\n \"revision\": \"a3e44414f7bb90f6a85f89eb7f6c88cb\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0019_eFPImagesFilter.png\",\n \"revision\": \"784bdd049f913a2f1d9d04c7753c77f7\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0020_compareGeneVariants.png\",\n \"revision\": \"79d4919f55b2428acff2327fe02350e0\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0020_sharingSession.png\",\n \"revision\": \"6e5ecf270f9f781260d19a6612bf9fc9\"\n },\n {\n \"url\": \"../../../cgi-bin/img/landingPage.jpg\",\n \"revision\": \"874a480d4121f46051a5ff66b3141f2f\"\n },\n {\n \"url\": \"../../../cgi-bin/rnaSeqMapCoverage.cgi\",\n \"revision\": \"a38075859721206ce856c465687fc76e\"\n },\n {\n \"url\": \"../../../cgi-bin/rnaSeqMapCoverage.html\",\n \"revision\": \"3a3b309931466b805687e7b624cfcb3c\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page.html\",\n \"revision\": \"d138fd92151cccedbdf43ddccef76bcb\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/bulk_template-protection.txt\",\n \"revision\": \"8b5a8d10c337f4f9b74cdc6c466f1e11\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/bulk_template.xlsx\",\n \"revision\": \"9a592c19313d16189dc90b7a51e467ed\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/Images/dropArrow.png\",\n \"revision\": \"fc9faee89a24136d2ba232bfe59e619a\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/submissionStyle.css\",\n \"revision\": \"f3b9a932f869d8530d67a2d4ec07003e\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/submissionStyle.min.css\",\n \"revision\": \"c5397bba845dbad26de1336fa9d25d30\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/XMLgenerator.js\",\n \"revision\": \"6cebb84e82ee217f4b5928cd04b907df\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/XMLgenerator.min.js\",\n \"revision\": \"6ea4923e0753e4646f13c3a83753aac5\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/__README.txt\",\n \"revision\": \"06800956c4ef38dc31c48cd713de296c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/10dayOldSeedling.min.svg\",\n \"revision\": \"9f31c942892426c75ec6c499fa88ff1d\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/10dayOldSeedling.svg\",\n \"revision\": \"e7d8f9b74c6218e5d3f0fdd92b9a6c49\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/15dayOldSeedling.min.svg\",\n \"revision\": \"ec4aaed66e50685be22fdfb4d388fb38\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/15dayOldSeedling.svg\",\n \"revision\": \"5985ad1dbde89a3efca2b706a8bf12ae\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowDefault.min.svg\",\n \"revision\": \"4319ab16a880baa3faf273fb4e0c3cb9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowDefault.svg\",\n \"revision\": \"1fb973904ae245ab5dbbbc7c2def3501\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowSortDown.min.svg\",\n \"revision\": \"4733ce9fde412229984e4259c3dc6402\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowSortDown.svg\",\n \"revision\": \"af42ec3c56b64fddcef50142d9213347\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowSortUp.min.svg\",\n \"revision\": \"c5b271cfa1e67b33b48e8d1083661885\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowSortUp.svg\",\n \"revision\": \"8f0a05c8335f61bf8f5a670c09dae32a\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/EarlyBuddingFlower.min.svg\",\n \"revision\": \"2f31eee63a2f2a8995aa41df36343f5c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/EarlyBuddingFlower.svg\",\n \"revision\": \"1fc5560ee23ff302cd7c9874f4ac7e1b\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/etiolatedSeedling.min.svg\",\n \"revision\": \"b07700d578a62fddba77e794f4f0152f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/etiolatedSeedling.svg\",\n \"revision\": \"acf5481e52e88001991e5ab051e63f29\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Flower.min.svg\",\n \"revision\": \"9fcce16d0ddc53938da621818ab49180\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Flower.svg\",\n \"revision\": \"f9732ba6d23200a74a1f34bff512c17f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerBud.min.svg\",\n \"revision\": \"97d3a2f4639568e946ffff75e4d6919c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerBud.svg\",\n \"revision\": \"982a4a66d11e4c5abeb43ffc2bf3a492\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment1.min.svg\",\n \"revision\": \"143dcc5ae5e99dd7cd845ad351f536e9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment1.svg\",\n \"revision\": \"958f6c24ba4d3f1723a1ff31a175275c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment12-14.min.svg\",\n \"revision\": \"dfd30d4f05ced82fdecebfb498123b4f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment12-14.svg\",\n \"revision\": \"515d18d42e02fc615542d90ad6fa2c37\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment15-18.min.svg\",\n \"revision\": \"d50c60ee81fbc50cada035eedb13d15f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment15-18.svg\",\n \"revision\": \"428887ce400b435b4ed9f18048a1a41f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment19.min.svg\",\n \"revision\": \"12ace2c4f8789aed058861b5223a0e3f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment19.svg\",\n \"revision\": \"9ee52eaeda7aed787d415cfedcad576d\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment2.min.svg\",\n \"revision\": \"e6f3ec29c5f529eea796613d56b02081\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment2.svg\",\n \"revision\": \"a2784c197770ed567aff53038ecc2df5\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment3.min.svg\",\n \"revision\": \"e78e2c4621584ffd5e9887317e0c3e07\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment3.svg\",\n \"revision\": \"2356db079d1e2aeff4cb3f780127c61f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment4.min.svg\",\n \"revision\": \"e39d10520e1b473d504f40ab94f30355\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment4.svg\",\n \"revision\": \"38f4377170162b5b9050735685b8b3e7\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment5.min.svg\",\n \"revision\": \"daa0d6aeec611e7d329a393d05249d98\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment5.svg\",\n \"revision\": \"47c537bd7656646271c3058fab5b604c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment6-8.min.svg\",\n \"revision\": \"227cecf683601c5481b3b23ea4dae352\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment6-8.svg\",\n \"revision\": \"40884a50f3ee158df2654876975c9239\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment9-11.min.svg\",\n \"revision\": \"fd28130137874c03684972ea25df46b6\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment9-11.svg\",\n \"revision\": \"0162c9dd7ff64951045ca9c11593d8cb\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerParts.min.svg\",\n \"revision\": \"00fa5e2b2a9421119d3da588ae6863c4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerParts.svg\",\n \"revision\": \"b4b5f2a9eb596b9f65226c0a4eae6e4d\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/GerminatingSeed.min.svg\",\n \"revision\": \"1554ed3908e2ab727759159b7233a9e9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/GerminatingSeed.svg\",\n \"revision\": \"cd60ab9fa57755fec57d5f525eaac997\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Internode.min.svg\",\n \"revision\": \"dd7cfc194d99bbfdef0dd21be527c22c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Internode.svg\",\n \"revision\": \"8521a31d2618b5c0515f22c0971cf1da\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/leaf.min.svg\",\n \"revision\": \"d6180cfad5b56e135eb3390dca8cd920\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/leaf.svg\",\n \"revision\": \"3ad98b0b0df53cfea67ae7a3704fdc69\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/LeafParts.min.svg\",\n \"revision\": \"9153dad52413cc82342b03537692503c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/LeafParts.svg\",\n \"revision\": \"832a80b998b15d29518b95988af951a4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/OpenMenu.min.svg\",\n \"revision\": \"9e594db2cb5ce470d55d3d646ec6ff2b\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/OpenMenu.svg\",\n \"revision\": \"43067421eb8d322c14d67282e68dd022\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Other.min.svg\",\n \"revision\": \"19742061f618c8e93094f3d520501cd4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Other.svg\",\n \"revision\": \"ebf43d746577c5c380c66b069cab1511\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Pollen.min.svg\",\n \"revision\": \"3a2d573a3aabdd921eb9f62a41351739\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Pollen.svg\",\n \"revision\": \"0520ad69c33a4a7f44d83124489ae177\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/RootTip.min.svg\",\n \"revision\": \"d0c8035d19e75e6061bf85ef283ffdc5\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/RootTip.svg\",\n \"revision\": \"065ee0e32637a626323cd1355d8bcd98\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/rosettePlusRoot.min.svg\",\n \"revision\": \"01629f245fc9770d1cf307eeb76a288a\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/rosettePlusRoot.svg\",\n \"revision\": \"b8f9d68fab16c8e1551aed3560e6b0b5\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed1-4.min.svg\",\n \"revision\": \"8f4d22249e0e49ea1989611e2bdecd6e\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed1-4.svg\",\n \"revision\": \"ab3c09c00dcda1eab05cf9d2eed42299\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed5-7.min.svg\",\n \"revision\": \"e9d48d8e0ab38da1c7eb28a4ee9eb7d9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed5-7.svg\",\n \"revision\": \"e5118ad11087384001358333481f1db4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed8+.min.svg\",\n \"revision\": \"7f9aa8b624378e0b51086a3be05e98d9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed8+.svg\",\n \"revision\": \"79a2db7427367f5e904b2d91fb7f65bb\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/SenescentLeaf.min.svg\",\n \"revision\": \"4ad2e62a2c07d8ea22689bf15d49c1e4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/SenescentLeaf.svg\",\n \"revision\": \"b18e0970629fe6719fc6489732d8ddcc\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/ShootApexInflorescense.min.svg\",\n \"revision\": \"231e10fca505aded308007081cb4f769\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/ShootApexInflorescense.svg\",\n \"revision\": \"74cda237197df019a2bb712bc864f60c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/ShootApexVegetative-Transition.min.svg\",\n \"revision\": \"7aa6768353eab59ccbebe03bbeb3b699\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/ShootApexVegetative-Transition.svg\",\n \"revision\": \"d814a9174a3add197e8e94a6f56be2ba\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Silique1-5.min.svg\",\n \"revision\": \"55dad36e25ef03e608f8fb6930ee28ac\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Silique1-5.svg\",\n \"revision\": \"e7423203710a25731ff482612b96cb7b\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Silique6-10.min.svg\",\n \"revision\": \"3aa8fc2376199272178de148b40cbe01\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Silique6-10.svg\",\n \"revision\": \"e0b2582bb9014c51680e7af02fd169a9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Stamen.min.svg\",\n \"revision\": \"0b15f28ac1f0fe60ab2ebbda3b994cfc\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Stamen.svg\",\n \"revision\": \"48c83749a615cb2e910e3798a8f7823a\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/StigmaAndOvaries.min.svg\",\n \"revision\": \"ace4babdf063e4f10afd89ad1b7bf33f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/StigmaAndOvaries.svg\",\n \"revision\": \"261cff0f306ddf17ada8259c1a2e5886\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/WholeSilique.min.svg\",\n \"revision\": \"019ebb1f885a12ba47d4d3cc8ffe6660\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/WholeSilique.svg\",\n \"revision\": \"aad5c0471dc31efa5f02e9b8da25004e\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/YoungLeaf1-4.min.svg\",\n \"revision\": \"ed2b105cba6fc7088cea073d24b5356e\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/YoungLeaf1-4.svg\",\n \"revision\": \"2bcead9ed8032bcd82c4482c8f5925dd\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/youngSeedling.min.svg\",\n \"revision\": \"1b440a064be9ce47cc6c6a40c89316e2\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/youngSeedling.svg\",\n \"revision\": \"d20b1192c8ed306f4b463897fe443098\"\n }\n], {});\n\n\n\n\nworkbox_routing_registerRoute(/\\.(?:png)$/, new workbox_strategies_CacheFirst({ \"cacheName\":\"images\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 10 })] }), 'GET');\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_strategies_CacheFirst","plugins","workbox_expiration_ExpirationPlugin","maxEntries"],"mappings":"0nBAsBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,oCAY2B,CAClC,KACS,kCACK,oCAEd,KACS,sCACK,oCAEd,KACS,iEACK,oCAEd,KACS,qEACK,oCAEd,KACS,qEACK,oCAEd,KACS,yEACK,oCAEd,KACS,mEACK,oCAEd,KACS,uEACK,oCAEd,KACS,uEACK,oCAEd,KACS,2EACK,oCAEd,KACS,sEACK,oCAEd,KACS,0EACK,oCAEd,KACS,0EACK,oCAEd,KACS,8EACK,oCAEd,KACS,4DACK,oCAEd,KACS,gEACK,oCAEd,KACS,gEACK,oCAEd,KACS,oEACK,oCAEd,KACS,iEACK,oCAEd,KACS,qEACK,oCAEd,KACS,8DACK,oCAEd,KACS,kEACK,oCAEd,KACS,0DACK,oCAEd,KACS,8DACK,oCAEd,KACS,+DACK,oCAEd,KACS,uDACK,oCAEd,KACS,4DACK,oCAEd,KACS,yDACK,oCAEd,KACS,4EACK,oCAEd,KACS,gEACK,oCAEd,KACS,iFACK,oCAEd,KACS,yFACK,oCAEd,KACS,kFACK,oCAEd,KACS,sFACK,oCAEd,KACS,+EACK,oCAEd,KACS,sFACK,oCAEd,KACS,+EACK,oCAEd,KACS,wFACK,oCAEd,KACS,iFACK,oCAEd,KACS,0DACK,oCAEd,KACS,gEACK,oCAEd,KACS,uDACK,oCAEd,KACS,qEACK,oCAEd,KACS,8EACK,oCAEd,KACS,8EACK,oCAEd,KACS,8EACK,oCAEd,KACS,8EACK,oCAEd,KACS,8EACK,oCAEd,KACS,8EACK,oCAEd,KACS,sDACK,oCAEd,KACS,yDACK,oCAEd,KACS,wDACK,oCAEd,KACS,6DACK,oCAEd,KACS,4DACK,oCAEd,KACS,mEACK,oCAEd,KACS,uEACK,oCAEd,KACS,+DACK,oCAEd,KACS,mEACK,oCAEd,KACS,uDACK,oCAEd,KACS,wDACK,oCAEd,KACS,sDACK,oCAEd,KACS,oDACK,oCAEd,KACS,sEACK,oCAEd,KACS,yEACK,oCAEd,KACS,mEACK,oCAEd,KACS,8EACK,oCAEd,KACS,uFACK,oCAEd,KACS,mFACK,oCAEd,KACS,wFACK,oCAEd,KACS,uFACK,oCAEd,KACS,8EACK,oCAEd,KACS,8EACK,oCAEd,KACS,4DACK,oCAEd,KACS,gEACK,oCAEd,KACS,qDACK,oCAEd,KACS,4DACK,oCAEd,KACS,gEACK,oCAEd,KACS,4DACK,oCAEd,KACS,uDACK,oCAEd,KACS,sEACK,oCAEd,KACS,yDACK,oCAEd,KACS,wDACK,oCAEd,KACS,iEACK,oCAEd,KACS,yDACK,oCAEd,KACS,sDACK,oCAEd,KACS,4CACK,oCAEd,KACS,0DACK,oCAEd,KACS,kCACK,oCAEd,KACS,sCACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,8CACK,oCAEd,KACS,gEACK,oCAEd,KACS,gEACK,oCAEd,KACS,gEACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,kEACK,oCAEd,KACS,kEACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,+DACK,oCAEd,KACS,+DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,6DACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,mEACK,oCAEd,KACS,6DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,8DACK,oCAEd,KACS,6DACK,oCAEd,KACS,4DACK,oCAEd,KACS,4DACK,oCAEd,KACS,4DACK,oCAEd,KACS,4DACK,oCAEd,KACS,iDACK,oCAEd,KACS,2CACK,oCAEd,KACS,4CACK,oCAEd,KACS,mDACK,oCAEd,KACS,mDACK,oCAEd,KACS,mDACK,oCAEd,KACS,iDACK,oCAEd,KACS,mDACK,oCAEd,KACS,iDACK,oCAEd,KACS,mDACK,oCAEd,KACS,iDACK,oCAEd,KACS,iDACK,oCAEd,KACS,iEACK,oCAEd,KACS,qDACK,oCAEd,KACS,iEACK,oCAEd,KACS,qDACK,oCAEd,KACS,iEACK,oCAEd,KACS,qDACK,oCAEd,KACS,iEACK,oCAEd,KACS,qDACK,oCAEd,KACS,iEACK,oCAEd,KACS,qDACK,oCAEd,KACS,+DACK,oCAEd,KACS,mDACK,oCAEd,KACS,+DACK,oCAEd,KACS,mDACK,oCAEd,KACS,+DACK,oCAEd,KACS,mDACK,oCAEd,KACS,+DACK,oCAEd,KACS,mDACK,oCAEd,KACS,yDACK,oCAEd,KACS,6CACK,oCAEd,KACS,0CACK,oCAEd,KACS,0CACK,oCAEd,KACS,0CACK,oCAEd,KACS,oCACK,oCAEd,KACS,+CACK,oCAEd,KACS,+CACK,oCAEd,KACS,+CACK,oCAEd,KACS,8CACK,oCAEd,KACS,+CACK,oCAEd,KACS,8CACK,oCAEd,KACS,8CACK,oCAEd,KACS,0CACK,oCAEd,KACS,2CACK,oCAEd,KACS,2CACK,oCAEd,KACS,2CACK,oCAEd,KACS,2CACK,oCAEd,KACS,yCACK,oCAEd,KACS,qCACK,oCAEd,KACS,8CACK,oCAEd,KACS,yCACK,oCAEd,KACS,oCACK,oCAEd,KACS,oCACK,oCAEd,KACS,iCACK,oCAEd,KACS,oEACK,oCAEd,KACS,4DACK,oCAEd,KACS,wDACK,oCAEd,KACS,wDACK,oCAEd,KACS,qDACK,oCAEd,KACS,sDACK,oCAEd,KACS,mDACK,oCAEd,KACS,kDACK,oCAEd,KACS,6DACK,oCAEd,KACS,2DACK,oCAEd,KACS,uDACK,oCAEd,KACS,sDACK,oCAEd,KACS,uDACK,oCAEd,KACS,uDACK,oCAEd,KACS,wDACK,oCAEd,KACS,+DACK,oCAEd,KACS,qEACK,oCAEd,KACS,sDACK,oCAEd,KACS,8DACK,oCAEd,KACS,0DACK,oCAEd,KACS,8DACK,oCAEd,KACS,yDACK,oCAEd,KACS,uCACK,oCAEd,KACS,yCACK,oCAEd,KACS,0CACK,oCAEd,KACS,wCACK,oCAEd,KACS,gEACK,oCAEd,KACS,sDACK,oCAEd,KACS,wDACK,oCAEd,KACS,uDACK,oCAEd,KACS,2DACK,oCAEd,KACS,mDACK,oCAEd,KACS,uDACK,oCAEd,KACS,qCACK,oCAEd,KACS,iDACK,oCAEd,KACS,6CACK,oCAEd,KACS,iDACK,oCAEd,KACS,6CACK,oCAEd,KACS,6CACK,oCAEd,KACS,yCACK,oCAEd,KACS,8CACK,oCAEd,KACS,0CACK,oCAEd,KACS,4CACK,oCAEd,KACS,wCACK,oCAEd,KACS,mDACK,oCAEd,KACS,+CACK,oCAEd,KACS,kDACK,oCAEd,KACS,8CACK,oCAEd,KACS,uCACK,oCAEd,KACS,mCACK,oCAEd,KACS,0CACK,oCAEd,KACS,sCACK,oCAEd,KACS,mDACK,oCAEd,KACS,+CACK,oCAEd,KACS,uDACK,oCAEd,KACS,mDACK,oCAEd,KACS,uDACK,oCAEd,KACS,mDACK,oCAEd,KACS,oDACK,oCAEd,KACS,gDACK,oCAEd,KACS,mDACK,oCAEd,KACS,+CACK,oCAEd,KACS,mDACK,oCAEd,KACS,+CACK,oCAEd,KACS,mDACK,oCAEd,KACS,+CACK,oCAEd,KACS,mDACK,oCAEd,KACS,+CACK,oCAEd,KACS,qDACK,oCAEd,KACS,iDACK,oCAEd,KACS,sDACK,oCAEd,KACS,kDACK,oCAEd,KACS,4CACK,oCAEd,KACS,wCACK,oCAEd,KACS,gDACK,oCAEd,KACS,4CACK,oCAEd,KACS,0CACK,oCAEd,KACS,sCACK,oCAEd,KACS,qCACK,oCAEd,KACS,iCACK,oCAEd,KACS,0CACK,oCAEd,KACS,sCACK,oCAEd,KACS,yCACK,oCAEd,KACS,qCACK,oCAEd,KACS,sCACK,oCAEd,KACS,kCACK,oCAEd,KACS,uCACK,oCAEd,KACS,mCACK,oCAEd,KACS,wCACK,oCAEd,KACS,oCACK,oCAEd,KACS,gDACK,oCAEd,KACS,4CACK,oCAEd,KACS,wCACK,oCAEd,KACS,oCACK,oCAEd,KACS,wCACK,oCAEd,KACS,oCACK,oCAEd,KACS,uCACK,oCAEd,KACS,mCACK,oCAEd,KACS,8CACK,oCAEd,KACS,0CACK,oCAEd,KACS,uDACK,oCAEd,KACS,mDACK,oCAEd,KACS,+DACK,oCAEd,KACS,2DACK,oCAEd,KACS,2CACK,oCAEd,KACS,uCACK,oCAEd,KACS,4CACK,oCAEd,KACS,wCACK,oCAEd,KACS,uCACK,oCAEd,KACS,mCACK,oCAEd,KACS,iDACK,oCAEd,KACS,6CACK,oCAEd,KACS,6CACK,oCAEd,KACS,yCACK,oCAEd,KACS,6CACK,oCAEd,KACS,yCACK,oCAEd,KACS,8CACK,oCAEd,KACS,0CACK,oCAEd,KACS,8BACK,oCAEd,KACS,2BACK,oCAEd,KACS,sBACK,oCAEd,KACS,sBACK,oCAEd,KACS,6BACK,oCAEd,KACS,wBACK,oCAEd,KACS,qBACK,oCAEd,KACS,uBACK,oCAEd,KACS,sBACK,oCAEd,KACS,qBACK,oCAEd,KACS,gCACK,qCAEb,oBAK2B,aAAc,IAAIC,aAA8B,WAAc,SAAUC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,QAAW"} \ No newline at end of file +{"version":3,"file":"sw.js","sources":["../../../../../AppData/Local/Temp/85130224ccdf0326e2f46b6f8e72ebe9/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from 'C:/Users/JooHyun/AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from 'C:/Users/JooHyun/AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from 'C:/Users/JooHyun/AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from 'C:/Users/JooHyun/AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"../../../cgi-bin/core/custom.js\",\n \"revision\": \"cf3b95315b65a8323a165565c4efbde6\"\n },\n {\n \"url\": \"../../../cgi-bin/core/custom.min.js\",\n \"revision\": \"565ddd685c759569b8c644eca71ba742\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.css\",\n \"revision\": \"8cb8cd8bc1c1e1cb28ffc89b3c9bb38a\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.min.css\",\n \"revision\": \"a92ffe0efac491b009a7c8e4e15b6861\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.rtl.css\",\n \"revision\": \"d73f1c67d5c1b2d8f49a25a547afd5c9\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-grid.rtl.min.css\",\n \"revision\": \"e2fc2c59953cdae3468ce175351c7ee7\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.css\",\n \"revision\": \"7fd3f75a990aa424845997e1aabe8e58\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.min.css\",\n \"revision\": \"185ea8d03d4ca4a29061bb874e888bf0\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.rtl.css\",\n \"revision\": \"b4d2ab0d31d85f490fd4530110bb01c5\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-reboot.rtl.min.css\",\n \"revision\": \"93530896b671920b6abc0d35c13fcedd\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.css\",\n \"revision\": \"c39f03ef80ab72f69669edecbc9de141\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.min.css\",\n \"revision\": \"e26b2acc296db4ca8056301f8933260c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.rtl.css\",\n \"revision\": \"959747add181ce30bdb55810fdbde1af\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap-utilities.rtl.min.css\",\n \"revision\": \"87671032915d6842953cc42d1b115dc4\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap.css\",\n \"revision\": \"5aa7bfe43f3ecaa688920b448f5065b4\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap.min.css\",\n \"revision\": \"94994c66fec8c3468b269dc0cc242151\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap.rtl.css\",\n \"revision\": \"c89fe4420c13b8f3a61b318eaa28505b\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/css/bootstrap.rtl.min.css\",\n \"revision\": \"665c3cacfdb309d6ae1c58c959598d5b\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.bundle.js\",\n \"revision\": \"bb2ab2f5bb58154ca9cc11ea437bfdbb\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.bundle.min.js\",\n \"revision\": \"7ccd9d390d31af98110f74f842ea9b32\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.esm.js\",\n \"revision\": \"7c5450bd1e09b3176e598a835aab0ed3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.esm.min.js\",\n \"revision\": \"feadf83193b853084d9820170c4178d5\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.js\",\n \"revision\": \"4706e3135214d1a3f6c28e98c40c0724\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/boostrap/js/bootstrap.min.js\",\n \"revision\": \"259e416ef6833be43801b8b68a93b008\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/ddslick/jquery.ddslick.min.js\",\n \"revision\": \"579aa1a3e6a9fef62be6317cf344ce40\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleAnalytics/js.js\",\n \"revision\": \"331b106a16c42bfe823b964298da474c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleIdentity/platform.js\",\n \"revision\": \"44e522a850a0ebb98da5ff47f55add42\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/icon.css\",\n \"revision\": \"5cb7755496ddcbfb518246cedb4a3084\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/material.green-pink.min.css\",\n \"revision\": \"4f6e9c3486ab96d3ac0fcf978d4ca689\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/material.min.js\",\n \"revision\": \"e2c95ee10e7d144e8d80783e2fe066cf\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIcons-Regular.codepoints\",\n \"revision\": \"09b7f603303209865f4d96b2bd55ffc4\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsOutlined-Regular.codepoints\",\n \"revision\": \"0376ada9f56916f3a17d1146e41ad087\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsOutlined-Regular.otf\",\n \"revision\": \"4b937d057e6da6a4fac02b42784fdb6a\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsRound-Regular.codepoints\",\n \"revision\": \"a3c8569c42beebbce1b9e65781b872ea\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsRound-Regular.otf\",\n \"revision\": \"f8d5e69de9cdc901dab69da2d6463217\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsSharp-Regular.codepoints\",\n \"revision\": \"a3c8569c42beebbce1b9e65781b872ea\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsSharp-Regular.otf\",\n \"revision\": \"5257f80b95fdba0a233f61fef096b3f2\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsTwoTone-Regular.codepoints\",\n \"revision\": \"9e882805fd29cf0fb3db1d4a70d44ef2\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/MaterialIconsTwoTone-Regular.otf\",\n \"revision\": \"f2472d5074320cb86f3db2bbf403939d\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/GoogleMaterial/README.md\",\n \"revision\": \"25a552d91155358d3b566d7e453463d3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/html2canvas/html2canvas.min.js\",\n \"revision\": \"4c522c363d0c7bd7d1b74cf3d7069d3a\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/AUTHORS.txt\",\n \"revision\": \"9b705a38e30997ca21b50e8329228057\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/external/jquery/jquery.js\",\n \"revision\": \"2849239b95f5a9a2aea3f6ed9420bb88\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_444444_256x240.png\",\n \"revision\": \"30d01fcc9e4f0f659b94b43ffa32660a\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_555555_256x240.png\",\n \"revision\": \"53409b70d727190214e577dda4573592\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_777620_256x240.png\",\n \"revision\": \"66ebb6203eb56c2b130b1e9ac8c39074\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_777777_256x240.png\",\n \"revision\": \"966e35edfe4c61d7815d3ab9a3d7aa6c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_cc0000_256x240.png\",\n \"revision\": \"57aca802c35454863276a841024b238c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/images/ui-icons_ffffff_256x240.png\",\n \"revision\": \"e75fbfaf3e27ec96b267f67b4ca231e3\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/index.html\",\n \"revision\": \"126b7673a608fef2405e35be7c7dc8e8\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.css\",\n \"revision\": \"e931b3568f1111782d6e1cc5fa0ed479\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.js\",\n \"revision\": \"dd5c979b802f985cefb36d3e4239977f\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.min.css\",\n \"revision\": \"637f462476d4d838f45acd6e3c88998c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.min.js\",\n \"revision\": \"842e3946fa938e62f185abb29ab00dc7\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.structure.css\",\n \"revision\": \"fbda995dfc24f2ed88444eb8065d4ea9\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.structure.min.css\",\n \"revision\": \"3333d9634f7c35f62c25a9f05ac67d67\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.theme.css\",\n \"revision\": \"02f8ccffb3b64acf52918fc6c0ffe720\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/jquery-ui.theme.min.css\",\n \"revision\": \"eb9d458abf1af7555412aeb86bf94964\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/LICENSE.txt\",\n \"revision\": \"e0c0d3d883e83f19efa64feb54d5f63d\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery-ui/package.json\",\n \"revision\": \"2f98699d52284ffe9456b4dd02baad33\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/jQuery/jquery.min.js\",\n \"revision\": \"8fb8fee4fcc3cc86ff6c724154c49c42\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/mathJS/math.min.js\",\n \"revision\": \"65cbdb73b2dc51c31a1929cb34c9597e\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/colsVisibility.css\",\n \"revision\": \"85cb69538a2f16c8e8c75a0c8ed58819\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/filtersVisibility.css\",\n \"revision\": \"03b19930bd5fab0c6ad7fd58d45391c0\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/tablefilter.css\",\n \"revision\": \"5c120507e1203d85b4bc9e9ae8649dd9\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/default/default.css\",\n \"revision\": \"0bcdf34c350ed0f243d8ae1248c7a7e6\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/default/images/bg_infDiv.jpg\",\n \"revision\": \"aeedf37de581787ecb9e35c4d12a7b89\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/default/images/bg_th.jpg\",\n \"revision\": \"b222875b84265f479c6d26ed00fa52ac\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/images/bg_headers.jpg\",\n \"revision\": \"33b05bbced387c265f4b396f168c467e\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/images/bg_infDiv.jpg\",\n \"revision\": \"aeedf37de581787ecb9e35c4d12a7b89\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/mytheme/mytheme.css\",\n \"revision\": \"2eaef0e87a73cfe26ce63dc6aa67fce0\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/style/themes/skyblue/skyblue.css\",\n \"revision\": \"7493a5cd4dc78b9ffa9936a39f56813a\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/tablefilter.js\",\n \"revision\": \"cce18982cf35d7c5e3c9d18f6a30192d\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/tablefilter.min.js\",\n \"revision\": \"ad5c2e306c5efad996d0648ad86e220c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableFilter/tf-1.js\",\n \"revision\": \"f501a5b6c8b7dc0d51e7575bbb009764\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableSorter/tablesorter.js\",\n \"revision\": \"d227e92e7f4d51bd7486f94d931a0fb0\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableSorter/tablesorter.min.js\",\n \"revision\": \"26e652b67ab8cad90da399065df0f44f\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableSorter/tsorter.min.js\",\n \"revision\": \"9d40a761a46ac7195dd34ecbc5ecb39f\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/bower.json\",\n \"revision\": \"79787e672bb7dc33e2a2e0bdc8467a38\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/dist/jquery.tabletoCSV.js\",\n \"revision\": \"be2d4e46a4d6e02526a1be7609baa5a9\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/example.html\",\n \"revision\": \"9b17ab0cdbf7acd33dfcfff87c410d2b\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/gulpfile.js\",\n \"revision\": \"865db57f0fbd64c80b24c7a327e2416c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/jquery.tabletoCSV.js\",\n \"revision\": \"5e99208056679f61875af2d4762f05fb\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/package.json\",\n \"revision\": \"ef0258ebdf3f9d244d7d38c4c35ec723\"\n },\n {\n \"url\": \"../../../cgi-bin/core/packages/tableToCSV/README.md\",\n \"revision\": \"d581efd7f3de48bdf77206307df41034\"\n },\n {\n \"url\": \"../../../cgi-bin/core/serviceWorker/sw.js\",\n \"revision\": \"35c8c8daab3d8edc35776a8d22e58051\"\n },\n {\n \"url\": \"../../../cgi-bin/core/style.css\",\n \"revision\": \"d9f8ebbfb167e11d54c099c93b70f15c\"\n },\n {\n \"url\": \"../../../cgi-bin/core/style.min.css\",\n \"revision\": \"feb45ed2d7ba2ef6992db31cb5cb4f25\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/ERR274310/accepted_hits.bam.bai\",\n \"revision\": \"d8ff8e5c3f9e5d57dd6752e8a4ce4d70\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR547531/accepted_hits.bam.bai\",\n \"revision\": \"78a71ec4d37648170e140ee08fbd9d8e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR548277/accepted_hits.bam.bai\",\n \"revision\": \"fb90c6ea2957278570f1568a25c986b9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR847503/accepted_hits.bam.bai\",\n \"revision\": \"75c9f450e79682c3b13b2024cf0ee3a4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR847504/accepted_hits.bam.bai\",\n \"revision\": \"deb7e829dfe7fd832b58dbfcb6672c99\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR847505/accepted_hits.bam.bai\",\n \"revision\": \"d5746341a9b0e55858c2b6c9de591c93\"\n },\n {\n \"url\": \"../../../cgi-bin/data/aerial/SRR847506/accepted_hits.bam.bai\",\n \"revision\": \"f069609fe7f95444b6a7c9e5ae18e8de\"\n },\n {\n \"url\": \"../../../cgi-bin/data/bamdata_araport11.xml\",\n \"revision\": \"a5df10ccc83203d3919709be0b83c3b3\"\n },\n {\n \"url\": \"../../../cgi-bin/data/bamdata_Developmental_transcriptome.xml\",\n \"revision\": \"b08eb7a10c0b7ce002844fa61d95fbdd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/carpel/SRR1207194/accepted_hits.bam.bai\",\n \"revision\": \"870f3b85d4f868f4fdbe05fb1863c2fc\"\n },\n {\n \"url\": \"../../../cgi-bin/data/carpel/SRR1207195/accepted_hits.bam.bai\",\n \"revision\": \"5c52f9ca7b4a4dada15a4388af05667a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR1019436/accepted_hits.bam.bai\",\n \"revision\": \"c508519aaf261bbe4bae0850ae07cdf1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR1019437/accepted_hits.bam.bai\",\n \"revision\": \"7c51952c497f17c4bb411145823f2e5f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR1049784/accepted_hits.bam.bai\",\n \"revision\": \"d7fe2ac77b8b6de07a9c879d5e6439b9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR477075/accepted_hits.bam.bai\",\n \"revision\": \"30f3e1434baca24f28a5e864e1a55460\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR477076/accepted_hits.bam.bai\",\n \"revision\": \"43f02a5a6992516f004b79b466438a60\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR493237/accepted_hits.bam.bai\",\n \"revision\": \"f8f55d8ae90fe7906153f7418c2544fe\"\n },\n {\n \"url\": \"../../../cgi-bin/data/dark/SRR493238/accepted_hits.bam.bai\",\n \"revision\": \"63add683654ca734f2a475cb01c41338\"\n },\n {\n \"url\": \"../../../cgi-bin/data/flower/SRR314815/accepted_hits.bam.bai\",\n \"revision\": \"e3f8417ab8bda67e6c89b85373a32b57\"\n },\n {\n \"url\": \"../../../cgi-bin/data/flower/SRR800753/accepted_hits.bam.bai\",\n \"revision\": \"5c6cf8e55d8a5c2610fc8efc989e741f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/flower/SRR800754/accepted_hits.bam.bai\",\n \"revision\": \"3fa881db3c490718c6da12945a1ba515\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581336/accepted_hits.bam.bai\",\n \"revision\": \"2aad838806229e82f39ca6abf4c2be39\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581345/accepted_hits.bam.bai\",\n \"revision\": \"487fb21dd9e7c98a92fbcd2086496d31\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581346/accepted_hits.bam.bai\",\n \"revision\": \"d973b32bd023a007b0f31cd091f0d081\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581347/accepted_hits.bam.bai\",\n \"revision\": \"488595888b723be2b990fc9b9c81aef4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581352/accepted_hits.bam.bai\",\n \"revision\": \"6949c25a40caadf298f33ac95535a508\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581356/accepted_hits.bam.bai\",\n \"revision\": \"77170d227901be28b37c59949590a77f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581383/accepted_hits.bam.bai\",\n \"revision\": \"9b46c6746aab2804696866bf21388f67\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581388/accepted_hits.bam.bai\",\n \"revision\": \"388e486448c30405987a1d9fc4aef94a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581499/accepted_hits.bam.bai\",\n \"revision\": \"8cc4b6a99129f40efce166ef8ac4d8b1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581591/accepted_hits.bam.bai\",\n \"revision\": \"59646ccc0570f9cdd9df0f0c20035e0a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581639/accepted_hits.bam.bai\",\n \"revision\": \"9ab4c753c18e3a2c732fd4f0eec1f552\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581672/accepted_hits.bam.bai\",\n \"revision\": \"0200f9733451f8f5b414109c654c8a64\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581676/accepted_hits.bam.bai\",\n \"revision\": \"440ce86e6787bb141ab78e5486314b16\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581678/accepted_hits.bam.bai\",\n \"revision\": \"8521fb87df46fb22e55d1bf06c4eea67\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581679/accepted_hits.bam.bai\",\n \"revision\": \"570e4432eb389dd63099ece98bfbcb86\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581680/accepted_hits.bam.bai\",\n \"revision\": \"652e0c03f1cefc3984c737c66f693a16\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581681/accepted_hits.bam.bai\",\n \"revision\": \"0471de078fb53ddff3f114d2b0a8c177\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581682/accepted_hits.bam.bai\",\n \"revision\": \"5d13fbff7da906223a6d05fff5a0a74c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581683/accepted_hits.bam.bai\",\n \"revision\": \"5642dc33c845a6944a53fb5d0e3a055e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581684/accepted_hits.bam.bai\",\n \"revision\": \"180ccd8f61146dc4853a087ea2cbb11d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581685/accepted_hits.bam.bai\",\n \"revision\": \"7839f7ef2462f74a24550cba8bd332ed\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581686/accepted_hits.bam.bai\",\n \"revision\": \"9c48d2772c343dde967720075fdc837d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581687/accepted_hits.bam.bai\",\n \"revision\": \"5d1e1423fd72026edce33eda174ed214\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581688/accepted_hits.bam.bai\",\n \"revision\": \"7077699948ed771450f49307a8ee5ebd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581689/accepted_hits.bam.bai\",\n \"revision\": \"09e893deca8b5e8baf92861a8d34a998\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581690/accepted_hits.bam.bai\",\n \"revision\": \"c94b530cb81772bf9ce7aece36fe12a5\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581691/accepted_hits.bam.bai\",\n \"revision\": \"b3d1c828dfee796b1f4e5dc75309441e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581692/accepted_hits.bam.bai\",\n \"revision\": \"33006ddb1d2aa2bb2a1110c33b3f6ee7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581693/accepted_hits.bam.bai\",\n \"revision\": \"7e4c8d1d04f57c35da745ab8449b2ccc\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581694/accepted_hits.bam.bai\",\n \"revision\": \"cee838e97c0d0bdaeca1f084280de0f7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581695/accepted_hits.bam.bai\",\n \"revision\": \"488b347be08057d992408c4ab68a292b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581696/accepted_hits.bam.bai\",\n \"revision\": \"a8d5692b9e39dadba35b0d8c35bdcbfb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581697/accepted_hits.bam.bai\",\n \"revision\": \"78d6e0f412dd9687427aad3f914c8a8b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581698/accepted_hits.bam.bai\",\n \"revision\": \"8e4b80c61c86a64a835d8d954ea738cf\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581699/accepted_hits.bam.bai\",\n \"revision\": \"505ee58d728cc0eca73b57d49f20f33e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581700/accepted_hits.bam.bai\",\n \"revision\": \"78e547956c95af206abc66f6ab77701d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581701/accepted_hits.bam.bai\",\n \"revision\": \"c9902e9e76b879845b666e30cf0399c1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581702/accepted_hits.bam.bai\",\n \"revision\": \"b157bbb93fa14c04c5c3da8c93541d0e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581703/accepted_hits.bam.bai\",\n \"revision\": \"4df3f8bd8ad8ca83fa12b8533b0ac2ea\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581704/accepted_hits.bam.bai\",\n \"revision\": \"92914db2852ad3aafc0e3dad5fd524a4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581705/accepted_hits.bam.bai\",\n \"revision\": \"a33ced7b8900bca138c2bdab938456f2\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581706/accepted_hits.bam.bai\",\n \"revision\": \"66b2d4aa967446f1d2ec4f0cab84ec0a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581707/accepted_hits.bam.bai\",\n \"revision\": \"d1c39413154c03d534dd6f70c6e0f1ce\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581708/accepted_hits.bam.bai\",\n \"revision\": \"835b7eb56eff3696d97f1d3745a83d41\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581709/accepted_hits.bam.bai\",\n \"revision\": \"6d166a6e8b52a7cfa299c7ae16755a1b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581710/accepted_hits.bam.bai\",\n \"revision\": \"c6032b9db761caebadd78e778faa4bcf\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581711/accepted_hits.bam.bai\",\n \"revision\": \"a9215e6dcbc3fd3f80ada793452e5b10\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581712/accepted_hits.bam.bai\",\n \"revision\": \"ab1976edab1deb750c3bf4f296ada0d1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581713/accepted_hits.bam.bai\",\n \"revision\": \"636f3211b89e72b469cf625086d68006\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581714/accepted_hits.bam.bai\",\n \"revision\": \"52b32b3baf1eb9327cb80033552cb969\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581715/accepted_hits.bam.bai\",\n \"revision\": \"91ac3109fccfda58d27f5b167c2f0805\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581716/accepted_hits.bam.bai\",\n \"revision\": \"74dc20248bae563aec599238fe35453e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581717/accepted_hits.bam.bai\",\n \"revision\": \"8640331f5ff7b4e612e9acc5a5e50977\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581719/accepted_hits.bam.bai\",\n \"revision\": \"8cde9d7d535b523741197fd625cfa8b9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581720/accepted_hits.bam.bai\",\n \"revision\": \"618c617c4985ebcb204c5d9e99bf9bbc\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581721/accepted_hits.bam.bai\",\n \"revision\": \"2930a5d860636a531d78a4f438d58707\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581724/accepted_hits.bam.bai\",\n \"revision\": \"a69f849b85f8c267a03a7b204cbbdf7b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581726/accepted_hits.bam.bai\",\n \"revision\": \"d8d40289ae1f2cf050ae4700919df7db\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581727/accepted_hits.bam.bai\",\n \"revision\": \"a6af224459198943e2aebff55a8dece1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581728/accepted_hits.bam.bai\",\n \"revision\": \"2e86bba53e3ce6bca05156f97bccb3e6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581730/accepted_hits.bam.bai\",\n \"revision\": \"310e41fb56d3d0e1ef80ba2e8336bf85\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581731/accepted_hits.bam.bai\",\n \"revision\": \"09107906661194d4dfcd804962edb88e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581732/accepted_hits.bam.bai\",\n \"revision\": \"36b422ade169eddc32e1e864feadf12b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581733/accepted_hits.bam.bai\",\n \"revision\": \"704e3417e99199a509915484c919355f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581734/accepted_hits.bam.bai\",\n \"revision\": \"f3f30f6fc9aff334bfc59c0e3f54f401\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581735/accepted_hits.bam.bai\",\n \"revision\": \"b4abd243467ec21606984ad4bc30cbe8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581736/accepted_hits.bam.bai\",\n \"revision\": \"e103ce27d1c4265fcf2918d8a31a247f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581737/accepted_hits.bam.bai\",\n \"revision\": \"b9c93ab8f75bb6d1db371adc9b52784d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581738/accepted_hits.bam.bai\",\n \"revision\": \"6eb5a0be35f2f495081dfafeb1958192\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581740/accepted_hits.bam.bai\",\n \"revision\": \"57cfb501d4e8cf400caecdda54c44802\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581831/accepted_hits.bam.bai\",\n \"revision\": \"1fbab6615945082f91adf71a14534761\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581833/accepted_hits.bam.bai\",\n \"revision\": \"9e6df907513395dee880e2d389d566b6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581834/accepted_hits.bam.bai\",\n \"revision\": \"971f3be532a2067cd0d00f8f281e8f8b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581835/accepted_hits.bam.bai\",\n \"revision\": \"ddac6d0152d39a5f094f4f01f67c6f9f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581836/accepted_hits.bam.bai\",\n \"revision\": \"afe55c01af26aee2810d0d0c1f29418e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581837/accepted_hits.bam.bai\",\n \"revision\": \"fadf9d90005b7b31e8af13190d5e532b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581838/accepted_hits.bam.bai\",\n \"revision\": \"1dc83e108f17822a283afeedb4d56d4b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581839/accepted_hits.bam.bai\",\n \"revision\": \"da5258dc67cfcfbb98659a8a582438ea\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581840/accepted_hits.bam.bai\",\n \"revision\": \"0eb861b1083f7256f2e81d2ec65c6d8c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581841/accepted_hits.bam.bai\",\n \"revision\": \"ce929ae66c3fa306200ba9ce66cfd029\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581842/accepted_hits.bam.bai\",\n \"revision\": \"b29d65973e658c219ff995bda3b399f7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581843/accepted_hits.bam.bai\",\n \"revision\": \"b87d15a5d529a16d51861ff952bc194c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581844/accepted_hits.bam.bai\",\n \"revision\": \"03655cbde5d7c89442c2667a9065f68e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581845/accepted_hits.bam.bai\",\n \"revision\": \"0f7dc11b370d2fb2e4e62b777b17c3f8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581846/accepted_hits.bam.bai\",\n \"revision\": \"184305447b5e39bd0d57daa91f9474cb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581847/accepted_hits.bam.bai\",\n \"revision\": \"07553f3a6b5538eb886d9d67e4aa7333\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581848/accepted_hits.bam.bai\",\n \"revision\": \"fccac4c7fcd296e9a521106ec36d57f2\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581849/accepted_hits.bam.bai\",\n \"revision\": \"0c6252fbc89bdbaeaa9120261a012aaf\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581850/accepted_hits.bam.bai\",\n \"revision\": \"860370410e3e482648a32e0554e54a27\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581851/accepted_hits.bam.bai\",\n \"revision\": \"c397db1086e1add97b208d238f5a6b82\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581852/accepted_hits.bam.bai\",\n \"revision\": \"474b5872ff0b1f350204d0f602ce00fd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581853/accepted_hits.bam.bai\",\n \"revision\": \"9f9154f89bd85e73351540c8390e556c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581854/accepted_hits.bam.bai\",\n \"revision\": \"d5a82d9c3fe4d53604a8f0196bc0de80\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581855/accepted_hits.bam.bai\",\n \"revision\": \"c70bfc603643c365151c24e3a628b7e1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581856/accepted_hits.bam.bai\",\n \"revision\": \"8ff962507f8820742f374be11fd1ca6d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581857/accepted_hits.bam.bai\",\n \"revision\": \"ee0bc291ab07d844b48dbd0d793b8619\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581858/accepted_hits.bam.bai\",\n \"revision\": \"e736b944ea00165f7874bb250797d477\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581859/accepted_hits.bam.bai\",\n \"revision\": \"d572af99f51493d17ef602c6f59aadef\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581860/accepted_hits.bam.bai\",\n \"revision\": \"e5ac1c2f394872073ffe748ba04cb0a0\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581861/accepted_hits.bam.bai\",\n \"revision\": \"7932a0481ba9d7552efff8161539c251\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581862/accepted_hits.bam.bai\",\n \"revision\": \"4b77cb6e1f1f0d4fcf4b9ffaa502b128\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581863/accepted_hits.bam.bai\",\n \"revision\": \"c6f233420cc67cc63b762b53f583abf1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581864/accepted_hits.bam.bai\",\n \"revision\": \"366d829918a077f69b803391f14a06ba\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581865/accepted_hits.bam.bai\",\n \"revision\": \"3fec4452f463c61d1d7f796042c00f37\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581866/accepted_hits.bam.bai\",\n \"revision\": \"ced32108c5c55f0912810208ea91a34c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581867/accepted_hits.bam.bai\",\n \"revision\": \"bb34514f1897edef1c4374f44bc29f7e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581868/accepted_hits.bam.bai\",\n \"revision\": \"c7bc60a6a54361275bd1f021bf581b9e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581869/accepted_hits.bam.bai\",\n \"revision\": \"0a7b079b87d10246885cf669b1da4813\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581870/accepted_hits.bam.bai\",\n \"revision\": \"4a26a725b44d82ec54fa41f32f22ab78\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581871/accepted_hits.bam.bai\",\n \"revision\": \"f0f0a01cf6ab707cfad1f530ad67cb7d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581872/accepted_hits.bam.bai\",\n \"revision\": \"05cfcf7ef950f00d486e84666fc3ad53\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581873/accepted_hits.bam.bai\",\n \"revision\": \"9ed51190a0a0aa7cba089e588f9f7f66\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581874/accepted_hits.bam.bai\",\n \"revision\": \"dc8af3f8a26a69b788ccc9d3fec3c29e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581875/accepted_hits.bam.bai\",\n \"revision\": \"aebee6b065bbae492dae8e68711b7fe8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581876/accepted_hits.bam.bai\",\n \"revision\": \"2f505fa0bb1376a49311645afc86a5f4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581877/accepted_hits.bam.bai\",\n \"revision\": \"03a30a89fa8853122efc4775fe07a509\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581878/accepted_hits.bam.bai\",\n \"revision\": \"054faa0faf034728ebac3711db6f1432\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581879/accepted_hits.bam.bai\",\n \"revision\": \"923b66da670d0c8c7edcf6c0899b5dee\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581880/accepted_hits.bam.bai\",\n \"revision\": \"db42ad0a672ffad4b4df243b655aeb8f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581881/accepted_hits.bam.bai\",\n \"revision\": \"6bb77dd0f8efa2b62f3661c3471ae92c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581882/accepted_hits.bam.bai\",\n \"revision\": \"ba56ffbe86b118a90f8e83e62ba2948f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581883/accepted_hits.bam.bai\",\n \"revision\": \"bec9cc75981bd29a3f3f1ca584aa20e1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581884/accepted_hits.bam.bai\",\n \"revision\": \"08e29049e70b6ab901005f50a71ed73b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581885/accepted_hits.bam.bai\",\n \"revision\": \"17d09c7b79e1492e79606c4e57dfe515\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581886/accepted_hits.bam.bai\",\n \"revision\": \"391e780261c28960836778970f53fda9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581887/accepted_hits.bam.bai\",\n \"revision\": \"795feb34895e7539c7af987d2f86d72f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581888/accepted_hits.bam.bai\",\n \"revision\": \"44495c91e78cea2358fd99afc519ea78\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581889/accepted_hits.bam.bai\",\n \"revision\": \"9c41c5af458228b23fc18021e2aab107\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581890/accepted_hits.bam.bai\",\n \"revision\": \"c1280398bbe5480c99d56a92120d23a9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581891/accepted_hits.bam.bai\",\n \"revision\": \"fb2b44a6951eb303835775bc25ed7367\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581892/accepted_hits.bam.bai\",\n \"revision\": \"96ec3ac57ddf7ddabb51b999562b2886\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581893/accepted_hits.bam.bai\",\n \"revision\": \"220a1f9506b669a01aa7b135bba30499\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581894/accepted_hits.bam.bai\",\n \"revision\": \"767e98c3404cad841d09f3949856e5c3\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581895/accepted_hits.bam.bai\",\n \"revision\": \"04495589b536ddd994f8c7966dabe5f1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581896/accepted_hits.bam.bai\",\n \"revision\": \"28954f7aa615a6cabdf8e6e12f5fdf8e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581897/accepted_hits.bam.bai\",\n \"revision\": \"cc83124a4ecc62643b4a0ed584b070df\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581898/accepted_hits.bam.bai\",\n \"revision\": \"a8a4147389df536f32b281993dc2e26e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3581899/accepted_hits.bam.bai\",\n \"revision\": \"89b326f5425969ba5d9b1d3d56362676\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724649/accepted_hits.bam.bai\",\n \"revision\": \"8baa4f21c5956c58f0f1fdd947a5a7a8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724650/accepted_hits.bam.bai\",\n \"revision\": \"0cd349d26d33bac76a6ba7cc02a9f7ce\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724651/accepted_hits.bam.bai\",\n \"revision\": \"43535acea7c38adaac38f99b65b055ed\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724652/accepted_hits.bam.bai\",\n \"revision\": \"06c5f5abcb7d62c9a667943f8173a8e1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724663/accepted_hits.bam.bai\",\n \"revision\": \"5cf07e5cef90fe80931333379f239e62\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724668/accepted_hits.bam.bai\",\n \"revision\": \"556998139485bbaa76df19c1e17eac13\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724737/accepted_hits.bam.bai\",\n \"revision\": \"b4edd498c3872994295129df84199381\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724739/accepted_hits.bam.bai\",\n \"revision\": \"17bcf5e4f46a924e8e7ff88558b983d0\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724741/accepted_hits.bam.bai\",\n \"revision\": \"fa291751450abd9743680d71140d60af\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724768/accepted_hits.bam.bai\",\n \"revision\": \"12d0e17110c65474208131e4c29f1cf6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724774/accepted_hits.bam.bai\",\n \"revision\": \"ee127920880f9b686fc2985f03b4e3e6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724778/accepted_hits.bam.bai\",\n \"revision\": \"fc59d363965ee5d9e4d435ad4409ec7c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724782/accepted_hits.bam.bai\",\n \"revision\": \"2408bd4c49bfc546cc17eae41819e5f1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724785/accepted_hits.bam.bai\",\n \"revision\": \"f56203f5e8560818a44be74cbdce952b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724786/accepted_hits.bam.bai\",\n \"revision\": \"4251fbd2e0727b157e290b4fb3b371ff\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724787/accepted_hits.bam.bai\",\n \"revision\": \"d4b7b16cbd4c2e41585f0869a3842d17\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724798/accepted_hits.bam.bai\",\n \"revision\": \"c781661b68ff3cd0d1fa5aa0786c102a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724806/accepted_hits.bam.bai\",\n \"revision\": \"a2f3dbf70a549a9c20274299aa50199e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3724814/accepted_hits.bam.bai\",\n \"revision\": \"c90091646dc7f2f9c690a991b3157bed\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725446/accepted_hits.bam.bai\",\n \"revision\": \"3a20a84fe3333bddcad49a74d6bb7bf9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725458/accepted_hits.bam.bai\",\n \"revision\": \"50c830b0eb15515e4b65201c452cb2fb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725471/accepted_hits.bam.bai\",\n \"revision\": \"f6427d97f49604538efa669329cbb740\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725482/accepted_hits.bam.bai\",\n \"revision\": \"b4d0ea04b6bdb0939bee8973fe29900d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725493/accepted_hits.bam.bai\",\n \"revision\": \"8e6cafd4dde819c51808c6bc041b4970\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725503/accepted_hits.bam.bai\",\n \"revision\": \"f2ea494bca260f8f410c4af6ef17c0c2\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725516/accepted_hits.bam.bai\",\n \"revision\": \"42b43c459060805ee53db2ef1a205743\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725527/accepted_hits.bam.bai\",\n \"revision\": \"5a16a028294ddcce1baee37c68d22e6e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725538/accepted_hits.bam.bai\",\n \"revision\": \"5f1e89581f2f9e102d9376095c2ca385\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725550/accepted_hits.bam.bai\",\n \"revision\": \"8d72055c5cb84569ffade08a4a7b53a1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR3725561/accepted_hits.bam.bai\",\n \"revision\": \"ac491f41f4cec20467dbeced8ffe29a8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR847501/accepted_hits.bam.bai\",\n \"revision\": \"1786f46eeb38171f37ca9244d8cb4e70\"\n },\n {\n \"url\": \"../../../cgi-bin/data/Klepikova/SRR847502/accepted_hits.bam.bai\",\n \"revision\": \"0ab4f36580722140c539faa58755c45b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1105822/accepted_hits.bam.bai\",\n \"revision\": \"1f59203e7e4ef21a90df9de277af42e9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1105823/accepted_hits.bam.bai\",\n \"revision\": \"3f8117df3e1f23fa8014a9e16ace9d50\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1159821/accepted_hits.bam.bai\",\n \"revision\": \"6fceded0b219c6f48d25d83c9602c530\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1159827/accepted_hits.bam.bai\",\n \"revision\": \"e6249e031b0cfab6fc2e0eb5f038d7a9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR1159837/accepted_hits.bam.bai\",\n \"revision\": \"df333cd81caeff1ee3c80e0e9aac451b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR314813/accepted_hits.bam.bai\",\n \"revision\": \"c3dae9dfcd5939f53febb58b99ad6358\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446027/accepted_hits.bam.bai\",\n \"revision\": \"58547866c1feb44d34a9dcb2faa02b07\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446028/accepted_hits.bam.bai\",\n \"revision\": \"d605894f0b05f858f73ec7de7fb3bfc9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446033/accepted_hits.bam.bai\",\n \"revision\": \"8bb76fecb54e558f07830f826dc0ef21\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446034/accepted_hits.bam.bai\",\n \"revision\": \"e978cf50eeec836ba7ec871c6cb599f7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446039/accepted_hits.bam.bai\",\n \"revision\": \"8fcc2d21df295b917b37b86aaa43eed1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446040/accepted_hits.bam.bai\",\n \"revision\": \"41e4d4e4d25127017b93ee5cf737d26a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446484/accepted_hits.bam.bai\",\n \"revision\": \"0bac90204e0f8f659e4aa7163184d3e8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446485/accepted_hits.bam.bai\",\n \"revision\": \"826092002208472ac62f1242c2bd7c8f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446486/accepted_hits.bam.bai\",\n \"revision\": \"094540bb352f5d0d8c1cf4cbd3359651\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR446487/accepted_hits.bam.bai\",\n \"revision\": \"b09303aa7c5bc090597a6029c589d6fc\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR493036/accepted_hits.bam.bai\",\n \"revision\": \"ec40f2e69a1ac9d779c432f29881d275\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR493097/accepted_hits.bam.bai\",\n \"revision\": \"f3019bd4b6435fc864ef6e54b1d40896\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR493098/accepted_hits.bam.bai\",\n \"revision\": \"3b9cf2e84c411d2f61dd959a327fcad9\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR493101/accepted_hits.bam.bai\",\n \"revision\": \"972a5b0c96d3b9b2677606db5292c756\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR764885/accepted_hits.bam.bai\",\n \"revision\": \"3e7bdeb3c9c126bc4fa8f5785dc5d8f7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR924656/accepted_hits.bam.bai\",\n \"revision\": \"9e51595e33b3931e043105c076fcc513\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR934391/accepted_hits.bam.bai\",\n \"revision\": \"54804fe3e5a5568eaf4b9cd993731dd0\"\n },\n {\n \"url\": \"../../../cgi-bin/data/leaf/SRR942022/accepted_hits.bam.bai\",\n \"revision\": \"af83e38f1a885527c5ea88c1deb54985\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR070570/accepted_hits.bam.bai\",\n \"revision\": \"253a622fbd7b15730a85f46f9de217ab\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR070571/accepted_hits.bam.bai\",\n \"revision\": \"a4a7d70a2a5d6790230f14117069920b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR1001909/accepted_hits.bam.bai\",\n \"revision\": \"00b95124ac0bad8b3b0514cb5392ab0d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR1001910/accepted_hits.bam.bai\",\n \"revision\": \"bf5c80add2ebaf3eaac41b6b4ac753ab\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR1019221/accepted_hits.bam.bai\",\n \"revision\": \"c3ab9a0f264ce038994b448e8e210a24\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR345561/accepted_hits.bam.bai\",\n \"revision\": \"352ad71d4b0b2661214c376dedd1f507\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR345562/accepted_hits.bam.bai\",\n \"revision\": \"87356040f53ae67d60f8128835a01777\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR346552/accepted_hits.bam.bai\",\n \"revision\": \"d9aef462648ec0271fa1dc2088b0e7af\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR346553/accepted_hits.bam.bai\",\n \"revision\": \"691e6bd9eda925f13420716cf13cf54e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR394082/accepted_hits.bam.bai\",\n \"revision\": \"fb4ac4b98e5a93ba0282a9acf69d77e5\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR504179/accepted_hits.bam.bai\",\n \"revision\": \"66ff5551328a2ee8b8b1f9f375d99eb4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR504180/accepted_hits.bam.bai\",\n \"revision\": \"9b82c3a83372fd7dea005dd5dc4a2b63\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR504181/accepted_hits.bam.bai\",\n \"revision\": \"188411c66586bad65187f8dba8c730ec\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR515073/accepted_hits.bam.bai\",\n \"revision\": \"5d24f2df4d013fee1d036b8d1734beeb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR515074/accepted_hits.bam.bai\",\n \"revision\": \"1d1cea0d2451daa8e70354308ce70c44\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR527164/accepted_hits.bam.bai\",\n \"revision\": \"9ec43b81497b19c111923e5e79d78277\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR527165/accepted_hits.bam.bai\",\n \"revision\": \"adb3fae17b08eeda152883c26580e20a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR584115/accepted_hits.bam.bai\",\n \"revision\": \"7400525012004e68bd52e5d2bbfa141c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR584121/accepted_hits.bam.bai\",\n \"revision\": \"ee964b622cab2ecc6109abc9428bfaa8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR584129/accepted_hits.bam.bai\",\n \"revision\": \"01c635ec5fdc12f4cbfab52cc7806542\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR584134/accepted_hits.bam.bai\",\n \"revision\": \"0f0cad62ae473ad66bf24ff674add1d6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653555/accepted_hits.bam.bai\",\n \"revision\": \"3b1a341a7473577ba673be1aa1669cc8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653556/accepted_hits.bam.bai\",\n \"revision\": \"24de0f8a0c67cd6574983ba45e85b92b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653557/accepted_hits.bam.bai\",\n \"revision\": \"9db6d46a42228a4ec0305745a63ba69d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653561/accepted_hits.bam.bai\",\n \"revision\": \"fa37f25b5cfd8d715cad359490d30718\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653562/accepted_hits.bam.bai\",\n \"revision\": \"a46d3b87ec2ca397214593cb18d8a1ef\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653563/accepted_hits.bam.bai\",\n \"revision\": \"a548597961db9d7673e2b39b46c7da5e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653564/accepted_hits.bam.bai\",\n \"revision\": \"6d221fe1e7e6210a91f1c6d109828346\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653565/accepted_hits.bam.bai\",\n \"revision\": \"f272c81e2da94d9658f8dbd1f1275bfb\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653566/accepted_hits.bam.bai\",\n \"revision\": \"232da2bd399f00b0bae9e1ebb48f6ec8\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653567/accepted_hits.bam.bai\",\n \"revision\": \"a1da73954d0235572da3494ab0fdfe1c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653568/accepted_hits.bam.bai\",\n \"revision\": \"3722d0f942c435fa2b1692e29aeb280c\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653569/accepted_hits.bam.bai\",\n \"revision\": \"500616f990bd93198665b838d6912237\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653570/accepted_hits.bam.bai\",\n \"revision\": \"418da1b3b92e0e17e65cd856376c8826\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653571/accepted_hits.bam.bai\",\n \"revision\": \"8e01bd9ba6b7657dd6382dde31dcc6b1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653572/accepted_hits.bam.bai\",\n \"revision\": \"e7310649f000c637c86f1c14a82e17fd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653573/accepted_hits.bam.bai\",\n \"revision\": \"ccfe9ea83af958f7e1569c6a286b8af2\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653574/accepted_hits.bam.bai\",\n \"revision\": \"aca14870d5fd007dac23fd31d0a5a29b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653575/accepted_hits.bam.bai\",\n \"revision\": \"261f43be2af3d979b6e8c9862acbe1b0\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653576/accepted_hits.bam.bai\",\n \"revision\": \"fb871e4c3ae5712a1aa29183e9e2763f\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653577/accepted_hits.bam.bai\",\n \"revision\": \"1e77eeb194d6800471943dd43cbd48f1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR653578/accepted_hits.bam.bai\",\n \"revision\": \"8c8edf8c27885a6db191428a9b8d488d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR797194/accepted_hits.bam.bai\",\n \"revision\": \"f3d525e421eb46ba85b4bee2b1de7d11\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR797230/accepted_hits.bam.bai\",\n \"revision\": \"bac1da05ebeffa9efe92dddc52f3f154\"\n },\n {\n \"url\": \"../../../cgi-bin/data/light/SRR833246/accepted_hits.bam.bai\",\n \"revision\": \"22af78cd960848cdafd011189bb772e1\"\n },\n {\n \"url\": \"../../../cgi-bin/data/pollen/SRR847501/accepted_hits.bam.bai\",\n \"revision\": \"ce884bf17bd69e891c1f6096f8e3fb53\"\n },\n {\n \"url\": \"../../../cgi-bin/data/pollen/SRR847502/accepted_hits.bam.bai\",\n \"revision\": \"80d8fb863f5d84bddbf0adbf30d08957\"\n },\n {\n \"url\": \"../../../cgi-bin/data/RAM/SRR1260032/accepted_hits.bam.bai\",\n \"revision\": \"f2be3c072459c2fc01370e4ae05a1a48\"\n },\n {\n \"url\": \"../../../cgi-bin/data/RAM/SRR1260033/accepted_hits.bam.bai\",\n \"revision\": \"89dfc110834c249f6f12a84888c629fe\"\n },\n {\n \"url\": \"../../../cgi-bin/data/RAM/SRR1261509/accepted_hits.bam.bai\",\n \"revision\": \"cdc7376677d280fa65112d53e83b4839\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401413/accepted_hits.bam.bai\",\n \"revision\": \"e84df8b1900612a62be329b1e5aff079\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401414/accepted_hits.bam.bai\",\n \"revision\": \"d5a98622a5b0532db79cb3cf03c44fac\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401415/accepted_hits.bam.bai\",\n \"revision\": \"1576be1f1b1d098f9a3eda42c5ff178d\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401416/accepted_hits.bam.bai\",\n \"revision\": \"1c8288c1340a1e47876dc658280fecac\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401417/accepted_hits.bam.bai\",\n \"revision\": \"5c28720a2241d533ef8be526f9dce343\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401418/accepted_hits.bam.bai\",\n \"revision\": \"6d8e83c385c5c873e09957288020b6b6\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401419/accepted_hits.bam.bai\",\n \"revision\": \"bf3364e1b8dd0be87d1e549b7f2c5641\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401420/accepted_hits.bam.bai\",\n \"revision\": \"5f0b7ffe4eb51644ec176a64448fa73e\"\n },\n {\n \"url\": \"../../../cgi-bin/data/receptacle/SRR401421/accepted_hits.bam.bai\",\n \"revision\": \"5fda291436659903ed652ec1c34b6900\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/ERR274309/accepted_hits.bam.bai\",\n \"revision\": \"bb50e2ae0ff7d66bfbb9f84d068ecde7\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1046909/accepted_hits.bam.bai\",\n \"revision\": \"7058550eeac33d8019da041f8b6f5069\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1046910/accepted_hits.bam.bai\",\n \"revision\": \"879d2d40c7b657f60eaa63e1d795a98a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1524935/accepted_hits.bam.bai\",\n \"revision\": \"aed5a151f3fdaab9fd7225dba3d5940a\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1524938/accepted_hits.bam.bai\",\n \"revision\": \"ae00f12c934ae8681d0142c650480a7b\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR1524940/accepted_hits.bam.bai\",\n \"revision\": \"3f2b2207bf7b40abe57b916b77075353\"\n },\n {\n \"url\": \"../../../cgi-bin/data/root/SRR314814/accepted_hits.bam.bai\",\n \"revision\": \"879f37f50fda5726eb79d43b9c3be3dd\"\n },\n {\n \"url\": \"../../../cgi-bin/data/SAM/SRR949956/accepted_hits.bam.bai\",\n \"revision\": \"40ce9854110d2a13f37aa98575d046b4\"\n },\n {\n \"url\": \"../../../cgi-bin/data/SAM/SRR949965/accepted_hits.bam.bai\",\n \"revision\": \"ad8895257f945dd2208d5442ac880a96\"\n },\n {\n \"url\": \"../../../cgi-bin/data/SAM/SRR949988/accepted_hits.bam.bai\",\n \"revision\": \"61270aaa529f4ddb3725882fc8d18768\"\n },\n {\n \"url\": \"../../../cgi-bin/data/SAM/SRR949989/accepted_hits.bam.bai\",\n \"revision\": \"09eea158d0dac8d977f6aa4dd54a36bb\"\n },\n {\n \"url\": \"../../../cgi-bin/get_exon_base64_exongraph.png\",\n \"revision\": \"bc8188977bc489350c900ad26bc272fb\"\n },\n {\n \"url\": \"../../../cgi-bin/get_gene_structures.cgi\",\n \"revision\": \"26b4acf6db75474d7e6103a25385fed1\"\n },\n {\n \"url\": \"../../../cgi-bin/get_gene_structures.html\",\n \"revision\": \"4cdbaefb9ac893c21e6c030fa5aba92d\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-144x144.png\",\n \"revision\": \"6aa216b232a25383e5b374fa92649f8e\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-192x192.png\",\n \"revision\": \"9a3171627fb93c14b45814508213f4fc\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-256x256.png\",\n \"revision\": \"1ae7955a2611f1bf46c1ba8b7ec169f1\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-36x36.png\",\n \"revision\": \"7410a290c1537082c7c3cf8ffccd6917\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-384x384.png\",\n \"revision\": \"82426ddd9dc183454ddf5e6e36b1afbb\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-48x48.png\",\n \"revision\": \"f602e0082bbcc7de9f975f58d2d6de85\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-512x512.png\",\n \"revision\": \"437bb1be87cdb0feddb00d9c44fcce41\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-72x72.png\",\n \"revision\": \"35d48d22cf7e2f1efc5736d44602e6a7\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/android-chrome-96x96.png\",\n \"revision\": \"c9ba5d290339fb492d3fc8c2d24a1e79\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-114x114-precomposed.png\",\n \"revision\": \"f93f4ea7b8e7b67a3335dd3bb581da17\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-114x114.png\",\n \"revision\": \"1eff9b0569d780c80c1df71f5164eec3\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-120x120-precomposed.png\",\n \"revision\": \"4ec14dcc7185e95229335e65671366ce\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-120x120.png\",\n \"revision\": \"6d0f888cc80dad397ea55bf1d473a028\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-144x144-precomposed.png\",\n \"revision\": \"0ec9769ea9f4447b15caecba3191938a\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-144x144.png\",\n \"revision\": \"40fd9584b9d30b31740f76fa8ca1235c\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-152x152-precomposed.png\",\n \"revision\": \"c46229f4a4c1b3beb147ffb8ece33040\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-152x152.png\",\n \"revision\": \"be6138eec66a53b3384297e0cf15db39\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-180x180-precomposed.png\",\n \"revision\": \"d4d7ccec62c79ecf32034ad632cd6231\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-180x180.png\",\n \"revision\": \"3eae3e68773828dd6f783cdc5281fc66\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-57x57-precomposed.png\",\n \"revision\": \"bfe3d340d1da05a22158e8d63d75b646\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-57x57.png\",\n \"revision\": \"932f18fa0f0b708d24ad185664251055\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-60x60-precomposed.png\",\n \"revision\": \"1dccb7114c4888de8b71622bbbb41a02\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-60x60.png\",\n \"revision\": \"38f6fdd2f70eb7385f245195d75c38c4\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-72x72-precomposed.png\",\n \"revision\": \"cd799bf2df7eb07cfc4af6a486c0d0bc\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-72x72.png\",\n \"revision\": \"7cff9a362d0ac807dd6ca8ae738e8836\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-76x76-precomposed.png\",\n \"revision\": \"454271b7b29164d430fa790e9e450dff\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-76x76.png\",\n \"revision\": \"de8f88f28e367a284fc39dd360fe00b2\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon-precomposed.png\",\n \"revision\": \"d4d7ccec62c79ecf32034ad632cd6231\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/apple-touch-icon.png\",\n \"revision\": \"3eae3e68773828dd6f783cdc5281fc66\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/browserconfig.xml\",\n \"revision\": \"6a2fcd1a52a6cb53a9ff5317d8e2ad96\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/favicon-16x16.png\",\n \"revision\": \"778e2a523b867301222f390f5ee7dcca\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/favicon-32x32.png\",\n \"revision\": \"083534383d3f008b5890448ca54940a7\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/favicon.ico\",\n \"revision\": \"f3dc2bf19ab26151c3717363be75fac5\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x128.png\",\n \"revision\": \"899c43b186582a63324516c2c1e5f048\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x192.png\",\n \"revision\": \"04e99dc63a424ea33de8eff9f2e1df83\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x384.png\",\n \"revision\": \"c4c8bb30b6bab2bab15fd75eb6f678f5\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x48.png\",\n \"revision\": \"89470a5e6d25c711c40d54ea30dee034\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x512.png\",\n \"revision\": \"dfa6ac52dac80a2938a3adf2bbdda46d\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x72.png\",\n \"revision\": \"b4d2d67802a700229a8731931fd698b0\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon_x96.png\",\n \"revision\": \"6365ad9cc32211d3c6476eea2893355c\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/maskable_icon.png\",\n \"revision\": \"4a6a9e89a616e4868e36a695a408222a\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-144x144.png\",\n \"revision\": \"1134e80a6e3730bd468c0798a14e14e0\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-150x150.png\",\n \"revision\": \"476a61c0d9c59411ae779eb81376ebaf\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-310x150.png\",\n \"revision\": \"3a23b4170779ab61f432268956969271\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-310x310.png\",\n \"revision\": \"3224651e0961dd7a643c35da88f50807\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/mstile-70x70.png\",\n \"revision\": \"48decad196c52519ffe63de28f90f0dc\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/og-image.jpg\",\n \"revision\": \"a11a25eb7e78f676e6cab288a9bd0453\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/resoc.png\",\n \"revision\": \"1eef07e183884f512fccf7199e399e3f\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/safari-pinned-tab.svg\",\n \"revision\": \"9229710b0428548ddc2663b4c217ebac\"\n },\n {\n \"url\": \"../../../cgi-bin/icon/site.webmanifest\",\n \"revision\": \"cac55327a2672b63c4a97aa288f64ced\"\n },\n {\n \"url\": \"../../../cgi-bin/img/BAR-logo.png\",\n \"revision\": \"dfcd25ffc15bfc733819e6a4dc157a0f\"\n },\n {\n \"url\": \"../../../cgi-bin/img/BAR-logo.svg\",\n \"revision\": \"e8df5b65bfed1fa05645922b584e4914\"\n },\n {\n \"url\": \"../../../cgi-bin/img/BAR-logo.webp\",\n \"revision\": \"9d8cb12084dbd0e177210c87170c9e63\"\n },\n {\n \"url\": \"../../../cgi-bin/img/error.png\",\n \"revision\": \"1d71f786ed428e61081422d063ea7c83\"\n },\n {\n \"url\": \"../../../cgi-bin/img/error.webp\",\n \"revision\": \"8879a22bc144f7e1d64ff967f21f2914\"\n },\n {\n \"url\": \"../../../cgi-bin/img/googleSignin/btn_google_light_normal_ios.svg\",\n \"revision\": \"3f8823279b3f25e18a4a115a2fc5e638\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0001_geneLocusAutofill.png\",\n \"revision\": \"c655ed3804b930b15f4e52e724541c47\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0001_geneLocusAutofill.webp\",\n \"revision\": \"861bb56ec43cd78bb5173247aa03fa73\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0002_selectDataset.png\",\n \"revision\": \"4d7c835d62240505ff5b3383609f6acb\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0002_selectDataset.webp\",\n \"revision\": \"4fbc4b7be83153359f2038baa0642196\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0003_selectOptions.png\",\n \"revision\": \"eb4d429a942a7bbff6b35524604272f1\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0004_yAxisScale.png\",\n \"revision\": \"535b1d4ffcfb53331db9773c8bfa9099\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0005_absoluteMax.png\",\n \"revision\": \"95ae278d3cb23909348695d53a1e31c9\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0006_loadData.png\",\n \"revision\": \"27dbfe5f82dcb5c3ba3e23eb237c4c13\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0007_hideNav.png\",\n \"revision\": \"f365b3ecc3c6c4d9f3912653161f94f9\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0008_eFPOverviewGeneral.png\",\n \"revision\": \"746af3110d4a52bed910cd5872e7359a\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0009_eFPOverviewHover.png\",\n \"revision\": \"beda2c842b8fe6eec7de1a355bf19c2c\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0010_GenerateData.png\",\n \"revision\": \"c09552da9c3f592b8b49c04f3e6224e5\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0011_UploadExcel.png\",\n \"revision\": \"e4f73dff004a2b862054a0bcadfa0895\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0012_TissueSelect.png\",\n \"revision\": \"d69adf3b6251f067d4717379ee2b659d\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0013_bulkTemplate.png\",\n \"revision\": \"86ec9b93d271627c7a1268ac7f534d6d\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0014_manageAccount.png\",\n \"revision\": \"5cd787c97e64bbc4a433a7a5fb2000b5\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0015_downloadTableAsImage.png\",\n \"revision\": \"8fbe6889ad3620c224c97527db855ae6\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0016_downloadeFPOverviewAsImage.png\",\n \"revision\": \"7aca546f9df28f39aaa6481c14c6b880\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0017_toggleTable.png\",\n \"revision\": \"66074449a6773d785a2be0d86b53b504\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0018_eFPOverviewScrollTo.png\",\n \"revision\": \"a3e44414f7bb90f6a85f89eb7f6c88cb\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0019_eFPImagesFilter.png\",\n \"revision\": \"784bdd049f913a2f1d9d04c7753c77f7\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0020_compareGeneVariants.png\",\n \"revision\": \"79d4919f55b2428acff2327fe02350e0\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0020_compareGeneVariants.webp\",\n \"revision\": \"ad09c4a0371ec0bffe346945e49f8794\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0020_sharingSession.png\",\n \"revision\": \"6e5ecf270f9f781260d19a6612bf9fc9\"\n },\n {\n \"url\": \"../../../cgi-bin/img/helpModal/0020_sharingSession.webp\",\n \"revision\": \"78e21989ddfca4d510706727a5b8992a\"\n },\n {\n \"url\": \"../../../cgi-bin/img/landingPage.jpg\",\n \"revision\": \"874a480d4121f46051a5ff66b3141f2f\"\n },\n {\n \"url\": \"../../../cgi-bin/img/landingPage.webp\",\n \"revision\": \"a851acf23fb70bc7a781a6a3fc951e1a\"\n },\n {\n \"url\": \"../../../cgi-bin/rnaSeqMapCoverage.cgi\",\n \"revision\": \"e2e5e17d98897a048b3ae0e65b4eb5c1\"\n },\n {\n \"url\": \"../../../cgi-bin/rnaSeqMapCoverage.html\",\n \"revision\": \"93d862f25a6082897824ecc51f2efaac\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page.html\",\n \"revision\": \"35289c70fda9c3b6cd0e820be4b15d1a\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/bulk_template-protection.txt\",\n \"revision\": \"8b5a8d10c337f4f9b74cdc6c466f1e11\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/bulk_template.xlsx\",\n \"revision\": \"9a592c19313d16189dc90b7a51e467ed\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/Images/dropArrow.png\",\n \"revision\": \"fc9faee89a24136d2ba232bfe59e619a\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/submissionStyle.css\",\n \"revision\": \"502ac23a2f099a8d1c5a5371cc95f5cc\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/submissionStyle.min.css\",\n \"revision\": \"7ae04fb69283bbdd3a9070afed1079b1\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/XMLgenerator.js\",\n \"revision\": \"75dfd2619cb6006fa40510f30c4166c1\"\n },\n {\n \"url\": \"../../../cgi-bin/Submission_page/XMLgenerator.min.js\",\n \"revision\": \"191739abe40b1a98363a882f6ace52bc\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/__README.txt\",\n \"revision\": \"06800956c4ef38dc31c48cd713de296c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/10dayOldSeedling.min.svg\",\n \"revision\": \"9f31c942892426c75ec6c499fa88ff1d\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/10dayOldSeedling.svg\",\n \"revision\": \"e7d8f9b74c6218e5d3f0fdd92b9a6c49\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/15dayOldSeedling.min.svg\",\n \"revision\": \"ec4aaed66e50685be22fdfb4d388fb38\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/15dayOldSeedling.svg\",\n \"revision\": \"5985ad1dbde89a3efca2b706a8bf12ae\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowDefault.min.svg\",\n \"revision\": \"4319ab16a880baa3faf273fb4e0c3cb9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowDefault.svg\",\n \"revision\": \"1fb973904ae245ab5dbbbc7c2def3501\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowSortDown.min.svg\",\n \"revision\": \"4733ce9fde412229984e4259c3dc6402\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowSortDown.svg\",\n \"revision\": \"af42ec3c56b64fddcef50142d9213347\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowSortUp.min.svg\",\n \"revision\": \"c5b271cfa1e67b33b48e8d1083661885\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/arrowSortUp.svg\",\n \"revision\": \"8f0a05c8335f61bf8f5a670c09dae32a\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/EarlyBuddingFlower.min.svg\",\n \"revision\": \"2f31eee63a2f2a8995aa41df36343f5c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/EarlyBuddingFlower.svg\",\n \"revision\": \"1fc5560ee23ff302cd7c9874f4ac7e1b\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/etiolatedSeedling.min.svg\",\n \"revision\": \"b07700d578a62fddba77e794f4f0152f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/etiolatedSeedling.svg\",\n \"revision\": \"acf5481e52e88001991e5ab051e63f29\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Flower.min.svg\",\n \"revision\": \"9fcce16d0ddc53938da621818ab49180\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Flower.svg\",\n \"revision\": \"f9732ba6d23200a74a1f34bff512c17f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerBud.min.svg\",\n \"revision\": \"97d3a2f4639568e946ffff75e4d6919c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerBud.svg\",\n \"revision\": \"982a4a66d11e4c5abeb43ffc2bf3a492\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment1.min.svg\",\n \"revision\": \"143dcc5ae5e99dd7cd845ad351f536e9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment1.svg\",\n \"revision\": \"958f6c24ba4d3f1723a1ff31a175275c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment12-14.min.svg\",\n \"revision\": \"dfd30d4f05ced82fdecebfb498123b4f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment12-14.svg\",\n \"revision\": \"515d18d42e02fc615542d90ad6fa2c37\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment15-18.min.svg\",\n \"revision\": \"d50c60ee81fbc50cada035eedb13d15f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment15-18.svg\",\n \"revision\": \"428887ce400b435b4ed9f18048a1a41f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment19.min.svg\",\n \"revision\": \"12ace2c4f8789aed058861b5223a0e3f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment19.svg\",\n \"revision\": \"9ee52eaeda7aed787d415cfedcad576d\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment2.min.svg\",\n \"revision\": \"e6f3ec29c5f529eea796613d56b02081\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment2.svg\",\n \"revision\": \"a2784c197770ed567aff53038ecc2df5\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment3.min.svg\",\n \"revision\": \"e78e2c4621584ffd5e9887317e0c3e07\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment3.svg\",\n \"revision\": \"2356db079d1e2aeff4cb3f780127c61f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment4.min.svg\",\n \"revision\": \"e39d10520e1b473d504f40ab94f30355\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment4.svg\",\n \"revision\": \"38f4377170162b5b9050735685b8b3e7\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment5.min.svg\",\n \"revision\": \"daa0d6aeec611e7d329a393d05249d98\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment5.svg\",\n \"revision\": \"47c537bd7656646271c3058fab5b604c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment6-8.min.svg\",\n \"revision\": \"227cecf683601c5481b3b23ea4dae352\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment6-8.svg\",\n \"revision\": \"40884a50f3ee158df2654876975c9239\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment9-11.min.svg\",\n \"revision\": \"fd28130137874c03684972ea25df46b6\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerDevelopment9-11.svg\",\n \"revision\": \"0162c9dd7ff64951045ca9c11593d8cb\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerParts.min.svg\",\n \"revision\": \"00fa5e2b2a9421119d3da588ae6863c4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/FlowerParts.svg\",\n \"revision\": \"b4b5f2a9eb596b9f65226c0a4eae6e4d\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/GerminatingSeed.min.svg\",\n \"revision\": \"1554ed3908e2ab727759159b7233a9e9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/GerminatingSeed.svg\",\n \"revision\": \"cd60ab9fa57755fec57d5f525eaac997\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Internode.min.svg\",\n \"revision\": \"dd7cfc194d99bbfdef0dd21be527c22c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Internode.svg\",\n \"revision\": \"8521a31d2618b5c0515f22c0971cf1da\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/leaf.min.svg\",\n \"revision\": \"d6180cfad5b56e135eb3390dca8cd920\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/leaf.svg\",\n \"revision\": \"3ad98b0b0df53cfea67ae7a3704fdc69\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/LeafParts.min.svg\",\n \"revision\": \"9153dad52413cc82342b03537692503c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/LeafParts.svg\",\n \"revision\": \"832a80b998b15d29518b95988af951a4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/OpenMenu.min.svg\",\n \"revision\": \"9e594db2cb5ce470d55d3d646ec6ff2b\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/OpenMenu.svg\",\n \"revision\": \"43067421eb8d322c14d67282e68dd022\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Other.min.svg\",\n \"revision\": \"19742061f618c8e93094f3d520501cd4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Other.svg\",\n \"revision\": \"ebf43d746577c5c380c66b069cab1511\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Pollen.min.svg\",\n \"revision\": \"3a2d573a3aabdd921eb9f62a41351739\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Pollen.svg\",\n \"revision\": \"0520ad69c33a4a7f44d83124489ae177\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/RootTip.min.svg\",\n \"revision\": \"d0c8035d19e75e6061bf85ef283ffdc5\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/RootTip.svg\",\n \"revision\": \"065ee0e32637a626323cd1355d8bcd98\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/rosettePlusRoot.min.svg\",\n \"revision\": \"01629f245fc9770d1cf307eeb76a288a\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/rosettePlusRoot.svg\",\n \"revision\": \"b8f9d68fab16c8e1551aed3560e6b0b5\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed1-4.min.svg\",\n \"revision\": \"8f4d22249e0e49ea1989611e2bdecd6e\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed1-4.svg\",\n \"revision\": \"ab3c09c00dcda1eab05cf9d2eed42299\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed5-7.min.svg\",\n \"revision\": \"e9d48d8e0ab38da1c7eb28a4ee9eb7d9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed5-7.svg\",\n \"revision\": \"e5118ad11087384001358333481f1db4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed8+.min.svg\",\n \"revision\": \"7f9aa8b624378e0b51086a3be05e98d9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Seed8+.svg\",\n \"revision\": \"79a2db7427367f5e904b2d91fb7f65bb\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/SenescentLeaf.min.svg\",\n \"revision\": \"4ad2e62a2c07d8ea22689bf15d49c1e4\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/SenescentLeaf.svg\",\n \"revision\": \"b18e0970629fe6719fc6489732d8ddcc\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/ShootApexInflorescense.min.svg\",\n \"revision\": \"231e10fca505aded308007081cb4f769\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/ShootApexInflorescense.svg\",\n \"revision\": \"74cda237197df019a2bb712bc864f60c\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/ShootApexVegetative-Transition.min.svg\",\n \"revision\": \"7aa6768353eab59ccbebe03bbeb3b699\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/ShootApexVegetative-Transition.svg\",\n \"revision\": \"d814a9174a3add197e8e94a6f56be2ba\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Silique1-5.min.svg\",\n \"revision\": \"55dad36e25ef03e608f8fb6930ee28ac\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Silique1-5.svg\",\n \"revision\": \"e7423203710a25731ff482612b96cb7b\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Silique6-10.min.svg\",\n \"revision\": \"3aa8fc2376199272178de148b40cbe01\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Silique6-10.svg\",\n \"revision\": \"e0b2582bb9014c51680e7af02fd169a9\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Stamen.min.svg\",\n \"revision\": \"0b15f28ac1f0fe60ab2ebbda3b994cfc\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/Stamen.svg\",\n \"revision\": \"48c83749a615cb2e910e3798a8f7823a\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/StigmaAndOvaries.min.svg\",\n \"revision\": \"ace4babdf063e4f10afd89ad1b7bf33f\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/StigmaAndOvaries.svg\",\n \"revision\": \"261cff0f306ddf17ada8259c1a2e5886\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/WholeSilique.min.svg\",\n \"revision\": \"019ebb1f885a12ba47d4d3cc8ffe6660\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/WholeSilique.svg\",\n \"revision\": \"aad5c0471dc31efa5f02e9b8da25004e\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/YoungLeaf1-4.min.svg\",\n \"revision\": \"ed2b105cba6fc7088cea073d24b5356e\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/YoungLeaf1-4.svg\",\n \"revision\": \"2bcead9ed8032bcd82c4482c8f5925dd\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/youngSeedling.min.svg\",\n \"revision\": \"1b440a064be9ce47cc6c6a40c89316e2\"\n },\n {\n \"url\": \"../../../cgi-bin/SVGs/youngSeedling.svg\",\n \"revision\": \"d20b1192c8ed306f4b463897fe443098\"\n }\n], {});\n\n\n\n\nworkbox_routing_registerRoute(/\\.(?:png|jpg|jpeg|webp|ico|svg)$/, new workbox_strategies_CacheFirst({ \"cacheName\":\"images\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 10 })] }), 'GET');\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","workbox_routing_registerRoute","workbox_strategies_CacheFirst","cacheName","plugins","workbox_expiration_ExpirationPlugin","maxEntries"],"mappings":"0nBAsBAA,KAAKC,iBAAiB,WAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,iBAYTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,yBACKC,SAAA,oCAEd,CACED,IAAO,6BACKC,SAAA,oCAEd,CACED,IAAO,wDACKC,SAAA,oCAEd,CACED,IAAO,4DACKC,SAAA,oCAEd,CACED,IAAO,4DACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,8DACKC,SAAA,oCAEd,CACED,IAAO,8DACKC,SAAA,oCAEd,CACED,IAAO,kEACKC,SAAA,oCAEd,CACED,IAAO,6DACKC,SAAA,oCAEd,CACED,IAAO,iEACKC,SAAA,oCAEd,CACED,IAAO,iEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,2DACKC,SAAA,oCAEd,CACED,IAAO,wDACKC,SAAA,oCAEd,CACED,IAAO,4DACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,yDACKC,SAAA,oCAEd,CACED,IAAO,iDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,gDACKC,SAAA,oCAEd,CACED,IAAO,mEACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,wEACKC,SAAA,oCAEd,CACED,IAAO,gFACKC,SAAA,oCAEd,CACED,IAAO,yEACKC,SAAA,oCAEd,CACED,IAAO,6EACKC,SAAA,oCAEd,CACED,IAAO,sEACKC,SAAA,oCAEd,CACED,IAAO,6EACKC,SAAA,oCAEd,CACED,IAAO,sEACKC,SAAA,oCAEd,CACED,IAAO,+EACKC,SAAA,oCAEd,CACED,IAAO,wEACKC,SAAA,oCAEd,CACED,IAAO,iDACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,4DACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,6CACKC,SAAA,oCAEd,CACED,IAAO,gDACKC,SAAA,oCAEd,CACED,IAAO,+CACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,8DACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,+CACKC,SAAA,oCAEd,CACED,IAAO,6CACKC,SAAA,oCAEd,CACED,IAAO,2CACKC,SAAA,oCAEd,CACED,IAAO,6DACKC,SAAA,oCAEd,CACED,IAAO,gEACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,8EACKC,SAAA,oCAEd,CACED,IAAO,0EACKC,SAAA,oCAEd,CACED,IAAO,+EACKC,SAAA,oCAEd,CACED,IAAO,8EACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,qEACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,4CACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,6DACKC,SAAA,oCAEd,CACED,IAAO,gDACKC,SAAA,oCAEd,CACED,IAAO,+CACKC,SAAA,oCAEd,CACED,IAAO,wDACKC,SAAA,oCAEd,CACED,IAAO,gDACKC,SAAA,oCAEd,CACED,IAAO,6CACKC,SAAA,oCAEd,CACED,IAAO,mCACKC,SAAA,oCAEd,CACED,IAAO,iDACKC,SAAA,oCAEd,CACED,IAAO,yBACKC,SAAA,oCAEd,CACED,IAAO,6BACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,qCACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,yDACKC,SAAA,oCAEd,CACED,IAAO,yDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,0DACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,wCACKC,SAAA,oCAEd,CACED,IAAO,kCACKC,SAAA,oCAEd,CACED,IAAO,mCACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,wCACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,wCACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,wCACKC,SAAA,oCAEd,CACED,IAAO,wCACKC,SAAA,oCAEd,CACED,IAAO,wDACKC,SAAA,oCAEd,CACED,IAAO,4CACKC,SAAA,oCAEd,CACED,IAAO,wDACKC,SAAA,oCAEd,CACED,IAAO,4CACKC,SAAA,oCAEd,CACED,IAAO,wDACKC,SAAA,oCAEd,CACED,IAAO,4CACKC,SAAA,oCAEd,CACED,IAAO,wDACKC,SAAA,oCAEd,CACED,IAAO,4CACKC,SAAA,oCAEd,CACED,IAAO,wDACKC,SAAA,oCAEd,CACED,IAAO,4CACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,gDACKC,SAAA,oCAEd,CACED,IAAO,oCACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,2BACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,qCACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,qCACKC,SAAA,oCAEd,CACED,IAAO,qCACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,kCACKC,SAAA,oCAEd,CACED,IAAO,kCACKC,SAAA,oCAEd,CACED,IAAO,kCACKC,SAAA,oCAEd,CACED,IAAO,kCACKC,SAAA,oCAEd,CACED,IAAO,gCACKC,SAAA,oCAEd,CACED,IAAO,4BACKC,SAAA,oCAEd,CACED,IAAO,yBACKC,SAAA,oCAEd,CACED,IAAO,qCACKC,SAAA,oCAEd,CACED,IAAO,gCACKC,SAAA,oCAEd,CACED,IAAO,2BACKC,SAAA,oCAEd,CACED,IAAO,2BACKC,SAAA,oCAEd,CACED,IAAO,4BACKC,SAAA,oCAEd,CACED,IAAO,wBACKC,SAAA,oCAEd,CACED,IAAO,yBACKC,SAAA,oCAEd,CACED,IAAO,2DACKC,SAAA,oCAEd,CACED,IAAO,mDACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,+CACKC,SAAA,oCAEd,CACED,IAAO,gDACKC,SAAA,oCAEd,CACED,IAAO,+CACKC,SAAA,oCAEd,CACED,IAAO,4CACKC,SAAA,oCAEd,CACED,IAAO,6CACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,yCACKC,SAAA,oCAEd,CACED,IAAO,oDACKC,SAAA,oCAEd,CACED,IAAO,kDACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,6CACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,+CACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,4DACKC,SAAA,oCAEd,CACED,IAAO,6CACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,iDACKC,SAAA,oCAEd,CACED,IAAO,qDACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,gDACKC,SAAA,oCAEd,CACED,IAAO,iDACKC,SAAA,oCAEd,CACED,IAAO,8BACKC,SAAA,oCAEd,CACED,IAAO,+BACKC,SAAA,oCAEd,CACED,IAAO,gCACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,+BACKC,SAAA,oCAEd,CACED,IAAO,uDACKC,SAAA,oCAEd,CACED,IAAO,6CACKC,SAAA,oCAEd,CACED,IAAO,+CACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,kDACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,4BACKC,SAAA,oCAEd,CACED,IAAO,wCACKC,SAAA,oCAEd,CACED,IAAO,oCACKC,SAAA,oCAEd,CACED,IAAO,wCACKC,SAAA,oCAEd,CACED,IAAO,oCACKC,SAAA,oCAEd,CACED,IAAO,oCACKC,SAAA,oCAEd,CACED,IAAO,gCACKC,SAAA,oCAEd,CACED,IAAO,qCACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,mCACKC,SAAA,oCAEd,CACED,IAAO,+BACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,yCACKC,SAAA,oCAEd,CACED,IAAO,qCACKC,SAAA,oCAEd,CACED,IAAO,8BACKC,SAAA,oCAEd,CACED,IAAO,0BACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,6BACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,2CACKC,SAAA,oCAEd,CACED,IAAO,uCACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sCACKC,SAAA,oCAEd,CACED,IAAO,4CACKC,SAAA,oCAEd,CACED,IAAO,wCACKC,SAAA,oCAEd,CACED,IAAO,6CACKC,SAAA,oCAEd,CACED,IAAO,yCACKC,SAAA,oCAEd,CACED,IAAO,mCACKC,SAAA,oCAEd,CACED,IAAO,+BACKC,SAAA,oCAEd,CACED,IAAO,uCACKC,SAAA,oCAEd,CACED,IAAO,mCACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,6BACKC,SAAA,oCAEd,CACED,IAAO,4BACKC,SAAA,oCAEd,CACED,IAAO,wBACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,6BACKC,SAAA,oCAEd,CACED,IAAO,gCACKC,SAAA,oCAEd,CACED,IAAO,4BACKC,SAAA,oCAEd,CACED,IAAO,6BACKC,SAAA,oCAEd,CACED,IAAO,yBACKC,SAAA,oCAEd,CACED,IAAO,8BACKC,SAAA,oCAEd,CACED,IAAO,0BACKC,SAAA,oCAEd,CACED,IAAO,+BACKC,SAAA,oCAEd,CACED,IAAO,2BACKC,SAAA,oCAEd,CACED,IAAO,uCACKC,SAAA,oCAEd,CACED,IAAO,mCACKC,SAAA,oCAEd,CACED,IAAO,+BACKC,SAAA,oCAEd,CACED,IAAO,2BACKC,SAAA,oCAEd,CACED,IAAO,+BACKC,SAAA,oCAEd,CACED,IAAO,2BACKC,SAAA,oCAEd,CACED,IAAO,8BACKC,SAAA,oCAEd,CACED,IAAO,0BACKC,SAAA,oCAEd,CACED,IAAO,qCACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,8CACKC,SAAA,oCAEd,CACED,IAAO,0CACKC,SAAA,oCAEd,CACED,IAAO,sDACKC,SAAA,oCAEd,CACED,IAAO,kDACKC,SAAA,oCAEd,CACED,IAAO,kCACKC,SAAA,oCAEd,CACED,IAAO,8BACKC,SAAA,oCAEd,CACED,IAAO,mCACKC,SAAA,oCAEd,CACED,IAAO,+BACKC,SAAA,oCAEd,CACED,IAAO,8BACKC,SAAA,oCAEd,CACED,IAAO,0BACKC,SAAA,oCAEd,CACED,IAAO,wCACKC,SAAA,oCAEd,CACED,IAAO,oCACKC,SAAA,oCAEd,CACED,IAAO,oCACKC,SAAA,oCAEd,CACED,IAAO,gCACKC,SAAA,oCAEd,CACED,IAAO,oCACKC,SAAA,oCAEd,CACED,IAAO,gCACKC,SAAA,oCAEd,CACED,IAAO,qCACKC,SAAA,oCAEd,CACED,IAAO,iCACKC,SAAA,oCAEd,CACED,IAAO,qBACKC,SAAA,oCAEd,CACED,IAAO,kBACKC,SAAA,oCAEd,CACED,IAAO,aACKC,SAAA,oCAEd,CACED,IAAO,YACKC,SAAA,oCAEd,CACED,IAAO,cACKC,SAAA,oCAEd,CACED,IAAO,aACKC,SAAA,oCAEd,CACED,IAAO,YACKC,SAAA,oCAEd,CACED,IAAO,uBACKC,SAAA,qCAEb,IAKHC,EAAAA,cAA8B,mCAAoC,IAAIC,aAA8B,CAAEC,UAAY,SAAUC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,QAAW"} \ No newline at end of file diff --git a/cgi-bin/core/serviceWorker/workbox-ed5f60f5.js b/cgi-bin/core/serviceWorker/workbox-74df4e21.js similarity index 98% rename from cgi-bin/core/serviceWorker/workbox-ed5f60f5.js rename to cgi-bin/core/serviceWorker/workbox-74df4e21.js index e27469b..0a48967 100644 --- a/cgi-bin/core/serviceWorker/workbox-ed5f60f5.js +++ b/cgi-bin/core/serviceWorker/workbox-74df4e21.js @@ -1,2 +1,2 @@ -define(["exports"],(function(t){"use strict";try{self["workbox:core:6.4.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:6.4.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class a{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let a=r&&r.handler;const o=t.method;if(!a&&this.i.has(o)&&(a=this.i.get(o)),!a)return;let c;try{c=a.handle({url:s,request:t,event:e,params:i})}catch(t){c=Promise.reject(t)}const h=r&&r.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),c}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const a=r.match({url:t,sameOrigin:e,request:s,event:n});if(a)return i=a,(Array.isArray(i)&&0===i.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let o;const c=()=>(o||(o=new a,o.addFetchListener(),o.addCacheListener()),o);function h(t,e,n){let a;if("string"==typeof t){const s=new URL(t,location.href);a=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)a=new r(t,e,n);else if("function"==typeof t)a=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=t}return c().registerRoute(a),a}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter((t=>t&&t.length>0)).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t){t.then((()=>{}))}const p=new Set;function y(){return y=Object.assign||function(t){for(var e=1;e(t[e]=s,!0),has:(t,e)=>t instanceof IDBTransaction&&("done"===e||"store"===e)||e in t};function x(t){return t!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(m||(m=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(E(this),e),I(R.get(this))}:function(...e){return I(t.apply(E(this),e))}:function(e,...s){const n=t.call(E(this),e,...s);return b.set(n,e.sort?e.sort():[e]),I(n)}}function L(t){return"function"==typeof t?x(t):(t instanceof IDBTransaction&&function(t){if(v.has(t))return;const e=new Promise(((e,s)=>{const n=()=>{t.removeEventListener("complete",i),t.removeEventListener("error",r),t.removeEventListener("abort",r)},i=()=>{e(),n()},r=()=>{s(t.error||new DOMException("AbortError","AbortError")),n()};t.addEventListener("complete",i),t.addEventListener("error",r),t.addEventListener("abort",r)}));v.set(t,e)}(t),e=t,(g||(g=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some((t=>e instanceof t))?new Proxy(t,U):t);var e}function I(t){if(t instanceof IDBRequest)return function(t){const e=new Promise(((e,s)=>{const n=()=>{t.removeEventListener("success",i),t.removeEventListener("error",r)},i=()=>{e(I(t.result)),n()},r=()=>{s(t.error),n()};t.addEventListener("success",i),t.addEventListener("error",r)}));return e.then((e=>{e instanceof IDBCursor&&R.set(e,t)})).catch((()=>{})),D.set(e,t),e}(t);if(q.has(t))return q.get(t);const e=L(t);return e!==t&&(q.set(t,e),D.set(e,t)),e}const E=t=>D.get(t);const C=["get","getKey","getAll","getAllKeys","count"],N=["put","add","delete","clear"],O=new Map;function B(t,e){if(!(t instanceof IDBDatabase)||e in t||"string"!=typeof e)return;if(O.get(e))return O.get(e);const s=e.replace(/FromIndex$/,""),n=e!==s,i=N.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!i&&!C.includes(s))return;const r=async function(t,...e){const r=this.transaction(t,i?"readwrite":"readonly");let a=r.store;return n&&(a=a.index(e.shift())),(await Promise.all([a[s](...e),i&&r.done]))[0]};return O.set(e,r),r}U=(t=>y({},t,{get:(e,s,n)=>B(e,s)||t.get(e,s,n),has:(e,s)=>!!B(e,s)||t.has(e,s)}))(U);try{self["workbox:expiration:6.4.0"]&&_()}catch(t){}const k="cache-entries",M=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class T{constructor(t){this.h=null,this.u=t}l(t){const e=t.createObjectStore(k,{keyPath:"id"});e.createIndex("cacheName","cacheName",{unique:!1}),e.createIndex("timestamp","timestamp",{unique:!1})}p(t){this.l(t),this.u&&function(t,{blocked:e}={}){const s=indexedDB.deleteDatabase(t);e&&s.addEventListener("blocked",(()=>e())),I(s).then((()=>{}))}(this.u)}async setTimestamp(t,e){const s={url:t=M(t),timestamp:e,cacheName:this.u,id:this.g(t)},n=(await this.getDb()).transaction(k,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(t){const e=await this.getDb(),s=await e.get(k,this.g(t));return null==s?void 0:s.timestamp}async expireEntries(t,e){const s=await this.getDb();let n=await s.transaction(k).store.index("timestamp").openCursor(null,"prev");const i=[];let r=0;for(;n;){const s=n.value;s.cacheName===this.u&&(t&&s.timestamp=e?i.push(n.value):r++),n=await n.continue()}const a=[];for(const t of i)await s.delete(k,t.id),a.push(t.url);return a}g(t){return this.u+"|"+M(t)}async getDb(){return this.h||(this.h=await function(t,e,{blocked:s,upgrade:n,blocking:i,terminated:r}={}){const a=indexedDB.open(t,e),o=I(a);return n&&a.addEventListener("upgradeneeded",(t=>{n(I(a.result),t.oldVersion,t.newVersion,I(a.transaction))})),s&&a.addEventListener("blocked",(()=>s())),o.then((t=>{r&&t.addEventListener("close",(()=>r())),i&&t.addEventListener("versionchange",(()=>i()))})).catch((()=>{})),o}("workbox-expiration",1,{upgrade:this.p.bind(this)})),this.h}}class j{constructor(t,e={}){this.m=!1,this.R=!1,this.v=e.maxEntries,this.q=e.maxAgeSeconds,this.D=e.matchOptions,this.u=t,this.U=new T(t)}async expireEntries(){if(this.m)return void(this.R=!0);this.m=!0;const t=this.q?Date.now()-1e3*this.q:0,e=await this.U.expireEntries(t,this.v),s=await self.caches.open(this.u);for(const t of e)await s.delete(t,this.D);this.m=!1,this.R&&(this.R=!1,d(this.expireEntries()))}async updateTimestamp(t){await this.U.setTimestamp(t,Date.now())}async isURLExpired(t){if(this.q){const e=await this.U.getTimestamp(t),s=Date.now()-1e3*this.q;return void 0===e||e{this.resolve=t,this.reject=e}))}}try{self["workbox:strategies:6.4.0"]&&_()}catch(t){}function S(t){return"string"==typeof t?new Request(t):t}class K{constructor(t,e){this.L={},Object.assign(this,e),this.event=e.event,this._=t,this.I=new P,this.C=[],this.N=[...t.plugins],this.O=new Map;for(const t of this.N)this.O.set(t,{});this.event.waitUntil(this.I.promise)}async fetch(t){const{event:e}=this;let n=S(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this._.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=S(t);let s;const{cacheName:n,matchOptions:i}=this._,r=await this.getCacheKey(e,"read"),a=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,a);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=S(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(a=r.url,new URL(String(a),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var a;const o=await this.B(e);if(!o)return!1;const{cacheName:c,matchOptions:h}=this._,u=await self.caches.open(c),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=W(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),a=await t.keys(e,r);for(const e of a)if(i===W(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?o.clone():o)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of p)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:f,newResponse:o.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.L[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=S(await t({mode:e,request:n,event:this.event,params:this.params}));this.L[s]=n}return this.L[s]}hasCallback(t){for(const e of this._.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this._.plugins)if("function"==typeof e[t]){const s=this.O.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.C.push(t),t}async doneWaiting(){let t;for(;t=this.C.shift();)await t}destroy(){this.I.resolve(null)}async B(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class A{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new K(this,{event:e,request:s,params:n}),r=this.k(i,s,e);return[r,this.M(r,i,s,e)]}async k(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.T(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async M(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}function F(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:6.4.0"]&&_()}catch(t){}function H(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class ${constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class G{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.j.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.j=t}}let V,J;async function Q(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},a=e?e(r):r,o=function(){if(void 0===V){const t=new Response("");if("body"in t)try{new Response(t.body),V=!0}catch(t){V=!1}V=!1}return V}()?i.body:await i.blob();return new Response(o,a)}class z extends A{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this.W=!1!==t.fallbackToNetwork,this.plugins.push(z.copyRedirectedCacheableResponsesPlugin)}async T(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.P(t,e):await this.S(t,e))}async S(t,e){let n;const i=e.params||{};if(!this.W)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,a=!r||r===s;n=await e.fetch(new Request(t,{integrity:r||s})),s&&a&&(this.K(),await e.cachePut(t,n.clone()))}return n}async P(t,e){this.K();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}K(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==z.copyRedirectedCacheableResponsesPlugin&&(n===z.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(z.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}z.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},z.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await Q(t):t};class X{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.A=new Map,this.F=new Map,this.H=new Map,this._=new z({cacheName:f(t),plugins:[...e,new G({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._}precache(t){this.addToCacheList(t),this.$||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.$=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=H(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.A.has(i)&&this.A.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.A.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.H.has(t)&&this.H.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.H.set(t,n.integrity)}if(this.A.set(i,t),this.F.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return F(t,(async()=>{const e=new $;this.strategy.plugins.push(e);for(const[e,s]of this.A){const n=this.H.get(s),i=this.F.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return F(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.A.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.A}getCachedURLs(){return[...this.A.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.A.get(e.href)}getIntegrityForCacheKey(t){return this.H.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}const Y=()=>(J||(J=new X),J);class Z extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const a=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield a.href,s&&a.pathname.endsWith("/")){const t=new URL(a.href);t.pathname+=s,yield t.href}if(n){const t=new URL(a.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}t.CacheFirst=class extends A{async T(t,e){let n,i=await e.cacheMatch(t);if(!i)try{i=await e.fetchAndCachePut(t)}catch(t){t instanceof Error&&(n=t)}if(!i)throw new s("no-response",{url:t.url,error:n});return i}},t.ExpirationPlugin=class{constructor(t={}){this.cachedResponseWillBeUsed=async({event:t,request:e,cacheName:s,cachedResponse:n})=>{if(!n)return null;const i=this.G(n),r=this.V(s);d(r.expireEntries());const a=r.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(t){}return i?n:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const s=this.V(t);await s.updateTimestamp(e.url),await s.expireEntries()},this.J=t,this.q=t.maxAgeSeconds,this.X=new Map,t.purgeOnQuotaError&&function(t){p.add(t)}((()=>this.deleteCacheAndMetadata()))}V(t){if(t===w())throw new s("expire-custom-caches-only");let e=this.X.get(t);return e||(e=new j(t,this.J),this.X.set(t,e)),e}G(t){if(!this.q)return!0;const e=this.Y(t);if(null===e)return!0;return e>=Date.now()-1e3*this.q}Y(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),s=new Date(e).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[t,e]of this.X)await self.caches.delete(t),await e.delete();this.X=new Map}},t.precacheAndRoute=function(t,e){!function(t){Y().precache(t)}(t),function(t){const e=Y();h(new Z(e,t))}(e)},t.registerRoute=h})); -//# sourceMappingURL=workbox-ed5f60f5.js.map +define(["exports"],(function(t){"use strict";try{self["workbox:core:6.5.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:6.5.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super((({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)}),e,s)}}class a{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",(t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)}))}addCacheListener(){self.addEventListener("message",(t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map((e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})})));t.waitUntil(s),t.ports&&t.ports[0]&&s.then((()=>t.ports[0].postMessage(!0)))}}))}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let a=r&&r.handler;const o=t.method;if(!a&&this.i.has(o)&&(a=this.i.get(o)),!a)return;let c;try{c=a.handle({url:s,request:t,event:e,params:i})}catch(t){c=Promise.reject(t)}const h=r&&r.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch((async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n}))),c}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const a=r.match({url:t,sameOrigin:e,request:s,event:n});if(a)return i=a,(Array.isArray(i)&&0===i.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let o;const c=()=>(o||(o=new a,o.addFetchListener(),o.addCacheListener()),o);function h(t,e,n){let a;if("string"==typeof t){const s=new URL(t,location.href);a=new i((({url:t})=>t.href===s.href),e,n)}else if(t instanceof RegExp)a=new r(t,e,n);else if("function"==typeof t)a=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=t}return c().registerRoute(a),a}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter((t=>t&&t.length>0)).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t){t.then((()=>{}))}const p=new Set;function y(){return y=Object.assign||function(t){for(var e=1;e(t[e]=s,!0),has:(t,e)=>t instanceof IDBTransaction&&("done"===e||"store"===e)||e in t};function x(t){return t!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(m||(m=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(E(this),e),I(R.get(this))}:function(...e){return I(t.apply(E(this),e))}:function(e,...s){const n=t.call(E(this),e,...s);return b.set(n,e.sort?e.sort():[e]),I(n)}}function L(t){return"function"==typeof t?x(t):(t instanceof IDBTransaction&&function(t){if(v.has(t))return;const e=new Promise(((e,s)=>{const n=()=>{t.removeEventListener("complete",i),t.removeEventListener("error",r),t.removeEventListener("abort",r)},i=()=>{e(),n()},r=()=>{s(t.error||new DOMException("AbortError","AbortError")),n()};t.addEventListener("complete",i),t.addEventListener("error",r),t.addEventListener("abort",r)}));v.set(t,e)}(t),e=t,(g||(g=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some((t=>e instanceof t))?new Proxy(t,U):t);var e}function I(t){if(t instanceof IDBRequest)return function(t){const e=new Promise(((e,s)=>{const n=()=>{t.removeEventListener("success",i),t.removeEventListener("error",r)},i=()=>{e(I(t.result)),n()},r=()=>{s(t.error),n()};t.addEventListener("success",i),t.addEventListener("error",r)}));return e.then((e=>{e instanceof IDBCursor&&R.set(e,t)})).catch((()=>{})),D.set(e,t),e}(t);if(q.has(t))return q.get(t);const e=L(t);return e!==t&&(q.set(t,e),D.set(e,t)),e}const E=t=>D.get(t);const C=["get","getKey","getAll","getAllKeys","count"],N=["put","add","delete","clear"],O=new Map;function B(t,e){if(!(t instanceof IDBDatabase)||e in t||"string"!=typeof e)return;if(O.get(e))return O.get(e);const s=e.replace(/FromIndex$/,""),n=e!==s,i=N.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!i&&!C.includes(s))return;const r=async function(t,...e){const r=this.transaction(t,i?"readwrite":"readonly");let a=r.store;return n&&(a=a.index(e.shift())),(await Promise.all([a[s](...e),i&&r.done]))[0]};return O.set(e,r),r}U=(t=>y({},t,{get:(e,s,n)=>B(e,s)||t.get(e,s,n),has:(e,s)=>!!B(e,s)||t.has(e,s)}))(U);try{self["workbox:expiration:6.5.0"]&&_()}catch(t){}const k="cache-entries",M=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class T{constructor(t){this.h=null,this.u=t}l(t){const e=t.createObjectStore(k,{keyPath:"id"});e.createIndex("cacheName","cacheName",{unique:!1}),e.createIndex("timestamp","timestamp",{unique:!1})}p(t){this.l(t),this.u&&function(t,{blocked:e}={}){const s=indexedDB.deleteDatabase(t);e&&s.addEventListener("blocked",(()=>e())),I(s).then((()=>{}))}(this.u)}async setTimestamp(t,e){const s={url:t=M(t),timestamp:e,cacheName:this.u,id:this.g(t)},n=(await this.getDb()).transaction(k,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(t){const e=await this.getDb(),s=await e.get(k,this.g(t));return null==s?void 0:s.timestamp}async expireEntries(t,e){const s=await this.getDb();let n=await s.transaction(k).store.index("timestamp").openCursor(null,"prev");const i=[];let r=0;for(;n;){const s=n.value;s.cacheName===this.u&&(t&&s.timestamp=e?i.push(n.value):r++),n=await n.continue()}const a=[];for(const t of i)await s.delete(k,t.id),a.push(t.url);return a}g(t){return this.u+"|"+M(t)}async getDb(){return this.h||(this.h=await function(t,e,{blocked:s,upgrade:n,blocking:i,terminated:r}={}){const a=indexedDB.open(t,e),o=I(a);return n&&a.addEventListener("upgradeneeded",(t=>{n(I(a.result),t.oldVersion,t.newVersion,I(a.transaction))})),s&&a.addEventListener("blocked",(()=>s())),o.then((t=>{r&&t.addEventListener("close",(()=>r())),i&&t.addEventListener("versionchange",(()=>i()))})).catch((()=>{})),o}("workbox-expiration",1,{upgrade:this.p.bind(this)})),this.h}}class j{constructor(t,e={}){this.m=!1,this.R=!1,this.v=e.maxEntries,this.q=e.maxAgeSeconds,this.D=e.matchOptions,this.u=t,this.U=new T(t)}async expireEntries(){if(this.m)return void(this.R=!0);this.m=!0;const t=this.q?Date.now()-1e3*this.q:0,e=await this.U.expireEntries(t,this.v),s=await self.caches.open(this.u);for(const t of e)await s.delete(t,this.D);this.m=!1,this.R&&(this.R=!1,d(this.expireEntries()))}async updateTimestamp(t){await this.U.setTimestamp(t,Date.now())}async isURLExpired(t){if(this.q){const e=await this.U.getTimestamp(t),s=Date.now()-1e3*this.q;return void 0===e||e{this.resolve=t,this.reject=e}))}}try{self["workbox:strategies:6.5.0"]&&_()}catch(t){}function S(t){return"string"==typeof t?new Request(t):t}class K{constructor(t,e){this.L={},Object.assign(this,e),this.event=e.event,this._=t,this.I=new P,this.C=[],this.N=[...t.plugins],this.O=new Map;for(const t of this.N)this.O.set(t,{});this.event.waitUntil(this.I.promise)}async fetch(t){const{event:e}=this;let n=S(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this._.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=S(t);let s;const{cacheName:n,matchOptions:i}=this._,r=await this.getCacheKey(e,"read"),a=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,a);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=S(t);var i;await(i=0,new Promise((t=>setTimeout(t,i))));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(a=r.url,new URL(String(a),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var a;const o=await this.B(e);if(!o)return!1;const{cacheName:c,matchOptions:h}=this._,u=await self.caches.open(c),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=W(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),a=await t.keys(e,r);for(const e of a)if(i===W(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?o.clone():o)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of p)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:f,newResponse:o.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.L[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=S(await t({mode:e,request:n,event:this.event,params:this.params}));this.L[s]=n}return this.L[s]}hasCallback(t){for(const e of this._.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this._.plugins)if("function"==typeof e[t]){const s=this.O.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.C.push(t),t}async doneWaiting(){let t;for(;t=this.C.shift();)await t}destroy(){this.I.resolve(null)}async B(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class A{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new K(this,{event:e,request:s,params:n}),r=this.k(i,s,e);return[r,this.M(r,i,s,e)]}async k(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.T(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async M(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}function F(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:6.5.0"]&&_()}catch(t){}function H(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class ${constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class G{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.j.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.j=t}}let V,J;async function Q(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},a=e?e(r):r,o=function(){if(void 0===V){const t=new Response("");if("body"in t)try{new Response(t.body),V=!0}catch(t){V=!1}V=!1}return V}()?i.body:await i.blob();return new Response(o,a)}class z extends A{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this.W=!1!==t.fallbackToNetwork,this.plugins.push(z.copyRedirectedCacheableResponsesPlugin)}async T(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.P(t,e):await this.S(t,e))}async S(t,e){let n;const i=e.params||{};if(!this.W)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,a=!r||r===s;n=await e.fetch(new Request(t,{integrity:r||s})),s&&a&&(this.K(),await e.cachePut(t,n.clone()))}return n}async P(t,e){this.K();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}K(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==z.copyRedirectedCacheableResponsesPlugin&&(n===z.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(z.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}z.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},z.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await Q(t):t};class X{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.A=new Map,this.F=new Map,this.H=new Map,this._=new z({cacheName:f(t),plugins:[...e,new G({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this._}precache(t){this.addToCacheList(t),this.$||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.$=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=H(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.A.has(i)&&this.A.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.A.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.H.has(t)&&this.H.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.H.set(t,n.integrity)}if(this.A.set(i,t),this.F.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return F(t,(async()=>{const e=new $;this.strategy.plugins.push(e);for(const[e,s]of this.A){const n=this.H.get(s),i=this.F.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}}))}activate(t){return F(t,(async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.A.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}}))}getURLsToCacheKeys(){return this.A}getCachedURLs(){return[...this.A.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.A.get(e.href)}getIntegrityForCacheKey(t){return this.H.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}const Y=()=>(J||(J=new X),J);class Z extends i{constructor(t,e){super((({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const a=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some((t=>t.test(s)))&&t.searchParams.delete(s);return t}(r,e);if(yield a.href,s&&a.pathname.endsWith("/")){const t=new URL(a.href);t.pathname+=s,yield t.href}if(n){const t=new URL(a.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}}),t.strategy)}}t.CacheFirst=class extends A{async T(t,e){let n,i=await e.cacheMatch(t);if(!i)try{i=await e.fetchAndCachePut(t)}catch(t){t instanceof Error&&(n=t)}if(!i)throw new s("no-response",{url:t.url,error:n});return i}},t.ExpirationPlugin=class{constructor(t={}){this.cachedResponseWillBeUsed=async({event:t,request:e,cacheName:s,cachedResponse:n})=>{if(!n)return null;const i=this.G(n),r=this.V(s);d(r.expireEntries());const a=r.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(t){}return i?n:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const s=this.V(t);await s.updateTimestamp(e.url),await s.expireEntries()},this.J=t,this.q=t.maxAgeSeconds,this.X=new Map,t.purgeOnQuotaError&&function(t){p.add(t)}((()=>this.deleteCacheAndMetadata()))}V(t){if(t===w())throw new s("expire-custom-caches-only");let e=this.X.get(t);return e||(e=new j(t,this.J),this.X.set(t,e)),e}G(t){if(!this.q)return!0;const e=this.Y(t);if(null===e)return!0;return e>=Date.now()-1e3*this.q}Y(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),s=new Date(e).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[t,e]of this.X)await self.caches.delete(t),await e.delete();this.X=new Map}},t.precacheAndRoute=function(t,e){!function(t){Y().precache(t)}(t),function(t){const e=Y();h(new Z(e,t))}(e)},t.registerRoute=h})); +//# sourceMappingURL=workbox-74df4e21.js.map diff --git a/cgi-bin/core/serviceWorker/workbox-74df4e21.js.map b/cgi-bin/core/serviceWorker/workbox-74df4e21.js.map new file mode 100644 index 0000000..c7c2321 --- /dev/null +++ b/cgi-bin/core/serviceWorker/workbox-74df4e21.js.map @@ -0,0 +1 @@ +{"version":3,"file":"workbox-74df4e21.js","sources":["../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_version.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/logger.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/models/messages/messageGenerator.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/WorkboxError.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-routing/_version.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-routing/utils/constants.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-routing/utils/normalizeHandler.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-routing/Route.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-routing/RegExpRoute.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-routing/Router.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-routing/registerRoute.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/cacheNames.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/dontWaitFor.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/models/quotaErrorCallbacks.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/idb/build/esm/wrap-idb-value.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/idb/build/esm/index.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-expiration/_version.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-expiration/models/CacheTimestampsModel.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-expiration/CacheExpiration.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/Deferred.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-strategies/_version.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-strategies/StrategyHandler.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/timeout.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/getFriendlyURL.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-strategies/Strategy.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/waitUntil.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/_version.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/utils/createCacheKey.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/utils/PrecacheInstallReportPlugin.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/utils/PrecacheCacheKeyPlugin.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/copyResponse.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/PrecacheStrategy.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/PrecacheController.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/PrecacheRoute.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/utils/generateURLVariations.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-strategies/CacheFirst.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-expiration/ExpirationPlugin.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-core/registerQuotaErrorCallback.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/precache.js","../../../../../AppData/Roaming/nvm/v16.14.0/node_modules/workbox-cli/node_modules/workbox-precaching/addRoute.js"],"sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:6.5.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst logger = (process.env.NODE_ENV === 'production'\n ? null\n : (() => {\n // Don't overwrite this value if it's already set.\n // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n if (!('__WB_DISABLE_DEV_LOGS' in self)) {\n self.__WB_DISABLE_DEV_LOGS = false;\n }\n let inGroup = false;\n const methodToColorMap = {\n debug: `#7f8c8d`,\n log: `#2ecc71`,\n warn: `#f39c12`,\n error: `#c0392b`,\n groupCollapsed: `#3498db`,\n groupEnd: null, // No colored prefix on groupEnd\n };\n const print = function (method, args) {\n if (self.__WB_DISABLE_DEV_LOGS) {\n return;\n }\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n console[method](...logPrefix, ...args);\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/ban-types\n const api = {};\n const loggerMethods = Object.keys(methodToColorMap);\n for (const key of loggerMethods) {\n const method = key;\n api[method] = (...args) => {\n print(method, args);\n };\n }\n return api;\n })());\nexport { logger };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = process.env.NODE_ENV === 'production' ? fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:6.5.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof workbox-routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {workbox-routing~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method = defaultMethod) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n /**\n *\n * @param {workbox-routing-handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response\n */\n setCatchHandler(handler) {\n this.catchHandler = normalizeHandler(handler);\n }\n}\nexport { Route };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * {@link workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * [See the module docs for info.]{@link https://developers.google.com/web/tools/workbox/modules/workbox-routing}\n *\n * @memberof workbox-routing\n * @extends workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regular expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * the captured values will be passed to the\n * {@link workbox-routing~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if (url.origin !== location.origin && result.index !== 0) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` +\n `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a `FetchEvent` using one or more\n * {@link workbox-routing.Route}, responding with a `Response` if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (event.data && event.data.type === 'CACHE_URLS') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event, }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([`Found a route to handle this request:`, route]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`,\n params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise &&\n (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event, }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if (matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call {@link workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|workbox-routing.Route~matchCallback|workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {workbox-routing.Route} The generated `Route`(Useful for\n * unregistering).\n *\n * @memberof workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http')\n ? captureUrl.pathname\n : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if (new RegExp(`${wildcards}`).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (url.pathname === captureUrl.pathname &&\n url.origin !== captureUrl.origin) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url.toString()}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\n else if (capture instanceof RegExp) {\n // If `capture` is a `RegExp` then `handler` and `method` must be present.\n route = new RegExpRoute(capture, handler, method);\n }\n else if (typeof capture === 'function') {\n // If `capture` is a function then `handler` and `method` must be present.\n route = new Route(capture, handler, method);\n }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A helper function that prevents a promise from being flagged as unused.\n *\n * @private\n **/\nexport function dontWaitFor(promise) {\n // Effective no-op.\n void promise.then(() => { });\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\n// Can't change Function type right now.\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:expiration:6.5.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { openDB, deleteDB } from 'idb';\nimport '../_version.js';\nconst DB_NAME = 'workbox-expiration';\nconst CACHE_OBJECT_STORE = 'cache-entries';\nconst normalizeURL = (unNormalizedUrl) => {\n const url = new URL(unNormalizedUrl, location.href);\n url.hash = '';\n return url.href;\n};\n/**\n * Returns the timestamp model.\n *\n * @private\n */\nclass CacheTimestampsModel {\n /**\n *\n * @param {string} cacheName\n *\n * @private\n */\n constructor(cacheName) {\n this._db = null;\n this._cacheName = cacheName;\n }\n /**\n * Performs an upgrade of indexedDB.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDb(db) {\n // TODO(philipwalton): EdgeHTML doesn't support arrays as a keyPath, so we\n // have to use the `id` keyPath here and create our own values (a\n // concatenation of `url + cacheName`) instead of simply using\n // `keyPath: ['url', 'cacheName']`, which is supported in other browsers.\n const objStore = db.createObjectStore(CACHE_OBJECT_STORE, { keyPath: 'id' });\n // TODO(philipwalton): once we don't have to support EdgeHTML, we can\n // create a single index with the keyPath `['cacheName', 'timestamp']`\n // instead of doing both these indexes.\n objStore.createIndex('cacheName', 'cacheName', { unique: false });\n objStore.createIndex('timestamp', 'timestamp', { unique: false });\n }\n /**\n * Performs an upgrade of indexedDB and deletes deprecated DBs.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDbAndDeleteOldDbs(db) {\n this._upgradeDb(db);\n if (this._cacheName) {\n void deleteDB(this._cacheName);\n }\n }\n /**\n * @param {string} url\n * @param {number} timestamp\n *\n * @private\n */\n async setTimestamp(url, timestamp) {\n url = normalizeURL(url);\n const entry = {\n url,\n timestamp,\n cacheName: this._cacheName,\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n id: this._getId(url),\n };\n const db = await this.getDb();\n const tx = db.transaction(CACHE_OBJECT_STORE, 'readwrite', {\n durability: 'relaxed',\n });\n await tx.store.put(entry);\n await tx.done;\n }\n /**\n * Returns the timestamp stored for a given URL.\n *\n * @param {string} url\n * @return {number | undefined}\n *\n * @private\n */\n async getTimestamp(url) {\n const db = await this.getDb();\n const entry = await db.get(CACHE_OBJECT_STORE, this._getId(url));\n return entry === null || entry === void 0 ? void 0 : entry.timestamp;\n }\n /**\n * Iterates through all the entries in the object store (from newest to\n * oldest) and removes entries once either `maxCount` is reached or the\n * entry's timestamp is less than `minTimestamp`.\n *\n * @param {number} minTimestamp\n * @param {number} maxCount\n * @return {Array}\n *\n * @private\n */\n async expireEntries(minTimestamp, maxCount) {\n const db = await this.getDb();\n let cursor = await db\n .transaction(CACHE_OBJECT_STORE)\n .store.index('timestamp')\n .openCursor(null, 'prev');\n const entriesToDelete = [];\n let entriesNotDeletedCount = 0;\n while (cursor) {\n const result = cursor.value;\n // TODO(philipwalton): once we can use a multi-key index, we\n // won't have to check `cacheName` here.\n if (result.cacheName === this._cacheName) {\n // Delete an entry if it's older than the max age or\n // if we already have the max number allowed.\n if ((minTimestamp && result.timestamp < minTimestamp) ||\n (maxCount && entriesNotDeletedCount >= maxCount)) {\n // TODO(philipwalton): we should be able to delete the\n // entry right here, but doing so causes an iteration\n // bug in Safari stable (fixed in TP). Instead we can\n // store the keys of the entries to delete, and then\n // delete the separate transactions.\n // https://github.com/GoogleChrome/workbox/issues/1978\n // cursor.delete();\n // We only need to return the URL, not the whole entry.\n entriesToDelete.push(cursor.value);\n }\n else {\n entriesNotDeletedCount++;\n }\n }\n cursor = await cursor.continue();\n }\n // TODO(philipwalton): once the Safari bug in the following issue is fixed,\n // we should be able to remove this loop and do the entry deletion in the\n // cursor loop above:\n // https://github.com/GoogleChrome/workbox/issues/1978\n const urlsDeleted = [];\n for (const entry of entriesToDelete) {\n await db.delete(CACHE_OBJECT_STORE, entry.id);\n urlsDeleted.push(entry.url);\n }\n return urlsDeleted;\n }\n /**\n * Takes a URL and returns an ID that will be unique in the object store.\n *\n * @param {string} url\n * @return {string}\n *\n * @private\n */\n _getId(url) {\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n return this._cacheName + '|' + normalizeURL(url);\n }\n /**\n * Returns an open connection to the database.\n *\n * @private\n */\n async getDb() {\n if (!this._db) {\n this._db = await openDB(DB_NAME, 1, {\n upgrade: this._upgradeDbAndDeleteOldDbs.bind(this),\n });\n }\n return this._db;\n }\n}\nexport { CacheTimestampsModel };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheTimestampsModel } from './models/CacheTimestampsModel.js';\nimport './_version.js';\n/**\n * The `CacheExpiration` class allows you define an expiration and / or\n * limit on the number of responses stored in a\n * [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache).\n *\n * @memberof workbox-expiration\n */\nclass CacheExpiration {\n /**\n * To construct a new CacheExpiration instance you must provide at least\n * one of the `config` properties.\n *\n * @param {string} cacheName Name of the cache to apply restrictions to.\n * @param {Object} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n */\n constructor(cacheName, config = {}) {\n this._isRunning = false;\n this._rerunRequested = false;\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'cacheName',\n });\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._maxEntries = config.maxEntries;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._matchOptions = config.matchOptions;\n this._cacheName = cacheName;\n this._timestampModel = new CacheTimestampsModel(cacheName);\n }\n /**\n * Expires entries for the given cache and given criteria.\n */\n async expireEntries() {\n if (this._isRunning) {\n this._rerunRequested = true;\n return;\n }\n this._isRunning = true;\n const minTimestamp = this._maxAgeSeconds\n ? Date.now() - this._maxAgeSeconds * 1000\n : 0;\n const urlsExpired = await this._timestampModel.expireEntries(minTimestamp, this._maxEntries);\n // Delete URLs from the cache\n const cache = await self.caches.open(this._cacheName);\n for (const url of urlsExpired) {\n await cache.delete(url, this._matchOptions);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (urlsExpired.length > 0) {\n logger.groupCollapsed(`Expired ${urlsExpired.length} ` +\n `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` +\n `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` +\n `'${this._cacheName}' cache.`);\n logger.log(`Expired the following ${urlsExpired.length === 1 ? 'URL' : 'URLs'}:`);\n urlsExpired.forEach((url) => logger.log(` ${url}`));\n logger.groupEnd();\n }\n else {\n logger.debug(`Cache expiration ran and found no entries to remove.`);\n }\n }\n this._isRunning = false;\n if (this._rerunRequested) {\n this._rerunRequested = false;\n dontWaitFor(this.expireEntries());\n }\n }\n /**\n * Update the timestamp for the given URL. This ensures the when\n * removing entries based on maximum entries, most recently used\n * is accurate or when expiring, the timestamp is up-to-date.\n *\n * @param {string} url\n */\n async updateTimestamp(url) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(url, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'updateTimestamp',\n paramName: 'url',\n });\n }\n await this._timestampModel.setTimestamp(url, Date.now());\n }\n /**\n * Can be used to check if a URL has expired or not before it's used.\n *\n * This requires a look up from IndexedDB, so can be slow.\n *\n * Note: This method will not remove the cached entry, call\n * `expireEntries()` to remove indexedDB and Cache entries.\n *\n * @param {string} url\n * @return {boolean}\n */\n async isURLExpired(url) {\n if (!this._maxAgeSeconds) {\n if (process.env.NODE_ENV !== 'production') {\n throw new WorkboxError(`expired-test-without-max-age`, {\n methodName: 'isURLExpired',\n paramName: 'maxAgeSeconds',\n });\n }\n return false;\n }\n else {\n const timestamp = await this._timestampModel.getTimestamp(url);\n const expireOlderThan = Date.now() - this._maxAgeSeconds * 1000;\n return timestamp !== undefined ? timestamp < expireOlderThan : true;\n }\n }\n /**\n * Removes the IndexedDB object store used to keep track of cache expiration\n * metadata.\n */\n async delete() {\n // Make sure we don't attempt another rerun if we're called in the middle of\n // a cache expiration.\n this._rerunRequested = false;\n await this._timestampModel.expireEntries(Infinity); // Expires all.\n }\n}\nexport { CacheExpiration };\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n const strippedURL = new URL(fullURL);\n for (const param of ignoreParams) {\n strippedURL.searchParams.delete(param);\n }\n return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array} ignoreParams\n * @return {Promise}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n const strippedRequestURL = stripParams(request.url, ignoreParams);\n // If the request doesn't include any ignored params, match as normal.\n if (request.url === strippedRequestURL) {\n return cache.match(request, matchOptions);\n }\n // Otherwise, match by comparing keys\n const keysOptions = Object.assign(Object.assign({}, matchOptions), { ignoreSearch: true });\n const cacheKeys = await cache.keys(request, keysOptions);\n for (const cacheKey of cacheKeys) {\n const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n if (strippedRequestURL === strippedCacheKeyURL) {\n return cache.match(cacheKey, matchOptions);\n }\n }\n return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nexport { Deferred };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:6.5.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n return typeof input === 'string' ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * {@link workbox-strategies.Strategy~handle} or\n * {@link workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof workbox-strategies\n */\nclass StrategyHandler {\n /**\n * Creates a new instance associated with the passed strategy and event\n * that's handling the request.\n *\n * The constructor also initializes the state that will be passed to each of\n * the plugins handling this request.\n *\n * @param {workbox-strategies.Strategy} strategy\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params] The return value from the\n * {@link workbox-routing~matchCallback} (if applicable).\n */\n constructor(strategy, options) {\n this._cacheKeys = {};\n /**\n * The request the strategy is performing (passed to the strategy's\n * `handle()` or `handleAll()` method).\n * @name request\n * @instance\n * @type {Request}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * The event associated with this request.\n * @name event\n * @instance\n * @type {ExtendableEvent}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `URL` instance of `request.url` (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `url` param will be present if the strategy was invoked\n * from a workbox `Route` object.\n * @name url\n * @instance\n * @type {URL|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n /**\n * A `param` value (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `param` param will be present if the strategy was invoked\n * from a workbox `Route` object and the\n * {@link workbox-routing~matchCallback} returned\n * a truthy value (it will be that value).\n * @name params\n * @instance\n * @type {*|undefined}\n * @memberof workbox-strategies.StrategyHandler\n */\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(options.event, ExtendableEvent, {\n moduleName: 'workbox-strategies',\n className: 'StrategyHandler',\n funcName: 'constructor',\n paramName: 'options.event',\n });\n }\n Object.assign(this, options);\n this.event = options.event;\n this._strategy = strategy;\n this._handlerDeferred = new Deferred();\n this._extendLifetimePromises = [];\n // Copy the plugins list (since it's mutable on the strategy),\n // so any mutations don't affect this handler instance.\n this._plugins = [...strategy.plugins];\n this._pluginStateMap = new Map();\n for (const plugin of this._plugins) {\n this._pluginStateMap.set(plugin, {});\n }\n this.event.waitUntil(this._handlerDeferred.promise);\n }\n /**\n * Fetches a given request (and invokes any applicable plugin callback\n * methods) using the `fetchOptions` (for non-navigation requests) and\n * `plugins` defined on the `Strategy` object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - `requestWillFetch()`\n * - `fetchDidSucceed()`\n * - `fetchDidFail()`\n *\n * @param {Request|string} input The URL or request to fetch.\n * @return {Promise}\n */\n async fetch(input) {\n const { event } = this;\n let request = toRequest(input);\n if (request.mode === 'navigate' &&\n event instanceof FetchEvent &&\n event.preloadResponse) {\n const possiblePreloadResponse = (await event.preloadResponse);\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = this.hasCallback('fetchDidFail')\n ? request.clone()\n : null;\n try {\n for (const cb of this.iterateCallbacks('requestWillFetch')) {\n request = await cb({ request: request.clone(), event });\n }\n }\n catch (err) {\n if (err instanceof Error) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownErrorMessage: err.message,\n });\n }\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (most likely from a `fetch` event) different\n // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n fetchResponse = await fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions);\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n fetchResponse = await callback({\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n // `originalRequest` will only exist if a `fetchDidFail` callback\n // is being used (see above).\n if (originalRequest) {\n await this.runCallbacks('fetchDidFail', {\n error: error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n }\n /**\n * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n * the response generated by `this.fetch()`.\n *\n * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n * so you do not have to manually call `waitUntil()` on the event.\n *\n * @param {Request|string} input The request or URL to fetch and cache.\n * @return {Promise}\n */\n async fetchAndCachePut(input) {\n const response = await this.fetch(input);\n const responseClone = response.clone();\n void this.waitUntil(this.cachePut(input, responseClone));\n return response;\n }\n /**\n * Matches a request from the cache (and invokes any applicable plugin\n * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n * defined on the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cachedResponseWillByUsed()\n *\n * @param {Request|string} key The Request or URL to use as the cache key.\n * @return {Promise} A matching response, if found.\n */\n async cacheMatch(key) {\n const request = toRequest(key);\n let cachedResponse;\n const { cacheName, matchOptions } = this._strategy;\n const effectiveRequest = await this.getCacheKey(request, 'read');\n const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { cacheName });\n cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n cachedResponse =\n (await callback({\n cacheName,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n event: this.event,\n })) || undefined;\n }\n return cachedResponse;\n }\n /**\n * Puts a request/response pair in the cache (and invokes any applicable\n * plugin callback methods) using the `cacheName` and `plugins` defined on\n * the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cacheWillUpdate()\n * - cacheDidUpdate()\n *\n * @param {Request|string} key The request or URL to use as the cache key.\n * @param {Response} response The response to cache.\n * @return {Promise} `false` if a cacheWillUpdate caused the response\n * not be cached, and `true` otherwise.\n */\n async cachePut(key, response) {\n const request = toRequest(key);\n // Run in the next task to avoid blocking other cache reads.\n // https://github.com/w3c/ServiceWorker/issues/1397\n await timeout(0);\n const effectiveRequest = await this.getCacheKey(request, 'write');\n if (process.env.NODE_ENV !== 'production') {\n if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(effectiveRequest.url),\n method: effectiveRequest.method,\n });\n }\n // See https://github.com/GoogleChrome/workbox/issues/2818\n const vary = response.headers.get('Vary');\n if (vary) {\n logger.debug(`The response for ${getFriendlyURL(effectiveRequest.url)} ` +\n `has a 'Vary: ${vary}' header. ` +\n `Consider setting the {ignoreVary: true} option on your strategy ` +\n `to ensure cache matching and deletion works as expected.`);\n }\n }\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await this._ensureResponseSafeToCache(response);\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n `will not be cached.`, responseToCache);\n }\n return false;\n }\n const { cacheName, matchOptions } = this._strategy;\n const cache = await self.caches.open(cacheName);\n const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n const oldResponse = hasCacheUpdateCallback\n ? await cacheMatchIgnoreParams(\n // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n // feature. Consider into ways to only add this behavior if using\n // precaching.\n cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions)\n : null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n `for ${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache);\n }\n catch (error) {\n if (error instanceof Error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n }\n for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n await callback({\n cacheName,\n oldResponse,\n newResponse: responseToCache.clone(),\n request: effectiveRequest,\n event: this.event,\n });\n }\n return true;\n }\n /**\n * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n * executes any of those callbacks found in sequence. The final `Request`\n * object returned by the last plugin is treated as the cache key for cache\n * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n * been registered, the passed request is returned unmodified\n *\n * @param {Request} request\n * @param {string} mode\n * @return {Promise}\n */\n async getCacheKey(request, mode) {\n const key = `${request.url} | ${mode}`;\n if (!this._cacheKeys[key]) {\n let effectiveRequest = request;\n for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n effectiveRequest = toRequest(await callback({\n mode,\n request: effectiveRequest,\n event: this.event,\n // params has a type any can't change right now.\n params: this.params, // eslint-disable-line\n }));\n }\n this._cacheKeys[key] = effectiveRequest;\n }\n return this._cacheKeys[key];\n }\n /**\n * Returns true if the strategy has at least one plugin with the given\n * callback.\n *\n * @param {string} name The name of the callback to check for.\n * @return {boolean}\n */\n hasCallback(name) {\n for (const plugin of this._strategy.plugins) {\n if (name in plugin) {\n return true;\n }\n }\n return false;\n }\n /**\n * Runs all plugin callbacks matching the given name, in order, passing the\n * given param object (merged ith the current plugin state) as the only\n * argument.\n *\n * Note: since this method runs all plugins, it's not suitable for cases\n * where the return value of a callback needs to be applied prior to calling\n * the next callback. See\n * {@link workbox-strategies.StrategyHandler#iterateCallbacks}\n * below for how to handle that case.\n *\n * @param {string} name The name of the callback to run within each plugin.\n * @param {Object} param The object to pass as the first (and only) param\n * when executing each callback. This object will be merged with the\n * current plugin state prior to callback execution.\n */\n async runCallbacks(name, param) {\n for (const callback of this.iterateCallbacks(name)) {\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n await callback(param);\n }\n }\n /**\n * Accepts a callback and returns an iterable of matching plugin callbacks,\n * where each callback is wrapped with the current handler state (i.e. when\n * you call each callback, whatever object parameter you pass it will\n * be merged with the plugin's current state).\n *\n * @param {string} name The name fo the callback to run\n * @return {Array}\n */\n *iterateCallbacks(name) {\n for (const plugin of this._strategy.plugins) {\n if (typeof plugin[name] === 'function') {\n const state = this._pluginStateMap.get(plugin);\n const statefulCallback = (param) => {\n const statefulParam = Object.assign(Object.assign({}, param), { state });\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n return plugin[name](statefulParam);\n };\n yield statefulCallback;\n }\n }\n }\n /**\n * Adds a promise to the\n * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n * of the event event associated with the request being handled (usually a\n * `FetchEvent`).\n *\n * Note: you can await\n * {@link workbox-strategies.StrategyHandler~doneWaiting}\n * to know when all added promises have settled.\n *\n * @param {Promise} promise A promise to add to the extend lifetime promises\n * of the event that triggered the request.\n */\n waitUntil(promise) {\n this._extendLifetimePromises.push(promise);\n return promise;\n }\n /**\n * Returns a promise that resolves once all promises passed to\n * {@link workbox-strategies.StrategyHandler~waitUntil}\n * have settled.\n *\n * Note: any work done after `doneWaiting()` settles should be manually\n * passed to an event's `waitUntil()` method (not this handler's\n * `waitUntil()` method), otherwise the service worker thread my be killed\n * prior to your work completing.\n */\n async doneWaiting() {\n let promise;\n while ((promise = this._extendLifetimePromises.shift())) {\n await promise;\n }\n }\n /**\n * Stops running the strategy and immediately resolves any pending\n * `waitUntil()` promises.\n */\n destroy() {\n this._handlerDeferred.resolve(null);\n }\n /**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Request} options.request\n * @param {Response} options.response\n * @return {Promise}\n *\n * @private\n */\n async _ensureResponseSafeToCache(response) {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n responseToCache =\n (await callback({\n request: this.request,\n response: responseToCache,\n event: this.event,\n })) || undefined;\n pluginsUsed = true;\n if (!responseToCache) {\n break;\n }\n }\n if (!pluginsUsed) {\n if (responseToCache && responseToCache.status !== 200) {\n responseToCache = undefined;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${this.request.url}' ` +\n `is an opaque response. The caching strategy that you're ` +\n `using will not cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${this.request.url}' ` +\n `returned a status code of '${response.status}' and won't ` +\n `be cached as a result.`);\n }\n }\n }\n }\n }\n return responseToCache;\n }\n}\nexport { StrategyHandler };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof workbox-strategies\n */\nclass Strategy {\n /**\n * Creates a new instance of the strategy and sets all documented option\n * properties as public instance properties.\n *\n * Note: if a custom strategy class extends the base Strategy class and does\n * not need more than these properties, it does not need to define its own\n * constructor.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n */\n constructor(options = {}) {\n /**\n * Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n *\n * @type {string}\n */\n this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n /**\n * The list\n * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * used by this strategy.\n *\n * @type {Array}\n */\n this.plugins = options.plugins || [];\n /**\n * Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n *\n * @type {Object}\n */\n this.fetchOptions = options.fetchOptions;\n /**\n * The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n *\n * @type {Object}\n */\n this.matchOptions = options.matchOptions;\n }\n /**\n * Perform a request strategy and returns a `Promise` that will resolve with\n * a `Response`, invoking all relevant plugin callbacks.\n *\n * When a strategy instance is registered with a Workbox\n * {@link workbox-routing.Route}, this method is automatically\n * called when the route matches.\n *\n * Alternatively, this method can be used in a standalone `FetchEvent`\n * listener by passing it to `event.respondWith()`.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n */\n handle(options) {\n const [responseDone] = this.handleAll(options);\n return responseDone;\n }\n /**\n * Similar to {@link workbox-strategies.Strategy~handle}, but\n * instead of just returning a `Promise` that resolves to a `Response` it\n * it will return an tuple of `[response, done]` promises, where the former\n * (`response`) is equivalent to what `handle()` returns, and the latter is a\n * Promise that will resolve once any promises that were added to\n * `event.waitUntil()` as part of performing the strategy have completed.\n *\n * You can await the `done` promise to ensure any extra work performed by\n * the strategy (usually caching responses) completes successfully.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * @return {Array} A tuple of [response, done]\n * promises that can be used to determine when the response resolves as\n * well as when the handler has completed all its work.\n */\n handleAll(options) {\n // Allow for flexible options to be passed.\n if (options instanceof FetchEvent) {\n options = {\n event: options,\n request: options.request,\n };\n }\n const event = options.event;\n const request = typeof options.request === 'string'\n ? new Request(options.request)\n : options.request;\n const params = 'params' in options ? options.params : undefined;\n const handler = new StrategyHandler(this, { event, request, params });\n const responseDone = this._getResponse(handler, request, event);\n const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n // Return an array of promises, suitable for use with Promise.all().\n return [responseDone, handlerDone];\n }\n async _getResponse(handler, request, event) {\n await handler.runCallbacks('handlerWillStart', { event, request });\n let response = undefined;\n try {\n response = await this._handle(request, handler);\n // The \"official\" Strategy subclasses all throw this error automatically,\n // but in case a third-party Strategy doesn't, ensure that we have a\n // consistent failure when there's no response or an error response.\n if (!response || response.type === 'error') {\n throw new WorkboxError('no-response', { url: request.url });\n }\n }\n catch (error) {\n if (error instanceof Error) {\n for (const callback of handler.iterateCallbacks('handlerDidError')) {\n response = await callback({ error, event, request });\n if (response) {\n break;\n }\n }\n }\n if (!response) {\n throw error;\n }\n else if (process.env.NODE_ENV !== 'production') {\n logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` +\n `a handlerDidError plugin.`);\n }\n }\n for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n response = await callback({ event, request, response });\n }\n return response;\n }\n async _awaitComplete(responseDone, handler, request, event) {\n let response;\n let error;\n try {\n response = await responseDone;\n }\n catch (error) {\n // Ignore errors, as response errors should be caught via the `response`\n // promise above. The `done` promise will only throw for errors in\n // promises passed to `handler.waitUntil()`.\n }\n try {\n await handler.runCallbacks('handlerDidRespond', {\n event,\n request,\n response,\n });\n await handler.doneWaiting();\n }\n catch (waitUntilError) {\n if (waitUntilError instanceof Error) {\n error = waitUntilError;\n }\n }\n await handler.runCallbacks('handlerDidComplete', {\n event,\n request,\n response,\n error: error,\n });\n handler.destroy();\n if (error) {\n throw error;\n }\n }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the {@link workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {workbox-strategies.StrategyHandler} handler\n * @return {Promise}\n *\n * @memberof workbox-strategies.Strategy\n */\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A utility method that makes it easier to use `event.waitUntil` with\n * async functions and return the result.\n *\n * @param {ExtendableEvent} event\n * @param {Function} asyncFn\n * @return {Function}\n * @private\n */\nfunction waitUntil(event, asyncFn) {\n const returnPromise = asyncFn();\n event.waitUntil(returnPromise);\n return returnPromise;\n}\nexport { waitUntil };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:6.5.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const originalURL = new URL(url, location.href);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to determine the\n * of assets that were updated (or not updated) during the install event.\n *\n * @private\n */\nclass PrecacheInstallReportPlugin {\n constructor() {\n this.updatedURLs = [];\n this.notUpdatedURLs = [];\n this.handlerWillStart = async ({ request, state, }) => {\n // TODO: `state` should never be undefined...\n if (state) {\n state.originalRequest = request;\n }\n };\n this.cachedResponseWillBeUsed = async ({ event, state, cachedResponse, }) => {\n if (event.type === 'install') {\n if (state &&\n state.originalRequest &&\n state.originalRequest instanceof Request) {\n // TODO: `state` should never be undefined...\n const url = state.originalRequest.url;\n if (cachedResponse) {\n this.notUpdatedURLs.push(url);\n }\n else {\n this.updatedURLs.push(url);\n }\n }\n }\n return cachedResponse;\n };\n }\n}\nexport { PrecacheInstallReportPlugin };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to translate URLs into\n * the corresponding cache key, based on the current revision info.\n *\n * @private\n */\nclass PrecacheCacheKeyPlugin {\n constructor({ precacheController }) {\n this.cacheKeyWillBeUsed = async ({ request, params, }) => {\n // Params is type any, can't change right now.\n /* eslint-disable */\n const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) ||\n this._precacheController.getCacheKeyForURL(request.url);\n /* eslint-enable */\n return cacheKey\n ? new Request(cacheKey, { headers: request.headers })\n : request;\n };\n this._precacheController = precacheController;\n }\n}\nexport { PrecacheCacheKeyPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nlet supportStatus;\n/**\n * A utility function that determines whether the current browser supports\n * constructing a new `Response` from a `response.body` stream.\n *\n * @return {boolean} `true`, if the current browser can successfully\n * construct a `Response` from a `response.body` stream, `false` otherwise.\n *\n * @private\n */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { canConstructResponseFromBodyStream } from './_private/canConstructResponseFromBodyStream.js';\nimport { WorkboxError } from './_private/WorkboxError.js';\nimport './_version.js';\n/**\n * Allows developers to copy a response and modify its `headers`, `status`,\n * or `statusText` values (the values settable via a\n * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}\n * object in the constructor).\n * To modify these values, pass a function as the second argument. That\n * function will be invoked with a single object with the response properties\n * `{headers, status, statusText}`. The return value of this function will\n * be used as the `ResponseInit` for the new `Response`. To change the values\n * either modify the passed parameter(s) and return it, or return a totally\n * new object.\n *\n * This method is intentionally limited to same-origin responses, regardless of\n * whether CORS was used or not.\n *\n * @param {Response} response\n * @param {Function} modifier\n * @memberof workbox-core\n */\nasync function copyResponse(response, modifier) {\n let origin = null;\n // If response.url isn't set, assume it's cross-origin and keep origin null.\n if (response.url) {\n const responseURL = new URL(response.url);\n origin = responseURL.origin;\n }\n if (origin !== self.location.origin) {\n throw new WorkboxError('cross-origin-copy-response', { origin });\n }\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // Create the new response from the body stream and `ResponseInit`\n // modifications. Note: not all browsers support the Response.body stream,\n // so fall back to reading the entire body into memory as a blob.\n const body = canConstructResponseFromBodyStream()\n ? clonedResponse.body\n : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from 'workbox-strategies/Strategy.js';\nimport './_version.js';\n/**\n * A {@link workbox-strategies.Strategy} implementation\n * specifically designed to work with\n * {@link workbox-precaching.PrecacheController}\n * to both cache and fetch precached assets.\n *\n * Note: an instance of this class is created automatically when creating a\n * `PrecacheController`; it's generally not necessary to create this yourself.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-precaching\n */\nclass PrecacheStrategy extends Strategy {\n /**\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * {@link workbox-core.cacheNames}.\n * @param {Array} [options.plugins] {@link https://developers.google.com/web/tools/workbox/guides/using-plugins|Plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters|init}\n * of all fetch() requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * {@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions|CacheQueryOptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor(options = {}) {\n options.cacheName = cacheNames.getPrecacheName(options.cacheName);\n super(options);\n this._fallbackToNetwork =\n options.fallbackToNetwork === false ? false : true;\n // Redirected responses cannot be used to satisfy a navigation request, so\n // any redirected response must be \"copied\" rather than cloned, so the new\n // response doesn't contain the `redirected` flag. See:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const response = await handler.cacheMatch(request);\n if (response) {\n return response;\n }\n // If this is an `install` event for an entry that isn't already cached,\n // then populate the cache.\n if (handler.event && handler.event.type === 'install') {\n return await this._handleInstall(request, handler);\n }\n // Getting here means something went wrong. An entry that should have been\n // precached wasn't found in the cache.\n return await this._handleFetch(request, handler);\n }\n async _handleFetch(request, handler) {\n let response;\n const params = (handler.params || {});\n // Fall back to the network if we're configured to do so.\n if (this._fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` +\n `found. Falling back to the network.`);\n }\n const integrityInManifest = params.integrity;\n const integrityInRequest = request.integrity;\n const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest;\n response = await handler.fetch(new Request(request, {\n integrity: integrityInRequest || integrityInManifest,\n }));\n // It's only \"safe\" to repair the cache if we're using SRI to guarantee\n // that the response matches the precache manifest's expectations,\n // and there's either a) no integrity property in the incoming request\n // or b) there is an integrity, and it matches the precache manifest.\n // See https://github.com/GoogleChrome/workbox/issues/2858\n if (integrityInManifest && noIntegrityConflict) {\n this._useDefaultCacheabilityPluginIfNeeded();\n const wasCached = await handler.cachePut(request, response.clone());\n if (process.env.NODE_ENV !== 'production') {\n if (wasCached) {\n logger.log(`A response for ${getFriendlyURL(request.url)} ` +\n `was used to \"repair\" the precache.`);\n }\n }\n }\n }\n else {\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this.cacheName,\n url: request.url,\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read'));\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url));\n logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n }\n return response;\n }\n async _handleInstall(request, handler) {\n this._useDefaultCacheabilityPluginIfNeeded();\n const response = await handler.fetch(request);\n // Make sure we defer cachePut() until after we know the response\n // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737\n const wasCached = await handler.cachePut(request, response.clone());\n if (!wasCached) {\n // Throwing here will lead to the `install` handler failing, which\n // we want to do if *any* of the responses aren't safe to cache.\n throw new WorkboxError('bad-precaching-response', {\n url: request.url,\n status: response.status,\n });\n }\n return response;\n }\n /**\n * This method is complex, as there a number of things to account for:\n *\n * The `plugins` array can be set at construction, and/or it might be added to\n * to at any time before the strategy is used.\n *\n * At the time the strategy is used (i.e. during an `install` event), there\n * needs to be at least one plugin that implements `cacheWillUpdate` in the\n * array, other than `copyRedirectedCacheableResponsesPlugin`.\n *\n * - If this method is called and there are no suitable `cacheWillUpdate`\n * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.\n *\n * - If this method is called and there is exactly one `cacheWillUpdate`, then\n * we don't have to do anything (this might be a previously added\n * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).\n *\n * - If this method is called and there is more than one `cacheWillUpdate`,\n * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,\n * we need to remove it. (This situation is unlikely, but it could happen if\n * the strategy is used multiple times, the first without a `cacheWillUpdate`,\n * and then later on after manually adding a custom `cacheWillUpdate`.)\n *\n * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.\n *\n * @private\n */\n _useDefaultCacheabilityPluginIfNeeded() {\n let defaultPluginIndex = null;\n let cacheWillUpdatePluginCount = 0;\n for (const [index, plugin] of this.plugins.entries()) {\n // Ignore the copy redirected plugin when determining what to do.\n if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {\n continue;\n }\n // Save the default plugin's index, in case it needs to be removed.\n if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {\n defaultPluginIndex = index;\n }\n if (plugin.cacheWillUpdate) {\n cacheWillUpdatePluginCount++;\n }\n }\n if (cacheWillUpdatePluginCount === 0) {\n this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);\n }\n else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {\n // Only remove the default plugin; multiple custom plugins are allowed.\n this.plugins.splice(defaultPluginIndex, 1);\n }\n // Nothing needs to be done if cacheWillUpdatePluginCount is 1\n }\n}\nPrecacheStrategy.defaultPrecacheCacheabilityPlugin = {\n async cacheWillUpdate({ response }) {\n if (!response || response.status >= 400) {\n return null;\n }\n return response;\n },\n};\nPrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {\n async cacheWillUpdate({ response }) {\n return response.redirected ? await copyResponse(response) : response;\n },\n};\nexport { PrecacheStrategy };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { waitUntil } from 'workbox-core/_private/waitUntil.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { PrecacheInstallReportPlugin } from './utils/PrecacheInstallReportPlugin.js';\nimport { PrecacheCacheKeyPlugin } from './utils/PrecacheCacheKeyPlugin.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport { PrecacheStrategy } from './PrecacheStrategy.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] The cache to use for precaching.\n * @param {string} [options.plugins] Plugins to use when precaching as well\n * as responding to fetch events for precached assets.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor({ cacheName, plugins = [], fallbackToNetwork = true, } = {}) {\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n this._strategy = new PrecacheStrategy({\n cacheName: cacheNames.getPrecacheName(cacheName),\n plugins: [\n ...plugins,\n new PrecacheCacheKeyPlugin({ precacheController: this }),\n ],\n fallbackToNetwork,\n });\n // Bind the install and activate methods to the instance.\n this.install = this.install.bind(this);\n this.activate = this.activate.bind(this);\n }\n /**\n * @type {workbox-precaching.PrecacheStrategy} The strategy created by this controller and\n * used to cache assets and respond to fetch events.\n */\n get strategy() {\n return this._strategy;\n }\n /**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n */\n precache(entries) {\n this.addToCacheList(entries);\n if (!this._installAndActiveListenersAdded) {\n self.addEventListener('install', this.install);\n self.addEventListener('activate', this.activate);\n this._installAndActiveListenersAdded = true;\n }\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {Array} entries\n * Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\n if (process.env.NODE_ENV === 'production') {\n // Use console directly to display this warning without bloating\n // bundle sizes by pulling in all of the logger codebase in prod.\n console.warn(warningMessage);\n }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n install(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const installReportPlugin = new PrecacheInstallReportPlugin();\n this.strategy.plugins.push(installReportPlugin);\n // Cache entries one at a time.\n // See https://github.com/GoogleChrome/workbox/issues/2528\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n await Promise.all(this.strategy.handleAll({\n params: { cacheKey },\n request,\n event,\n }));\n }\n const { updatedURLs, notUpdatedURLs } = installReportPlugin;\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, notUpdatedURLs);\n }\n return { updatedURLs, notUpdatedURLs };\n });\n }\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n activate(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const cache = await self.caches.open(this.strategy.cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n });\n }\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * @param {string} url A cache key whose SRI you want to look up.\n * @return {string} The subresource integrity associated with the cache key,\n * or undefined if it's not set.\n */\n getIntegrityForCacheKey(cacheKey) {\n return this._cacheKeysToIntegrities.get(cacheKey);\n }\n /**\n * This acts as a drop-in replacement for\n * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n * with the following differences:\n *\n * - It knows what the name of the precache is, and only checks in that cache.\n * - It allows you to pass in an \"original\" URL without versioning parameters,\n * and it will automatically look up the correct cache key for the currently\n * active revision of that URL.\n *\n * E.g., `matchPrecache('index.html')` will find the correct precached\n * response for the currently active service worker, even if the actual cache\n * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n *\n * @param {string|Request} request The key (without revisioning parameters)\n * to look up in the precache.\n * @return {Promise}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this.strategy.cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that looks up `url` in the precache (taking into\n * account revision information), and returns the corresponding `Response`.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @return {workbox-routing~handlerCallback}\n */\n createHandlerBoundToURL(url) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n return (options) => {\n options.request = new Request(url);\n options.params = Object.assign({ cacheKey }, options.params);\n return this.strategy.handle(options);\n };\n }\n}\nexport { PrecacheController };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { Route } from 'workbox-routing/Route.js';\nimport { generateURLVariations } from './utils/generateURLVariations.js';\nimport './_version.js';\n/**\n * A subclass of {@link workbox-routing.Route} that takes a\n * {@link workbox-precaching.PrecacheController}\n * instance and uses it to match incoming requests and handle fetching\n * responses from the precache.\n *\n * @memberof workbox-precaching\n * @extends workbox-routing.Route\n */\nclass PrecacheRoute extends Route {\n /**\n * @param {PrecacheController} precacheController A `PrecacheController`\n * instance used to both match requests and respond to fetch events.\n * @param {Object} [options] Options to control how requests are matched\n * against the list of precached URLs.\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {workbox-precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URLs that should be checked for precache matches.\n */\n constructor(precacheController, options) {\n const match = ({ request, }) => {\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(request.url, options)) {\n const cacheKey = urlsToCacheKeys.get(possibleURL);\n if (cacheKey) {\n const integrity = precacheController.getIntegrityForCacheKey(cacheKey);\n return { cacheKey, integrity };\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url));\n }\n return;\n };\n super(match, precacheController.strategy);\n }\n}\nexport { PrecacheRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching = [/^utm_/, /^fbclid$/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a [cache-first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-falling-back-to-network}\n * request strategy.\n *\n * A cache first strategy is useful for assets that have been revisioned,\n * such as URLs like `/styles/example.a8f5f1.css`, since they\n * can be cached for long periods of time.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends workbox-strategies.Strategy\n * @memberof workbox-strategies\n */\nclass CacheFirst extends Strategy {\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const logs = [];\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'makeRequest',\n paramName: 'request',\n });\n }\n let response = await handler.cacheMatch(request);\n let error = undefined;\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this.cacheName}' cache. ` +\n `Will respond with a network request.`);\n }\n try {\n response = await handler.fetchAndCachePut(request);\n }\n catch (err) {\n if (err instanceof Error) {\n error = err;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n }\n else {\n logs.push(`Unable to get a response from the network.`);\n }\n }\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this.cacheName}' cache.`);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n}\nexport { CacheFirst };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { registerQuotaErrorCallback } from 'workbox-core/registerQuotaErrorCallback.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheExpiration } from './CacheExpiration.js';\nimport './_version.js';\n/**\n * This plugin can be used in a `workbox-strategy` to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * It can only be used with `workbox-strategy` instances that have a\n * [custom `cacheName` property set](/web/tools/workbox/guides/configure-workbox#custom_cache_names_in_strategies).\n * In other words, it can't be used to expire entries in strategy that uses the\n * default runtime cache name.\n *\n * Whenever a cached response is used or updated, this plugin will look\n * at the associated cache and remove any old or extra responses.\n *\n * When using `maxAgeSeconds`, responses may be used *once* after expiring\n * because the expiration clean up will not have occurred until *after* the\n * cached response has been used. If the response has a \"Date\" header, then\n * a light weight expiration check is performed and the response will not be\n * used immediately.\n *\n * When using `maxEntries`, the entry least-recently requested will be removed\n * from the cache first.\n *\n * @memberof workbox-expiration\n */\nclass ExpirationPlugin {\n /**\n * @param {ExpirationPluginOptions} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n * @param {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n * automatic deletion if the available storage quota has been exceeded.\n */\n constructor(config = {}) {\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when a `Response` is about to be returned\n * from a [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) to\n * the handler. It allows the `Response` to be inspected for freshness and\n * prevents it from being used if the `Response`'s `Date` header value is\n * older than the configured `maxAgeSeconds`.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache the response is in.\n * @param {Response} options.cachedResponse The `Response` object that's been\n * read from a cache and whose freshness should be checked.\n * @return {Response} Either the `cachedResponse`, if it's\n * fresh, or `null` if the `Response` is older than `maxAgeSeconds`.\n *\n * @private\n */\n this.cachedResponseWillBeUsed = async ({ event, request, cacheName, cachedResponse, }) => {\n if (!cachedResponse) {\n return null;\n }\n const isFresh = this._isResponseDateFresh(cachedResponse);\n // Expire entries to ensure that even if the expiration date has\n // expired, it'll only be used once.\n const cacheExpiration = this._getCacheExpiration(cacheName);\n dontWaitFor(cacheExpiration.expireEntries());\n // Update the metadata for the request URL to the current timestamp,\n // but don't `await` it as we don't want to block the response.\n const updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n if (event) {\n try {\n event.waitUntil(updateTimestampDone);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n // The event may not be a fetch event; only log the URL if it is.\n if ('request' in event) {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache entry for ` +\n `'${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n }\n return isFresh ? cachedResponse : null;\n };\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when an entry is added to a cache.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache that was updated.\n * @param {string} options.request The Request for the cached entry.\n *\n * @private\n */\n this.cacheDidUpdate = async ({ cacheName, request, }) => {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'cacheName',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'request',\n });\n }\n const cacheExpiration = this._getCacheExpiration(cacheName);\n await cacheExpiration.updateTimestamp(request.url);\n await cacheExpiration.expireEntries();\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._config = config;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheExpirations = new Map();\n if (config.purgeOnQuotaError) {\n registerQuotaErrorCallback(() => this.deleteCacheAndMetadata());\n }\n }\n /**\n * A simple helper method to return a CacheExpiration instance for a given\n * cache name.\n *\n * @param {string} cacheName\n * @return {CacheExpiration}\n *\n * @private\n */\n _getCacheExpiration(cacheName) {\n if (cacheName === cacheNames.getRuntimeName()) {\n throw new WorkboxError('expire-custom-caches-only');\n }\n let cacheExpiration = this._cacheExpirations.get(cacheName);\n if (!cacheExpiration) {\n cacheExpiration = new CacheExpiration(cacheName, this._config);\n this._cacheExpirations.set(cacheName, cacheExpiration);\n }\n return cacheExpiration;\n }\n /**\n * @param {Response} cachedResponse\n * @return {boolean}\n *\n * @private\n */\n _isResponseDateFresh(cachedResponse) {\n if (!this._maxAgeSeconds) {\n // We aren't expiring by age, so return true, it's fresh\n return true;\n }\n // Check if the 'date' header will suffice a quick expiration check.\n // See https://github.com/GoogleChromeLabs/sw-toolbox/issues/164 for\n // discussion.\n const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n if (dateHeaderTimestamp === null) {\n // Unable to parse date, so assume it's fresh.\n return true;\n }\n // If we have a valid headerTime, then our response is fresh iff the\n // headerTime plus maxAgeSeconds is greater than the current time.\n const now = Date.now();\n return dateHeaderTimestamp >= now - this._maxAgeSeconds * 1000;\n }\n /**\n * This method will extract the data header and parse it into a useful\n * value.\n *\n * @param {Response} cachedResponse\n * @return {number|null}\n *\n * @private\n */\n _getDateHeaderTimestamp(cachedResponse) {\n if (!cachedResponse.headers.has('date')) {\n return null;\n }\n const dateHeader = cachedResponse.headers.get('date');\n const parsedDate = new Date(dateHeader);\n const headerTime = parsedDate.getTime();\n // If the Date header was invalid for some reason, parsedDate.getTime()\n // will return NaN.\n if (isNaN(headerTime)) {\n return null;\n }\n return headerTime;\n }\n /**\n * This is a helper method that performs two operations:\n *\n * - Deletes *all* the underlying Cache instances associated with this plugin\n * instance, by calling caches.delete() on your behalf.\n * - Deletes the metadata from IndexedDB used to keep track of expiration\n * details for each Cache instance.\n *\n * When using cache expiration, calling this method is preferable to calling\n * `caches.delete()` directly, since this will ensure that the IndexedDB\n * metadata is also cleanly removed and open IndexedDB instances are deleted.\n *\n * Note that if you're *not* using cache expiration for a given cache, calling\n * `caches.delete()` and passing in the cache's name should be sufficient.\n * There is no Workbox-specific method needed for cleanup in that case.\n */\n async deleteCacheAndMetadata() {\n // Do this one at a time instead of all at once via `Promise.all()` to\n // reduce the chance of inconsistency if a promise rejects.\n for (const [cacheName, cacheExpiration] of this._cacheExpirations) {\n await self.caches.delete(cacheName);\n await cacheExpiration.delete();\n }\n // Reset this._cacheExpirations to its initial state.\n this._cacheExpirations = new Map();\n }\n}\nexport { ExpirationPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from './_private/logger.js';\nimport { assert } from './_private/assert.js';\nimport { quotaErrorCallbacks } from './models/quotaErrorCallbacks.js';\nimport './_version.js';\n/**\n * Adds a function to the set of quotaErrorCallbacks that will be executed if\n * there's a quota error.\n *\n * @param {Function} callback\n * @memberof workbox-core\n */\n// Can't change Function type\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction registerQuotaErrorCallback(callback) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(callback, 'function', {\n moduleName: 'workbox-core',\n funcName: 'register',\n paramName: 'callback',\n });\n }\n quotaErrorCallbacks.add(callback);\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered a callback to respond to quota errors.', callback);\n }\n}\nexport { registerQuotaErrorCallback };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * {@link workbox-precaching.precache} and\n * {@link workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} [options] See the\n * {@link workbox-precaching.PrecacheRoute} options.\n *\n * @memberof workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * {@link workbox-core.cacheNames|\"precache cache\"} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * {@link workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * {@link workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n *\n * @memberof workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.precache(entries);\n}\nexport { precache };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { registerRoute } from 'workbox-routing/registerRoute.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { PrecacheRoute } from './PrecacheRoute.js';\nimport './_version.js';\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options] See the {@link workbox-precaching.PrecacheRoute}\n * options.\n *\n * @memberof workbox-precaching\n */\nfunction addRoute(options) {\n const precacheController = getOrCreatePrecacheController();\n const precacheRoute = new PrecacheRoute(precacheController, options);\n registerRoute(precacheRoute);\n}\nexport { addRoute };\n"],"names":["self","_","e","messageGenerator","code","args","msg","length","JSON","stringify","WorkboxError","Error","constructor","errorCode","details","super","name","normalizeHandler","handler","handle","Route","match","method","this","setCatchHandler","catchHandler","RegExpRoute","regExp","url","result","exec","href","origin","location","index","slice","Router","_routes","Map","_defaultHandlerMap","routes","addFetchListener","addEventListener","event","request","responsePromise","handleRequest","respondWith","addCacheListener","data","type","payload","requestPromises","Promise","all","urlsToCache","map","entry","Request","waitUntil","ports","then","postMessage","URL","protocol","startsWith","sameOrigin","params","route","findMatchingRoute","has","get","err","reject","_catchHandler","catch","async","catchErr","matchResult","Array","isArray","Object","keys","undefined","setDefaultHandler","set","registerRoute","push","unregisterRoute","routeIndex","indexOf","splice","defaultRouter","getOrCreateDefaultRouter","capture","captureUrl","RegExp","moduleName","funcName","paramName","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","value","join","cacheNames","userCacheName","dontWaitFor","promise","quotaErrorCallbacks","Set","idbProxyableTypes","cursorAdvanceMethods","cursorRequestMap","WeakMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","target","prop","receiver","IDBTransaction","objectStoreNames","objectStore","wrap","wrapFunction","func","IDBDatabase","prototype","transaction","IDBCursor","advance","continue","continuePrimaryKey","includes","apply","unwrap","storeNames","tx","call","sort","transformCachableValue","done","resolve","unlisten","removeEventListener","complete","error","DOMException","cacheDonePromiseForTransaction","object","IDBObjectStore","IDBIndex","some","c","Proxy","IDBRequest","success","promisifyRequest","newValue","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","replace","useIndex","isWrite","storeName","store","shift","oldTraps","_extends","callback","CACHE_OBJECT_STORE","normalizeURL","unNormalizedUrl","hash","CacheTimestampsModel","_db","_cacheName","_upgradeDb","db","objStore","createObjectStore","keyPath","createIndex","unique","_upgradeDbAndDeleteOldDbs","blocked","indexedDB","deleteDatabase","deleteDB","timestamp","id","_getId","getDb","durability","put","getTimestamp","minTimestamp","maxCount","cursor","openCursor","entriesToDelete","entriesNotDeletedCount","urlsDeleted","delete","version","upgrade","blocking","terminated","open","openPromise","oldVersion","newVersion","openDB","bind","CacheExpiration","config","_isRunning","_rerunRequested","_maxEntries","maxEntries","_maxAgeSeconds","maxAgeSeconds","_matchOptions","matchOptions","_timestampModel","Date","now","urlsExpired","expireEntries","cache","caches","updateTimestamp","setTimestamp","isURLExpired","expireOlderThan","Infinity","stripParams","fullURL","ignoreParams","strippedURL","param","searchParams","Deferred","toRequest","input","StrategyHandler","strategy","options","_cacheKeys","assign","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","plugins","_pluginStateMap","plugin","fetch","mode","FetchEvent","preloadResponse","possiblePreloadResponse","originalRequest","hasCallback","clone","cb","iterateCallbacks","thrownErrorMessage","message","pluginFilteredRequest","fetchResponse","fetchOptions","response","runCallbacks","fetchAndCachePut","responseClone","cachePut","cacheMatch","key","cachedResponse","effectiveRequest","getCacheKey","multiMatchOptions","ms","setTimeout","String","responseToCache","_ensureResponseSafeToCache","hasCacheUpdateCallback","oldResponse","strippedRequestURL","keysOptions","ignoreSearch","cacheKeys","cacheKey","cacheMatchIgnoreParams","executeQuotaErrorCallbacks","newResponse","state","statefulCallback","statefulParam","destroy","pluginsUsed","status","Strategy","responseDone","handleAll","_getResponse","_awaitComplete","_handle","doneWaiting","waitUntilError","asyncFn","returnPromise","createCacheKey","urlObject","revision","cacheKeyURL","originalURL","PrecacheInstallReportPlugin","updatedURLs","notUpdatedURLs","handlerWillStart","cachedResponseWillBeUsed","PrecacheCacheKeyPlugin","precacheController","cacheKeyWillBeUsed","_precacheController","getCacheKeyForURL","headers","supportStatus","copyResponse","modifier","clonedResponse","responseInit","Headers","statusText","modifiedResponseInit","body","testResponse","Response","canConstructResponseFromBodyStream","blob","PrecacheStrategy","_fallbackToNetwork","fallbackToNetwork","copyRedirectedCacheableResponsesPlugin","_handleInstall","_handleFetch","integrityInManifest","integrity","integrityInRequest","noIntegrityConflict","_useDefaultCacheabilityPluginIfNeeded","defaultPluginIndex","cacheWillUpdatePluginCount","entries","defaultPrecacheCacheabilityPlugin","cacheWillUpdate","redirected","PrecacheController","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","install","activate","addToCacheList","_installAndActiveListenersAdded","urlsToWarnAbout","cacheMode","firstEntry","secondEntry","warningMessage","console","warn","installReportPlugin","credentials","currentlyCachedRequests","expectedCacheKeys","values","deletedURLs","getURLsToCacheKeys","getCachedURLs","getIntegrityForCacheKey","matchPrecache","createHandlerBoundToURL","getOrCreatePrecacheController","PrecacheRoute","urlsToCacheKeys","possibleURL","ignoreURLParametersMatching","directoryIndex","cleanURLs","urlManipulation","urlWithoutIgnoredParams","test","removeIgnoredSearchParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","generateURLVariations","isFresh","_isResponseDateFresh","cacheExpiration","_getCacheExpiration","updateTimestampDone","cacheDidUpdate","_config","_cacheExpirations","purgeOnQuotaError","add","registerQuotaErrorCallback","deleteCacheAndMetadata","dateHeaderTimestamp","_getDateHeaderTimestamp","dateHeader","headerTime","getTime","isNaN","addRoute"],"mappings":"6CAEA,IACIA,KAAK,uBAAyBC,IAElC,MAAOC,ICEP,MCgBaC,EAdI,CAACC,KAASC,KACnBC,IAAAA,EAAMF,EAIV,OAHIC,EAAKE,OAAS,IACdD,GAAQ,OAAME,KAAKC,UAAUJ,MAE1BC,GCIX,MAAMI,UAAqBC,MASvBC,YAAYC,EAAWC,GAEnBC,MADgBZ,EAAiBU,EAAWC,IAEvCE,KAAAA,KAAOH,EACPC,KAAAA,QAAUA,GC7BvB,IACId,KAAK,0BAA4BC,IAErC,MAAOC,ICWA,MCAMe,EAAoBC,GACzBA,GAA8B,iBAAZA,EASXA,EAWA,CAAEC,OAAQD,GCjBzB,MAAME,EAYFR,YAAYS,EAAOH,EAASI,EFhBH,OE8BrBC,KAAKL,QAAUD,EAAiBC,GAC3BG,KAAAA,MAAQA,EACRC,KAAAA,OAASA,EAOlBE,gBAAgBN,GACZK,KAAKE,aAAeR,EAAiBC,IChC7C,MAAMQ,UAAoBN,EActBR,YAAYe,EAAQT,EAASI,GAiCzBP,OAxBc,EAAGa,IAAAA,MACPC,MAAAA,EAASF,EAAOG,KAAKF,EAAIG,MAE3B,GAACF,IAODD,EAAII,SAAWC,SAASD,QAA2B,IAAjBH,EAAOK,OAY7C,OAAOL,EAAOM,MAAM,KAEXjB,EAASI,ICxC9B,MAAMc,EAIFxB,cACIW,KAAKc,EAAU,IAAIC,IACnBf,KAAKgB,EAAqB,IAAID,IAO9BE,aACA,OAAOjB,KAAKc,EAMhBI,mBAEIzC,KAAK0C,iBAAiB,SAAWC,IACvB,MAAAC,QAAEA,GAAYD,EACdE,EAAkBtB,KAAKuB,cAAc,CAAEF,QAAAA,EAASD,MAAAA,IAClDE,GACAF,EAAMI,YAAYF,MA0B9BG,mBAEIhD,KAAK0C,iBAAiB,WAAaC,IAG3BA,GAAAA,EAAMM,MAA4B,eAApBN,EAAMM,KAAKC,KAAuB,CAE1C,MAAAC,QAAEA,GAAYR,EAAMM,KAIpBG,EAAkBC,QAAQC,IAAIH,EAAQI,YAAYC,KAAKC,IACpC,iBAAVA,IACPA,EAAQ,CAACA,IAEb,MAAMb,EAAU,IAAIc,WAAWD,GACxB,OAAAlC,KAAKuB,cAAc,CAAEF,QAAAA,EAASD,MAAAA,QAKzCA,EAAMgB,UAAUP,GAEZT,EAAMiB,OAASjB,EAAMiB,MAAM,IACtBR,EAAgBS,MAAK,IAAMlB,EAAMiB,MAAM,GAAGE,aAAY,SAiB3EhB,eAAcF,QAAEA,EAAFD,MAAWA,IASrB,MAAMf,EAAM,IAAImC,IAAInB,EAAQhB,IAAKK,SAASF,MACtC,IAACH,EAAIoC,SAASC,WAAW,QAIzB,OAEEC,MAAAA,EAAatC,EAAII,SAAWC,SAASD,QACrCmC,OAAEA,EAAFC,MAAUA,GAAU7C,KAAK8C,kBAAkB,CAC7C1B,MAAAA,EACAC,QAAAA,EACAsB,WAAAA,EACAtC,IAAAA,IAEJ,IAAIV,EAAUkD,GAASA,EAAMlD,QAe7B,MAAMI,EAASsB,EAAQtB,OAQnB,IAPCJ,GAAWK,KAAKgB,EAAmB+B,IAAIhD,KAKxCJ,EAAUK,KAAKgB,EAAmBgC,IAAIjD,KAErCJ,EAMD,OAkBJ,IAAI2B,EACA,IACAA,EAAkB3B,EAAQC,OAAO,CAAES,IAAAA,EAAKgB,QAAAA,EAASD,MAAAA,EAAOwB,OAAAA,IAE5D,MAAOK,GACH3B,EAAkBQ,QAAQoB,OAAOD,GAGrC,MAAM/C,EAAe2C,GAASA,EAAM3C,aAuCpC,OAtCIoB,aAA2BQ,UAC1B9B,KAAKmD,GAAiBjD,KACvBoB,EAAkBA,EAAgB8B,OAAMC,MAAAA,IAEpC,GAAInD,EAUI,IACA,aAAaA,EAAaN,OAAO,CAAES,IAAAA,EAAKgB,QAAAA,EAASD,MAAAA,EAAOwB,OAAAA,IAE5D,MAAOU,GACCA,aAAoBlE,QACpB6D,EAAMK,GAId,GAAAtD,KAAKmD,EAUL,OAAOnD,KAAKmD,EAAcvD,OAAO,CAAES,IAAAA,EAAKgB,QAAAA,EAASD,MAAAA,IAErD,MAAM6B,MAGP3B,EAiBXwB,mBAAkBzC,IAAEA,EAAFsC,WAAOA,EAAPtB,QAAmBA,EAAnBD,MAA4BA,IACpCH,MAAAA,EAASjB,KAAKc,EAAQkC,IAAI3B,EAAQtB,SAAW,GACnD,IAAK,MAAM8C,KAAS5B,EAAQ,CACpB2B,IAAAA,EAGJ,MAAMW,EAAcV,EAAM/C,MAAM,CAAEO,IAAAA,EAAKsC,WAAAA,EAAYtB,QAAAA,EAASD,MAAAA,IAC5D,GAAImC,EA6BO,OAjBPX,EAASW,GACLC,MAAMC,QAAQb,IAA6B,IAAlBA,EAAO5D,QAI3BuE,EAAYlE,cAAgBqE,QACG,IAApCA,OAAOC,KAAKJ,GAAavE,QAIG,kBAAhBuE,KAPZX,OAASgB,GAcN,CAAEf,MAAAA,EAAOD,OAAAA,GAIxB,MAAO,GAgBXiB,kBAAkBlE,EAASI,EJ1SF,OI2ShBiB,KAAAA,EAAmB8C,IAAI/D,EAAQL,EAAiBC,IASzDM,gBAAgBN,GACZK,KAAKmD,EAAgBzD,EAAiBC,GAO1CoE,cAAclB,GAiCL7C,KAAKc,EAAQiC,IAAIF,EAAM9C,SACnBe,KAAAA,EAAQgD,IAAIjB,EAAM9C,OAAQ,IAI9Be,KAAAA,EAAQkC,IAAIH,EAAM9C,QAAQiE,KAAKnB,GAOxCoB,gBAAgBpB,GACR,IAAC7C,KAAKc,EAAQiC,IAAIF,EAAM9C,QACxB,MAAM,IAAIZ,EAAa,6CAA8C,CACjEY,OAAQ8C,EAAM9C,SAGtB,MAAMmE,EAAalE,KAAKc,EAAQkC,IAAIH,EAAM9C,QAAQoE,QAAQtB,GAC1D,KAAIqB,GAAc,GAId,MAAM,IAAI/E,EAAa,yCAHvBa,KAAKc,EAAQkC,IAAIH,EAAM9C,QAAQqE,OAAOF,EAAY,ICxX9D,IAAIG,EAQG,MAAMC,EAA2B,KAC/BD,IACDA,EAAgB,IAAIxD,EAEpBwD,EAAcnD,mBACdmD,EAAc5C,oBAEX4C,GCQX,SAASN,EAAcQ,EAAS5E,EAASI,GACrC,IAAI8C,EACJ,GAAuB,iBAAZ0B,EAAsB,CACvBC,MAAAA,EAAa,IAAIhC,IAAI+B,EAAS7D,SAASF,MAkC7CqC,EAAQ,IAAIhD,GAZU,EAAGQ,IAAAA,KASdA,EAAIG,OAASgE,EAAWhE,MAGFb,EAASI,QAEzC,GAAIwE,aAAmBE,OAExB5B,EAAQ,IAAI1C,EAAYoE,EAAS5E,EAASI,QAEzC,GAAuB,mBAAZwE,EAEZ1B,EAAQ,IAAIhD,EAAM0E,EAAS5E,EAASI,OAEnC,CAAA,KAAIwE,aAAmB1E,GAIxB,MAAM,IAAIV,EAAa,yBAA0B,CAC7CuF,WAAY,kBACZC,SAAU,gBACVC,UAAW,YANf/B,EAAQ0B,EAWZ,OAFsBD,IACRP,cAAclB,GACrBA,ECnFX,MAAMgC,EAAoB,CACtBC,gBAAiB,kBACjBC,SAAU,cACVC,OAAQ,UACRC,QAAS,UACTC,OAAgC,oBAAjBC,aAA+BA,aAAaC,MAAQ,IAEjEC,EAAoBC,GACf,CAACT,EAAkBG,OAAQM,EAAWT,EAAkBK,QAC1DK,QAAQC,GAAUA,GAASA,EAAMxG,OAAS,IAC1CyG,KAAK,KAODC,EAWSC,GACPA,GAAiBN,EAAiBR,EAAkBE,UAZtDW,EAiBQC,GACNA,GAAiBN,EAAiBR,EAAkBI,SC/B5D,SAASW,EAAYC,GAEnBA,EAAQvD,MAAK,SCHtB,MAAMwD,EAAsB,IAAIC,oNCThC,IAAIC,EACAC,EAqBJ,MAAMC,EAAmB,IAAIC,QACvBC,EAAqB,IAAID,QACzBE,EAA2B,IAAIF,QAC/BG,EAAiB,IAAIH,QACrBI,EAAwB,IAAIJ,QA0DlC,IAAIK,EAAgB,CAChBxD,IAAIyD,EAAQC,EAAMC,GACVF,GAAAA,aAAkBG,eAAgB,CAElC,GAAa,SAATF,EACA,OAAON,EAAmBpD,IAAIyD,GAE9BC,GAAS,qBAATA,EACOD,OAAAA,EAAOI,kBAAoBR,EAAyBrD,IAAIyD,GAG/DC,GAAS,UAATA,EACA,OAAOC,EAASE,iBAAiB,QAC3BjD,EACA+C,EAASG,YAAYH,EAASE,iBAAiB,IAI7D,OAAOE,EAAKN,EAAOC,KAEvB5C,IAAG,CAAC2C,EAAQC,EAAMlB,KACdiB,EAAOC,GAAQlB,GACR,GAEXzC,IAAG,CAAC0D,EAAQC,IACJD,aAAkBG,iBACR,SAATF,GAA4B,UAATA,IAGjBA,KAAQD,GAMvB,SAASO,EAAaC,GAIlB,OAAIA,IAASC,YAAYC,UAAUC,aAC7B,qBAAsBR,eAAeO,WA7GnClB,IACHA,EAAuB,CACpBoB,UAAUF,UAAUG,QACpBD,UAAUF,UAAUI,SACpBF,UAAUF,UAAUK,sBAqHEC,SAASR,GAC5B,YAAanI,GAITiI,OADPE,EAAKS,MAAMC,EAAO3H,MAAOlB,GAClBiI,EAAKb,EAAiBlD,IAAIhD,QAGlC,YAAalB,GAGhB,OAAOiI,EAAKE,EAAKS,MAAMC,EAAO3H,MAAOlB,KAtB9B,SAAU8I,KAAe9I,GAC5B,MAAM+I,EAAKZ,EAAKa,KAAKH,EAAO3H,MAAO4H,KAAe9I,GAE3CiI,OADPV,EAAyBvC,IAAI+D,EAAID,EAAWG,KAAOH,EAAWG,OAAS,CAACH,IACjEb,EAAKc,IAsBxB,SAASG,EAAuBxC,GACxB,MAAiB,mBAAVA,EACAwB,EAAaxB,IAGpBA,aAAiBoB,gBAhGzB,SAAwCiB,GAEpC,GAAIzB,EAAmBrD,IAAI8E,GACvB,OACEI,MAAAA,EAAO,IAAInG,SAAQ,CAACoG,EAAShF,KACzBiF,MAAAA,EAAW,KACbN,EAAGO,oBAAoB,WAAYC,GACnCR,EAAGO,oBAAoB,QAASE,GAChCT,EAAGO,oBAAoB,QAASE,IAE9BD,EAAW,KACbH,IACAC,KAEEG,EAAQ,KACVpF,EAAO2E,EAAGS,OAAS,IAAIC,aAAa,aAAc,eAClDJ,KAEJN,EAAG1G,iBAAiB,WAAYkH,GAChCR,EAAG1G,iBAAiB,QAASmH,GAC7BT,EAAG1G,iBAAiB,QAASmH,MAGjClC,EAAmBtC,IAAI+D,EAAII,GA0EvBO,CAA+BhD,GA9JhBiD,EA+JDjD,GAzJVQ,IACHA,EAAoB,CACjBkB,YACAwB,eACAC,SACAtB,UACAT,kBAZiDgC,MAAMC,GAAMJ,aAAkBI,IAgK5E,IAAIC,MAAMtD,EAAOgB,GAErBhB,GAlKW,IAACiD,EAoKvB,SAAS1B,EAAKvB,GAGNA,GAAAA,aAAiBuD,WACjB,OA3IR,SAA0B1H,GAChBwE,MAAAA,EAAU,IAAI/D,SAAQ,CAACoG,EAAShF,KAC5BiF,MAAAA,EAAW,KACb9G,EAAQ+G,oBAAoB,UAAWY,GACvC3H,EAAQ+G,oBAAoB,QAASE,IAEnCU,EAAU,KACZd,EAAQnB,EAAK1F,EAAQf,SACrB6H,KAEEG,EAAQ,KACVpF,EAAO7B,EAAQiH,OACfH,KAEJ9G,EAAQF,iBAAiB,UAAW6H,GACpC3H,EAAQF,iBAAiB,QAASmH,MAetC,OAbAzC,EACKvD,MAAMkD,IAGHA,aAAiB6B,WACjBnB,EAAiBpC,IAAI0B,EAAOnE,MAI/B+B,OAAM,SAGXmD,EAAsBzC,IAAI+B,EAASxE,GAC5BwE,EA6GIoD,CAAiBzD,GAG5B,GAAIc,EAAevD,IAAIyC,GACnB,OAAOc,EAAetD,IAAIwC,GAC9B,MAAM0D,EAAWlB,EAAuBxC,GAOxC,OAJI0D,IAAa1D,IACbc,EAAexC,IAAI0B,EAAO0D,GAC1B3C,EAAsBzC,IAAIoF,EAAU1D,IAEjC0D,EAEX,MAAMvB,EAAUnC,GAAUe,EAAsBvD,IAAIwC,GC5IpD,MAAM2D,EAAc,CAAC,MAAO,SAAU,SAAU,aAAc,SACxDC,EAAe,CAAC,MAAO,MAAO,SAAU,SACxCC,EAAgB,IAAItI,IAC1B,SAASuI,EAAU7C,EAAQC,GACvB,KAAMD,aAAkBS,cAClBR,KAAQD,GACM,iBAATC,EACP,OAEJ,GAAI2C,EAAcrG,IAAI0D,GAClB,OAAO2C,EAAcrG,IAAI0D,GACvB6C,MAAAA,EAAiB7C,EAAK8C,QAAQ,aAAc,IAC5CC,EAAW/C,IAAS6C,EACpBG,EAAUN,EAAa3B,SAAS8B,GAEtC,KACEA,KAAmBE,EAAWd,SAAWD,gBAAgBvB,aACrDuC,IAAWP,EAAY1B,SAAS8B,GAClC,OAEJ,MAAMxJ,EAASsD,eAAgBsG,KAAc7K,GAEzC,MAAM+I,EAAK7H,KAAKoH,YAAYuC,EAAWD,EAAU,YAAc,YAC/D,IAAIjD,EAASoB,EAAG+B,MAQT,OAPHH,IACAhD,EAASA,EAAO9F,MAAM7B,EAAK+K,iBAMjB/H,QAAQC,IAAI,CACtB0E,EAAO8C,MAAmBzK,GAC1B4K,GAAW7B,EAAGI,QACd,IAGR,OADAoB,EAAcvF,IAAI4C,EAAM3G,GACjBA,EDwCPyG,ECtCUsD,CAAAA,GAADC,EAAA,GACND,EADM,CAET9G,IAAK,CAACyD,EAAQC,EAAMC,IAAa2C,EAAU7C,EAAQC,IAASoD,EAAS9G,IAAIyD,EAAQC,EAAMC,GACvF5D,IAAK,CAAC0D,EAAQC,MAAW4C,EAAU7C,EAAQC,IAASoD,EAAS/G,IAAI0D,EAAQC,KDmCzDsD,CAASxD,GErH7B,IACI/H,KAAK,6BAA+BC,IAExC,MAAOC,ICIP,MACMsL,EAAqB,gBACrBC,EAAgBC,IACZ9J,MAAAA,EAAM,IAAImC,IAAI2H,EAAiBzJ,SAASF,MAEvCH,OADPA,EAAI+J,KAAO,GACJ/J,EAAIG,MAOf,MAAM6J,EAOFhL,YAAYiG,GACHgF,KAAAA,EAAM,KACNC,KAAAA,EAAajF,EAStBkF,EAAWC,GAKP,MAAMC,EAAWD,EAAGE,kBAAkBV,EAAoB,CAAEW,QAAS,OAIrEF,EAASG,YAAY,YAAa,YAAa,CAAEC,QAAQ,IACzDJ,EAASG,YAAY,YAAa,YAAa,CAAEC,QAAQ,IAS7DC,EAA0BN,GACjBD,KAAAA,EAAWC,GACZzK,KAAKuK,GFzBjB,SAAkB9K,GAAMuL,QAAEA,GAAY,IAClC,MAAM3J,EAAU4J,UAAUC,eAAezL,GACrCuL,GACA3J,EAAQF,iBAAiB,WAAW,IAAM6J,MACvCjE,EAAK1F,GAASiB,MAAK,SEsBb6I,CAASnL,KAAKuK,GASTlH,mBAAChD,EAAK+K,GAEpB,MAAMlJ,EAAQ,CACV7B,IAFJA,EAAM6J,EAAa7J,GAGf+K,UAAAA,EACA9F,UAAWtF,KAAKuK,EAIhBc,GAAIrL,KAAKsL,EAAOjL,IAGdwH,SADW7H,KAAKuL,SACRnE,YAAY6C,EAAoB,YAAa,CACvDuB,WAAY,kBAEV3D,EAAG+B,MAAM6B,IAAIvJ,SACb2F,EAAGI,KAUPyD,mBAAarL,GACf,MAAMoK,QAAWzK,KAAKuL,QAChBrJ,QAAcuI,EAAGzH,IAAIiH,EAAoBjK,KAAKsL,EAAOjL,IAC3D,OAAO6B,MAAAA,OAAqC,EAASA,EAAMkJ,UAa5C/H,oBAACsI,EAAcC,GAC9B,MAAMnB,QAAWzK,KAAKuL,QAClBM,IAAAA,QAAepB,EACdrD,YAAY6C,GACZL,MAAMjJ,MAAM,aACZmL,WAAW,KAAM,QAChBC,MAAAA,EAAkB,GACpBC,IAAAA,EAAyB,EAC7B,KAAOH,GAAQ,CACX,MAAMvL,EAASuL,EAAOrG,MAGlBlF,EAAOgF,YAActF,KAAKuK,IAGrBoB,GAAgBrL,EAAO8K,UAAYO,GACnCC,GAAYI,GAA0BJ,EASvCG,EAAgB/H,KAAK6H,EAAOrG,OAG5BwG,KAGRH,QAAeA,EAAOtE,WAMpB0E,MAAAA,EAAc,GACpB,IAAK,MAAM/J,KAAS6J,QACVtB,EAAGyB,OAAOjC,EAAoB/H,EAAMmJ,IAC1CY,EAAYjI,KAAK9B,EAAM7B,KAE3B,OAAO4L,EAUXX,EAAOjL,GAII,OAAAL,KAAKuK,EAAa,IAAML,EAAa7J,GAOrCgD,cAMP,OALKrD,KAAKsK,IACDA,KAAAA,QFvKjB,SAAgB7K,EAAM0M,GAASnB,QAAEA,EAAFoB,QAAWA,EAAXC,SAAoBA,EAApBC,WAA8BA,GAAe,IAClEjL,MAAAA,EAAU4J,UAAUsB,KAAK9M,EAAM0M,GAC/BK,EAAczF,EAAK1F,GAgBzB,OAfI+K,GACA/K,EAAQF,iBAAiB,iBAAkBC,IACvCgL,EAAQrF,EAAK1F,EAAQf,QAASc,EAAMqL,WAAYrL,EAAMsL,WAAY3F,EAAK1F,EAAQ+F,iBAGnF4D,GACA3J,EAAQF,iBAAiB,WAAW,IAAM6J,MAC9CwB,EACKlK,MAAMmI,IACH6B,GACA7B,EAAGtJ,iBAAiB,SAAS,IAAMmL,MACnCD,GACA5B,EAAGtJ,iBAAiB,iBAAiB,IAAMkL,SAE9CjJ,OAAM,SACJoJ,EEqJkBG,CAxKb,qBAwK6B,EAAG,CAChCP,QAASpM,KAAK+K,EAA0B6B,KAAK5M,SAG9CA,KAAKsK,GCjKpB,MAAMuC,EAcFxN,YAAYiG,EAAWwH,EAAS,IACvBC,KAAAA,GAAa,EACbC,KAAAA,GAAkB,EAgCvBhN,KAAKiN,EAAcH,EAAOI,WAC1BlN,KAAKmN,EAAiBL,EAAOM,cAC7BpN,KAAKqN,EAAgBP,EAAOQ,aACvB/C,KAAAA,EAAajF,EAClBtF,KAAKuN,EAAkB,IAAIlD,EAAqB/E,GAKjCjC,sBACX,GAAArD,KAAK+M,EAEL,YADKC,KAAAA,GAAkB,GAGtBD,KAAAA,GAAa,EAClB,MAAMpB,EAAe3L,KAAKmN,EACpBK,KAAKC,MAA8B,IAAtBzN,KAAKmN,EAClB,EACAO,QAAoB1N,KAAKuN,EAAgBI,cAAchC,EAAc3L,KAAKiN,GAE1EW,QAAcnP,KAAKoP,OAAOtB,KAAKvM,KAAKuK,GAC1C,IAAK,MAAMlK,KAAOqN,QACRE,EAAM1B,OAAO7L,EAAKL,KAAKqN,GAgB5BN,KAAAA,GAAa,EACd/M,KAAKgN,IACAA,KAAAA,GAAkB,EACvBpH,EAAY5F,KAAK2N,kBAUnBG,sBAAgBzN,SASZL,KAAKuN,EAAgBQ,aAAa1N,EAAKmN,KAAKC,OAahDO,mBAAa3N,GACX,GAACL,KAAKmN,EASL,CACK/B,MAAAA,QAAkBpL,KAAKuN,EAAgB7B,aAAarL,GACpD4N,EAAkBT,KAAKC,MAA8B,IAAtBzN,KAAKmN,EACnC/B,YAAcxH,IAAdwH,GAA0BA,EAAY6C,EAL7C,OAAO,EAYH5K,eAGH2J,KAAAA,GAAkB,QACjBhN,KAAKuN,EAAgBI,cAAcO,EAAAA,IC9JjD,SAASC,EAAYC,EAASC,GAC1B,MAAMC,EAAc,IAAI9L,IAAI4L,GAC5B,IAAK,MAAMG,KAASF,EAChBC,EAAYE,aAAatC,OAAOqC,GAE7BD,OAAAA,EAAY9N,KCIvB,MAAMiO,EAIFpP,cACSwG,KAAAA,QAAU,IAAI/D,SAAQ,CAACoG,EAAShF,KAC5BgF,KAAAA,QAAUA,EACVhF,KAAAA,OAASA,MCrB1B,IACIzE,KAAK,6BAA+BC,IAExC,MAAOC,ICWP,SAAS+P,EAAUC,GACR,MAAiB,iBAAVA,EAAqB,IAAIxM,QAAQwM,GAASA,EAW5D,MAAMC,EAiBFvP,YAAYwP,EAAUC,GACbC,KAAAA,EAAa,GA8ClBrL,OAAOsL,OAAOhP,KAAM8O,GACpB9O,KAAKoB,MAAQ0N,EAAQ1N,MAChB6N,KAAAA,EAAYJ,EACjB7O,KAAKkP,EAAmB,IAAIT,EAC5BzO,KAAKmP,EAA0B,GAG/BnP,KAAKoP,EAAW,IAAIP,EAASQ,SAC7BrP,KAAKsP,EAAkB,IAAIvO,IAC3B,IAAK,MAAMwO,KAAUvP,KAAKoP,EACtBpP,KAAKsP,EAAgBxL,IAAIyL,EAAQ,IAErCvP,KAAKoB,MAAMgB,UAAUpC,KAAKkP,EAAiBrJ,SAezC2J,YAAMb,GACF,MAAAvN,MAAEA,GAAUpB,KAClB,IAAIqB,EAAUqN,EAAUC,GACxB,GAAqB,aAAjBtN,EAAQoO,MACRrO,aAAiBsO,YACjBtO,EAAMuO,gBAAiB,CACvB,MAAMC,QAAiCxO,EAAMuO,gBAC7C,GAAIC,EAKA,OAAOA,EAMf,MAAMC,EAAkB7P,KAAK8P,YAAY,gBACnCzO,EAAQ0O,QACR,KACF,IACK,IAAA,MAAMC,KAAMhQ,KAAKiQ,iBAAiB,oBACnC5O,QAAgB2O,EAAG,CAAE3O,QAASA,EAAQ0O,QAAS3O,MAAAA,IAGvD,MAAO6B,GACCA,GAAAA,aAAe7D,MACf,MAAM,IAAID,EAAa,kCAAmC,CACtD+Q,mBAAoBjN,EAAIkN,UAOpC,MAAMC,EAAwB/O,EAAQ0O,QAClC,IACIM,IAAAA,EAEJA,QAAsBb,MAAMnO,EAA0B,aAAjBA,EAAQoO,UAAsB7L,EAAY5D,KAAKiP,EAAUqB,cAMzF,IAAA,MAAMtG,KAAYhK,KAAKiQ,iBAAiB,mBACzCI,QAAsBrG,EAAS,CAC3B5I,MAAAA,EACAC,QAAS+O,EACTG,SAAUF,IAGlB,OAAOA,EAEX,MAAO/H,GAeH,MARIuH,SACM7P,KAAKwQ,aAAa,eAAgB,CACpClI,MAAOA,EACPlH,MAAAA,EACAyO,gBAAiBA,EAAgBE,QACjC1O,QAAS+O,EAAsBL,UAGjCzH,GAaRmI,uBAAiB9B,GACnB,MAAM4B,QAAiBvQ,KAAKwP,MAAMb,GAC5B+B,EAAgBH,EAASR,QAE/B,OADK/P,KAAKoC,UAAUpC,KAAK2Q,SAAShC,EAAO+B,IAClCH,EAcLK,iBAAWC,GACb,MAAMxP,EAAUqN,EAAUmC,GAC1B,IAAIC,EACE,MAAAxL,UAAEA,EAAFgI,aAAaA,GAAiBtN,KAAKiP,EACnC8B,QAAyB/Q,KAAKgR,YAAY3P,EAAS,QACnD4P,EAAoBvN,OAAOsL,OAAOtL,OAAOsL,OAAO,GAAI1B,GAAe,CAAEhI,UAAAA,IAC3EwL,QAAuBjD,OAAO/N,MAAMiR,EAAkBE,GASjD,IAAA,MAAMjH,KAAYhK,KAAKiQ,iBAAiB,4BACzCa,QACW9G,EAAS,CACZ1E,UAAAA,EACAgI,aAAAA,EACAwD,eAAAA,EACAzP,QAAS0P,EACT3P,MAAOpB,KAAKoB,cACTwC,EAEf,OAAOkN,EAiBGzN,eAACwN,EAAKN,GAChB,MAAMlP,EAAUqN,EAAUmC,GCxP3B,IAAiBK,QAAAA,ED2PF,EC1PX,IAAIpP,SAASoG,GAAYiJ,WAAWjJ,EAASgJ,MD2P1CH,MAAAA,QAAyB/Q,KAAKgR,YAAY3P,EAAS,SAiBrD,IAACkP,EAKD,MAAM,IAAIpR,EAAa,6BAA8B,CACjDkB,KE1RQA,EF0RY0Q,EAAiB1Q,IEzRlC,IAAImC,IAAI4O,OAAO/Q,GAAMK,SAASF,MAG/BA,KAAKgJ,QAAQ,IAAI/E,OAAQ,IAAG/D,SAASD,UAAW,OAJ1CJ,IAAAA,EF6RhB,MAAMgR,QAAwBrR,KAAKsR,EAA2Bf,GAC1D,IAACc,EAKD,OAAO,EAEL,MAAA/L,UAAEA,EAAFgI,aAAaA,GAAiBtN,KAAKiP,EACnCrB,QAAcnP,KAAKoP,OAAOtB,KAAKjH,GAC/BiM,EAAyBvR,KAAK8P,YAAY,kBAC1C0B,EAAcD,QHtR5BlO,eAAsCuK,EAAOvM,EAASgN,EAAcf,GAC1DmE,MAAAA,EAAqBtD,EAAY9M,EAAQhB,IAAKgO,GAEpD,GAAIhN,EAAQhB,MAAQoR,EAChB,OAAO7D,EAAM9N,MAAMuB,EAASiM,GAGhC,MAAMoE,EAAchO,OAAOsL,OAAOtL,OAAOsL,OAAO,GAAI1B,GAAe,CAAEqE,cAAc,IAC7EC,QAAkBhE,EAAMjK,KAAKtC,EAASqQ,GAC5C,IAAK,MAAMG,KAAYD,EAEfH,GAAAA,IADwBtD,EAAY0D,EAASxR,IAAKgO,GAElD,OAAOT,EAAM9N,MAAM+R,EAAUvE,GG2QrBwE,CAIRlE,EAAOmD,EAAiBhB,QAAS,CAAC,mBAAoBzC,GACpD,KAKF,UACMM,EAAMnC,IAAIsF,EAAkBQ,EAAyBF,EAAgBtB,QAAUsB,GAEzF,MAAO/I,GACCA,GAAAA,aAAiBlJ,MAKjB,KAHmB,uBAAfkJ,EAAM7I,YGhT1B4D,iBAKI,IAAK,MAAM2G,KAAYlE,QACbkE,IH2SY+H,GAEJzJ,EAGT,IAAA,MAAM0B,KAAYhK,KAAKiQ,iBAAiB,wBACnCjG,EAAS,CACX1E,UAAAA,EACAkM,YAAAA,EACAQ,YAAaX,EAAgBtB,QAC7B1O,QAAS0P,EACT3P,MAAOpB,KAAKoB,QAGpB,OAAO,EAaMiC,kBAAChC,EAASoO,GACjBoB,MAAAA,EAAO,GAAExP,EAAQhB,SAASoP,IAChC,IAAKzP,KAAK+O,EAAW8B,GAAM,CACnBE,IAAAA,EAAmB1P,EAClB,IAAA,MAAM2I,KAAYhK,KAAKiQ,iBAAiB,sBACzCc,EAAmBrC,QAAgB1E,EAAS,CACxCyF,KAAAA,EACApO,QAAS0P,EACT3P,MAAOpB,KAAKoB,MAEZwB,OAAQ5C,KAAK4C,UAGrB5C,KAAK+O,EAAW8B,GAAOE,EAE3B,OAAO/Q,KAAK+O,EAAW8B,GAS3Bf,YAAYrQ,GACR,IAAK,MAAM8P,KAAUvP,KAAKiP,EAAUI,QAC5B5P,GAAAA,KAAQ8P,EACR,OAAO,EAGf,OAAO,EAkBOlM,mBAAC5D,EAAM8O,GAChB,IAAA,MAAMvE,KAAYhK,KAAKiQ,iBAAiBxQ,SAGnCuK,EAASuE,GAYtB0B,kBAAiBxQ,GACd,IAAK,MAAM8P,KAAUvP,KAAKiP,EAAUI,QAChC,GAA4B,mBAAjBE,EAAO9P,GAAsB,CAC9BwS,MAAAA,EAAQjS,KAAKsP,EAAgBtM,IAAIuM,GACjC2C,EAAoB3D,IACtB,MAAM4D,EAAgBzO,OAAOsL,OAAOtL,OAAOsL,OAAO,GAAIT,GAAQ,CAAE0D,MAAAA,IAGhE,OAAO1C,EAAO9P,GAAM0S,UAElBD,GAiBlB9P,UAAUyD,GAEN,OADA7F,KAAKmP,EAAwBnL,KAAK6B,GAC3BA,EAYMxC,oBACb,IAAIwC,EACJ,KAAQA,EAAU7F,KAAKmP,EAAwBtF,eACrChE,EAOduM,UACIpS,KAAKkP,EAAiBhH,QAAQ,MAY5BoJ,QAA2Bf,GACzBc,IAAAA,EAAkBd,EAClB8B,GAAc,EACb,IAAA,MAAMrI,KAAYhK,KAAKiQ,iBAAiB,mBAQrC,GAPJoB,QACWrH,EAAS,CACZ3I,QAASrB,KAAKqB,QACdkP,SAAUc,EACVjQ,MAAOpB,KAAKoB,cACTwC,EACXyO,GAAc,GACThB,EACD,MAwBR,OArBKgB,GACGhB,GAA8C,MAA3BA,EAAgBiB,SACnCjB,OAAkBzN,GAmBnByN,GI/ef,MAAMkB,EAuBFlT,YAAYyP,EAAU,IAQbxJ,KAAAA,UAAYI,EAA0BoJ,EAAQxJ,WAQnDtF,KAAKqP,QAAUP,EAAQO,SAAW,GAQlCrP,KAAKsQ,aAAexB,EAAQwB,aAQ5BtQ,KAAKsN,aAAewB,EAAQxB,aAqBhC1N,OAAOkP,GACH,MAAO0D,GAAgBxS,KAAKyS,UAAU3D,GACtC,OAAO0D,EAwBXC,UAAU3D,GAEFA,aAAmBY,aACnBZ,EAAU,CACN1N,MAAO0N,EACPzN,QAASyN,EAAQzN,UAGzB,MAAMD,EAAQ0N,EAAQ1N,MAChBC,EAAqC,iBAApByN,EAAQzN,QACzB,IAAIc,QAAQ2M,EAAQzN,SACpByN,EAAQzN,QACRuB,EAAS,WAAYkM,EAAUA,EAAQlM,YAASgB,EAChDjE,EAAU,IAAIiP,EAAgB5O,KAAM,CAAEoB,MAAAA,EAAOC,QAAAA,EAASuB,OAAAA,IACtD4P,EAAexS,KAAK0S,EAAa/S,EAAS0B,EAASD,GAGzD,MAAO,CAACoR,EAFYxS,KAAK2S,EAAeH,EAAc7S,EAAS0B,EAASD,IAI1DiC,QAAC1D,EAAS0B,EAASD,GAE7BmP,IAAAA,QADE5Q,EAAQ6Q,aAAa,mBAAoB,CAAEpP,MAAAA,EAAOC,QAAAA,IAEpD,IAKI,GAJJkP,QAAiBvQ,KAAK4S,EAAQvR,EAAS1B,IAIlC4Q,GAA8B,UAAlBA,EAAS5O,KACtB,MAAM,IAAIxC,EAAa,cAAe,CAAEkB,IAAKgB,EAAQhB,MAG7D,MAAOiI,GACCA,GAAAA,aAAiBlJ,MACZ,IAAA,MAAM4K,KAAYrK,EAAQsQ,iBAAiB,mBAE5C,GADAM,QAAiBvG,EAAS,CAAE1B,MAAAA,EAAOlH,MAAAA,EAAOC,QAAAA,IACtCkP,EACA,MAIR,IAACA,EACD,MAAMjI,EAQT,IAAA,MAAM0B,KAAYrK,EAAQsQ,iBAAiB,sBAC5CM,QAAiBvG,EAAS,CAAE5I,MAAAA,EAAOC,QAAAA,EAASkP,SAAAA,IAEhD,OAAOA,EAELoC,QAAeH,EAAc7S,EAAS0B,EAASD,GACjD,IAAImP,EACAjI,EACA,IACAiI,QAAiBiC,EAErB,MAAOlK,IAKH,UACM3I,EAAQ6Q,aAAa,oBAAqB,CAC5CpP,MAAAA,EACAC,QAAAA,EACAkP,SAAAA,UAEE5Q,EAAQkT,cAElB,MAAOC,GACCA,aAA0B1T,QAC1BkJ,EAAQwK,GAUhB,SAPMnT,EAAQ6Q,aAAa,qBAAsB,CAC7CpP,MAAAA,EACAC,QAAAA,EACAkP,SAAAA,EACAjI,MAAOA,IAEX3I,EAAQyS,UACJ9J,EACA,MAAMA,GC9LlB,SAASlG,EAAUhB,EAAO2R,GAChBC,MAAAA,EAAgBD,IAEtB,OADA3R,EAAMgB,UAAU4Q,GACTA,ECjBX,IACIvU,KAAK,6BAA+BC,IAExC,MAAOC,ICeA,SAASsU,EAAe/Q,GACvB,IAACA,EACD,MAAM,IAAI/C,EAAa,oCAAqC,CAAE+C,MAAAA,IAIlE,GAAqB,iBAAVA,EAAoB,CACrBgR,MAAAA,EAAY,IAAI1Q,IAAIN,EAAOxB,SAASF,MACnC,MAAA,CACHqR,SAAUqB,EAAU1S,KACpBH,IAAK6S,EAAU1S,MAGjB,MAAA2S,SAAEA,EAAF9S,IAAYA,GAAQ6B,EACtB,IAAC7B,EACD,MAAM,IAAIlB,EAAa,oCAAqC,CAAE+C,MAAAA,IAI9D,IAACiR,EAAU,CACLD,MAAAA,EAAY,IAAI1Q,IAAInC,EAAKK,SAASF,MACjC,MAAA,CACHqR,SAAUqB,EAAU1S,KACpBH,IAAK6S,EAAU1S,MAKjB4S,MAAAA,EAAc,IAAI5Q,IAAInC,EAAKK,SAASF,MACpC6S,EAAc,IAAI7Q,IAAInC,EAAKK,SAASF,MAEnC,OADP4S,EAAY5E,aAAa1K,IAxCC,kBAwC0BqP,GAC7C,CACHtB,SAAUuB,EAAY5S,KACtBH,IAAKgT,EAAY7S,MCvCzB,MAAM8S,EACFjU,cACSkU,KAAAA,YAAc,GACdC,KAAAA,eAAiB,GACjBC,KAAAA,iBAAmBpQ,OAAShC,QAAAA,EAAS4Q,MAAAA,MAElCA,IACAA,EAAMpC,gBAAkBxO,IAG3BqS,KAAAA,yBAA2BrQ,OAASjC,MAAAA,EAAO6Q,MAAAA,EAAOnB,eAAAA,MACnD,GAAmB,YAAf1P,EAAMO,MACFsQ,GACAA,EAAMpC,iBACNoC,EAAMpC,2BAA2B1N,QAAS,CAE1C,MAAM9B,EAAM4R,EAAMpC,gBAAgBxP,IAC9ByQ,EACA9Q,KAAKwT,eAAexP,KAAK3D,GAGzBL,KAAKuT,YAAYvP,KAAK3D,GAIlC,OAAOyQ,ICzBnB,MAAM6C,EACFtU,aAAYuU,mBAAEA,IACLC,KAAAA,mBAAqBxQ,OAAShC,QAAAA,EAASuB,OAAAA,MAGlCiP,MAAAA,GAAYjP,MAAAA,OAAuC,EAASA,EAAOiP,WACrE7R,KAAK8T,EAAoBC,kBAAkB1S,EAAQhB,KAEvD,OAAOwR,EACD,IAAI1P,QAAQ0P,EAAU,CAAEmC,QAAS3S,EAAQ2S,UACzC3S,GAELyS,KAAAA,EAAsBF,GClBnC,IAAIK,ECCAL,ECoBJvQ,eAAe6Q,EAAa3D,EAAU4D,GAClC,IAAI1T,EAAS,KAET8P,GAAAA,EAASlQ,IAAK,CAEdI,EADoB,IAAI+B,IAAI+N,EAASlQ,KAChBI,OAEzB,GAAIA,IAAWhC,KAAKiC,SAASD,OACzB,MAAM,IAAItB,EAAa,6BAA8B,CAAEsB,OAAAA,IAE3D,MAAM2T,EAAiB7D,EAASR,QAE1BsE,EAAe,CACjBL,QAAS,IAAIM,QAAQF,EAAeJ,SACpC1B,OAAQ8B,EAAe9B,OACvBiC,WAAYH,EAAeG,YAGzBC,EAAuBL,EAAWA,EAASE,GAAgBA,EAI3DI,EFjCV,WACQR,QAAkBrQ,IAAlBqQ,EAA6B,CAC7B,MAAMS,EAAe,IAAIC,SAAS,IAC9B,GAAA,SAAUD,EACN,IACA,IAAIC,SAASD,EAAaD,MAC1BR,GAAgB,EAEpB,MAAO3L,GACH2L,GAAgB,EAGxBA,GAAgB,EAEpB,OAAOA,EEmBMW,GACPR,EAAeK,WACTL,EAAeS,OAC3B,OAAO,IAAIF,SAASF,EAAMD,GC5B9B,MAAMM,UAAyBvC,EAkB3BlT,YAAYyP,EAAU,IAClBA,EAAQxJ,UAAYI,EAA2BoJ,EAAQxJ,WACvD9F,MAAMsP,GACN9O,KAAK+U,GAC6B,IAA9BjG,EAAQkG,kBAKZhV,KAAKqP,QAAQrL,KAAK8Q,EAAiBG,wCAS1B5R,QAAChC,EAAS1B,GACb4Q,MAAAA,QAAiB5Q,EAAQiR,WAAWvP,GAC1C,OAAIkP,IAKA5Q,EAAQyB,OAAgC,YAAvBzB,EAAQyB,MAAMO,WAClB3B,KAAKkV,EAAe7T,EAAS1B,SAIjCK,KAAKmV,EAAa9T,EAAS1B,IAE1B0D,QAAChC,EAAS1B,GACxB,IAAI4Q,EACE3N,MAAAA,EAAUjD,EAAQiD,QAAU,GAE9B,IAAA5C,KAAK+U,EA+BL,MAAM,IAAI5V,EAAa,yBAA0B,CAC7CmG,UAAWtF,KAAKsF,UAChBjF,IAAKgB,EAAQhB,MAjCQ,CAMzB,MAAM+U,EAAsBxS,EAAOyS,UAC7BC,EAAqBjU,EAAQgU,UAC7BE,GAAuBD,GAAsBA,IAAuBF,EAC1E7E,QAAiB5Q,EAAQ6P,MAAM,IAAIrN,QAAQd,EAAS,CAChDgU,UAAWC,GAAsBF,KAOjCA,GAAuBG,IACvBvV,KAAKwV,UACmB7V,EAAQgR,SAAStP,EAASkP,EAASR,UA+BnE,OAAOQ,EAESlN,QAAChC,EAAS1B,GAC1BK,KAAKwV,IACCjF,MAAAA,QAAiB5Q,EAAQ6P,MAAMnO,GAIjC,UADoB1B,EAAQgR,SAAStP,EAASkP,EAASR,SAIvD,MAAM,IAAI5Q,EAAa,0BAA2B,CAC9CkB,IAAKgB,EAAQhB,IACbiS,OAAQ/B,EAAS+B,SAGzB,OAAO/B,EA6BXiF,IACQC,IAAAA,EAAqB,KACrBC,EAA6B,EACjC,IAAK,MAAO/U,EAAO4O,KAAWvP,KAAKqP,QAAQsG,UAEnCpG,IAAWuF,EAAiBG,yCAI5B1F,IAAWuF,EAAiBc,oCAC5BH,EAAqB9U,GAErB4O,EAAOsG,iBACPH,KAG2B,IAA/BA,EACA1V,KAAKqP,QAAQrL,KAAK8Q,EAAiBc,mCAE9BF,EAA6B,GAA4B,OAAvBD,GAEvCzV,KAAKqP,QAAQjL,OAAOqR,EAAoB,IAKpDX,EAAiBc,kCAAoC,CACjDvS,gBAAA,OAAsBkN,SAAEA,MACfA,GAAYA,EAAS+B,QAAU,IACzB,KAEJ/B,GAGfuE,EAAiBG,uCAAyC,CACtD5R,gBAAA,OAAsBkN,SAAEA,KACbA,EAASuF,iBAAmB5B,EAAa3D,GAAYA,GC3LpE,MAAMwF,EAWF1W,aAAYiG,UAAEA,EAAF+J,QAAaA,EAAU,GAAvB2F,kBAA2BA,GAAoB,GAAU,IACjEhV,KAAKgW,EAAmB,IAAIjV,IAC5Bf,KAAKiW,EAAoB,IAAIlV,IAC7Bf,KAAKkW,EAA0B,IAAInV,IACnCf,KAAKiP,EAAY,IAAI6F,EAAiB,CAClCxP,UAAWI,EAA2BJ,GACtC+J,QAAS,IACFA,EACH,IAAIsE,EAAuB,CAAEC,mBAAoB5T,QAErDgV,kBAAAA,IAGCmB,KAAAA,QAAUnW,KAAKmW,QAAQvJ,KAAK5M,MAC5BoW,KAAAA,SAAWpW,KAAKoW,SAASxJ,KAAK5M,MAMnC6O,eACA,OAAO7O,KAAKiP,EAYhBlK,SAAS4Q,GACAU,KAAAA,eAAeV,GACf3V,KAAKsW,IACN7X,KAAK0C,iBAAiB,UAAWnB,KAAKmW,SACtC1X,KAAK0C,iBAAiB,WAAYnB,KAAKoW,UAClCE,KAAAA,GAAkC,GAU/CD,eAAeV,GASLY,MAAAA,EAAkB,GACxB,IAAK,MAAMrU,KAASyT,EAAS,CAEJ,iBAAVzT,EACPqU,EAAgBvS,KAAK9B,GAEhBA,QAA4B0B,IAAnB1B,EAAMiR,UACpBoD,EAAgBvS,KAAK9B,EAAM7B,KAEzB,MAAAwR,SAAEA,EAAFxR,IAAYA,GAAQ4S,EAAe/Q,GACnCsU,EAA6B,iBAAVtU,GAAsBA,EAAMiR,SAAW,SAAW,UAC3E,GAAInT,KAAKgW,EAAiBjT,IAAI1C,IAC1BL,KAAKgW,EAAiBhT,IAAI3C,KAASwR,EACnC,MAAM,IAAI1S,EAAa,wCAAyC,CAC5DsX,WAAYzW,KAAKgW,EAAiBhT,IAAI3C,GACtCqW,YAAa7E,IAGjB,GAAiB,iBAAV3P,GAAsBA,EAAMmT,UAAW,CAC9C,GAAIrV,KAAKkW,EAAwBnT,IAAI8O,IACjC7R,KAAKkW,EAAwBlT,IAAI6O,KAAc3P,EAAMmT,UACrD,MAAM,IAAIlW,EAAa,4CAA6C,CAChEkB,IAAAA,IAGH6V,KAAAA,EAAwBpS,IAAI+N,EAAU3P,EAAMmT,WAIrD,GAFArV,KAAKgW,EAAiBlS,IAAIzD,EAAKwR,GAC/B7R,KAAKiW,EAAkBnS,IAAIzD,EAAKmW,GAC5BD,EAAgBvX,OAAS,EAAG,CAC5B,MAAM2X,EACD,qDAAQJ,EAAgB9Q,KAAK,8EAK9BmR,QAAQC,KAAKF,KAkB7BR,QAAQ/U,GAGJ,OAAOgB,EAAUhB,GAAOiC,UACpB,MAAMyT,EAAsB,IAAIxD,EAC3BzE,KAAAA,SAASQ,QAAQrL,KAAK8S,GAGtB,IAAA,MAAOzW,EAAKwR,KAAa7R,KAAKgW,EAAkB,CAC3CX,MAAAA,EAAYrV,KAAKkW,EAAwBlT,IAAI6O,GAC7C2E,EAAYxW,KAAKiW,EAAkBjT,IAAI3C,GACvCgB,EAAU,IAAIc,QAAQ9B,EAAK,CAC7BgV,UAAAA,EACAzH,MAAO4I,EACPO,YAAa,sBAEXjV,QAAQC,IAAI/B,KAAK6O,SAAS4D,UAAU,CACtC7P,OAAQ,CAAEiP,SAAAA,GACVxQ,QAAAA,EACAD,MAAAA,KAGF,MAAAmS,YAAEA,EAAFC,eAAeA,GAAmBsD,EAIjC,MAAA,CAAEvD,YAAAA,EAAaC,eAAAA,MAa9B4C,SAAShV,GAGL,OAAOgB,EAAUhB,GAAOiC,UACpB,MAAMuK,QAAcnP,KAAKoP,OAAOtB,KAAKvM,KAAK6O,SAASvJ,WAC7C0R,QAAgCpJ,EAAMjK,OACtCsT,EAAoB,IAAIlR,IAAI/F,KAAKgW,EAAiBkB,UAClDC,EAAc,GACpB,IAAK,MAAM9V,KAAW2V,EACbC,EAAkBlU,IAAI1B,EAAQhB,aACzBuN,EAAM1B,OAAO7K,GACnB8V,EAAYnT,KAAK3C,EAAQhB,MAM1B,MAAA,CAAE8W,YAAAA,MASjBC,qBACI,OAAOpX,KAAKgW,EAQhBqB,gBACI,MAAO,IAAIrX,KAAKgW,EAAiBrS,QAWrCoQ,kBAAkB1T,GACR6S,MAAAA,EAAY,IAAI1Q,IAAInC,EAAKK,SAASF,MACjC,OAAAR,KAAKgW,EAAiBhT,IAAIkQ,EAAU1S,MAO/C8W,wBAAwBzF,GACpB,OAAO7R,KAAKkW,EAAwBlT,IAAI6O,GAoBtC0F,oBAAclW,GACVhB,MAAAA,EAAMgB,aAAmBc,QAAUd,EAAQhB,IAAMgB,EACjDwQ,EAAW7R,KAAK+T,kBAAkB1T,GACxC,GAAIwR,EAAU,CAEV,aADoBpT,KAAKoP,OAAOtB,KAAKvM,KAAK6O,SAASvJ,YACtCxF,MAAM+R,IAY3B2F,wBAAwBnX,GACpB,MAAMwR,EAAW7R,KAAK+T,kBAAkB1T,GACpC,IAACwR,EACD,MAAM,IAAI1S,EAAa,oBAAqB,CAAEkB,IAAAA,IAElD,OAAQyO,IACJA,EAAQzN,QAAU,IAAIc,QAAQ9B,GAC9ByO,EAAQlM,OAASc,OAAOsL,OAAO,CAAE6C,SAAAA,GAAY/C,EAAQlM,QAC9C5C,KAAK6O,SAASjP,OAAOkP,KHjRjC,MAAM2I,EAAgC,KACpC7D,IACDA,EAAqB,IAAImC,GAEtBnC,GIGX,MAAM8D,UAAsB7X,EAiBxBR,YAAYuU,EAAoB9E,GAe5BtP,OAdc,EAAG6B,QAAAA,MACb,MAAMsW,EAAkB/D,EAAmBwD,qBACtC,IAAA,MAAMQ,KCtBhB,UAAgCvX,GAAKwX,4BAAEA,EAA8B,CAAC,QAAS,YAA1CC,eAAuDA,EAAiB,aAAxEC,UAAsFA,GAAY,EAAlGC,gBAAwGA,GAAqB,IAC/J9E,MAAAA,EAAY,IAAI1Q,IAAInC,EAAKK,SAASF,MACxC0S,EAAU9I,KAAO,SACX8I,EAAU1S,KAChB,MAAMyX,ECHH,SAAmC/E,EAAW2E,EAA8B,IAG/E,IAAK,MAAMjT,IAAa,IAAIsO,EAAU1E,aAAa7K,QAC3CkU,EAA4BjP,MAAMxI,GAAWA,EAAO8X,KAAKtT,MACzDsO,EAAU1E,aAAatC,OAAOtH,GAGtC,OAAOsO,EDLyBiF,CAA0BjF,EAAW2E,GAEjEC,SADEG,EAAwBzX,KAC1BsX,GAAkBG,EAAwBG,SAASC,SAAS,KAAM,CAC5DC,MAAAA,EAAe,IAAI9V,IAAIyV,EAAwBzX,MACrD8X,EAAaF,UAAYN,QACnBQ,EAAa9X,KAEvB,GAAIuX,EAAW,CACLQ,MAAAA,EAAW,IAAI/V,IAAIyV,EAAwBzX,MACjD+X,EAASH,UAAY,cACfG,EAAS/X,KAEnB,GAAIwX,EAAiB,CACXQ,MAAAA,EAAiBR,EAAgB,CAAE3X,IAAK6S,IAC9C,IAAK,MAAMuF,KAAgBD,QACjBC,EAAajY,MDGOkY,CAAsBrX,EAAQhB,IAAKyO,GAAU,CACnE,MAAM+C,EAAW8F,EAAgB3U,IAAI4U,GACrC,GAAI/F,EAAU,CAEH,MAAA,CAAEA,SAAAA,EAAUwD,UADDzB,EAAmB0D,wBAAwBzF,QAS5D+B,EAAmB/E,wBG1BxC,cAAyB0D,EAQRlP,QAAChC,EAAS1B,GAUf4Q,IACAjI,EADAiI,QAAiB5Q,EAAQiR,WAAWvP,GAEpC,IAACkP,EAKG,IACAA,QAAiB5Q,EAAQ8Q,iBAAiBpP,GAE9C,MAAO4B,GACCA,aAAe7D,QACfkJ,EAAQrF,GAyBhB,IAACsN,EACD,MAAM,IAAIpR,EAAa,cAAe,CAAEkB,IAAKgB,EAAQhB,IAAKiI,MAAAA,IAE9D,OAAOiI,uBC9Cf,MAYIlR,YAAYyN,EAAS,IAkBZ4G,KAAAA,yBAA2BrQ,OAASjC,MAAAA,EAAOC,QAAAA,EAASiE,UAAAA,EAAWwL,eAAAA,MAC5D,IAACA,EACD,OAAO,KAEL6H,MAAAA,EAAU3Y,KAAK4Y,EAAqB9H,GAGpC+H,EAAkB7Y,KAAK8Y,EAAoBxT,GACjDM,EAAYiT,EAAgBlL,iBAGtBoL,MAAAA,EAAsBF,EAAgB/K,gBAAgBzM,EAAQhB,KACpE,GAAIe,EACI,IACAA,EAAMgB,UAAU2W,GAEpB,MAAOzQ,IAWX,OAAOqQ,EAAU7H,EAAiB,MAYjCkI,KAAAA,eAAiB3V,OAASiC,UAAAA,EAAWjE,QAAAA,MAetC,MAAMwX,EAAkB7Y,KAAK8Y,EAAoBxT,SAC3CuT,EAAgB/K,gBAAgBzM,EAAQhB,WACxCwY,EAAgBlL,iBA2BrBsL,KAAAA,EAAUnM,EACf9M,KAAKmN,EAAiBL,EAAOM,cAC7BpN,KAAKkZ,EAAoB,IAAInY,IACzB+L,EAAOqM,mBCvInB,SAAoCnP,GAQhClE,EAAoBsT,IAAIpP,GDgIhBqP,EAA2B,IAAMrZ,KAAKsZ,2BAY9CR,EAAoBxT,GAChB,GAAIA,IAAcI,IACd,MAAM,IAAIvG,EAAa,6BAEvB0Z,IAAAA,EAAkB7Y,KAAKkZ,EAAkBlW,IAAIsC,GAKjD,OAJKuT,IACDA,EAAkB,IAAIhM,EAAgBvH,EAAWtF,KAAKiZ,GACtDjZ,KAAKkZ,EAAkBpV,IAAIwB,EAAWuT,IAEnCA,EAQXD,EAAqB9H,GACb,IAAC9Q,KAAKmN,EAEN,OAAO,EAKX,MAAMoM,EAAsBvZ,KAAKwZ,EAAwB1I,GACrDyI,GAAwB,OAAxBA,EAEA,OAAO,EAKX,OAAOA,GADK/L,KAAKC,MACyC,IAAtBzN,KAAKmN,EAW7CqM,EAAwB1I,GAChB,IAACA,EAAekD,QAAQjR,IAAI,QAC5B,OAAO,KAEL0W,MAAAA,EAAa3I,EAAekD,QAAQhR,IAAI,QAExC0W,EADa,IAAIlM,KAAKiM,GACEE,UAG9B,OAAIC,MAAMF,GACC,KAEJA,EAkBiBrW,+BAGnB,IAAA,MAAOiC,EAAWuT,KAAoB7Y,KAAKkZ,QACtCza,KAAKoP,OAAO3B,OAAO5G,SACnBuT,EAAgB3M,SAG1BlM,KAAKkZ,EAAoB,IAAInY,yBElOrC,SAA0B4U,EAAS7G,ICInC,SAAkB6G,GACa8B,IACR1S,SAAS4Q,GDL5B5Q,CAAS4Q,GEAb,SAAkB7G,GACR8E,MAAAA,EAAqB6D,IAE3B1T,EADsB,IAAI2T,EAAc9D,EAAoB9E,IFD5D+K,CAAS/K"} \ No newline at end of file diff --git a/cgi-bin/core/serviceWorker/workbox-ed5f60f5.js.map b/cgi-bin/core/serviceWorker/workbox-ed5f60f5.js.map deleted file mode 100644 index 70492ef..0000000 --- a/cgi-bin/core/serviceWorker/workbox-ed5f60f5.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"workbox-ed5f60f5.js","sources":["../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_version.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/logger.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/models/messages/messageGenerator.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/WorkboxError.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-routing/_version.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-routing/utils/constants.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-routing/utils/normalizeHandler.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-routing/Route.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-routing/RegExpRoute.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-routing/Router.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-routing/utils/getOrCreateDefaultRouter.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-routing/registerRoute.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/cacheNames.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/dontWaitFor.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/models/quotaErrorCallbacks.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/idb/build/esm/wrap-idb-value.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/idb/build/esm/index.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-expiration/_version.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-expiration/models/CacheTimestampsModel.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-expiration/CacheExpiration.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/cacheMatchIgnoreParams.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/Deferred.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-strategies/_version.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-strategies/StrategyHandler.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/timeout.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/getFriendlyURL.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/executeQuotaErrorCallbacks.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-strategies/Strategy.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/waitUntil.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/_version.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/utils/createCacheKey.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/utils/PrecacheInstallReportPlugin.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/utils/PrecacheCacheKeyPlugin.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/_private/canConstructResponseFromBodyStream.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/utils/getOrCreatePrecacheController.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/copyResponse.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/PrecacheStrategy.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/PrecacheController.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/PrecacheRoute.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/utils/generateURLVariations.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/utils/removeIgnoredSearchParams.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-strategies/CacheFirst.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-expiration/ExpirationPlugin.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-core/registerQuotaErrorCallback.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/precacheAndRoute.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/precache.js","../../../../../AppData/Roaming/npm/node_modules/workbox-cli/node_modules/workbox-precaching/addRoute.js"],"sourcesContent":["\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:core:6.4.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst logger = (process.env.NODE_ENV === 'production'\n ? null\n : (() => {\n // Don't overwrite this value if it's already set.\n // See https://github.com/GoogleChrome/workbox/pull/2284#issuecomment-560470923\n if (!('__WB_DISABLE_DEV_LOGS' in self)) {\n self.__WB_DISABLE_DEV_LOGS = false;\n }\n let inGroup = false;\n const methodToColorMap = {\n debug: `#7f8c8d`,\n log: `#2ecc71`,\n warn: `#f39c12`,\n error: `#c0392b`,\n groupCollapsed: `#3498db`,\n groupEnd: null, // No colored prefix on groupEnd\n };\n const print = function (method, args) {\n if (self.__WB_DISABLE_DEV_LOGS) {\n return;\n }\n if (method === 'groupCollapsed') {\n // Safari doesn't print all console.groupCollapsed() arguments:\n // https://bugs.webkit.org/show_bug.cgi?id=182754\n if (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) {\n console[method](...args);\n return;\n }\n }\n const styles = [\n `background: ${methodToColorMap[method]}`,\n `border-radius: 0.5em`,\n `color: white`,\n `font-weight: bold`,\n `padding: 2px 0.5em`,\n ];\n // When in a group, the workbox prefix is not displayed.\n const logPrefix = inGroup ? [] : ['%cworkbox', styles.join(';')];\n console[method](...logPrefix, ...args);\n if (method === 'groupCollapsed') {\n inGroup = true;\n }\n if (method === 'groupEnd') {\n inGroup = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/ban-types\n const api = {};\n const loggerMethods = Object.keys(methodToColorMap);\n for (const key of loggerMethods) {\n const method = key;\n api[method] = (...args) => {\n print(method, args);\n };\n }\n return api;\n })());\nexport { logger };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messages } from './messages.js';\nimport '../../_version.js';\nconst fallback = (code, ...args) => {\n let msg = code;\n if (args.length > 0) {\n msg += ` :: ${JSON.stringify(args)}`;\n }\n return msg;\n};\nconst generatorFunction = (code, details = {}) => {\n const message = messages[code];\n if (!message) {\n throw new Error(`Unable to find message for code '${code}'.`);\n }\n return message(details);\n};\nexport const messageGenerator = process.env.NODE_ENV === 'production' ? fallback : generatorFunction;\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { messageGenerator } from '../models/messages/messageGenerator.js';\nimport '../_version.js';\n/**\n * Workbox errors should be thrown with this class.\n * This allows use to ensure the type easily in tests,\n * helps developers identify errors from workbox\n * easily and allows use to optimise error\n * messages correctly.\n *\n * @private\n */\nclass WorkboxError extends Error {\n /**\n *\n * @param {string} errorCode The error code that\n * identifies this particular error.\n * @param {Object=} details Any relevant arguments\n * that will help developers identify issues should\n * be added as a key on the context object.\n */\n constructor(errorCode, details) {\n const message = messageGenerator(errorCode, details);\n super(message);\n this.name = errorCode;\n this.details = details;\n }\n}\nexport { WorkboxError };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:routing:6.4.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The default HTTP method, 'GET', used when there's no specific method\n * configured for a route.\n *\n * @type {string}\n *\n * @private\n */\nexport const defaultMethod = 'GET';\n/**\n * The list of valid HTTP methods associated with requests that could be routed.\n *\n * @type {Array}\n *\n * @private\n */\nexport const validMethods = [\n 'DELETE',\n 'GET',\n 'HEAD',\n 'PATCH',\n 'POST',\n 'PUT',\n];\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport '../_version.js';\n/**\n * @param {function()|Object} handler Either a function, or an object with a\n * 'handle' method.\n * @return {Object} An object with a handle method.\n *\n * @private\n */\nexport const normalizeHandler = (handler) => {\n if (handler && typeof handler === 'object') {\n if (process.env.NODE_ENV !== 'production') {\n assert.hasMethod(handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return handler;\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(handler, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'handler',\n });\n }\n return { handle: handler };\n }\n};\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { defaultMethod, validMethods } from './utils/constants.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport './_version.js';\n/**\n * A `Route` consists of a pair of callback functions, \"match\" and \"handler\".\n * The \"match\" callback determine if a route should be used to \"handle\" a\n * request by returning a non-falsy value if it can. The \"handler\" callback\n * is called when there is a match and should return a Promise that resolves\n * to a `Response`.\n *\n * @memberof module:workbox-routing\n */\nclass Route {\n /**\n * Constructor for Route class.\n *\n * @param {module:workbox-routing~matchCallback} match\n * A callback function that determines whether the route matches a given\n * `fetch` event by returning a non-falsy value.\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(match, handler, method = defaultMethod) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(match, 'function', {\n moduleName: 'workbox-routing',\n className: 'Route',\n funcName: 'constructor',\n paramName: 'match',\n });\n if (method) {\n assert.isOneOf(method, validMethods, { paramName: 'method' });\n }\n }\n // These values are referenced directly by Router so cannot be\n // altered by minificaton.\n this.handler = normalizeHandler(handler);\n this.match = match;\n this.method = method;\n }\n /**\n *\n * @param {module:workbox-routing-handlerCallback} handler A callback\n * function that returns a Promise resolving to a Response\n */\n setCatchHandler(handler) {\n this.catchHandler = normalizeHandler(handler);\n }\n}\nexport { Route };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { Route } from './Route.js';\nimport './_version.js';\n/**\n * RegExpRoute makes it easy to create a regular expression based\n * [Route]{@link module:workbox-routing.Route}.\n *\n * For same-origin requests the RegExp only needs to match part of the URL. For\n * requests against third-party servers, you must define a RegExp that matches\n * the start of the URL.\n *\n * [See the module docs for info.]{@link https://developers.google.com/web/tools/workbox/modules/workbox-routing}\n *\n * @memberof module:workbox-routing\n * @extends module:workbox-routing.Route\n */\nclass RegExpRoute extends Route {\n /**\n * If the regular expression contains\n * [capture groups]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#grouping-back-references},\n * the captured values will be passed to the\n * [handler's]{@link module:workbox-routing~handlerCallback} `params`\n * argument.\n *\n * @param {RegExp} regExp The regular expression to match against URLs.\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n */\n constructor(regExp, handler, method) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(regExp, RegExp, {\n moduleName: 'workbox-routing',\n className: 'RegExpRoute',\n funcName: 'constructor',\n paramName: 'pattern',\n });\n }\n const match = ({ url }) => {\n const result = regExp.exec(url.href);\n // Return immediately if there's no match.\n if (!result) {\n return;\n }\n // Require that the match start at the first character in the URL string\n // if it's a cross-origin request.\n // See https://github.com/GoogleChrome/workbox/issues/281 for the context\n // behind this behavior.\n if (url.origin !== location.origin && result.index !== 0) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`The regular expression '${regExp.toString()}' only partially matched ` +\n `against the cross-origin URL '${url.toString()}'. RegExpRoute's will only ` +\n `handle cross-origin requests if they match the entire URL.`);\n }\n return;\n }\n // If the route matches, but there aren't any capture groups defined, then\n // this will return [], which is truthy and therefore sufficient to\n // indicate a match.\n // If there are capture groups, then it will return their values.\n return result.slice(1);\n };\n super(match, handler, method);\n }\n}\nexport { RegExpRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { defaultMethod } from './utils/constants.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { normalizeHandler } from './utils/normalizeHandler.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\n/**\n * The Router can be used to process a FetchEvent through one or more\n * [Routes]{@link module:workbox-routing.Route} responding with a Request if\n * a matching route exists.\n *\n * If no route matches a given a request, the Router will use a \"default\"\n * handler if one is defined.\n *\n * Should the matching Route throw an error, the Router will use a \"catch\"\n * handler if one is defined to gracefully deal with issues and respond with a\n * Request.\n *\n * If a request matches multiple routes, the **earliest** registered route will\n * be used to respond to the request.\n *\n * @memberof module:workbox-routing\n */\nclass Router {\n /**\n * Initializes a new Router.\n */\n constructor() {\n this._routes = new Map();\n this._defaultHandlerMap = new Map();\n }\n /**\n * @return {Map>} routes A `Map` of HTTP\n * method name ('GET', etc.) to an array of all the corresponding `Route`\n * instances that are registered.\n */\n get routes() {\n return this._routes;\n }\n /**\n * Adds a fetch event listener to respond to events when a route matches\n * the event's request.\n */\n addFetchListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('fetch', ((event) => {\n const { request } = event;\n const responsePromise = this.handleRequest({ request, event });\n if (responsePromise) {\n event.respondWith(responsePromise);\n }\n }));\n }\n /**\n * Adds a message event listener for URLs to cache from the window.\n * This is useful to cache resources loaded on the page prior to when the\n * service worker started controlling it.\n *\n * The format of the message data sent from the window should be as follows.\n * Where the `urlsToCache` array may consist of URL strings or an array of\n * URL string + `requestInit` object (the same as you'd pass to `fetch()`).\n *\n * ```\n * {\n * type: 'CACHE_URLS',\n * payload: {\n * urlsToCache: [\n * './script1.js',\n * './script2.js',\n * ['./script3.js', {mode: 'no-cors'}],\n * ],\n * },\n * }\n * ```\n */\n addCacheListener() {\n // See https://github.com/Microsoft/TypeScript/issues/28357#issuecomment-436484705\n self.addEventListener('message', ((event) => {\n // event.data is type 'any'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (event.data && event.data.type === 'CACHE_URLS') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const { payload } = event.data;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Caching URLs from the window`, payload.urlsToCache);\n }\n const requestPromises = Promise.all(payload.urlsToCache.map((entry) => {\n if (typeof entry === 'string') {\n entry = [entry];\n }\n const request = new Request(...entry);\n return this.handleRequest({ request, event });\n // TODO(philipwalton): TypeScript errors without this typecast for\n // some reason (probably a bug). The real type here should work but\n // doesn't: `Array | undefined>`.\n })); // TypeScript\n event.waitUntil(requestPromises);\n // If a MessageChannel was used, reply to the message on success.\n if (event.ports && event.ports[0]) {\n void requestPromises.then(() => event.ports[0].postMessage(true));\n }\n }\n }));\n }\n /**\n * Apply the routing rules to a FetchEvent object to get a Response from an\n * appropriate Route's handler.\n *\n * @param {Object} options\n * @param {Request} options.request The request to handle.\n * @param {ExtendableEvent} options.event The event that triggered the\n * request.\n * @return {Promise|undefined} A promise is returned if a\n * registered route can handle the request. If there is no matching\n * route and there's no `defaultHandler`, `undefined` is returned.\n */\n handleRequest({ request, event, }) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'handleRequest',\n paramName: 'options.request',\n });\n }\n const url = new URL(request.url, location.href);\n if (!url.protocol.startsWith('http')) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Workbox Router only supports URLs that start with 'http'.`);\n }\n return;\n }\n const sameOrigin = url.origin === location.origin;\n const { params, route } = this.findMatchingRoute({\n event,\n request,\n sameOrigin,\n url,\n });\n let handler = route && route.handler;\n const debugMessages = [];\n if (process.env.NODE_ENV !== 'production') {\n if (handler) {\n debugMessages.push([`Found a route to handle this request:`, route]);\n if (params) {\n debugMessages.push([\n `Passing the following params to the route's handler:`,\n params,\n ]);\n }\n }\n }\n // If we don't have a handler because there was no matching route, then\n // fall back to defaultHandler if that's defined.\n const method = request.method;\n if (!handler && this._defaultHandlerMap.has(method)) {\n if (process.env.NODE_ENV !== 'production') {\n debugMessages.push(`Failed to find a matching route. Falling ` +\n `back to the default handler for ${method}.`);\n }\n handler = this._defaultHandlerMap.get(method);\n }\n if (!handler) {\n if (process.env.NODE_ENV !== 'production') {\n // No handler so Workbox will do nothing. If logs is set of debug\n // i.e. verbose, we should print out this information.\n logger.debug(`No route found for: ${getFriendlyURL(url)}`);\n }\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // We have a handler, meaning Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Router is responding to: ${getFriendlyURL(url)}`);\n debugMessages.forEach((msg) => {\n if (Array.isArray(msg)) {\n logger.log(...msg);\n }\n else {\n logger.log(msg);\n }\n });\n logger.groupEnd();\n }\n // Wrap in try and catch in case the handle method throws a synchronous\n // error. It should still callback to the catch handler.\n let responsePromise;\n try {\n responsePromise = handler.handle({ url, request, event, params });\n }\n catch (err) {\n responsePromise = Promise.reject(err);\n }\n // Get route's catch handler, if it exists\n const catchHandler = route && route.catchHandler;\n if (responsePromise instanceof Promise &&\n (this._catchHandler || catchHandler)) {\n responsePromise = responsePromise.catch(async (err) => {\n // If there's a route catch handler, process that first\n if (catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to route's Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n try {\n return await catchHandler.handle({ url, request, event, params });\n }\n catch (catchErr) {\n if (catchErr instanceof Error) {\n err = catchErr;\n }\n }\n }\n if (this._catchHandler) {\n if (process.env.NODE_ENV !== 'production') {\n // Still include URL here as it will be async from the console group\n // and may not make sense without the URL\n logger.groupCollapsed(`Error thrown when responding to: ` +\n ` ${getFriendlyURL(url)}. Falling back to global Catch Handler.`);\n logger.error(`Error thrown by:`, route);\n logger.error(err);\n logger.groupEnd();\n }\n return this._catchHandler.handle({ url, request, event });\n }\n throw err;\n });\n }\n return responsePromise;\n }\n /**\n * Checks a request and URL (and optionally an event) against the list of\n * registered routes, and if there's a match, returns the corresponding\n * route along with any params generated by the match.\n *\n * @param {Object} options\n * @param {URL} options.url\n * @param {boolean} options.sameOrigin The result of comparing `url.origin`\n * against the current origin.\n * @param {Request} options.request The request to match.\n * @param {Event} options.event The corresponding event.\n * @return {Object} An object with `route` and `params` properties.\n * They are populated if a matching route was found or `undefined`\n * otherwise.\n */\n findMatchingRoute({ url, sameOrigin, request, event, }) {\n const routes = this._routes.get(request.method) || [];\n for (const route of routes) {\n let params;\n // route.match returns type any, not possible to change right now.\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n const matchResult = route.match({ url, sameOrigin, request, event });\n if (matchResult) {\n if (process.env.NODE_ENV !== 'production') {\n // Warn developers that using an async matchCallback is almost always\n // not the right thing to do.\n if (matchResult instanceof Promise) {\n logger.warn(`While routing ${getFriendlyURL(url)}, an async ` +\n `matchCallback function was used. Please convert the ` +\n `following route to use a synchronous matchCallback function:`, route);\n }\n }\n // See https://github.com/GoogleChrome/workbox/issues/2079\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n params = matchResult;\n if (Array.isArray(params) && params.length === 0) {\n // Instead of passing an empty array in as params, use undefined.\n params = undefined;\n }\n else if (matchResult.constructor === Object && // eslint-disable-line\n Object.keys(matchResult).length === 0) {\n // Instead of passing an empty object in as params, use undefined.\n params = undefined;\n }\n else if (typeof matchResult === 'boolean') {\n // For the boolean value true (rather than just something truth-y),\n // don't set params.\n // See https://github.com/GoogleChrome/workbox/pull/2134#issuecomment-513924353\n params = undefined;\n }\n // Return early if have a match.\n return { route, params };\n }\n }\n // If no match was found above, return and empty object.\n return {};\n }\n /**\n * Define a default `handler` that's called when no routes explicitly\n * match the incoming request.\n *\n * Each HTTP method ('GET', 'POST', etc.) gets its own default handler.\n *\n * Without a default handler, unmatched requests will go against the\n * network as if there were no service worker present.\n *\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n * @param {string} [method='GET'] The HTTP method to associate with this\n * default handler. Each method has its own default.\n */\n setDefaultHandler(handler, method = defaultMethod) {\n this._defaultHandlerMap.set(method, normalizeHandler(handler));\n }\n /**\n * If a Route throws an error while handling a request, this `handler`\n * will be called and given a chance to provide a response.\n *\n * @param {module:workbox-routing~handlerCallback} handler A callback\n * function that returns a Promise resulting in a Response.\n */\n setCatchHandler(handler) {\n this._catchHandler = normalizeHandler(handler);\n }\n /**\n * Registers a route with the router.\n *\n * @param {module:workbox-routing.Route} route The route to register.\n */\n registerRoute(route) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(route, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route, 'match', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.isType(route.handler, 'object', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route',\n });\n assert.hasMethod(route.handler, 'handle', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.handler',\n });\n assert.isType(route.method, 'string', {\n moduleName: 'workbox-routing',\n className: 'Router',\n funcName: 'registerRoute',\n paramName: 'route.method',\n });\n }\n if (!this._routes.has(route.method)) {\n this._routes.set(route.method, []);\n }\n // Give precedence to all of the earlier routes by adding this additional\n // route to the end of the array.\n this._routes.get(route.method).push(route);\n }\n /**\n * Unregisters a route with the router.\n *\n * @param {module:workbox-routing.Route} route The route to unregister.\n */\n unregisterRoute(route) {\n if (!this._routes.has(route.method)) {\n throw new WorkboxError('unregister-route-but-not-found-with-method', {\n method: route.method,\n });\n }\n const routeIndex = this._routes.get(route.method).indexOf(route);\n if (routeIndex > -1) {\n this._routes.get(route.method).splice(routeIndex, 1);\n }\n else {\n throw new WorkboxError('unregister-route-route-not-registered');\n }\n }\n}\nexport { Router };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { Router } from '../Router.js';\nimport '../_version.js';\nlet defaultRouter;\n/**\n * Creates a new, singleton Router instance if one does not exist. If one\n * does already exist, that instance is returned.\n *\n * @private\n * @return {Router}\n */\nexport const getOrCreateDefaultRouter = () => {\n if (!defaultRouter) {\n defaultRouter = new Router();\n // The helpers that use the default Router assume these listeners exist.\n defaultRouter.addFetchListener();\n defaultRouter.addCacheListener();\n }\n return defaultRouter;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Route } from './Route.js';\nimport { RegExpRoute } from './RegExpRoute.js';\nimport { getOrCreateDefaultRouter } from './utils/getOrCreateDefaultRouter.js';\nimport './_version.js';\n/**\n * Easily register a RegExp, string, or function with a caching\n * strategy to a singleton Router instance.\n *\n * This method will generate a Route for you if needed and\n * call [registerRoute()]{@link module:workbox-routing.Router#registerRoute}.\n *\n * @param {RegExp|string|module:workbox-routing.Route~matchCallback|module:workbox-routing.Route} capture\n * If the capture param is a `Route`, all other arguments will be ignored.\n * @param {module:workbox-routing~handlerCallback} [handler] A callback\n * function that returns a Promise resulting in a Response. This parameter\n * is required if `capture` is not a `Route` object.\n * @param {string} [method='GET'] The HTTP method to match the Route\n * against.\n * @return {module:workbox-routing.Route} The generated `Route`(Useful for\n * unregistering).\n *\n * @memberof module:workbox-routing\n */\nfunction registerRoute(capture, handler, method) {\n let route;\n if (typeof capture === 'string') {\n const captureUrl = new URL(capture, location.href);\n if (process.env.NODE_ENV !== 'production') {\n if (!(capture.startsWith('/') || capture.startsWith('http'))) {\n throw new WorkboxError('invalid-string', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n // We want to check if Express-style wildcards are in the pathname only.\n // TODO: Remove this log message in v4.\n const valueToCheck = capture.startsWith('http')\n ? captureUrl.pathname\n : capture;\n // See https://github.com/pillarjs/path-to-regexp#parameters\n const wildcards = '[*:?+]';\n if (new RegExp(`${wildcards}`).exec(valueToCheck)) {\n logger.debug(`The '$capture' parameter contains an Express-style wildcard ` +\n `character (${wildcards}). Strings are now always interpreted as ` +\n `exact matches; use a RegExp for partial or wildcard matches.`);\n }\n }\n const matchCallback = ({ url }) => {\n if (process.env.NODE_ENV !== 'production') {\n if (url.pathname === captureUrl.pathname &&\n url.origin !== captureUrl.origin) {\n logger.debug(`${capture} only partially matches the cross-origin URL ` +\n `${url.toString()}. This route will only handle cross-origin requests ` +\n `if they match the entire URL.`);\n }\n }\n return url.href === captureUrl.href;\n };\n // If `capture` is a string then `handler` and `method` must be present.\n route = new Route(matchCallback, handler, method);\n }\n else if (capture instanceof RegExp) {\n // If `capture` is a `RegExp` then `handler` and `method` must be present.\n route = new RegExpRoute(capture, handler, method);\n }\n else if (typeof capture === 'function') {\n // If `capture` is a function then `handler` and `method` must be present.\n route = new Route(capture, handler, method);\n }\n else if (capture instanceof Route) {\n route = capture;\n }\n else {\n throw new WorkboxError('unsupported-route-type', {\n moduleName: 'workbox-routing',\n funcName: 'registerRoute',\n paramName: 'capture',\n });\n }\n const defaultRouter = getOrCreateDefaultRouter();\n defaultRouter.registerRoute(route);\n return route;\n}\nexport { registerRoute };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst _cacheNameDetails = {\n googleAnalytics: 'googleAnalytics',\n precache: 'precache-v2',\n prefix: 'workbox',\n runtime: 'runtime',\n suffix: typeof registration !== 'undefined' ? registration.scope : '',\n};\nconst _createCacheName = (cacheName) => {\n return [_cacheNameDetails.prefix, cacheName, _cacheNameDetails.suffix]\n .filter((value) => value && value.length > 0)\n .join('-');\n};\nconst eachCacheNameDetail = (fn) => {\n for (const key of Object.keys(_cacheNameDetails)) {\n fn(key);\n }\n};\nexport const cacheNames = {\n updateDetails: (details) => {\n eachCacheNameDetail((key) => {\n if (typeof details[key] === 'string') {\n _cacheNameDetails[key] = details[key];\n }\n });\n },\n getGoogleAnalyticsName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.googleAnalytics);\n },\n getPrecacheName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.precache);\n },\n getPrefix: () => {\n return _cacheNameDetails.prefix;\n },\n getRuntimeName: (userCacheName) => {\n return userCacheName || _createCacheName(_cacheNameDetails.runtime);\n },\n getSuffix: () => {\n return _cacheNameDetails.suffix;\n },\n};\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A helper function that prevents a promise from being flagged as unused.\n *\n * @private\n **/\nexport function dontWaitFor(promise) {\n // Effective no-op.\n void promise.then(() => { });\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n// Callbacks to be executed whenever there's a quota error.\n// Can't change Function type right now.\n// eslint-disable-next-line @typescript-eslint/ban-types\nconst quotaErrorCallbacks = new Set();\nexport { quotaErrorCallbacks };\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:expiration:6.4.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { openDB, deleteDB } from 'idb';\nimport '../_version.js';\nconst DB_NAME = 'workbox-expiration';\nconst CACHE_OBJECT_STORE = 'cache-entries';\nconst normalizeURL = (unNormalizedUrl) => {\n const url = new URL(unNormalizedUrl, location.href);\n url.hash = '';\n return url.href;\n};\n/**\n * Returns the timestamp model.\n *\n * @private\n */\nclass CacheTimestampsModel {\n /**\n *\n * @param {string} cacheName\n *\n * @private\n */\n constructor(cacheName) {\n this._db = null;\n this._cacheName = cacheName;\n }\n /**\n * Performs an upgrade of indexedDB.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDb(db) {\n // TODO(philipwalton): EdgeHTML doesn't support arrays as a keyPath, so we\n // have to use the `id` keyPath here and create our own values (a\n // concatenation of `url + cacheName`) instead of simply using\n // `keyPath: ['url', 'cacheName']`, which is supported in other browsers.\n const objStore = db.createObjectStore(CACHE_OBJECT_STORE, { keyPath: 'id' });\n // TODO(philipwalton): once we don't have to support EdgeHTML, we can\n // create a single index with the keyPath `['cacheName', 'timestamp']`\n // instead of doing both these indexes.\n objStore.createIndex('cacheName', 'cacheName', { unique: false });\n objStore.createIndex('timestamp', 'timestamp', { unique: false });\n }\n /**\n * Performs an upgrade of indexedDB and deletes deprecated DBs.\n *\n * @param {IDBPDatabase} db\n *\n * @private\n */\n _upgradeDbAndDeleteOldDbs(db) {\n this._upgradeDb(db);\n if (this._cacheName) {\n void deleteDB(this._cacheName);\n }\n }\n /**\n * @param {string} url\n * @param {number} timestamp\n *\n * @private\n */\n async setTimestamp(url, timestamp) {\n url = normalizeURL(url);\n const entry = {\n url,\n timestamp,\n cacheName: this._cacheName,\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n id: this._getId(url),\n };\n const db = await this.getDb();\n const tx = db.transaction(CACHE_OBJECT_STORE, 'readwrite', {\n durability: 'relaxed',\n });\n await tx.store.put(entry);\n await tx.done;\n }\n /**\n * Returns the timestamp stored for a given URL.\n *\n * @param {string} url\n * @return {number | undefined}\n *\n * @private\n */\n async getTimestamp(url) {\n const db = await this.getDb();\n const entry = await db.get(CACHE_OBJECT_STORE, this._getId(url));\n return entry === null || entry === void 0 ? void 0 : entry.timestamp;\n }\n /**\n * Iterates through all the entries in the object store (from newest to\n * oldest) and removes entries once either `maxCount` is reached or the\n * entry's timestamp is less than `minTimestamp`.\n *\n * @param {number} minTimestamp\n * @param {number} maxCount\n * @return {Array}\n *\n * @private\n */\n async expireEntries(minTimestamp, maxCount) {\n const db = await this.getDb();\n let cursor = await db\n .transaction(CACHE_OBJECT_STORE)\n .store.index('timestamp')\n .openCursor(null, 'prev');\n const entriesToDelete = [];\n let entriesNotDeletedCount = 0;\n while (cursor) {\n const result = cursor.value;\n // TODO(philipwalton): once we can use a multi-key index, we\n // won't have to check `cacheName` here.\n if (result.cacheName === this._cacheName) {\n // Delete an entry if it's older than the max age or\n // if we already have the max number allowed.\n if ((minTimestamp && result.timestamp < minTimestamp) ||\n (maxCount && entriesNotDeletedCount >= maxCount)) {\n // TODO(philipwalton): we should be able to delete the\n // entry right here, but doing so causes an iteration\n // bug in Safari stable (fixed in TP). Instead we can\n // store the keys of the entries to delete, and then\n // delete the separate transactions.\n // https://github.com/GoogleChrome/workbox/issues/1978\n // cursor.delete();\n // We only need to return the URL, not the whole entry.\n entriesToDelete.push(cursor.value);\n }\n else {\n entriesNotDeletedCount++;\n }\n }\n cursor = await cursor.continue();\n }\n // TODO(philipwalton): once the Safari bug in the following issue is fixed,\n // we should be able to remove this loop and do the entry deletion in the\n // cursor loop above:\n // https://github.com/GoogleChrome/workbox/issues/1978\n const urlsDeleted = [];\n for (const entry of entriesToDelete) {\n await db.delete(CACHE_OBJECT_STORE, entry.id);\n urlsDeleted.push(entry.url);\n }\n return urlsDeleted;\n }\n /**\n * Takes a URL and returns an ID that will be unique in the object store.\n *\n * @param {string} url\n * @return {string}\n *\n * @private\n */\n _getId(url) {\n // Creating an ID from the URL and cache name won't be necessary once\n // Edge switches to Chromium and all browsers we support work with\n // array keyPaths.\n return this._cacheName + '|' + normalizeURL(url);\n }\n /**\n * Returns an open connection to the database.\n *\n * @private\n */\n async getDb() {\n if (!this._db) {\n this._db = await openDB(DB_NAME, 1, {\n upgrade: this._upgradeDbAndDeleteOldDbs.bind(this),\n });\n }\n return this._db;\n }\n}\nexport { CacheTimestampsModel };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheTimestampsModel } from './models/CacheTimestampsModel.js';\nimport './_version.js';\n/**\n * The `CacheExpiration` class allows you define an expiration and / or\n * limit on the number of responses stored in a\n * [`Cache`](https://developer.mozilla.org/en-US/docs/Web/API/Cache).\n *\n * @memberof module:workbox-expiration\n */\nclass CacheExpiration {\n /**\n * To construct a new CacheExpiration instance you must provide at least\n * one of the `config` properties.\n *\n * @param {string} cacheName Name of the cache to apply restrictions to.\n * @param {Object} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n */\n constructor(cacheName, config = {}) {\n this._isRunning = false;\n this._rerunRequested = false;\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'cacheName',\n });\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._maxEntries = config.maxEntries;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._matchOptions = config.matchOptions;\n this._cacheName = cacheName;\n this._timestampModel = new CacheTimestampsModel(cacheName);\n }\n /**\n * Expires entries for the given cache and given criteria.\n */\n async expireEntries() {\n if (this._isRunning) {\n this._rerunRequested = true;\n return;\n }\n this._isRunning = true;\n const minTimestamp = this._maxAgeSeconds\n ? Date.now() - this._maxAgeSeconds * 1000\n : 0;\n const urlsExpired = await this._timestampModel.expireEntries(minTimestamp, this._maxEntries);\n // Delete URLs from the cache\n const cache = await self.caches.open(this._cacheName);\n for (const url of urlsExpired) {\n await cache.delete(url, this._matchOptions);\n }\n if (process.env.NODE_ENV !== 'production') {\n if (urlsExpired.length > 0) {\n logger.groupCollapsed(`Expired ${urlsExpired.length} ` +\n `${urlsExpired.length === 1 ? 'entry' : 'entries'} and removed ` +\n `${urlsExpired.length === 1 ? 'it' : 'them'} from the ` +\n `'${this._cacheName}' cache.`);\n logger.log(`Expired the following ${urlsExpired.length === 1 ? 'URL' : 'URLs'}:`);\n urlsExpired.forEach((url) => logger.log(` ${url}`));\n logger.groupEnd();\n }\n else {\n logger.debug(`Cache expiration ran and found no entries to remove.`);\n }\n }\n this._isRunning = false;\n if (this._rerunRequested) {\n this._rerunRequested = false;\n dontWaitFor(this.expireEntries());\n }\n }\n /**\n * Update the timestamp for the given URL. This ensures the when\n * removing entries based on maximum entries, most recently used\n * is accurate or when expiring, the timestamp is up-to-date.\n *\n * @param {string} url\n */\n async updateTimestamp(url) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(url, 'string', {\n moduleName: 'workbox-expiration',\n className: 'CacheExpiration',\n funcName: 'updateTimestamp',\n paramName: 'url',\n });\n }\n await this._timestampModel.setTimestamp(url, Date.now());\n }\n /**\n * Can be used to check if a URL has expired or not before it's used.\n *\n * This requires a look up from IndexedDB, so can be slow.\n *\n * Note: This method will not remove the cached entry, call\n * `expireEntries()` to remove indexedDB and Cache entries.\n *\n * @param {string} url\n * @return {boolean}\n */\n async isURLExpired(url) {\n if (!this._maxAgeSeconds) {\n if (process.env.NODE_ENV !== 'production') {\n throw new WorkboxError(`expired-test-without-max-age`, {\n methodName: 'isURLExpired',\n paramName: 'maxAgeSeconds',\n });\n }\n return false;\n }\n else {\n const timestamp = await this._timestampModel.getTimestamp(url);\n const expireOlderThan = Date.now() - this._maxAgeSeconds * 1000;\n return timestamp !== undefined ? timestamp < expireOlderThan : true;\n }\n }\n /**\n * Removes the IndexedDB object store used to keep track of cache expiration\n * metadata.\n */\n async delete() {\n // Make sure we don't attempt another rerun if we're called in the middle of\n // a cache expiration.\n this._rerunRequested = false;\n await this._timestampModel.expireEntries(Infinity); // Expires all.\n }\n}\nexport { CacheExpiration };\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nfunction stripParams(fullURL, ignoreParams) {\n const strippedURL = new URL(fullURL);\n for (const param of ignoreParams) {\n strippedURL.searchParams.delete(param);\n }\n return strippedURL.href;\n}\n/**\n * Matches an item in the cache, ignoring specific URL params. This is similar\n * to the `ignoreSearch` option, but it allows you to ignore just specific\n * params (while continuing to match on the others).\n *\n * @private\n * @param {Cache} cache\n * @param {Request} request\n * @param {Object} matchOptions\n * @param {Array} ignoreParams\n * @return {Promise}\n */\nasync function cacheMatchIgnoreParams(cache, request, ignoreParams, matchOptions) {\n const strippedRequestURL = stripParams(request.url, ignoreParams);\n // If the request doesn't include any ignored params, match as normal.\n if (request.url === strippedRequestURL) {\n return cache.match(request, matchOptions);\n }\n // Otherwise, match by comparing keys\n const keysOptions = Object.assign(Object.assign({}, matchOptions), { ignoreSearch: true });\n const cacheKeys = await cache.keys(request, keysOptions);\n for (const cacheKey of cacheKeys) {\n const strippedCacheKeyURL = stripParams(cacheKey.url, ignoreParams);\n if (strippedRequestURL === strippedCacheKeyURL) {\n return cache.match(cacheKey, matchOptions);\n }\n }\n return;\n}\nexport { cacheMatchIgnoreParams };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * The Deferred class composes Promises in a way that allows for them to be\n * resolved or rejected from outside the constructor. In most cases promises\n * should be used directly, but Deferreds can be necessary when the logic to\n * resolve a promise must be separate.\n *\n * @private\n */\nclass Deferred {\n /**\n * Creates a promise and exposes its resolve and reject functions as methods.\n */\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n}\nexport { Deferred };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:strategies:6.4.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheMatchIgnoreParams } from 'workbox-core/_private/cacheMatchIgnoreParams.js';\nimport { Deferred } from 'workbox-core/_private/Deferred.js';\nimport { executeQuotaErrorCallbacks } from 'workbox-core/_private/executeQuotaErrorCallbacks.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { timeout } from 'workbox-core/_private/timeout.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport './_version.js';\nfunction toRequest(input) {\n return typeof input === 'string' ? new Request(input) : input;\n}\n/**\n * A class created every time a Strategy instance instance calls\n * [handle()]{@link module:workbox-strategies.Strategy~handle} or\n * [handleAll()]{@link module:workbox-strategies.Strategy~handleAll} that wraps all fetch and\n * cache actions around plugin callbacks and keeps track of when the strategy\n * is \"done\" (i.e. all added `event.waitUntil()` promises have resolved).\n *\n * @memberof module:workbox-strategies\n */\nclass StrategyHandler {\n /**\n * Creates a new instance associated with the passed strategy and event\n * that's handling the request.\n *\n * The constructor also initializes the state that will be passed to each of\n * the plugins handling this request.\n *\n * @param {module:workbox-strategies.Strategy} strategy\n * @param {Object} options\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * [match callback]{@link module:workbox-routing~matchCallback},\n * (if applicable).\n */\n constructor(strategy, options) {\n this._cacheKeys = {};\n /**\n * The request the strategy is performing (passed to the strategy's\n * `handle()` or `handleAll()` method).\n * @name request\n * @instance\n * @type {Request}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n /**\n * The event associated with this request.\n * @name event\n * @instance\n * @type {ExtendableEvent}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n /**\n * A `URL` instance of `request.url` (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `url` param will be present if the strategy was invoked\n * from a workbox `Route` object.\n * @name url\n * @instance\n * @type {URL|undefined}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n /**\n * A `param` value (if passed to the strategy's\n * `handle()` or `handleAll()` method).\n * Note: the `param` param will be present if the strategy was invoked\n * from a workbox `Route` object and the\n * [match callback]{@link module:workbox-routing~matchCallback} returned\n * a truthy value (it will be that value).\n * @name params\n * @instance\n * @type {*|undefined}\n * @memberof module:workbox-strategies.StrategyHandler\n */\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(options.event, ExtendableEvent, {\n moduleName: 'workbox-strategies',\n className: 'StrategyHandler',\n funcName: 'constructor',\n paramName: 'options.event',\n });\n }\n Object.assign(this, options);\n this.event = options.event;\n this._strategy = strategy;\n this._handlerDeferred = new Deferred();\n this._extendLifetimePromises = [];\n // Copy the plugins list (since it's mutable on the strategy),\n // so any mutations don't affect this handler instance.\n this._plugins = [...strategy.plugins];\n this._pluginStateMap = new Map();\n for (const plugin of this._plugins) {\n this._pluginStateMap.set(plugin, {});\n }\n this.event.waitUntil(this._handlerDeferred.promise);\n }\n /**\n * Fetches a given request (and invokes any applicable plugin callback\n * methods) using the `fetchOptions` (for non-navigation requests) and\n * `plugins` defined on the `Strategy` object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - `requestWillFetch()`\n * - `fetchDidSucceed()`\n * - `fetchDidFail()`\n *\n * @param {Request|string} input The URL or request to fetch.\n * @return {Promise}\n */\n async fetch(input) {\n const { event } = this;\n let request = toRequest(input);\n if (request.mode === 'navigate' &&\n event instanceof FetchEvent &&\n event.preloadResponse) {\n const possiblePreloadResponse = (await event.preloadResponse);\n if (possiblePreloadResponse) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Using a preloaded navigation response for ` +\n `'${getFriendlyURL(request.url)}'`);\n }\n return possiblePreloadResponse;\n }\n }\n // If there is a fetchDidFail plugin, we need to save a clone of the\n // original request before it's either modified by a requestWillFetch\n // plugin or before the original request's body is consumed via fetch().\n const originalRequest = this.hasCallback('fetchDidFail')\n ? request.clone()\n : null;\n try {\n for (const cb of this.iterateCallbacks('requestWillFetch')) {\n request = await cb({ request: request.clone(), event });\n }\n }\n catch (err) {\n if (err instanceof Error) {\n throw new WorkboxError('plugin-error-request-will-fetch', {\n thrownErrorMessage: err.message,\n });\n }\n }\n // The request can be altered by plugins with `requestWillFetch` making\n // the original request (most likely from a `fetch` event) different\n // from the Request we make. Pass both to `fetchDidFail` to aid debugging.\n const pluginFilteredRequest = request.clone();\n try {\n let fetchResponse;\n // See https://github.com/GoogleChrome/workbox/issues/1796\n fetchResponse = await fetch(request, request.mode === 'navigate' ? undefined : this._strategy.fetchOptions);\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Network request for ` +\n `'${getFriendlyURL(request.url)}' returned a response with ` +\n `status '${fetchResponse.status}'.`);\n }\n for (const callback of this.iterateCallbacks('fetchDidSucceed')) {\n fetchResponse = await callback({\n event,\n request: pluginFilteredRequest,\n response: fetchResponse,\n });\n }\n return fetchResponse;\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`Network request for ` +\n `'${getFriendlyURL(request.url)}' threw an error.`, error);\n }\n // `originalRequest` will only exist if a `fetchDidFail` callback\n // is being used (see above).\n if (originalRequest) {\n await this.runCallbacks('fetchDidFail', {\n error: error,\n event,\n originalRequest: originalRequest.clone(),\n request: pluginFilteredRequest.clone(),\n });\n }\n throw error;\n }\n }\n /**\n * Calls `this.fetch()` and (in the background) runs `this.cachePut()` on\n * the response generated by `this.fetch()`.\n *\n * The call to `this.cachePut()` automatically invokes `this.waitUntil()`,\n * so you do not have to manually call `waitUntil()` on the event.\n *\n * @param {Request|string} input The request or URL to fetch and cache.\n * @return {Promise}\n */\n async fetchAndCachePut(input) {\n const response = await this.fetch(input);\n const responseClone = response.clone();\n void this.waitUntil(this.cachePut(input, responseClone));\n return response;\n }\n /**\n * Matches a request from the cache (and invokes any applicable plugin\n * callback methods) using the `cacheName`, `matchOptions`, and `plugins`\n * defined on the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cachedResponseWillByUsed()\n *\n * @param {Request|string} key The Request or URL to use as the cache key.\n * @return {Promise} A matching response, if found.\n */\n async cacheMatch(key) {\n const request = toRequest(key);\n let cachedResponse;\n const { cacheName, matchOptions } = this._strategy;\n const effectiveRequest = await this.getCacheKey(request, 'read');\n const multiMatchOptions = Object.assign(Object.assign({}, matchOptions), { cacheName });\n cachedResponse = await caches.match(effectiveRequest, multiMatchOptions);\n if (process.env.NODE_ENV !== 'production') {\n if (cachedResponse) {\n logger.debug(`Found a cached response in '${cacheName}'.`);\n }\n else {\n logger.debug(`No cached response found in '${cacheName}'.`);\n }\n }\n for (const callback of this.iterateCallbacks('cachedResponseWillBeUsed')) {\n cachedResponse =\n (await callback({\n cacheName,\n matchOptions,\n cachedResponse,\n request: effectiveRequest,\n event: this.event,\n })) || undefined;\n }\n return cachedResponse;\n }\n /**\n * Puts a request/response pair in the cache (and invokes any applicable\n * plugin callback methods) using the `cacheName` and `plugins` defined on\n * the strategy object.\n *\n * The following plugin lifecycle methods are invoked when using this method:\n * - cacheKeyWillByUsed()\n * - cacheWillUpdate()\n * - cacheDidUpdate()\n *\n * @param {Request|string} key The request or URL to use as the cache key.\n * @param {Response} response The response to cache.\n * @return {Promise} `false` if a cacheWillUpdate caused the response\n * not be cached, and `true` otherwise.\n */\n async cachePut(key, response) {\n const request = toRequest(key);\n // Run in the next task to avoid blocking other cache reads.\n // https://github.com/w3c/ServiceWorker/issues/1397\n await timeout(0);\n const effectiveRequest = await this.getCacheKey(request, 'write');\n if (process.env.NODE_ENV !== 'production') {\n if (effectiveRequest.method && effectiveRequest.method !== 'GET') {\n throw new WorkboxError('attempt-to-cache-non-get-request', {\n url: getFriendlyURL(effectiveRequest.url),\n method: effectiveRequest.method,\n });\n }\n // See https://github.com/GoogleChrome/workbox/issues/2818\n const vary = response.headers.get('Vary');\n if (vary) {\n logger.debug(`The response for ${getFriendlyURL(effectiveRequest.url)} ` +\n `has a 'Vary: ${vary}' header. ` +\n `Consider setting the {ignoreVary: true} option on your strategy ` +\n `to ensure cache matching and deletion works as expected.`);\n }\n }\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logger.error(`Cannot cache non-existent response for ` +\n `'${getFriendlyURL(effectiveRequest.url)}'.`);\n }\n throw new WorkboxError('cache-put-with-no-response', {\n url: getFriendlyURL(effectiveRequest.url),\n });\n }\n const responseToCache = await this._ensureResponseSafeToCache(response);\n if (!responseToCache) {\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Response '${getFriendlyURL(effectiveRequest.url)}' ` +\n `will not be cached.`, responseToCache);\n }\n return false;\n }\n const { cacheName, matchOptions } = this._strategy;\n const cache = await self.caches.open(cacheName);\n const hasCacheUpdateCallback = this.hasCallback('cacheDidUpdate');\n const oldResponse = hasCacheUpdateCallback\n ? await cacheMatchIgnoreParams(\n // TODO(philipwalton): the `__WB_REVISION__` param is a precaching\n // feature. Consider into ways to only add this behavior if using\n // precaching.\n cache, effectiveRequest.clone(), ['__WB_REVISION__'], matchOptions)\n : null;\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Updating the '${cacheName}' cache with a new Response ` +\n `for ${getFriendlyURL(effectiveRequest.url)}.`);\n }\n try {\n await cache.put(effectiveRequest, hasCacheUpdateCallback ? responseToCache.clone() : responseToCache);\n }\n catch (error) {\n if (error instanceof Error) {\n // See https://developer.mozilla.org/en-US/docs/Web/API/DOMException#exception-QuotaExceededError\n if (error.name === 'QuotaExceededError') {\n await executeQuotaErrorCallbacks();\n }\n throw error;\n }\n }\n for (const callback of this.iterateCallbacks('cacheDidUpdate')) {\n await callback({\n cacheName,\n oldResponse,\n newResponse: responseToCache.clone(),\n request: effectiveRequest,\n event: this.event,\n });\n }\n return true;\n }\n /**\n * Checks the list of plugins for the `cacheKeyWillBeUsed` callback, and\n * executes any of those callbacks found in sequence. The final `Request`\n * object returned by the last plugin is treated as the cache key for cache\n * reads and/or writes. If no `cacheKeyWillBeUsed` plugin callbacks have\n * been registered, the passed request is returned unmodified\n *\n * @param {Request} request\n * @param {string} mode\n * @return {Promise}\n */\n async getCacheKey(request, mode) {\n const key = `${request.url} | ${mode}`;\n if (!this._cacheKeys[key]) {\n let effectiveRequest = request;\n for (const callback of this.iterateCallbacks('cacheKeyWillBeUsed')) {\n effectiveRequest = toRequest(await callback({\n mode,\n request: effectiveRequest,\n event: this.event,\n // params has a type any can't change right now.\n params: this.params, // eslint-disable-line\n }));\n }\n this._cacheKeys[key] = effectiveRequest;\n }\n return this._cacheKeys[key];\n }\n /**\n * Returns true if the strategy has at least one plugin with the given\n * callback.\n *\n * @param {string} name The name of the callback to check for.\n * @return {boolean}\n */\n hasCallback(name) {\n for (const plugin of this._strategy.plugins) {\n if (name in plugin) {\n return true;\n }\n }\n return false;\n }\n /**\n * Runs all plugin callbacks matching the given name, in order, passing the\n * given param object (merged ith the current plugin state) as the only\n * argument.\n *\n * Note: since this method runs all plugins, it's not suitable for cases\n * where the return value of a callback needs to be applied prior to calling\n * the next callback. See\n * [`iterateCallbacks()`]{@link module:workbox-strategies.StrategyHandler#iterateCallbacks}\n * below for how to handle that case.\n *\n * @param {string} name The name of the callback to run within each plugin.\n * @param {Object} param The object to pass as the first (and only) param\n * when executing each callback. This object will be merged with the\n * current plugin state prior to callback execution.\n */\n async runCallbacks(name, param) {\n for (const callback of this.iterateCallbacks(name)) {\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n await callback(param);\n }\n }\n /**\n * Accepts a callback and returns an iterable of matching plugin callbacks,\n * where each callback is wrapped with the current handler state (i.e. when\n * you call each callback, whatever object parameter you pass it will\n * be merged with the plugin's current state).\n *\n * @param {string} name The name fo the callback to run\n * @return {Array}\n */\n *iterateCallbacks(name) {\n for (const plugin of this._strategy.plugins) {\n if (typeof plugin[name] === 'function') {\n const state = this._pluginStateMap.get(plugin);\n const statefulCallback = (param) => {\n const statefulParam = Object.assign(Object.assign({}, param), { state });\n // TODO(philipwalton): not sure why `any` is needed. It seems like\n // this should work with `as WorkboxPluginCallbackParam[C]`.\n return plugin[name](statefulParam);\n };\n yield statefulCallback;\n }\n }\n }\n /**\n * Adds a promise to the\n * [extend lifetime promises]{@link https://w3c.github.io/ServiceWorker/#extendableevent-extend-lifetime-promises}\n * of the event event associated with the request being handled (usually a\n * `FetchEvent`).\n *\n * Note: you can await\n * [`doneWaiting()`]{@link module:workbox-strategies.StrategyHandler~doneWaiting}\n * to know when all added promises have settled.\n *\n * @param {Promise} promise A promise to add to the extend lifetime promises\n * of the event that triggered the request.\n */\n waitUntil(promise) {\n this._extendLifetimePromises.push(promise);\n return promise;\n }\n /**\n * Returns a promise that resolves once all promises passed to\n * [`waitUntil()`]{@link module:workbox-strategies.StrategyHandler~waitUntil}\n * have settled.\n *\n * Note: any work done after `doneWaiting()` settles should be manually\n * passed to an event's `waitUntil()` method (not this handler's\n * `waitUntil()` method), otherwise the service worker thread my be killed\n * prior to your work completing.\n */\n async doneWaiting() {\n let promise;\n while ((promise = this._extendLifetimePromises.shift())) {\n await promise;\n }\n }\n /**\n * Stops running the strategy and immediately resolves any pending\n * `waitUntil()` promises.\n */\n destroy() {\n this._handlerDeferred.resolve(null);\n }\n /**\n * This method will call cacheWillUpdate on the available plugins (or use\n * status === 200) to determine if the Response is safe and valid to cache.\n *\n * @param {Request} options.request\n * @param {Response} options.response\n * @return {Promise}\n *\n * @private\n */\n async _ensureResponseSafeToCache(response) {\n let responseToCache = response;\n let pluginsUsed = false;\n for (const callback of this.iterateCallbacks('cacheWillUpdate')) {\n responseToCache =\n (await callback({\n request: this.request,\n response: responseToCache,\n event: this.event,\n })) || undefined;\n pluginsUsed = true;\n if (!responseToCache) {\n break;\n }\n }\n if (!pluginsUsed) {\n if (responseToCache && responseToCache.status !== 200) {\n responseToCache = undefined;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (responseToCache) {\n if (responseToCache.status !== 200) {\n if (responseToCache.status === 0) {\n logger.warn(`The response for '${this.request.url}' ` +\n `is an opaque response. The caching strategy that you're ` +\n `using will not cache opaque responses by default.`);\n }\n else {\n logger.debug(`The response for '${this.request.url}' ` +\n `returned a status code of '${response.status}' and won't ` +\n `be cached as a result.`);\n }\n }\n }\n }\n }\n return responseToCache;\n }\n}\nexport { StrategyHandler };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Returns a promise that resolves and the passed number of milliseconds.\n * This utility is an async/await-friendly version of `setTimeout`.\n *\n * @param {number} ms\n * @return {Promise}\n * @private\n */\nexport function timeout(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nconst getFriendlyURL = (url) => {\n const urlObj = new URL(String(url), location.href);\n // See https://github.com/GoogleChrome/workbox/issues/2323\n // We want to include everything, except for the origin if it's same-origin.\n return urlObj.href.replace(new RegExp(`^${location.origin}`), '');\n};\nexport { getFriendlyURL };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from '../_private/logger.js';\nimport { quotaErrorCallbacks } from '../models/quotaErrorCallbacks.js';\nimport '../_version.js';\n/**\n * Runs all of the callback functions, one at a time sequentially, in the order\n * in which they were registered.\n *\n * @memberof module:workbox-core\n * @private\n */\nasync function executeQuotaErrorCallbacks() {\n if (process.env.NODE_ENV !== 'production') {\n logger.log(`About to run ${quotaErrorCallbacks.size} ` +\n `callbacks to clean up caches.`);\n }\n for (const callback of quotaErrorCallbacks) {\n await callback();\n if (process.env.NODE_ENV !== 'production') {\n logger.log(callback, 'is complete.');\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Finished running callbacks.');\n }\n}\nexport { executeQuotaErrorCallbacks };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { StrategyHandler } from './StrategyHandler.js';\nimport './_version.js';\n/**\n * An abstract base class that all other strategy classes must extend from:\n *\n * @memberof module:workbox-strategies\n */\nclass Strategy {\n /**\n * Creates a new instance of the strategy and sets all documented option\n * properties as public instance properties.\n *\n * Note: if a custom strategy class extends the base Strategy class and does\n * not need more than these properties, it does not need to define its own\n * constructor.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * [workbox-core]{@link module:workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters)\n * of [non-navigation](https://github.com/GoogleChrome/workbox/issues/1796)\n * `fetch()` requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n */\n constructor(options = {}) {\n /**\n * Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * [workbox-core]{@link module:workbox-core.cacheNames}.\n *\n * @type {string}\n */\n this.cacheName = cacheNames.getRuntimeName(options.cacheName);\n /**\n * The list\n * [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * used by this strategy.\n *\n * @type {Array}\n */\n this.plugins = options.plugins || [];\n /**\n * Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n *\n * @type {Object}\n */\n this.fetchOptions = options.fetchOptions;\n /**\n * The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n *\n * @type {Object}\n */\n this.matchOptions = options.matchOptions;\n }\n /**\n * Perform a request strategy and returns a `Promise` that will resolve with\n * a `Response`, invoking all relevant plugin callbacks.\n *\n * When a strategy instance is registered with a Workbox\n * [route]{@link module:workbox-routing.Route}, this method is automatically\n * called when the route matches.\n *\n * Alternatively, this method can be used in a standalone `FetchEvent`\n * listener by passing it to `event.respondWith()`.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n */\n handle(options) {\n const [responseDone] = this.handleAll(options);\n return responseDone;\n }\n /**\n * Similar to [`handle()`]{@link module:workbox-strategies.Strategy~handle}, but\n * instead of just returning a `Promise` that resolves to a `Response` it\n * it will return an tuple of [response, done] promises, where the former\n * (`response`) is equivalent to what `handle()` returns, and the latter is a\n * Promise that will resolve once any promises that were added to\n * `event.waitUntil()` as part of performing the strategy have completed.\n *\n * You can await the `done` promise to ensure any extra work performed by\n * the strategy (usually caching responses) completes successfully.\n *\n * @param {FetchEvent|Object} options A `FetchEvent` or an object with the\n * properties listed below.\n * @param {Request|string} options.request A request to run this strategy for.\n * @param {ExtendableEvent} options.event The event associated with the\n * request.\n * @param {URL} [options.url]\n * @param {*} [options.params]\n * @return {Array} A tuple of [response, done]\n * promises that can be used to determine when the response resolves as\n * well as when the handler has completed all its work.\n */\n handleAll(options) {\n // Allow for flexible options to be passed.\n if (options instanceof FetchEvent) {\n options = {\n event: options,\n request: options.request,\n };\n }\n const event = options.event;\n const request = typeof options.request === 'string'\n ? new Request(options.request)\n : options.request;\n const params = 'params' in options ? options.params : undefined;\n const handler = new StrategyHandler(this, { event, request, params });\n const responseDone = this._getResponse(handler, request, event);\n const handlerDone = this._awaitComplete(responseDone, handler, request, event);\n // Return an array of promises, suitable for use with Promise.all().\n return [responseDone, handlerDone];\n }\n async _getResponse(handler, request, event) {\n await handler.runCallbacks('handlerWillStart', { event, request });\n let response = undefined;\n try {\n response = await this._handle(request, handler);\n // The \"official\" Strategy subclasses all throw this error automatically,\n // but in case a third-party Strategy doesn't, ensure that we have a\n // consistent failure when there's no response or an error response.\n if (!response || response.type === 'error') {\n throw new WorkboxError('no-response', { url: request.url });\n }\n }\n catch (error) {\n if (error instanceof Error) {\n for (const callback of handler.iterateCallbacks('handlerDidError')) {\n response = await callback({ error, event, request });\n if (response) {\n break;\n }\n }\n }\n if (!response) {\n throw error;\n }\n else if (process.env.NODE_ENV !== 'production') {\n logger.log(`While responding to '${getFriendlyURL(request.url)}', ` +\n `an ${error instanceof Error ? error.toString() : ''} error occurred. Using a fallback response provided by ` +\n `a handlerDidError plugin.`);\n }\n }\n for (const callback of handler.iterateCallbacks('handlerWillRespond')) {\n response = await callback({ event, request, response });\n }\n return response;\n }\n async _awaitComplete(responseDone, handler, request, event) {\n let response;\n let error;\n try {\n response = await responseDone;\n }\n catch (error) {\n // Ignore errors, as response errors should be caught via the `response`\n // promise above. The `done` promise will only throw for errors in\n // promises passed to `handler.waitUntil()`.\n }\n try {\n await handler.runCallbacks('handlerDidRespond', {\n event,\n request,\n response,\n });\n await handler.doneWaiting();\n }\n catch (waitUntilError) {\n if (waitUntilError instanceof Error) {\n error = waitUntilError;\n }\n }\n await handler.runCallbacks('handlerDidComplete', {\n event,\n request,\n response,\n error: error,\n });\n handler.destroy();\n if (error) {\n throw error;\n }\n }\n}\nexport { Strategy };\n/**\n * Classes extending the `Strategy` based class should implement this method,\n * and leverage the [`handler`]{@link module:workbox-strategies.StrategyHandler}\n * arg to perform all fetching and cache logic, which will ensure all relevant\n * cache, cache options, fetch options and plugins are used (per the current\n * strategy instance).\n *\n * @name _handle\n * @instance\n * @abstract\n * @function\n * @param {Request} request\n * @param {module:workbox-strategies.StrategyHandler} handler\n * @return {Promise}\n *\n * @memberof module:workbox-strategies.Strategy\n */\n","/*\n Copyright 2020 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A utility method that makes it easier to use `event.waitUntil` with\n * async functions and return the result.\n *\n * @param {ExtendableEvent} event\n * @param {Function} asyncFn\n * @return {Function}\n * @private\n */\nfunction waitUntil(event, asyncFn) {\n const returnPromise = asyncFn();\n event.waitUntil(returnPromise);\n return returnPromise;\n}\nexport { waitUntil };\n","\"use strict\";\n// @ts-ignore\ntry {\n self['workbox:precaching:6.4.0'] && _();\n}\ncatch (e) { }\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport '../_version.js';\n// Name of the search parameter used to store revision info.\nconst REVISION_SEARCH_PARAM = '__WB_REVISION__';\n/**\n * Converts a manifest entry into a versioned URL suitable for precaching.\n *\n * @param {Object|string} entry\n * @return {string} A URL with versioning info.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function createCacheKey(entry) {\n if (!entry) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If a precache manifest entry is a string, it's assumed to be a versioned\n // URL, like '/app.abcd1234.js'. Return as-is.\n if (typeof entry === 'string') {\n const urlObject = new URL(entry, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n const { revision, url } = entry;\n if (!url) {\n throw new WorkboxError('add-to-cache-list-unexpected-type', { entry });\n }\n // If there's just a URL and no revision, then it's also assumed to be a\n // versioned URL.\n if (!revision) {\n const urlObject = new URL(url, location.href);\n return {\n cacheKey: urlObject.href,\n url: urlObject.href,\n };\n }\n // Otherwise, construct a properly versioned URL using the custom Workbox\n // search parameter along with the revision info.\n const cacheKeyURL = new URL(url, location.href);\n const originalURL = new URL(url, location.href);\n cacheKeyURL.searchParams.set(REVISION_SEARCH_PARAM, revision);\n return {\n cacheKey: cacheKeyURL.href,\n url: originalURL.href,\n };\n}\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to determine the\n * of assets that were updated (or not updated) during the install event.\n *\n * @private\n */\nclass PrecacheInstallReportPlugin {\n constructor() {\n this.updatedURLs = [];\n this.notUpdatedURLs = [];\n this.handlerWillStart = async ({ request, state, }) => {\n // TODO: `state` should never be undefined...\n if (state) {\n state.originalRequest = request;\n }\n };\n this.cachedResponseWillBeUsed = async ({ event, state, cachedResponse, }) => {\n if (event.type === 'install') {\n if (state &&\n state.originalRequest &&\n state.originalRequest instanceof Request) {\n // TODO: `state` should never be undefined...\n const url = state.originalRequest.url;\n if (cachedResponse) {\n this.notUpdatedURLs.push(url);\n }\n else {\n this.updatedURLs.push(url);\n }\n }\n }\n return cachedResponse;\n };\n }\n}\nexport { PrecacheInstallReportPlugin };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * A plugin, designed to be used with PrecacheController, to translate URLs into\n * the corresponding cache key, based on the current revision info.\n *\n * @private\n */\nclass PrecacheCacheKeyPlugin {\n constructor({ precacheController }) {\n this.cacheKeyWillBeUsed = async ({ request, params, }) => {\n // Params is type any, can't change right now.\n /* eslint-disable */\n const cacheKey = (params === null || params === void 0 ? void 0 : params.cacheKey) ||\n this._precacheController.getCacheKeyForURL(request.url);\n /* eslint-enable */\n return cacheKey\n ? new Request(cacheKey, { headers: request.headers })\n : request;\n };\n this._precacheController = precacheController;\n }\n}\nexport { PrecacheCacheKeyPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\nlet supportStatus;\n/**\n * A utility function that determines whether the current browser supports\n * constructing a new `Response` from a `response.body` stream.\n *\n * @return {boolean} `true`, if the current browser can successfully\n * construct a `Response` from a `response.body` stream, `false` otherwise.\n *\n * @private\n */\nfunction canConstructResponseFromBodyStream() {\n if (supportStatus === undefined) {\n const testResponse = new Response('');\n if ('body' in testResponse) {\n try {\n new Response(testResponse.body);\n supportStatus = true;\n }\n catch (error) {\n supportStatus = false;\n }\n }\n supportStatus = false;\n }\n return supportStatus;\n}\nexport { canConstructResponseFromBodyStream };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { PrecacheController } from '../PrecacheController.js';\nimport '../_version.js';\nlet precacheController;\n/**\n * @return {PrecacheController}\n * @private\n */\nexport const getOrCreatePrecacheController = () => {\n if (!precacheController) {\n precacheController = new PrecacheController();\n }\n return precacheController;\n};\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { canConstructResponseFromBodyStream } from './_private/canConstructResponseFromBodyStream.js';\nimport { WorkboxError } from './_private/WorkboxError.js';\nimport './_version.js';\n/**\n * Allows developers to copy a response and modify its `headers`, `status`,\n * or `statusText` values (the values settable via a\n * [`ResponseInit`]{@link https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#Syntax}\n * object in the constructor).\n * To modify these values, pass a function as the second argument. That\n * function will be invoked with a single object with the response properties\n * `{headers, status, statusText}`. The return value of this function will\n * be used as the `ResponseInit` for the new `Response`. To change the values\n * either modify the passed parameter(s) and return it, or return a totally\n * new object.\n *\n * This method is intentionally limited to same-origin responses, regardless of\n * whether CORS was used or not.\n *\n * @param {Response} response\n * @param {Function} modifier\n * @memberof module:workbox-core\n */\nasync function copyResponse(response, modifier) {\n let origin = null;\n // If response.url isn't set, assume it's cross-origin and keep origin null.\n if (response.url) {\n const responseURL = new URL(response.url);\n origin = responseURL.origin;\n }\n if (origin !== self.location.origin) {\n throw new WorkboxError('cross-origin-copy-response', { origin });\n }\n const clonedResponse = response.clone();\n // Create a fresh `ResponseInit` object by cloning the headers.\n const responseInit = {\n headers: new Headers(clonedResponse.headers),\n status: clonedResponse.status,\n statusText: clonedResponse.statusText,\n };\n // Apply any user modifications.\n const modifiedResponseInit = modifier ? modifier(responseInit) : responseInit;\n // Create the new response from the body stream and `ResponseInit`\n // modifications. Note: not all browsers support the Response.body stream,\n // so fall back to reading the entire body into memory as a blob.\n const body = canConstructResponseFromBodyStream()\n ? clonedResponse.body\n : await clonedResponse.blob();\n return new Response(body, modifiedResponseInit);\n}\nexport { copyResponse };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { copyResponse } from 'workbox-core/copyResponse.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from 'workbox-strategies/Strategy.js';\nimport './_version.js';\n/**\n * A [Strategy]{@link module:workbox-strategies.Strategy} implementation\n * specifically designed to work with\n * [PrecacheController]{@link module:workbox-precaching.PrecacheController}\n * to both cache and fetch precached assets.\n *\n * Note: an instance of this class is created automatically when creating a\n * `PrecacheController`; it's generally not necessary to create this yourself.\n *\n * @extends module:workbox-strategies.Strategy\n * @memberof module:workbox-precaching\n */\nclass PrecacheStrategy extends Strategy {\n /**\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] Cache name to store and retrieve\n * requests. Defaults to the cache names provided by\n * [workbox-core]{@link module:workbox-core.cacheNames}.\n * @param {Array} [options.plugins] [Plugins]{@link https://developers.google.com/web/tools/workbox/guides/using-plugins}\n * to use in conjunction with this caching strategy.\n * @param {Object} [options.fetchOptions] Values passed along to the\n * [`init`]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch#Parameters}\n * of all fetch() requests made by this strategy.\n * @param {Object} [options.matchOptions] The\n * [`CacheQueryOptions`]{@link https://w3c.github.io/ServiceWorker/#dictdef-cachequeryoptions}\n * for any `cache.match()` or `cache.put()` calls made by this strategy.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor(options = {}) {\n options.cacheName = cacheNames.getPrecacheName(options.cacheName);\n super(options);\n this._fallbackToNetwork =\n options.fallbackToNetwork === false ? false : true;\n // Redirected responses cannot be used to satisfy a navigation request, so\n // any redirected response must be \"copied\" rather than cloned, so the new\n // response doesn't contain the `redirected` flag. See:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=669363&desc=2#c1\n this.plugins.push(PrecacheStrategy.copyRedirectedCacheableResponsesPlugin);\n }\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {module:workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const response = await handler.cacheMatch(request);\n if (response) {\n return response;\n }\n // If this is an `install` event for an entry that isn't already cached,\n // then populate the cache.\n if (handler.event && handler.event.type === 'install') {\n return await this._handleInstall(request, handler);\n }\n // Getting here means something went wrong. An entry that should have been\n // precached wasn't found in the cache.\n return await this._handleFetch(request, handler);\n }\n async _handleFetch(request, handler) {\n let response;\n const params = (handler.params || {});\n // Fall back to the network if we're configured to do so.\n if (this._fallbackToNetwork) {\n if (process.env.NODE_ENV !== 'production') {\n logger.warn(`The precached response for ` +\n `${getFriendlyURL(request.url)} in ${this.cacheName} was not ` +\n `found. Falling back to the network.`);\n }\n const integrityInManifest = params.integrity;\n const integrityInRequest = request.integrity;\n const noIntegrityConflict = !integrityInRequest || integrityInRequest === integrityInManifest;\n response = await handler.fetch(new Request(request, {\n integrity: integrityInRequest || integrityInManifest,\n }));\n // It's only \"safe\" to repair the cache if we're using SRI to guarantee\n // that the response matches the precache manifest's expectations,\n // and there's either a) no integrity property in the incoming request\n // or b) there is an integrity, and it matches the precache manifest.\n // See https://github.com/GoogleChrome/workbox/issues/2858\n if (integrityInManifest && noIntegrityConflict) {\n this._useDefaultCacheabilityPluginIfNeeded();\n const wasCached = await handler.cachePut(request, response.clone());\n if (process.env.NODE_ENV !== 'production') {\n if (wasCached) {\n logger.log(`A response for ${getFriendlyURL(request.url)} ` +\n `was used to \"repair\" the precache.`);\n }\n }\n }\n }\n else {\n // This shouldn't normally happen, but there are edge cases:\n // https://github.com/GoogleChrome/workbox/issues/1441\n throw new WorkboxError('missing-precache-entry', {\n cacheName: this.cacheName,\n url: request.url,\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n const cacheKey = params.cacheKey || (await handler.getCacheKey(request, 'read'));\n // Workbox is going to handle the route.\n // print the routing details to the console.\n logger.groupCollapsed(`Precaching is responding to: ` + getFriendlyURL(request.url));\n logger.log(`Serving the precached url: ${getFriendlyURL(cacheKey instanceof Request ? cacheKey.url : cacheKey)}`);\n logger.groupCollapsed(`View request details here.`);\n logger.log(request);\n logger.groupEnd();\n logger.groupCollapsed(`View response details here.`);\n logger.log(response);\n logger.groupEnd();\n logger.groupEnd();\n }\n return response;\n }\n async _handleInstall(request, handler) {\n this._useDefaultCacheabilityPluginIfNeeded();\n const response = await handler.fetch(request);\n // Make sure we defer cachePut() until after we know the response\n // should be cached; see https://github.com/GoogleChrome/workbox/issues/2737\n const wasCached = await handler.cachePut(request, response.clone());\n if (!wasCached) {\n // Throwing here will lead to the `install` handler failing, which\n // we want to do if *any* of the responses aren't safe to cache.\n throw new WorkboxError('bad-precaching-response', {\n url: request.url,\n status: response.status,\n });\n }\n return response;\n }\n /**\n * This method is complex, as there a number of things to account for:\n *\n * The `plugins` array can be set at construction, and/or it might be added to\n * to at any time before the strategy is used.\n *\n * At the time the strategy is used (i.e. during an `install` event), there\n * needs to be at least one plugin that implements `cacheWillUpdate` in the\n * array, other than `copyRedirectedCacheableResponsesPlugin`.\n *\n * - If this method is called and there are no suitable `cacheWillUpdate`\n * plugins, we need to add `defaultPrecacheCacheabilityPlugin`.\n *\n * - If this method is called and there is exactly one `cacheWillUpdate`, then\n * we don't have to do anything (this might be a previously added\n * `defaultPrecacheCacheabilityPlugin`, or it might be a custom plugin).\n *\n * - If this method is called and there is more than one `cacheWillUpdate`,\n * then we need to check if one is `defaultPrecacheCacheabilityPlugin`. If so,\n * we need to remove it. (This situation is unlikely, but it could happen if\n * the strategy is used multiple times, the first without a `cacheWillUpdate`,\n * and then later on after manually adding a custom `cacheWillUpdate`.)\n *\n * See https://github.com/GoogleChrome/workbox/issues/2737 for more context.\n *\n * @private\n */\n _useDefaultCacheabilityPluginIfNeeded() {\n let defaultPluginIndex = null;\n let cacheWillUpdatePluginCount = 0;\n for (const [index, plugin] of this.plugins.entries()) {\n // Ignore the copy redirected plugin when determining what to do.\n if (plugin === PrecacheStrategy.copyRedirectedCacheableResponsesPlugin) {\n continue;\n }\n // Save the default plugin's index, in case it needs to be removed.\n if (plugin === PrecacheStrategy.defaultPrecacheCacheabilityPlugin) {\n defaultPluginIndex = index;\n }\n if (plugin.cacheWillUpdate) {\n cacheWillUpdatePluginCount++;\n }\n }\n if (cacheWillUpdatePluginCount === 0) {\n this.plugins.push(PrecacheStrategy.defaultPrecacheCacheabilityPlugin);\n }\n else if (cacheWillUpdatePluginCount > 1 && defaultPluginIndex !== null) {\n // Only remove the default plugin; multiple custom plugins are allowed.\n this.plugins.splice(defaultPluginIndex, 1);\n }\n // Nothing needs to be done if cacheWillUpdatePluginCount is 1\n }\n}\nPrecacheStrategy.defaultPrecacheCacheabilityPlugin = {\n async cacheWillUpdate({ response }) {\n if (!response || response.status >= 400) {\n return null;\n }\n return response;\n },\n};\nPrecacheStrategy.copyRedirectedCacheableResponsesPlugin = {\n async cacheWillUpdate({ response }) {\n return response.redirected ? await copyResponse(response) : response;\n },\n};\nexport { PrecacheStrategy };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { waitUntil } from 'workbox-core/_private/waitUntil.js';\nimport { createCacheKey } from './utils/createCacheKey.js';\nimport { PrecacheInstallReportPlugin } from './utils/PrecacheInstallReportPlugin.js';\nimport { PrecacheCacheKeyPlugin } from './utils/PrecacheCacheKeyPlugin.js';\nimport { printCleanupDetails } from './utils/printCleanupDetails.js';\nimport { printInstallDetails } from './utils/printInstallDetails.js';\nimport { PrecacheStrategy } from './PrecacheStrategy.js';\nimport './_version.js';\n/**\n * Performs efficient precaching of assets.\n *\n * @memberof module:workbox-precaching\n */\nclass PrecacheController {\n /**\n * Create a new PrecacheController.\n *\n * @param {Object} [options]\n * @param {string} [options.cacheName] The cache to use for precaching.\n * @param {string} [options.plugins] Plugins to use when precaching as well\n * as responding to fetch events for precached assets.\n * @param {boolean} [options.fallbackToNetwork=true] Whether to attempt to\n * get the response from the network if there's a precache miss.\n */\n constructor({ cacheName, plugins = [], fallbackToNetwork = true, } = {}) {\n this._urlsToCacheKeys = new Map();\n this._urlsToCacheModes = new Map();\n this._cacheKeysToIntegrities = new Map();\n this._strategy = new PrecacheStrategy({\n cacheName: cacheNames.getPrecacheName(cacheName),\n plugins: [\n ...plugins,\n new PrecacheCacheKeyPlugin({ precacheController: this }),\n ],\n fallbackToNetwork,\n });\n // Bind the install and activate methods to the instance.\n this.install = this.install.bind(this);\n this.activate = this.activate.bind(this);\n }\n /**\n * @type {module:workbox-precaching.PrecacheStrategy} The strategy created by this controller and\n * used to cache assets and respond to fetch events.\n */\n get strategy() {\n return this._strategy;\n }\n /**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * [\"precache cache\"]{@link module:workbox-core.cacheNames} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n */\n precache(entries) {\n this.addToCacheList(entries);\n if (!this._installAndActiveListenersAdded) {\n self.addEventListener('install', this.install);\n self.addEventListener('activate', this.activate);\n this._installAndActiveListenersAdded = true;\n }\n }\n /**\n * This method will add items to the precache list, removing duplicates\n * and ensuring the information is valid.\n *\n * @param {Array} entries\n * Array of entries to precache.\n */\n addToCacheList(entries) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isArray(entries, {\n moduleName: 'workbox-precaching',\n className: 'PrecacheController',\n funcName: 'addToCacheList',\n paramName: 'entries',\n });\n }\n const urlsToWarnAbout = [];\n for (const entry of entries) {\n // See https://github.com/GoogleChrome/workbox/issues/2259\n if (typeof entry === 'string') {\n urlsToWarnAbout.push(entry);\n }\n else if (entry && entry.revision === undefined) {\n urlsToWarnAbout.push(entry.url);\n }\n const { cacheKey, url } = createCacheKey(entry);\n const cacheMode = typeof entry !== 'string' && entry.revision ? 'reload' : 'default';\n if (this._urlsToCacheKeys.has(url) &&\n this._urlsToCacheKeys.get(url) !== cacheKey) {\n throw new WorkboxError('add-to-cache-list-conflicting-entries', {\n firstEntry: this._urlsToCacheKeys.get(url),\n secondEntry: cacheKey,\n });\n }\n if (typeof entry !== 'string' && entry.integrity) {\n if (this._cacheKeysToIntegrities.has(cacheKey) &&\n this._cacheKeysToIntegrities.get(cacheKey) !== entry.integrity) {\n throw new WorkboxError('add-to-cache-list-conflicting-integrities', {\n url,\n });\n }\n this._cacheKeysToIntegrities.set(cacheKey, entry.integrity);\n }\n this._urlsToCacheKeys.set(url, cacheKey);\n this._urlsToCacheModes.set(url, cacheMode);\n if (urlsToWarnAbout.length > 0) {\n const warningMessage = `Workbox is precaching URLs without revision ` +\n `info: ${urlsToWarnAbout.join(', ')}\\nThis is generally NOT safe. ` +\n `Learn more at https://bit.ly/wb-precache`;\n if (process.env.NODE_ENV === 'production') {\n // Use console directly to display this warning without bloating\n // bundle sizes by pulling in all of the logger codebase in prod.\n console.warn(warningMessage);\n }\n else {\n logger.warn(warningMessage);\n }\n }\n }\n }\n /**\n * Precaches new and updated assets. Call this method from the service worker\n * install event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n install(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const installReportPlugin = new PrecacheInstallReportPlugin();\n this.strategy.plugins.push(installReportPlugin);\n // Cache entries one at a time.\n // See https://github.com/GoogleChrome/workbox/issues/2528\n for (const [url, cacheKey] of this._urlsToCacheKeys) {\n const integrity = this._cacheKeysToIntegrities.get(cacheKey);\n const cacheMode = this._urlsToCacheModes.get(url);\n const request = new Request(url, {\n integrity,\n cache: cacheMode,\n credentials: 'same-origin',\n });\n await Promise.all(this.strategy.handleAll({\n params: { cacheKey },\n request,\n event,\n }));\n }\n const { updatedURLs, notUpdatedURLs } = installReportPlugin;\n if (process.env.NODE_ENV !== 'production') {\n printInstallDetails(updatedURLs, notUpdatedURLs);\n }\n return { updatedURLs, notUpdatedURLs };\n });\n }\n /**\n * Deletes assets that are no longer present in the current precache manifest.\n * Call this method from the service worker activate event.\n *\n * Note: this method calls `event.waitUntil()` for you, so you do not need\n * to call it yourself in your event handlers.\n *\n * @param {ExtendableEvent} event\n * @return {Promise}\n */\n activate(event) {\n // waitUntil returns Promise\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return waitUntil(event, async () => {\n const cache = await self.caches.open(this.strategy.cacheName);\n const currentlyCachedRequests = await cache.keys();\n const expectedCacheKeys = new Set(this._urlsToCacheKeys.values());\n const deletedURLs = [];\n for (const request of currentlyCachedRequests) {\n if (!expectedCacheKeys.has(request.url)) {\n await cache.delete(request);\n deletedURLs.push(request.url);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n printCleanupDetails(deletedURLs);\n }\n return { deletedURLs };\n });\n }\n /**\n * Returns a mapping of a precached URL to the corresponding cache key, taking\n * into account the revision information for the URL.\n *\n * @return {Map} A URL to cache key mapping.\n */\n getURLsToCacheKeys() {\n return this._urlsToCacheKeys;\n }\n /**\n * Returns a list of all the URLs that have been precached by the current\n * service worker.\n *\n * @return {Array} The precached URLs.\n */\n getCachedURLs() {\n return [...this._urlsToCacheKeys.keys()];\n }\n /**\n * Returns the cache key used for storing a given URL. If that URL is\n * unversioned, like `/index.html', then the cache key will be the original\n * URL with a search parameter appended to it.\n *\n * @param {string} url A URL whose cache key you want to look up.\n * @return {string} The versioned URL that corresponds to a cache key\n * for the original URL, or undefined if that URL isn't precached.\n */\n getCacheKeyForURL(url) {\n const urlObject = new URL(url, location.href);\n return this._urlsToCacheKeys.get(urlObject.href);\n }\n /**\n * @param {string} url A cache key whose SRI you want to look up.\n * @return {string} The subresource integrity associated with the cache key,\n * or undefined if it's not set.\n */\n getIntegrityForCacheKey(cacheKey) {\n return this._cacheKeysToIntegrities.get(cacheKey);\n }\n /**\n * This acts as a drop-in replacement for\n * [`cache.match()`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/match)\n * with the following differences:\n *\n * - It knows what the name of the precache is, and only checks in that cache.\n * - It allows you to pass in an \"original\" URL without versioning parameters,\n * and it will automatically look up the correct cache key for the currently\n * active revision of that URL.\n *\n * E.g., `matchPrecache('index.html')` will find the correct precached\n * response for the currently active service worker, even if the actual cache\n * key is `'/index.html?__WB_REVISION__=1234abcd'`.\n *\n * @param {string|Request} request The key (without revisioning parameters)\n * to look up in the precache.\n * @return {Promise}\n */\n async matchPrecache(request) {\n const url = request instanceof Request ? request.url : request;\n const cacheKey = this.getCacheKeyForURL(url);\n if (cacheKey) {\n const cache = await self.caches.open(this.strategy.cacheName);\n return cache.match(cacheKey);\n }\n return undefined;\n }\n /**\n * Returns a function that looks up `url` in the precache (taking into\n * account revision information), and returns the corresponding `Response`.\n *\n * @param {string} url The precached URL which will be used to lookup the\n * `Response`.\n * @return {module:workbox-routing~handlerCallback}\n */\n createHandlerBoundToURL(url) {\n const cacheKey = this.getCacheKeyForURL(url);\n if (!cacheKey) {\n throw new WorkboxError('non-precached-url', { url });\n }\n return (options) => {\n options.request = new Request(url);\n options.params = Object.assign({ cacheKey }, options.params);\n return this.strategy.handle(options);\n };\n }\n}\nexport { PrecacheController };\n","/*\n Copyright 2020 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { Route } from 'workbox-routing/Route.js';\nimport { generateURLVariations } from './utils/generateURLVariations.js';\nimport './_version.js';\n/**\n * A subclass of [Route]{@link module:workbox-routing.Route} that takes a\n * [PrecacheController]{@link module:workbox-precaching.PrecacheController}\n * instance and uses it to match incoming requests and handle fetching\n * responses from the precache.\n *\n * @memberof module:workbox-precaching\n * @extends module:workbox-routing.Route\n */\nclass PrecacheRoute extends Route {\n /**\n * @param {PrecacheController} precacheController A `PrecacheController`\n * instance used to both match requests and respond to fetch events.\n * @param {Object} [options] Options to control how requests are matched\n * against the list of precached URLs.\n * @param {string} [options.directoryIndex=index.html] The `directoryIndex` will\n * check cache entries for a URLs ending with '/' to see if there is a hit when\n * appending the `directoryIndex` value.\n * @param {Array} [options.ignoreURLParametersMatching=[/^utm_/, /^fbclid$/]] An\n * array of regex's to remove search params when looking for a cache match.\n * @param {boolean} [options.cleanURLs=true] The `cleanURLs` option will\n * check the cache for the URL with a `.html` added to the end of the end.\n * @param {module:workbox-precaching~urlManipulation} [options.urlManipulation]\n * This is a function that should take a URL and return an array of\n * alternative URLs that should be checked for precache matches.\n */\n constructor(precacheController, options) {\n const match = ({ request, }) => {\n const urlsToCacheKeys = precacheController.getURLsToCacheKeys();\n for (const possibleURL of generateURLVariations(request.url, options)) {\n const cacheKey = urlsToCacheKeys.get(possibleURL);\n if (cacheKey) {\n const integrity = precacheController.getIntegrityForCacheKey(cacheKey);\n return { cacheKey, integrity };\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.debug(`Precaching did not find a match for ` + getFriendlyURL(request.url));\n }\n return;\n };\n super(match, precacheController.strategy);\n }\n}\nexport { PrecacheRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { removeIgnoredSearchParams } from './removeIgnoredSearchParams.js';\nimport '../_version.js';\n/**\n * Generator function that yields possible variations on the original URL to\n * check, one at a time.\n *\n * @param {string} url\n * @param {Object} options\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function* generateURLVariations(url, { ignoreURLParametersMatching = [/^utm_/, /^fbclid$/], directoryIndex = 'index.html', cleanURLs = true, urlManipulation, } = {}) {\n const urlObject = new URL(url, location.href);\n urlObject.hash = '';\n yield urlObject.href;\n const urlWithoutIgnoredParams = removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching);\n yield urlWithoutIgnoredParams.href;\n if (directoryIndex && urlWithoutIgnoredParams.pathname.endsWith('/')) {\n const directoryURL = new URL(urlWithoutIgnoredParams.href);\n directoryURL.pathname += directoryIndex;\n yield directoryURL.href;\n }\n if (cleanURLs) {\n const cleanURL = new URL(urlWithoutIgnoredParams.href);\n cleanURL.pathname += '.html';\n yield cleanURL.href;\n }\n if (urlManipulation) {\n const additionalURLs = urlManipulation({ url: urlObject });\n for (const urlToAttempt of additionalURLs) {\n yield urlToAttempt.href;\n }\n }\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport '../_version.js';\n/**\n * Removes any URL search parameters that should be ignored.\n *\n * @param {URL} urlObject The original URL.\n * @param {Array} ignoreURLParametersMatching RegExps to test against\n * each search parameter name. Matches mean that the search parameter should be\n * ignored.\n * @return {URL} The URL with any ignored search parameters removed.\n *\n * @private\n * @memberof module:workbox-precaching\n */\nexport function removeIgnoredSearchParams(urlObject, ignoreURLParametersMatching = []) {\n // Convert the iterable into an array at the start of the loop to make sure\n // deletion doesn't mess up iteration.\n for (const paramName of [...urlObject.searchParams.keys()]) {\n if (ignoreURLParametersMatching.some((regExp) => regExp.test(paramName))) {\n urlObject.searchParams.delete(paramName);\n }\n }\n return urlObject;\n}\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { Strategy } from './Strategy.js';\nimport { messages } from './utils/messages.js';\nimport './_version.js';\n/**\n * An implementation of a [cache-first]{@link https://developers.google.com/web/fundamentals/instant-and-offline/offline-cookbook/#cache-falling-back-to-network}\n * request strategy.\n *\n * A cache first strategy is useful for assets that have been revisioned,\n * such as URLs like `/styles/example.a8f5f1.css`, since they\n * can be cached for long periods of time.\n *\n * If the network request fails, and there is no cache match, this will throw\n * a `WorkboxError` exception.\n *\n * @extends module:workbox-strategies.Strategy\n * @memberof module:workbox-strategies\n */\nclass CacheFirst extends Strategy {\n /**\n * @private\n * @param {Request|string} request A request to run this strategy for.\n * @param {module:workbox-strategies.StrategyHandler} handler The event that\n * triggered the request.\n * @return {Promise}\n */\n async _handle(request, handler) {\n const logs = [];\n if (process.env.NODE_ENV !== 'production') {\n assert.isInstance(request, Request, {\n moduleName: 'workbox-strategies',\n className: this.constructor.name,\n funcName: 'makeRequest',\n paramName: 'request',\n });\n }\n let response = await handler.cacheMatch(request);\n let error = undefined;\n if (!response) {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`No response found in the '${this.cacheName}' cache. ` +\n `Will respond with a network request.`);\n }\n try {\n response = await handler.fetchAndCachePut(request);\n }\n catch (err) {\n if (err instanceof Error) {\n error = err;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (response) {\n logs.push(`Got response from network.`);\n }\n else {\n logs.push(`Unable to get a response from the network.`);\n }\n }\n }\n else {\n if (process.env.NODE_ENV !== 'production') {\n logs.push(`Found a cached response in the '${this.cacheName}' cache.`);\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n logger.groupCollapsed(messages.strategyStart(this.constructor.name, request));\n for (const log of logs) {\n logger.log(log);\n }\n messages.printFinalResponse(response);\n logger.groupEnd();\n }\n if (!response) {\n throw new WorkboxError('no-response', { url: request.url, error });\n }\n return response;\n }\n}\nexport { CacheFirst };\n","/*\n Copyright 2018 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { assert } from 'workbox-core/_private/assert.js';\nimport { cacheNames } from 'workbox-core/_private/cacheNames.js';\nimport { dontWaitFor } from 'workbox-core/_private/dontWaitFor.js';\nimport { getFriendlyURL } from 'workbox-core/_private/getFriendlyURL.js';\nimport { logger } from 'workbox-core/_private/logger.js';\nimport { registerQuotaErrorCallback } from 'workbox-core/registerQuotaErrorCallback.js';\nimport { WorkboxError } from 'workbox-core/_private/WorkboxError.js';\nimport { CacheExpiration } from './CacheExpiration.js';\nimport './_version.js';\n/**\n * This plugin can be used in a `workbox-strategy` to regularly enforce a\n * limit on the age and / or the number of cached requests.\n *\n * It can only be used with `workbox-strategy` instances that have a\n * [custom `cacheName` property set](/web/tools/workbox/guides/configure-workbox#custom_cache_names_in_strategies).\n * In other words, it can't be used to expire entries in strategy that uses the\n * default runtime cache name.\n *\n * Whenever a cached request is used or updated, this plugin will look\n * at the associated cache and remove any old or extra requests.\n *\n * When using `maxAgeSeconds`, requests may be used *once* after expiring\n * because the expiration clean up will not have occurred until *after* the\n * cached request has been used. If the request has a \"Date\" header, then\n * a light weight expiration check is performed and the request will not be\n * used immediately.\n *\n * When using `maxEntries`, the entry least-recently requested will be removed\n * from the cache first.\n *\n * @memberof module:workbox-expiration\n */\nclass ExpirationPlugin {\n /**\n * @param {ExpirationPluginOptions} config\n * @param {number} [config.maxEntries] The maximum number of entries to cache.\n * Entries used the least will be removed as the maximum is reached.\n * @param {number} [config.maxAgeSeconds] The maximum age of an entry before\n * it's treated as stale and removed.\n * @param {Object} [config.matchOptions] The [`CacheQueryOptions`](https://developer.mozilla.org/en-US/docs/Web/API/Cache/delete#Parameters)\n * that will be used when calling `delete()` on the cache.\n * @param {boolean} [config.purgeOnQuotaError] Whether to opt this cache in to\n * automatic deletion if the available storage quota has been exceeded.\n */\n constructor(config = {}) {\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when a `Response` is about to be returned\n * from a [Cache](https://developer.mozilla.org/en-US/docs/Web/API/Cache) to\n * the handler. It allows the `Response` to be inspected for freshness and\n * prevents it from being used if the `Response`'s `Date` header value is\n * older than the configured `maxAgeSeconds`.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache the response is in.\n * @param {Response} options.cachedResponse The `Response` object that's been\n * read from a cache and whose freshness should be checked.\n * @return {Response} Either the `cachedResponse`, if it's\n * fresh, or `null` if the `Response` is older than `maxAgeSeconds`.\n *\n * @private\n */\n this.cachedResponseWillBeUsed = async ({ event, request, cacheName, cachedResponse, }) => {\n if (!cachedResponse) {\n return null;\n }\n const isFresh = this._isResponseDateFresh(cachedResponse);\n // Expire entries to ensure that even if the expiration date has\n // expired, it'll only be used once.\n const cacheExpiration = this._getCacheExpiration(cacheName);\n dontWaitFor(cacheExpiration.expireEntries());\n // Update the metadata for the request URL to the current timestamp,\n // but don't `await` it as we don't want to block the response.\n const updateTimestampDone = cacheExpiration.updateTimestamp(request.url);\n if (event) {\n try {\n event.waitUntil(updateTimestampDone);\n }\n catch (error) {\n if (process.env.NODE_ENV !== 'production') {\n // The event may not be a fetch event; only log the URL if it is.\n if ('request' in event) {\n logger.warn(`Unable to ensure service worker stays alive when ` +\n `updating cache entry for ` +\n `'${getFriendlyURL(event.request.url)}'.`);\n }\n }\n }\n }\n return isFresh ? cachedResponse : null;\n };\n /**\n * A \"lifecycle\" callback that will be triggered automatically by the\n * `workbox-strategies` handlers when an entry is added to a cache.\n *\n * @param {Object} options\n * @param {string} options.cacheName Name of the cache that was updated.\n * @param {string} options.request The Request for the cached entry.\n *\n * @private\n */\n this.cacheDidUpdate = async ({ cacheName, request, }) => {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(cacheName, 'string', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'cacheName',\n });\n assert.isInstance(request, Request, {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'cacheDidUpdate',\n paramName: 'request',\n });\n }\n const cacheExpiration = this._getCacheExpiration(cacheName);\n await cacheExpiration.updateTimestamp(request.url);\n await cacheExpiration.expireEntries();\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!(config.maxEntries || config.maxAgeSeconds)) {\n throw new WorkboxError('max-entries-or-age-required', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n });\n }\n if (config.maxEntries) {\n assert.isType(config.maxEntries, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxEntries',\n });\n }\n if (config.maxAgeSeconds) {\n assert.isType(config.maxAgeSeconds, 'number', {\n moduleName: 'workbox-expiration',\n className: 'Plugin',\n funcName: 'constructor',\n paramName: 'config.maxAgeSeconds',\n });\n }\n }\n this._config = config;\n this._maxAgeSeconds = config.maxAgeSeconds;\n this._cacheExpirations = new Map();\n if (config.purgeOnQuotaError) {\n registerQuotaErrorCallback(() => this.deleteCacheAndMetadata());\n }\n }\n /**\n * A simple helper method to return a CacheExpiration instance for a given\n * cache name.\n *\n * @param {string} cacheName\n * @return {CacheExpiration}\n *\n * @private\n */\n _getCacheExpiration(cacheName) {\n if (cacheName === cacheNames.getRuntimeName()) {\n throw new WorkboxError('expire-custom-caches-only');\n }\n let cacheExpiration = this._cacheExpirations.get(cacheName);\n if (!cacheExpiration) {\n cacheExpiration = new CacheExpiration(cacheName, this._config);\n this._cacheExpirations.set(cacheName, cacheExpiration);\n }\n return cacheExpiration;\n }\n /**\n * @param {Response} cachedResponse\n * @return {boolean}\n *\n * @private\n */\n _isResponseDateFresh(cachedResponse) {\n if (!this._maxAgeSeconds) {\n // We aren't expiring by age, so return true, it's fresh\n return true;\n }\n // Check if the 'date' header will suffice a quick expiration check.\n // See https://github.com/GoogleChromeLabs/sw-toolbox/issues/164 for\n // discussion.\n const dateHeaderTimestamp = this._getDateHeaderTimestamp(cachedResponse);\n if (dateHeaderTimestamp === null) {\n // Unable to parse date, so assume it's fresh.\n return true;\n }\n // If we have a valid headerTime, then our response is fresh iff the\n // headerTime plus maxAgeSeconds is greater than the current time.\n const now = Date.now();\n return dateHeaderTimestamp >= now - this._maxAgeSeconds * 1000;\n }\n /**\n * This method will extract the data header and parse it into a useful\n * value.\n *\n * @param {Response} cachedResponse\n * @return {number|null}\n *\n * @private\n */\n _getDateHeaderTimestamp(cachedResponse) {\n if (!cachedResponse.headers.has('date')) {\n return null;\n }\n const dateHeader = cachedResponse.headers.get('date');\n const parsedDate = new Date(dateHeader);\n const headerTime = parsedDate.getTime();\n // If the Date header was invalid for some reason, parsedDate.getTime()\n // will return NaN.\n if (isNaN(headerTime)) {\n return null;\n }\n return headerTime;\n }\n /**\n * This is a helper method that performs two operations:\n *\n * - Deletes *all* the underlying Cache instances associated with this plugin\n * instance, by calling caches.delete() on your behalf.\n * - Deletes the metadata from IndexedDB used to keep track of expiration\n * details for each Cache instance.\n *\n * When using cache expiration, calling this method is preferable to calling\n * `caches.delete()` directly, since this will ensure that the IndexedDB\n * metadata is also cleanly removed and open IndexedDB instances are deleted.\n *\n * Note that if you're *not* using cache expiration for a given cache, calling\n * `caches.delete()` and passing in the cache's name should be sufficient.\n * There is no Workbox-specific method needed for cleanup in that case.\n */\n async deleteCacheAndMetadata() {\n // Do this one at a time instead of all at once via `Promise.all()` to\n // reduce the chance of inconsistency if a promise rejects.\n for (const [cacheName, cacheExpiration] of this._cacheExpirations) {\n await self.caches.delete(cacheName);\n await cacheExpiration.delete();\n }\n // Reset this._cacheExpirations to its initial state.\n this._cacheExpirations = new Map();\n }\n}\nexport { ExpirationPlugin };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { logger } from './_private/logger.js';\nimport { assert } from './_private/assert.js';\nimport { quotaErrorCallbacks } from './models/quotaErrorCallbacks.js';\nimport './_version.js';\n/**\n * Adds a function to the set of quotaErrorCallbacks that will be executed if\n * there's a quota error.\n *\n * @param {Function} callback\n * @memberof module:workbox-core\n */\n// Can't change Function type\n// eslint-disable-next-line @typescript-eslint/ban-types\nfunction registerQuotaErrorCallback(callback) {\n if (process.env.NODE_ENV !== 'production') {\n assert.isType(callback, 'function', {\n moduleName: 'workbox-core',\n funcName: 'register',\n paramName: 'callback',\n });\n }\n quotaErrorCallbacks.add(callback);\n if (process.env.NODE_ENV !== 'production') {\n logger.log('Registered a callback to respond to quota errors.', callback);\n }\n}\nexport { registerQuotaErrorCallback };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { addRoute } from './addRoute.js';\nimport { precache } from './precache.js';\nimport './_version.js';\n/**\n * This method will add entries to the precache list and add a route to\n * respond to fetch events.\n *\n * This is a convenience method that will call\n * [precache()]{@link module:workbox-precaching.precache} and\n * [addRoute()]{@link module:workbox-precaching.addRoute} in a single call.\n *\n * @param {Array} entries Array of entries to precache.\n * @param {Object} [options] See\n * [PrecacheRoute options]{@link module:workbox-precaching.PrecacheRoute}.\n *\n * @memberof module:workbox-precaching\n */\nfunction precacheAndRoute(entries, options) {\n precache(entries);\n addRoute(options);\n}\nexport { precacheAndRoute };\n","/*\n Copyright 2019 Google LLC\n\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport './_version.js';\n/**\n * Adds items to the precache list, removing any duplicates and\n * stores the files in the\n * [\"precache cache\"]{@link module:workbox-core.cacheNames} when the service\n * worker installs.\n *\n * This method can be called multiple times.\n *\n * Please note: This method **will not** serve any of the cached files for you.\n * It only precaches files. To respond to a network request you call\n * [addRoute()]{@link module:workbox-precaching.addRoute}.\n *\n * If you have a single array of files to precache, you can just call\n * [precacheAndRoute()]{@link module:workbox-precaching.precacheAndRoute}.\n *\n * @param {Array} [entries=[]] Array of entries to precache.\n *\n * @memberof module:workbox-precaching\n */\nfunction precache(entries) {\n const precacheController = getOrCreatePrecacheController();\n precacheController.precache(entries);\n}\nexport { precache };\n","/*\n Copyright 2019 Google LLC\n Use of this source code is governed by an MIT-style\n license that can be found in the LICENSE file or at\n https://opensource.org/licenses/MIT.\n*/\nimport { registerRoute } from 'workbox-routing/registerRoute.js';\nimport { getOrCreatePrecacheController } from './utils/getOrCreatePrecacheController.js';\nimport { PrecacheRoute } from './PrecacheRoute.js';\nimport './_version.js';\n/**\n * Add a `fetch` listener to the service worker that will\n * respond to\n * [network requests]{@link https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers#Custom_responses_to_requests}\n * with precached assets.\n *\n * Requests for assets that aren't precached, the `FetchEvent` will not be\n * responded to, allowing the event to fall through to other `fetch` event\n * listeners.\n *\n * @param {Object} [options] See\n * [PrecacheRoute options]{@link module:workbox-precaching.PrecacheRoute}.\n *\n * @memberof module:workbox-precaching\n */\nfunction addRoute(options) {\n const precacheController = getOrCreatePrecacheController();\n const precacheRoute = new PrecacheRoute(precacheController, options);\n registerRoute(precacheRoute);\n}\nexport { addRoute };\n"],"names":["self","_","e","messageGenerator","code","args","msg","length","JSON","stringify","WorkboxError","Error","constructor","errorCode","details","name","normalizeHandler","handler","handle","Route","match","method","setCatchHandler","catchHandler","RegExpRoute","regExp","url","result","exec","href","origin","location","index","slice","Router","_routes","Map","_defaultHandlerMap","routes","this","addFetchListener","addEventListener","event","request","responsePromise","handleRequest","respondWith","addCacheListener","data","type","payload","requestPromises","Promise","all","urlsToCache","map","entry","Request","waitUntil","ports","then","postMessage","URL","protocol","startsWith","sameOrigin","params","route","findMatchingRoute","has","get","err","reject","_catchHandler","catch","async","catchErr","matchResult","Array","isArray","Object","keys","undefined","setDefaultHandler","set","registerRoute","push","unregisterRoute","routeIndex","indexOf","splice","defaultRouter","getOrCreateDefaultRouter","capture","captureUrl","RegExp","moduleName","funcName","paramName","_cacheNameDetails","googleAnalytics","precache","prefix","runtime","suffix","registration","scope","_createCacheName","cacheName","filter","value","join","cacheNames","userCacheName","dontWaitFor","promise","quotaErrorCallbacks","Set","idbProxyableTypes","cursorAdvanceMethods","cursorRequestMap","WeakMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","target","prop","receiver","IDBTransaction","objectStoreNames","objectStore","wrap","wrapFunction","func","IDBDatabase","prototype","transaction","IDBCursor","advance","continue","continuePrimaryKey","includes","apply","unwrap","storeNames","tx","call","sort","transformCachableValue","done","resolve","unlisten","removeEventListener","complete","error","DOMException","cacheDonePromiseForTransaction","object","IDBObjectStore","IDBIndex","some","c","Proxy","IDBRequest","success","promisifyRequest","newValue","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","replace","useIndex","isWrite","storeName","store","shift","oldTraps","callback","CACHE_OBJECT_STORE","normalizeURL","unNormalizedUrl","hash","CacheTimestampsModel","_db","_cacheName","_upgradeDb","db","objStore","createObjectStore","keyPath","createIndex","unique","_upgradeDbAndDeleteOldDbs","blocked","indexedDB","deleteDatabase","deleteDB","timestamp","id","_getId","getDb","durability","put","minTimestamp","maxCount","cursor","openCursor","entriesToDelete","entriesNotDeletedCount","urlsDeleted","delete","version","upgrade","blocking","terminated","open","openPromise","oldVersion","newVersion","openDB","bind","CacheExpiration","config","_isRunning","_rerunRequested","_maxEntries","maxEntries","_maxAgeSeconds","maxAgeSeconds","_matchOptions","matchOptions","_timestampModel","Date","now","urlsExpired","expireEntries","cache","caches","setTimestamp","getTimestamp","expireOlderThan","Infinity","stripParams","fullURL","ignoreParams","strippedURL","param","searchParams","Deferred","toRequest","input","StrategyHandler","strategy","options","_cacheKeys","assign","_strategy","_handlerDeferred","_extendLifetimePromises","_plugins","plugins","_pluginStateMap","plugin","mode","FetchEvent","preloadResponse","possiblePreloadResponse","originalRequest","hasCallback","clone","cb","iterateCallbacks","thrownErrorMessage","message","pluginFilteredRequest","fetchResponse","fetch","fetchOptions","response","runCallbacks","responseClone","cachePut","key","cachedResponse","effectiveRequest","getCacheKey","multiMatchOptions","ms","setTimeout","String","responseToCache","_ensureResponseSafeToCache","hasCacheUpdateCallback","oldResponse","strippedRequestURL","keysOptions","ignoreSearch","cacheKeys","cacheKey","cacheMatchIgnoreParams","executeQuotaErrorCallbacks","newResponse","state","statefulCallback","statefulParam","destroy","pluginsUsed","status","Strategy","responseDone","handleAll","_getResponse","_awaitComplete","_handle","doneWaiting","waitUntilError","asyncFn","returnPromise","createCacheKey","urlObject","revision","cacheKeyURL","originalURL","PrecacheInstallReportPlugin","updatedURLs","notUpdatedURLs","handlerWillStart","cachedResponseWillBeUsed","PrecacheCacheKeyPlugin","precacheController","cacheKeyWillBeUsed","_precacheController","getCacheKeyForURL","headers","supportStatus","copyResponse","modifier","clonedResponse","responseInit","Headers","statusText","modifiedResponseInit","body","testResponse","Response","canConstructResponseFromBodyStream","blob","PrecacheStrategy","_fallbackToNetwork","fallbackToNetwork","copyRedirectedCacheableResponsesPlugin","cacheMatch","_handleInstall","_handleFetch","integrityInManifest","integrity","integrityInRequest","noIntegrityConflict","_useDefaultCacheabilityPluginIfNeeded","defaultPluginIndex","cacheWillUpdatePluginCount","entries","defaultPrecacheCacheabilityPlugin","cacheWillUpdate","redirected","PrecacheController","_urlsToCacheKeys","_urlsToCacheModes","_cacheKeysToIntegrities","install","activate","addToCacheList","_installAndActiveListenersAdded","urlsToWarnAbout","cacheMode","firstEntry","secondEntry","warningMessage","console","warn","installReportPlugin","credentials","currentlyCachedRequests","expectedCacheKeys","values","deletedURLs","getURLsToCacheKeys","getCachedURLs","getIntegrityForCacheKey","createHandlerBoundToURL","getOrCreatePrecacheController","PrecacheRoute","urlsToCacheKeys","possibleURL","ignoreURLParametersMatching","directoryIndex","cleanURLs","urlManipulation","urlWithoutIgnoredParams","test","removeIgnoredSearchParams","pathname","endsWith","directoryURL","cleanURL","additionalURLs","urlToAttempt","generateURLVariations","fetchAndCachePut","isFresh","_isResponseDateFresh","cacheExpiration","_getCacheExpiration","updateTimestampDone","updateTimestamp","cacheDidUpdate","_config","_cacheExpirations","purgeOnQuotaError","add","registerQuotaErrorCallback","deleteCacheAndMetadata","dateHeaderTimestamp","_getDateHeaderTimestamp","dateHeader","headerTime","getTime","isNaN","addRoute"],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 5d059cd..da8858d 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,8 @@ "description": "Search among 113 RNA-seq data sets used by Araport 11 to reannotate the Arabidopsis genome (Cheng et al. 2016, http://biorxiv.org/content/early/2016/04/05/047308). The eFP-Seq Browser will retrieve the number of reads mapped and display these above the desired Araport 11 gene model. You can sort or filter the columns.", "main": "index.html", "scripts": { - "prettier": "prettier --write --end-of-line auto ./" + "prettier": "prettier --write --end-of-line auto ./", + "workbox": "workbox generateSW" }, "bugs": { "url": "https://github.com/BioAnalyticResource/eFP-Seq_Browser/issues" diff --git a/workbox-config.js b/workbox-config.js new file mode 100644 index 0000000..567b198 --- /dev/null +++ b/workbox-config.js @@ -0,0 +1,32 @@ +module.exports = { + "globDirectory": "./cgi-bin/", + "globPatterns": [ + "**/*.{js,css,png,html,bai,xml,ico,svg,webmanifest,xlsx,jpg,md,json,yml,codepoints,otf,txt,cgi,bed,Rproj,Rmd,webp}" + ], + "swDest": "sw.js", + "globIgnores": [ + 'index.html', + 'workbox-config.js', + 'package.json', + 'package-lock.json' + ], + + // Define runtime caching rules. + "runtimeCaching": [{ + // Match any request that ends with .png, .jpg, .jpeg, .webp, .ico or .svg + "urlPattern": /\.(?:png|jpg|jpeg|webp|ico|svg)$/, + + // Apply a cache-first strategy. + "handler": 'CacheFirst', + + "options": { + // Use a custom cache name. + "cacheName": 'images', + + // Only cache 10 images. + "expiration": { + "maxEntries": 10, + }, + }, + }], +}; \ No newline at end of file